Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
235c0dc5
Commit
235c0dc5
authored
Feb 04, 2014
by
John W. Linville
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'for-john' of
git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-fixes
parents
53d8ab29
c5128654
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
59 additions
and
41 deletions
+59
-41
drivers/net/wireless/iwlwifi/iwl-nvm-parse.c
drivers/net/wireless/iwlwifi/iwl-nvm-parse.c
+5
-0
drivers/net/wireless/iwlwifi/mvm/fw-api-scan.h
drivers/net/wireless/iwlwifi/mvm/fw-api-scan.h
+3
-1
drivers/net/wireless/iwlwifi/mvm/mac80211.c
drivers/net/wireless/iwlwifi/mvm/mac80211.c
+1
-1
drivers/net/wireless/iwlwifi/mvm/scan.c
drivers/net/wireless/iwlwifi/mvm/scan.c
+4
-1
drivers/net/wireless/iwlwifi/mvm/sta.c
drivers/net/wireless/iwlwifi/mvm/sta.c
+1
-1
drivers/net/wireless/iwlwifi/mvm/tx.c
drivers/net/wireless/iwlwifi/mvm/tx.c
+37
-36
drivers/net/wireless/iwlwifi/mvm/utils.c
drivers/net/wireless/iwlwifi/mvm/utils.c
+2
-0
drivers/net/wireless/iwlwifi/pcie/drv.c
drivers/net/wireless/iwlwifi/pcie/drv.c
+6
-1
No files found.
drivers/net/wireless/iwlwifi/iwl-nvm-parse.c
View file @
235c0dc5
...
...
@@ -182,6 +182,11 @@ static int iwl_init_channel_map(struct device *dev, const struct iwl_cfg *cfg,
for
(
ch_idx
=
0
;
ch_idx
<
IWL_NUM_CHANNELS
;
ch_idx
++
)
{
ch_flags
=
__le16_to_cpup
(
nvm_ch_flags
+
ch_idx
);
if
(
ch_idx
>=
NUM_2GHZ_CHANNELS
&&
!
data
->
sku_cap_band_52GHz_enable
)
ch_flags
&=
~
NVM_CHANNEL_VALID
;
if
(
!
(
ch_flags
&
NVM_CHANNEL_VALID
))
{
IWL_DEBUG_EEPROM
(
dev
,
"Ch. %d Flags %x [%sGHz] - No traffic
\n
"
,
...
...
drivers/net/wireless/iwlwifi/mvm/fw-api-scan.h
View file @
235c0dc5
...
...
@@ -504,6 +504,7 @@ struct iwl_scan_offload_profile {
* @match_notify: clients waiting for match found notification
* @pass_match: clients waiting for the results
* @active_clients: active clients bitmap - enum scan_framework_client
* @any_beacon_notify: clients waiting for match notification without match
*/
struct
iwl_scan_offload_profile_cfg
{
struct
iwl_scan_offload_profile
profiles
[
IWL_SCAN_MAX_PROFILES
];
...
...
@@ -512,7 +513,8 @@ struct iwl_scan_offload_profile_cfg {
u8
match_notify
;
u8
pass_match
;
u8
active_clients
;
u8
reserved
[
3
];
u8
any_beacon_notify
;
u8
reserved
[
2
];
}
__packed
;
/**
...
...
drivers/net/wireless/iwlwifi/mvm/mac80211.c
View file @
235c0dc5
...
...
@@ -246,7 +246,7 @@ int iwl_mvm_mac_setup_register(struct iwl_mvm *mvm)
else
hw
->
wiphy
->
flags
&=
~
WIPHY_FLAG_PS_ON_BY_DEFAULT
;
if
(
mvm
->
fw
->
ucode_capa
.
flags
&
IWL_UCODE_TLV_FLAGS_SCHED_SCAN
)
{
if
(
0
&&
mvm
->
fw
->
ucode_capa
.
flags
&
IWL_UCODE_TLV_FLAGS_SCHED_SCAN
)
{
hw
->
wiphy
->
flags
|=
WIPHY_FLAG_SUPPORTS_SCHED_SCAN
;
hw
->
wiphy
->
max_sched_scan_ssids
=
PROBE_OPTION_MAX
;
hw
->
wiphy
->
max_match_sets
=
IWL_SCAN_MAX_PROFILES
;
...
...
drivers/net/wireless/iwlwifi/mvm/scan.c
View file @
235c0dc5
...
...
@@ -344,7 +344,8 @@ int iwl_mvm_scan_request(struct iwl_mvm *mvm,
iwl_mvm_scan_fill_ssids
(
cmd
,
req
,
basic_ssid
?
1
:
0
);
cmd
->
tx_cmd
.
tx_flags
=
cpu_to_le32
(
TX_CMD_FLG_SEQ_CTL
);
cmd
->
tx_cmd
.
tx_flags
=
cpu_to_le32
(
TX_CMD_FLG_SEQ_CTL
|
TX_CMD_FLG_BT_DIS
);
cmd
->
tx_cmd
.
sta_id
=
mvm
->
aux_sta
.
sta_id
;
cmd
->
tx_cmd
.
life_time
=
cpu_to_le32
(
TX_CMD_LIFE_TIME_INFINITE
);
cmd
->
tx_cmd
.
rate_n_flags
=
...
...
@@ -807,6 +808,8 @@ int iwl_mvm_config_sched_scan_profiles(struct iwl_mvm *mvm,
profile_cfg
->
active_clients
=
SCAN_CLIENT_SCHED_SCAN
;
profile_cfg
->
pass_match
=
SCAN_CLIENT_SCHED_SCAN
;
profile_cfg
->
match_notify
=
SCAN_CLIENT_SCHED_SCAN
;
if
(
!
req
->
n_match_sets
||
!
req
->
match_sets
[
0
].
ssid
.
ssid_len
)
profile_cfg
->
any_beacon_notify
=
SCAN_CLIENT_SCHED_SCAN
;
for
(
i
=
0
;
i
<
req
->
n_match_sets
;
i
++
)
{
profile
=
&
profile_cfg
->
profiles
[
i
];
...
...
drivers/net/wireless/iwlwifi/mvm/sta.c
View file @
235c0dc5
...
...
@@ -652,7 +652,7 @@ int iwl_mvm_send_bcast_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
{
struct
iwl_mvm_vif
*
mvmvif
=
iwl_mvm_vif_from_mac80211
(
vif
);
static
const
u8
_baddr
[]
=
{
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
};
static
const
u8
*
baddr
=
_baddr
;
const
u8
*
baddr
=
_baddr
;
lockdep_assert_held
(
&
mvm
->
mutex
);
...
...
drivers/net/wireless/iwlwifi/mvm/tx.c
View file @
235c0dc5
...
...
@@ -659,8 +659,14 @@ static void iwl_mvm_rx_tx_cmd_single(struct iwl_mvm *mvm,
rcu_read_lock
();
sta
=
rcu_dereference
(
mvm
->
fw_id_to_mac_id
[
sta_id
]);
/*
* sta can't be NULL otherwise it'd mean that the sta has been freed in
* the firmware while we still have packets for it in the Tx queues.
*/
if
(
WARN_ON_ONCE
(
!
sta
))
goto
out
;
if
(
!
IS_ERR
_OR_NULL
(
sta
))
{
if
(
!
IS_ERR
(
sta
))
{
mvmsta
=
iwl_mvm_sta_from_mac80211
(
sta
);
if
(
tid
!=
IWL_TID_NON_QOS
)
{
...
...
@@ -675,7 +681,6 @@ static void iwl_mvm_rx_tx_cmd_single(struct iwl_mvm *mvm,
spin_unlock_bh
(
&
mvmsta
->
lock
);
}
}
else
{
sta
=
NULL
;
mvmsta
=
NULL
;
}
...
...
@@ -683,42 +688,38 @@ static void iwl_mvm_rx_tx_cmd_single(struct iwl_mvm *mvm,
* If the txq is not an AMPDU queue, there is no chance we freed
* several skbs. Check that out...
*/
if
(
txq_id
<
mvm
->
first_agg_queue
&&
!
WARN_ON
(
skb_freed
>
1
)
&&
atomic_sub_and_test
(
skb_freed
,
&
mvm
->
pending_frames
[
sta_id
]))
{
if
(
mvmsta
)
{
if
(
txq_id
>=
mvm
->
first_agg_queue
)
goto
out
;
/* We can't free more than one frame at once on a shared queue */
WARN_ON
(
skb_freed
>
1
);
/* If we have still frames from this STA nothing to do here */
if
(
!
atomic_sub_and_test
(
skb_freed
,
&
mvm
->
pending_frames
[
sta_id
]))
goto
out
;
if
(
mvmsta
&&
mvmsta
->
vif
->
type
==
NL80211_IFTYPE_AP
)
{
/*
* If there are no pending frames for this STA, notify
* mac80211 that this station can go to sleep in its
* STA table.
* If mvmsta is not NULL, sta is valid.
*/
if
(
mvmsta
->
vif
->
type
==
NL80211_IFTYPE_AP
)
ieee80211_sta_block_awake
(
mvm
->
hw
,
sta
,
false
);
}
if
(
PTR_ERR
(
sta
)
==
-
EBUSY
||
PTR_ERR
(
sta
)
==
-
ENOENT
)
{
/*
* We might very well have taken mvmsta pointer while
* the station was being removed. The remove flow might
* have seen a pending_frame (because we didn't take
* the lock) even if now the queues are drained. So make
* really sure now that this the station is not being
* removed. If it is, run the drain worker to remove it.
*/
spin_lock_bh
(
&
mvmsta
->
lock
);
sta
=
rcu_dereference
(
mvm
->
fw_id_to_mac_id
[
sta_id
]);
if
(
!
sta
||
PTR_ERR
(
sta
)
==
-
EBUSY
)
{
/*
* Station disappeared in the meantime:
* so we are draining.
* We are draining and this was the last packet - pre_rcu_remove
* has been called already. We might be after the
* synchronize_net already.
* Don't rely on iwl_mvm_rm_sta to see the empty Tx queues.
*/
set_bit
(
sta_id
,
mvm
->
sta_drained
);
schedule_work
(
&
mvm
->
sta_drained_wk
);
}
spin_unlock_bh
(
&
mvmsta
->
lock
);
}
else
if
(
!
mvmsta
&&
PTR_ERR
(
sta
)
==
-
EBUSY
)
{
/* Tx response without STA, so we are draining */
set_bit
(
sta_id
,
mvm
->
sta_drained
);
schedule_work
(
&
mvm
->
sta_drained_wk
);
}
}
out:
rcu_read_unlock
();
}
...
...
drivers/net/wireless/iwlwifi/mvm/utils.c
View file @
235c0dc5
...
...
@@ -411,6 +411,8 @@ void iwl_mvm_dump_nic_error_log(struct iwl_mvm *mvm)
mvm
->
status
,
table
.
valid
);
}
IWL_ERR
(
mvm
,
"Loaded firmware version: %s
\n
"
,
mvm
->
fw
->
fw_version
);
trace_iwlwifi_dev_ucode_error
(
trans
->
dev
,
table
.
error_id
,
table
.
tsf_low
,
table
.
data1
,
table
.
data2
,
table
.
data3
,
table
.
blink1
,
table
.
blink2
,
table
.
ilink1
,
...
...
drivers/net/wireless/iwlwifi/pcie/drv.c
View file @
235c0dc5
...
...
@@ -359,20 +359,25 @@ static DEFINE_PCI_DEVICE_TABLE(iwl_hw_card_ids) = {
/* 7265 Series */
{
IWL_PCI_DEVICE
(
0x095A
,
0x5010
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x5110
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x5112
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x5100
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x510A
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095B
,
0x5310
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095B
,
0x5302
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095B
,
0x5210
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x5012
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x500A
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x5410
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x5400
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x1010
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x5000
,
iwl7265_2n_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x500A
,
iwl7265_2n_cfg
)},
{
IWL_PCI_DEVICE
(
0x095B
,
0x5200
,
iwl7265_2n_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x5002
,
iwl7265_n_cfg
)},
{
IWL_PCI_DEVICE
(
0x095B
,
0x5202
,
iwl7265_n_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x9010
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x9012
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x9110
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x9112
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x9210
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x9510
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x9310
,
iwl7265_2ac_cfg
)},
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment