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
nexedi
linux
Commits
939ecf6b
Commit
939ecf6b
authored
May 06, 2014
by
Emmanuel Grumbach
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'iwlwifi-fixes/master' into iwlwifi-next
parents
e03bbb62
8e96440e
Changes
9
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
212 additions
and
155 deletions
+212
-155
drivers/net/wireless/iwlwifi/iwl-7000.c
drivers/net/wireless/iwlwifi/iwl-7000.c
+1
-0
drivers/net/wireless/iwlwifi/mvm/coex.c
drivers/net/wireless/iwlwifi/mvm/coex.c
+14
-10
drivers/net/wireless/iwlwifi/mvm/fw-api-scan.h
drivers/net/wireless/iwlwifi/mvm/fw-api-scan.h
+4
-4
drivers/net/wireless/iwlwifi/mvm/mac80211.c
drivers/net/wireless/iwlwifi/mvm/mac80211.c
+1
-0
drivers/net/wireless/iwlwifi/mvm/rs.c
drivers/net/wireless/iwlwifi/mvm/rs.c
+165
-96
drivers/net/wireless/iwlwifi/mvm/rs.h
drivers/net/wireless/iwlwifi/mvm/rs.h
+11
-3
drivers/net/wireless/iwlwifi/mvm/scan.c
drivers/net/wireless/iwlwifi/mvm/scan.c
+12
-41
drivers/net/wireless/iwlwifi/mvm/sf.c
drivers/net/wireless/iwlwifi/mvm/sf.c
+2
-1
drivers/net/wireless/iwlwifi/pcie/drv.c
drivers/net/wireless/iwlwifi/pcie/drv.c
+2
-0
No files found.
drivers/net/wireless/iwlwifi/iwl-7000.c
View file @
939ecf6b
...
@@ -245,3 +245,4 @@ const struct iwl_cfg iwl7265_n_cfg = {
...
@@ -245,3 +245,4 @@ const struct iwl_cfg iwl7265_n_cfg = {
MODULE_FIRMWARE
(
IWL7260_MODULE_FIRMWARE
(
IWL7260_UCODE_API_OK
));
MODULE_FIRMWARE
(
IWL7260_MODULE_FIRMWARE
(
IWL7260_UCODE_API_OK
));
MODULE_FIRMWARE
(
IWL3160_MODULE_FIRMWARE
(
IWL3160_UCODE_API_OK
));
MODULE_FIRMWARE
(
IWL3160_MODULE_FIRMWARE
(
IWL3160_UCODE_API_OK
));
MODULE_FIRMWARE
(
IWL7265_MODULE_FIRMWARE
(
IWL7260_UCODE_API_OK
));
drivers/net/wireless/iwlwifi/mvm/coex.c
View file @
939ecf6b
...
@@ -187,7 +187,7 @@ static const __le32 iwl_combined_lookup[BT_COEX_MAX_LUT][BT_COEX_LUT_SIZE] = {
...
@@ -187,7 +187,7 @@ static const __le32 iwl_combined_lookup[BT_COEX_MAX_LUT][BT_COEX_LUT_SIZE] = {
cpu_to_le32
(
0xcc00aaaa
),
cpu_to_le32
(
0xcc00aaaa
),
cpu_to_le32
(
0x0000aaaa
),
cpu_to_le32
(
0x0000aaaa
),
cpu_to_le32
(
0xc0004000
),
cpu_to_le32
(
0xc0004000
),
cpu_to_le32
(
0x0000
0
000
),
cpu_to_le32
(
0x0000
4
000
),
cpu_to_le32
(
0xf0005000
),
cpu_to_le32
(
0xf0005000
),
cpu_to_le32
(
0xf0005000
),
cpu_to_le32
(
0xf0005000
),
},
},
...
@@ -210,16 +210,16 @@ static const __le32 iwl_combined_lookup[BT_COEX_MAX_LUT][BT_COEX_LUT_SIZE] = {
...
@@ -210,16 +210,16 @@ static const __le32 iwl_combined_lookup[BT_COEX_MAX_LUT][BT_COEX_LUT_SIZE] = {
/* Tx Tx disabled */
/* Tx Tx disabled */
cpu_to_le32
(
0xaaaaaaaa
),
cpu_to_le32
(
0xaaaaaaaa
),
cpu_to_le32
(
0xaaaaaaaa
),
cpu_to_le32
(
0xaaaaaaaa
),
cpu_to_le32
(
0x
aa
aaaaaa
),
cpu_to_le32
(
0x
ee
aaaaaa
),
cpu_to_le32
(
0xaaaaaaaa
),
cpu_to_le32
(
0xaaaaaaaa
),
cpu_to_le32
(
0xcc00ff28
),
cpu_to_le32
(
0xcc00ff28
),
cpu_to_le32
(
0x0000aaaa
),
cpu_to_le32
(
0x0000aaaa
),
cpu_to_le32
(
0xcc00aaaa
),
cpu_to_le32
(
0xcc00aaaa
),
cpu_to_le32
(
0x0000aaaa
),
cpu_to_le32
(
0x0000aaaa
),
cpu_to_le32
(
0x
C
0004000
),
cpu_to_le32
(
0x
c
0004000
),
cpu_to_le32
(
0x
C
0004000
),
cpu_to_le32
(
0x
c
0004000
),
cpu_to_le32
(
0x
F
0005000
),
cpu_to_le32
(
0x
f
0005000
),
cpu_to_le32
(
0x
F
0005000
),
cpu_to_le32
(
0x
f
0005000
),
},
},
};
};
...
@@ -611,14 +611,14 @@ int iwl_send_bt_init_conf(struct iwl_mvm *mvm)
...
@@ -611,14 +611,14 @@ int iwl_send_bt_init_conf(struct iwl_mvm *mvm)
bt_cmd
->
flags
|=
cpu_to_le32
(
BT_COEX_SYNC2SCO
);
bt_cmd
->
flags
|=
cpu_to_le32
(
BT_COEX_SYNC2SCO
);
if
(
IWL_MVM_BT_COEX_CORUNNING
)
{
if
(
IWL_MVM_BT_COEX_CORUNNING
)
{
bt_cmd
->
valid_bit_msk
=
cpu_to_le32
(
BT_VALID_CORUN_LUT_20
|
bt_cmd
->
valid_bit_msk
|
=
cpu_to_le32
(
BT_VALID_CORUN_LUT_20
|
BT_VALID_CORUN_LUT_40
);
BT_VALID_CORUN_LUT_40
);
bt_cmd
->
flags
|=
cpu_to_le32
(
BT_COEX_CORUNNING
);
bt_cmd
->
flags
|=
cpu_to_le32
(
BT_COEX_CORUNNING
);
}
}
if
(
IWL_MVM_BT_COEX_MPLUT
)
{
if
(
IWL_MVM_BT_COEX_MPLUT
)
{
bt_cmd
->
flags
|=
cpu_to_le32
(
BT_COEX_MPLUT
);
bt_cmd
->
flags
|=
cpu_to_le32
(
BT_COEX_MPLUT
);
bt_cmd
->
valid_bit_msk
=
cpu_to_le32
(
BT_VALID_MULTI_PRIO_LUT
);
bt_cmd
->
valid_bit_msk
|
=
cpu_to_le32
(
BT_VALID_MULTI_PRIO_LUT
);
}
}
if
(
mvm
->
cfg
->
bt_shared_single_ant
)
if
(
mvm
->
cfg
->
bt_shared_single_ant
)
...
@@ -1270,6 +1270,7 @@ int iwl_mvm_rx_ant_coupling_notif(struct iwl_mvm *mvm,
...
@@ -1270,6 +1270,7 @@ int iwl_mvm_rx_ant_coupling_notif(struct iwl_mvm *mvm,
struct
iwl_rx_packet
*
pkt
=
rxb_addr
(
rxb
);
struct
iwl_rx_packet
*
pkt
=
rxb_addr
(
rxb
);
u32
ant_isolation
=
le32_to_cpup
((
void
*
)
pkt
->
data
);
u32
ant_isolation
=
le32_to_cpup
((
void
*
)
pkt
->
data
);
u8
__maybe_unused
lower_bound
,
upper_bound
;
u8
__maybe_unused
lower_bound
,
upper_bound
;
int
ret
;
u8
lut
;
u8
lut
;
struct
iwl_bt_coex_cmd
*
bt_cmd
;
struct
iwl_bt_coex_cmd
*
bt_cmd
;
...
@@ -1326,5 +1327,8 @@ int iwl_mvm_rx_ant_coupling_notif(struct iwl_mvm *mvm,
...
@@ -1326,5 +1327,8 @@ int iwl_mvm_rx_ant_coupling_notif(struct iwl_mvm *mvm,
memcpy
(
bt_cmd
->
bt4_corun_lut40
,
antenna_coupling_ranges
[
lut
].
lut20
,
memcpy
(
bt_cmd
->
bt4_corun_lut40
,
antenna_coupling_ranges
[
lut
].
lut20
,
sizeof
(
bt_cmd
->
bt4_corun_lut40
));
sizeof
(
bt_cmd
->
bt4_corun_lut40
));
return
0
;
ret
=
iwl_mvm_send_cmd
(
mvm
,
&
cmd
);
kfree
(
bt_cmd
);
return
ret
;
}
}
drivers/net/wireless/iwlwifi/mvm/fw-api-scan.h
View file @
939ecf6b
...
@@ -187,9 +187,9 @@ enum iwl_scan_type {
...
@@ -187,9 +187,9 @@ enum iwl_scan_type {
* this number of packets were received (typically 1)
* this number of packets were received (typically 1)
* @passive2active: is auto switching from passive to active during scan allowed
* @passive2active: is auto switching from passive to active during scan allowed
* @rxchain_sel_flags: RXON_RX_CHAIN_*
* @rxchain_sel_flags: RXON_RX_CHAIN_*
* @max_out_time: in
usec
s, max out of serving channel time
* @max_out_time: in
TU
s, max out of serving channel time
* @suspend_time: how long to pause scan when returning to service channel:
* @suspend_time: how long to pause scan when returning to service channel:
* bits 0-19: beacon interal in
usec
s (suspend before executing)
* bits 0-19: beacon interal in
TU
s (suspend before executing)
* bits 20-23: reserved
* bits 20-23: reserved
* bits 24-31: number of beacons (suspend between channels)
* bits 24-31: number of beacons (suspend between channels)
* @rxon_flags: RXON_FLG_*
* @rxon_flags: RXON_FLG_*
...
@@ -387,8 +387,8 @@ enum scan_framework_client {
...
@@ -387,8 +387,8 @@ enum scan_framework_client {
* @quiet_plcp_th: quiet channel num of packets threshold
* @quiet_plcp_th: quiet channel num of packets threshold
* @good_CRC_th: passive to active promotion threshold
* @good_CRC_th: passive to active promotion threshold
* @rx_chain: RXON rx chain.
* @rx_chain: RXON rx chain.
* @max_out_time: max
uSec
to be out of assoceated channel
* @max_out_time: max
TUs
to be out of assoceated channel
* @suspend_time: pause scan this
long
when returning to service channel
* @suspend_time: pause scan this
TUs
when returning to service channel
* @flags: RXON flags
* @flags: RXON flags
* @filter_flags: RXONfilter
* @filter_flags: RXONfilter
* @tx_cmd: tx command for active scan; for 2GHz and for 5GHz.
* @tx_cmd: tx command for active scan; for 2GHz and for 5GHz.
...
...
drivers/net/wireless/iwlwifi/mvm/mac80211.c
View file @
939ecf6b
...
@@ -1334,6 +1334,7 @@ static void iwl_mvm_bss_info_changed_station(struct iwl_mvm *mvm,
...
@@ -1334,6 +1334,7 @@ static void iwl_mvm_bss_info_changed_station(struct iwl_mvm *mvm,
*/
*/
iwl_mvm_remove_time_event
(
mvm
,
mvmvif
,
iwl_mvm_remove_time_event
(
mvm
,
mvmvif
,
&
mvmvif
->
time_event_data
);
&
mvmvif
->
time_event_data
);
iwl_mvm_sf_update
(
mvm
,
vif
,
false
);
WARN_ON
(
iwl_mvm_enable_beacon_filter
(
mvm
,
vif
,
CMD_SYNC
));
WARN_ON
(
iwl_mvm_enable_beacon_filter
(
mvm
,
vif
,
CMD_SYNC
));
}
else
if
(
changes
&
(
BSS_CHANGED_PS
|
BSS_CHANGED_P2P_PS
|
}
else
if
(
changes
&
(
BSS_CHANGED_PS
|
BSS_CHANGED_P2P_PS
|
BSS_CHANGED_QOS
))
{
BSS_CHANGED_QOS
))
{
...
...
drivers/net/wireless/iwlwifi/mvm/rs.c
View file @
939ecf6b
This diff is collapsed.
Click to expand it.
drivers/net/wireless/iwlwifi/mvm/rs.h
View file @
939ecf6b
...
@@ -156,6 +156,7 @@ enum {
...
@@ -156,6 +156,7 @@ enum {
#define IWL_RATE_HIGH_TH 10880
/* 85% */
#define IWL_RATE_HIGH_TH 10880
/* 85% */
#define IWL_RATE_INCREASE_TH 6400
/* 50% */
#define IWL_RATE_INCREASE_TH 6400
/* 50% */
#define RS_SR_FORCE_DECREASE 1920
/* 15% */
#define RS_SR_FORCE_DECREASE 1920
/* 15% */
#define RS_SR_NO_DECREASE 10880
/* 85% */
#define TPC_SR_FORCE_INCREASE 9600
/* 75% */
#define TPC_SR_FORCE_INCREASE 9600
/* 75% */
#define TPC_SR_NO_INCREASE 10880
/* 85% */
#define TPC_SR_NO_INCREASE 10880
/* 85% */
...
@@ -326,15 +327,22 @@ struct iwl_lq_sta {
...
@@ -326,15 +327,22 @@ struct iwl_lq_sta {
u32
visited_columns
;
/* Bitmask marking which Tx columns were
u32
visited_columns
;
/* Bitmask marking which Tx columns were
* explored during a search cycle
* explored during a search cycle
*/
*/
u64
last_tx
;
bool
is_vht
;
bool
is_vht
;
enum
ieee80211_band
band
;
enum
ieee80211_band
band
;
struct
rs_rate_stats
tx_stats
[
RS_COLUMN_COUNT
][
IWL_RATE_COUNT
];
struct
rs_rate_stats
tx_stats
[
RS_COLUMN_COUNT
][
IWL_RATE_COUNT
];
/* The following are bitmaps of rates; IWL_RATE_6M_MASK, etc. */
/* The following are bitmaps of rates; IWL_RATE_6M_MASK, etc. */
u16
active_legacy_rate
;
unsigned
long
active_legacy_rate
;
u16
active_siso_rate
;
unsigned
long
active_siso_rate
;
u16
active_mimo2_rate
;
unsigned
long
active_mimo2_rate
;
/* Highest rate per Tx mode */
u8
max_legacy_rate_idx
;
u8
max_siso_rate_idx
;
u8
max_mimo2_rate_idx
;
s8
max_rate_idx
;
/* Max rate set by user */
s8
max_rate_idx
;
/* Max rate set by user */
u8
missed_rate_counter
;
u8
missed_rate_counter
;
...
...
drivers/net/wireless/iwlwifi/mvm/scan.c
View file @
939ecf6b
...
@@ -277,51 +277,22 @@ static void iwl_mvm_scan_calc_params(struct iwl_mvm *mvm,
...
@@ -277,51 +277,22 @@ static void iwl_mvm_scan_calc_params(struct iwl_mvm *mvm,
IEEE80211_IFACE_ITER_NORMAL
,
IEEE80211_IFACE_ITER_NORMAL
,
iwl_mvm_scan_condition_iterator
,
iwl_mvm_scan_condition_iterator
,
&
global_bound
);
&
global_bound
);
/*
* Under low latency traffic passive scan is fragmented meaning
* that dwell on a particular channel will be fragmented. Each fragment
* dwell time is 20ms and fragments period is 105ms. Skipping to next
* channel will be delayed by the same period - 105ms. So suspend_time
* parameter describing both fragments and channels skipping periods is
* set to 105ms. This value is chosen so that overall passive scan
* duration will not be too long. Max_out_time in this case is set to
* 70ms, so for active scanning operating channel will be left for 70ms
* while for passive still for 20ms (fragment dwell).
*/
if
(
global_bound
)
{
if
(
!
iwl_mvm_low_latency
(
mvm
))
{
params
->
suspend_time
=
ieee80211_tu_to_usec
(
100
);
params
->
max_out_time
=
ieee80211_tu_to_usec
(
600
);
}
else
{
params
->
suspend_time
=
ieee80211_tu_to_usec
(
105
);
/* P2P doesn't support fragmented passive scan, so
* configure max_out_time to be at least longest dwell
* time for passive scan.
*/
if
(
vif
->
type
==
NL80211_IFTYPE_STATION
&&
!
vif
->
p2p
)
{
params
->
max_out_time
=
ieee80211_tu_to_usec
(
70
);
params
->
passive_fragmented
=
true
;
}
else
{
u32
passive_dwell
;
/*
if
(
!
global_bound
)
* Use band G so that passive channel dwell time
goto
not_bound
;
* will be assigned with maximum value.
*/
params
->
suspend_time
=
100
;
band
=
IEEE80211_BAND_2GHZ
;
params
->
max_out_time
=
600
;
passive_dwell
=
iwl_mvm_get_passive_dwell
(
band
);
params
->
max_out_time
=
if
(
iwl_mvm_low_latency
(
mvm
))
{
ieee80211_tu_to_usec
(
passive_dwell
);
params
->
suspend_time
=
250
;
}
params
->
max_out_time
=
250
;
}
}
}
not_bound:
for
(
band
=
IEEE80211_BAND_2GHZ
;
band
<
IEEE80211_NUM_BANDS
;
band
++
)
{
for
(
band
=
IEEE80211_BAND_2GHZ
;
band
<
IEEE80211_NUM_BANDS
;
band
++
)
{
if
(
params
->
passive_fragmented
)
params
->
dwell
[
band
].
passive
=
iwl_mvm_get_passive_dwell
(
band
);
params
->
dwell
[
band
].
passive
=
20
;
else
params
->
dwell
[
band
].
passive
=
iwl_mvm_get_passive_dwell
(
band
);
params
->
dwell
[
band
].
active
=
iwl_mvm_get_active_dwell
(
band
,
params
->
dwell
[
band
].
active
=
iwl_mvm_get_active_dwell
(
band
,
n_ssids
);
n_ssids
);
}
}
...
...
drivers/net/wireless/iwlwifi/mvm/sf.c
View file @
939ecf6b
...
@@ -271,7 +271,8 @@ int iwl_mvm_sf_update(struct iwl_mvm *mvm, struct ieee80211_vif *changed_vif,
...
@@ -271,7 +271,8 @@ int iwl_mvm_sf_update(struct iwl_mvm *mvm, struct ieee80211_vif *changed_vif,
return
-
EINVAL
;
return
-
EINVAL
;
if
(
changed_vif
->
type
!=
NL80211_IFTYPE_STATION
)
{
if
(
changed_vif
->
type
!=
NL80211_IFTYPE_STATION
)
{
new_state
=
SF_UNINIT
;
new_state
=
SF_UNINIT
;
}
else
if
(
changed_vif
->
bss_conf
.
assoc
)
{
}
else
if
(
changed_vif
->
bss_conf
.
assoc
&&
changed_vif
->
bss_conf
.
dtim_period
)
{
mvmvif
=
iwl_mvm_vif_from_mac80211
(
changed_vif
);
mvmvif
=
iwl_mvm_vif_from_mac80211
(
changed_vif
);
sta_id
=
mvmvif
->
ap_sta_id
;
sta_id
=
mvmvif
->
ap_sta_id
;
new_state
=
SF_FULL_ON
;
new_state
=
SF_FULL_ON
;
...
...
drivers/net/wireless/iwlwifi/pcie/drv.c
View file @
939ecf6b
...
@@ -373,12 +373,14 @@ static DEFINE_PCI_DEVICE_TABLE(iwl_hw_card_ids) = {
...
@@ -373,12 +373,14 @@ static DEFINE_PCI_DEVICE_TABLE(iwl_hw_card_ids) = {
{
IWL_PCI_DEVICE
(
0x095A
,
0x500A
,
iwl7265_2n_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x500A
,
iwl7265_2n_cfg
)},
{
IWL_PCI_DEVICE
(
0x095B
,
0x5200
,
iwl7265_2n_cfg
)},
{
IWL_PCI_DEVICE
(
0x095B
,
0x5200
,
iwl7265_2n_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x5002
,
iwl7265_n_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x5002
,
iwl7265_n_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x5102
,
iwl7265_n_cfg
)},
{
IWL_PCI_DEVICE
(
0x095B
,
0x5202
,
iwl7265_n_cfg
)},
{
IWL_PCI_DEVICE
(
0x095B
,
0x5202
,
iwl7265_n_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x9010
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x9010
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x9012
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x9012
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x9110
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x9110
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x9112
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x9112
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x9210
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x9210
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x9200
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x9510
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x9510
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x9310
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x9310
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x9410
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x9410
,
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