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
1c114f42
Commit
1c114f42
authored
Aug 10, 2010
by
David S. Miller
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
parents
9871e50e
533b12c8
Changes
16
Show whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
102 additions
and
144 deletions
+102
-144
drivers/net/wireless/iwlwifi/iwl-1000.c
drivers/net/wireless/iwlwifi/iwl-1000.c
+1
-1
drivers/net/wireless/iwlwifi/iwl-3945.c
drivers/net/wireless/iwlwifi/iwl-3945.c
+1
-17
drivers/net/wireless/iwlwifi/iwl-4965.c
drivers/net/wireless/iwlwifi/iwl-4965.c
+1
-1
drivers/net/wireless/iwlwifi/iwl-5000.c
drivers/net/wireless/iwlwifi/iwl-5000.c
+5
-5
drivers/net/wireless/iwlwifi/iwl-6000.c
drivers/net/wireless/iwlwifi/iwl-6000.c
+8
-8
drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
+15
-4
drivers/net/wireless/iwlwifi/iwl-agn-tx.c
drivers/net/wireless/iwlwifi/iwl-agn-tx.c
+1
-19
drivers/net/wireless/iwlwifi/iwl-agn.c
drivers/net/wireless/iwlwifi/iwl-agn.c
+21
-64
drivers/net/wireless/iwlwifi/iwl-core.c
drivers/net/wireless/iwlwifi/iwl-core.c
+25
-4
drivers/net/wireless/iwlwifi/iwl-core.h
drivers/net/wireless/iwlwifi/iwl-core.h
+8
-6
drivers/net/wireless/iwlwifi/iwl3945-base.c
drivers/net/wireless/iwlwifi/iwl3945-base.c
+1
-4
drivers/net/wireless/libertas/cfg.c
drivers/net/wireless/libertas/cfg.c
+1
-0
drivers/net/wireless/p54/p54pci.c
drivers/net/wireless/p54/p54pci.c
+0
-2
include/net/bluetooth/l2cap.h
include/net/bluetooth/l2cap.h
+2
-2
net/bluetooth/l2cap.c
net/bluetooth/l2cap.c
+5
-6
net/wireless/mlme.c
net/wireless/mlme.c
+7
-1
No files found.
drivers/net/wireless/iwlwifi/iwl-1000.c
View file @
1c114f42
...
...
@@ -260,7 +260,7 @@ struct iwl_cfg iwl1000_bgn_cfg = {
.
shadow_ram_support
=
false
,
.
ht_greenfield_support
=
true
,
.
led_compensation
=
51
,
.
use_rts_for_
ht
=
true
,
/* use rts/cts protection */
.
use_rts_for_
aggregation
=
true
,
/* use rts/cts protection */
.
chain_noise_num_beacons
=
IWL_CAL_NUM_BEACONS
,
.
support_ct_kill_exit
=
true
,
.
plcp_delta_threshold
=
IWL_MAX_PLCP_ERR_EXT_LONG_THRESHOLD_DEF
,
...
...
drivers/net/wireless/iwlwifi/iwl-3945.c
View file @
1c114f42
...
...
@@ -769,22 +769,6 @@ void iwl3945_hw_build_tx_cmd_rate(struct iwl_priv *priv,
rts_retry_limit
=
data_retry_limit
;
tx_cmd
->
rts_retry_limit
=
rts_retry_limit
;
if
(
ieee80211_is_mgmt
(
fc
))
{
switch
(
fc
&
cpu_to_le16
(
IEEE80211_FCTL_STYPE
))
{
case
cpu_to_le16
(
IEEE80211_STYPE_AUTH
):
case
cpu_to_le16
(
IEEE80211_STYPE_DEAUTH
):
case
cpu_to_le16
(
IEEE80211_STYPE_ASSOC_REQ
):
case
cpu_to_le16
(
IEEE80211_STYPE_REASSOC_REQ
):
if
(
tx_flags
&
TX_CMD_FLG_RTS_MSK
)
{
tx_flags
&=
~
TX_CMD_FLG_RTS_MSK
;
tx_flags
|=
TX_CMD_FLG_CTS_MSK
;
}
break
;
default:
break
;
}
}
tx_cmd
->
rate
=
rate
;
tx_cmd
->
tx_flags
=
tx_flags
;
...
...
@@ -2717,7 +2701,7 @@ static struct iwl_lib_ops iwl3945_lib = {
static
struct
iwl_hcmd_utils_ops
iwl3945_hcmd_utils
=
{
.
get_hcmd_size
=
iwl3945_get_hcmd_size
,
.
build_addsta_hcmd
=
iwl3945_build_addsta_hcmd
,
.
rts_tx_cmd_flag
=
iwlcore_rts_tx_cmd_flag
,
.
tx_cmd_protection
=
iwlcore_tx_cmd_protection
,
.
request_scan
=
iwl3945_request_scan
,
};
...
...
drivers/net/wireless/iwlwifi/iwl-4965.c
View file @
1c114f42
...
...
@@ -2223,7 +2223,7 @@ static struct iwl_hcmd_utils_ops iwl4965_hcmd_utils = {
.
build_addsta_hcmd
=
iwl4965_build_addsta_hcmd
,
.
chain_noise_reset
=
iwl4965_chain_noise_reset
,
.
gain_computation
=
iwl4965_gain_computation
,
.
rts_tx_cmd_flag
=
iwlcore_rts_tx_cmd_flag
,
.
tx_cmd_protection
=
iwlcore_tx_cmd_protection
,
.
calc_rssi
=
iwl4965_calc_rssi
,
.
request_scan
=
iwlagn_request_scan
,
};
...
...
drivers/net/wireless/iwlwifi/iwl-5000.c
View file @
1c114f42
...
...
@@ -506,7 +506,7 @@ struct iwl_cfg iwl5300_agn_cfg = {
.
use_bsm
=
false
,
.
ht_greenfield_support
=
true
,
.
led_compensation
=
51
,
.
use_rts_for_
ht
=
true
,
/* use rts/cts protection */
.
use_rts_for_
aggregation
=
true
,
/* use rts/cts protection */
.
chain_noise_num_beacons
=
IWL_CAL_NUM_BEACONS
,
.
plcp_delta_threshold
=
IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF
,
.
chain_noise_scale
=
1000
,
...
...
@@ -537,7 +537,7 @@ struct iwl_cfg iwl5100_bgn_cfg = {
.
use_bsm
=
false
,
.
ht_greenfield_support
=
true
,
.
led_compensation
=
51
,
.
use_rts_for_
ht
=
true
,
/* use rts/cts protection */
.
use_rts_for_
aggregation
=
true
,
/* use rts/cts protection */
.
chain_noise_num_beacons
=
IWL_CAL_NUM_BEACONS
,
.
plcp_delta_threshold
=
IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF
,
.
chain_noise_scale
=
1000
,
...
...
@@ -597,7 +597,7 @@ struct iwl_cfg iwl5100_agn_cfg = {
.
use_bsm
=
false
,
.
ht_greenfield_support
=
true
,
.
led_compensation
=
51
,
.
use_rts_for_
ht
=
true
,
/* use rts/cts protection */
.
use_rts_for_
aggregation
=
true
,
/* use rts/cts protection */
.
chain_noise_num_beacons
=
IWL_CAL_NUM_BEACONS
,
.
plcp_delta_threshold
=
IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF
,
.
chain_noise_scale
=
1000
,
...
...
@@ -628,7 +628,7 @@ struct iwl_cfg iwl5350_agn_cfg = {
.
use_bsm
=
false
,
.
ht_greenfield_support
=
true
,
.
led_compensation
=
51
,
.
use_rts_for_
ht
=
true
,
/* use rts/cts protection */
.
use_rts_for_
aggregation
=
true
,
/* use rts/cts protection */
.
chain_noise_num_beacons
=
IWL_CAL_NUM_BEACONS
,
.
plcp_delta_threshold
=
IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF
,
.
chain_noise_scale
=
1000
,
...
...
@@ -659,7 +659,7 @@ struct iwl_cfg iwl5150_agn_cfg = {
.
use_bsm
=
false
,
.
ht_greenfield_support
=
true
,
.
led_compensation
=
51
,
.
use_rts_for_
ht
=
true
,
/* use rts/cts protection */
.
use_rts_for_
aggregation
=
true
,
/* use rts/cts protection */
.
chain_noise_num_beacons
=
IWL_CAL_NUM_BEACONS
,
.
plcp_delta_threshold
=
IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF
,
.
chain_noise_scale
=
1000
,
...
...
drivers/net/wireless/iwlwifi/iwl-6000.c
View file @
1c114f42
...
...
@@ -381,7 +381,7 @@ struct iwl_cfg iwl6000g2a_2agn_cfg = {
.
shadow_ram_support
=
true
,
.
ht_greenfield_support
=
true
,
.
led_compensation
=
51
,
.
use_rts_for_
ht
=
true
,
/* use rts/cts protection */
.
use_rts_for_
aggregation
=
true
,
/* use rts/cts protection */
.
chain_noise_num_beacons
=
IWL_CAL_NUM_BEACONS
,
.
supports_idle
=
true
,
.
adv_thermal_throttle
=
true
,
...
...
@@ -489,7 +489,7 @@ struct iwl_cfg iwl6000g2b_2agn_cfg = {
.
shadow_ram_support
=
true
,
.
ht_greenfield_support
=
true
,
.
led_compensation
=
51
,
.
use_rts_for_
ht
=
true
,
/* use rts/cts protection */
.
use_rts_for_
aggregation
=
true
,
/* use rts/cts protection */
.
chain_noise_num_beacons
=
IWL_CAL_NUM_BEACONS
,
.
supports_idle
=
true
,
.
adv_thermal_throttle
=
true
,
...
...
@@ -563,7 +563,7 @@ struct iwl_cfg iwl6000g2b_2bgn_cfg = {
.
shadow_ram_support
=
true
,
.
ht_greenfield_support
=
true
,
.
led_compensation
=
51
,
.
use_rts_for_
ht
=
true
,
/* use rts/cts protection */
.
use_rts_for_
aggregation
=
true
,
/* use rts/cts protection */
.
chain_noise_num_beacons
=
IWL_CAL_NUM_BEACONS
,
.
supports_idle
=
true
,
.
adv_thermal_throttle
=
true
,
...
...
@@ -637,7 +637,7 @@ struct iwl_cfg iwl6000g2b_bgn_cfg = {
.
shadow_ram_support
=
true
,
.
ht_greenfield_support
=
true
,
.
led_compensation
=
51
,
.
use_rts_for_
ht
=
true
,
/* use rts/cts protection */
.
use_rts_for_
aggregation
=
true
,
/* use rts/cts protection */
.
chain_noise_num_beacons
=
IWL_CAL_NUM_BEACONS
,
.
supports_idle
=
true
,
.
adv_thermal_throttle
=
true
,
...
...
@@ -714,7 +714,7 @@ struct iwl_cfg iwl6000i_2agn_cfg = {
.
shadow_ram_support
=
true
,
.
ht_greenfield_support
=
true
,
.
led_compensation
=
51
,
.
use_rts_for_
ht
=
true
,
/* use rts/cts protection */
.
use_rts_for_
aggregation
=
true
,
/* use rts/cts protection */
.
chain_noise_num_beacons
=
IWL_CAL_NUM_BEACONS
,
.
supports_idle
=
true
,
.
adv_thermal_throttle
=
true
,
...
...
@@ -821,7 +821,7 @@ struct iwl_cfg iwl6050_2agn_cfg = {
.
shadow_ram_support
=
true
,
.
ht_greenfield_support
=
true
,
.
led_compensation
=
51
,
.
use_rts_for_
ht
=
true
,
/* use rts/cts protection */
.
use_rts_for_
aggregation
=
true
,
/* use rts/cts protection */
.
chain_noise_num_beacons
=
IWL_CAL_NUM_BEACONS
,
.
supports_idle
=
true
,
.
adv_thermal_throttle
=
true
,
...
...
@@ -859,7 +859,7 @@ struct iwl_cfg iwl6050g2_bgn_cfg = {
.
shadow_ram_support
=
true
,
.
ht_greenfield_support
=
true
,
.
led_compensation
=
51
,
.
use_rts_for_
ht
=
true
,
/* use rts/cts protection */
.
use_rts_for_
aggregation
=
true
,
/* use rts/cts protection */
.
chain_noise_num_beacons
=
IWL_CAL_NUM_BEACONS
,
.
supports_idle
=
true
,
.
adv_thermal_throttle
=
true
,
...
...
@@ -933,7 +933,7 @@ struct iwl_cfg iwl6000_3agn_cfg = {
.
shadow_ram_support
=
true
,
.
ht_greenfield_support
=
true
,
.
led_compensation
=
51
,
.
use_rts_for_
ht
=
true
,
/* use rts/cts protection */
.
use_rts_for_
aggregation
=
true
,
/* use rts/cts protection */
.
chain_noise_num_beacons
=
IWL_CAL_NUM_BEACONS
,
.
supports_idle
=
true
,
.
adv_thermal_throttle
=
true
,
...
...
drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
View file @
1c114f42
...
...
@@ -211,10 +211,21 @@ static void iwlagn_chain_noise_reset(struct iwl_priv *priv)
}
}
static
void
iwlagn_rts_tx_cmd_flag
(
struct
ieee80211_tx_info
*
info
,
__le32
*
tx_flags
)
static
void
iwlagn_tx_cmd_protection
(
struct
iwl_priv
*
priv
,
struct
ieee80211_tx_info
*
info
,
__le16
fc
,
__le32
*
tx_flags
)
{
if
(
info
->
control
.
rates
[
0
].
flags
&
IEEE80211_TX_RC_USE_RTS_CTS
||
info
->
control
.
rates
[
0
].
flags
&
IEEE80211_TX_RC_USE_CTS_PROTECT
)
{
*
tx_flags
|=
TX_CMD_FLG_PROT_REQUIRE_MSK
;
return
;
}
if
(
priv
->
cfg
->
use_rts_for_aggregation
&&
info
->
flags
&
IEEE80211_TX_CTL_AMPDU
)
{
*
tx_flags
|=
TX_CMD_FLG_PROT_REQUIRE_MSK
;
return
;
}
}
/* Calc max signal level (dBm) among 3 possible receivers */
...
...
@@ -268,7 +279,7 @@ struct iwl_hcmd_utils_ops iwlagn_hcmd_utils = {
.
build_addsta_hcmd
=
iwlagn_build_addsta_hcmd
,
.
gain_computation
=
iwlagn_gain_computation
,
.
chain_noise_reset
=
iwlagn_chain_noise_reset
,
.
rts_tx_cmd_flag
=
iwlagn_rts_tx_cmd_flag
,
.
tx_cmd_protection
=
iwlagn_tx_cmd_protection
,
.
calc_rssi
=
iwlagn_calc_rssi
,
.
request_scan
=
iwlagn_request_scan
,
};
drivers/net/wireless/iwlwifi/iwl-agn-tx.c
View file @
1c114f42
...
...
@@ -379,10 +379,7 @@ static void iwlagn_tx_cmd_build_basic(struct iwl_priv *priv,
tx_flags
|=
TX_CMD_FLG_SEQ_CTL_MSK
;
}
priv
->
cfg
->
ops
->
utils
->
rts_tx_cmd_flag
(
info
,
&
tx_flags
);
if
((
tx_flags
&
TX_CMD_FLG_RTS_MSK
)
||
(
tx_flags
&
TX_CMD_FLG_CTS_MSK
))
tx_flags
|=
TX_CMD_FLG_FULL_TXOP_PROT_MSK
;
priv
->
cfg
->
ops
->
utils
->
tx_cmd_protection
(
priv
,
info
,
fc
,
&
tx_flags
);
tx_flags
&=
~
(
TX_CMD_FLG_ANT_SEL_MSK
);
if
(
ieee80211_is_mgmt
(
fc
))
{
...
...
@@ -456,21 +453,6 @@ static void iwlagn_tx_cmd_build_rate(struct iwl_priv *priv,
if
((
rate_idx
>=
IWL_FIRST_CCK_RATE
)
&&
(
rate_idx
<=
IWL_LAST_CCK_RATE
))
rate_flags
|=
RATE_MCS_CCK_MSK
;
/* Set up RTS and CTS flags for certain packets */
switch
(
fc
&
cpu_to_le16
(
IEEE80211_FCTL_STYPE
))
{
case
cpu_to_le16
(
IEEE80211_STYPE_AUTH
):
case
cpu_to_le16
(
IEEE80211_STYPE_DEAUTH
):
case
cpu_to_le16
(
IEEE80211_STYPE_ASSOC_REQ
):
case
cpu_to_le16
(
IEEE80211_STYPE_REASSOC_REQ
):
if
(
tx_cmd
->
tx_flags
&
TX_CMD_FLG_RTS_MSK
)
{
tx_cmd
->
tx_flags
&=
~
TX_CMD_FLG_RTS_MSK
;
tx_cmd
->
tx_flags
|=
TX_CMD_FLG_CTS_MSK
;
}
break
;
default:
break
;
}
/* Set up antennas */
priv
->
mgmt_tx_ant
=
iwl_toggle_tx_ant
(
priv
,
priv
->
mgmt_tx_ant
,
priv
->
hw_params
.
valid_tx_ant
);
...
...
drivers/net/wireless/iwlwifi/iwl-agn.c
View file @
1c114f42
...
...
@@ -202,13 +202,6 @@ int iwl_commit_rxon(struct iwl_priv *priv)
priv
->
start_calib
=
0
;
if
(
new_assoc
)
{
/*
* allow CTS-to-self if possible for new association.
* this is relevant only for 5000 series and up,
* but will not damage 4965
*/
priv
->
staging_rxon
.
flags
|=
RXON_FLG_SELF_CTS_EN
;
/* Apply the new configuration
* RXON assoc doesn't clear the station table in uCode,
*/
...
...
@@ -1618,45 +1611,9 @@ static ssize_t store_tx_power(struct device *d,
static
DEVICE_ATTR
(
tx_power
,
S_IWUSR
|
S_IRUGO
,
show_tx_power
,
store_tx_power
);
static
ssize_t
show_rts_ht_protection
(
struct
device
*
d
,
struct
device_attribute
*
attr
,
char
*
buf
)
{
struct
iwl_priv
*
priv
=
dev_get_drvdata
(
d
);
return
sprintf
(
buf
,
"%s
\n
"
,
priv
->
cfg
->
use_rts_for_ht
?
"RTS/CTS"
:
"CTS-to-self"
);
}
static
ssize_t
store_rts_ht_protection
(
struct
device
*
d
,
struct
device_attribute
*
attr
,
const
char
*
buf
,
size_t
count
)
{
struct
iwl_priv
*
priv
=
dev_get_drvdata
(
d
);
unsigned
long
val
;
int
ret
;
ret
=
strict_strtoul
(
buf
,
10
,
&
val
);
if
(
ret
)
IWL_INFO
(
priv
,
"Input is not in decimal form.
\n
"
);
else
{
if
(
!
iwl_is_associated
(
priv
))
priv
->
cfg
->
use_rts_for_ht
=
val
?
true
:
false
;
else
IWL_ERR
(
priv
,
"Sta associated with AP - "
"Change protection mechanism is not allowed
\n
"
);
ret
=
count
;
}
return
ret
;
}
static
DEVICE_ATTR
(
rts_ht_protection
,
S_IWUSR
|
S_IRUGO
,
show_rts_ht_protection
,
store_rts_ht_protection
);
static
struct
attribute
*
iwl_sysfs_entries
[]
=
{
&
dev_attr_temperature
.
attr
,
&
dev_attr_tx_power
.
attr
,
&
dev_attr_rts_ht_protection
.
attr
,
#ifdef CONFIG_IWLWIFI_DEBUG
&
dev_attr_debug_level
.
attr
,
#endif
...
...
@@ -3464,25 +3421,6 @@ static int iwl_mac_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
return
ret
;
}
/*
* switch to RTS/CTS for TX
*/
static
void
iwl_enable_rts_cts
(
struct
iwl_priv
*
priv
)
{
if
(
test_bit
(
STATUS_EXIT_PENDING
,
&
priv
->
status
))
return
;
priv
->
staging_rxon
.
flags
&=
~
RXON_FLG_SELF_CTS_EN
;
if
(
!
test_bit
(
STATUS_SCANNING
,
&
priv
->
status
))
{
IWL_DEBUG_INFO
(
priv
,
"use RTS/CTS protection
\n
"
);
iwlcore_commit_rxon
(
priv
);
}
else
{
/* scanning, defer the request until scan completed */
IWL_DEBUG_INFO
(
priv
,
"defer setting RTS/CTS protection
\n
"
);
}
}
static
int
iwl_mac_ampdu_action
(
struct
ieee80211_hw
*
hw
,
struct
ieee80211_vif
*
vif
,
enum
ieee80211_ampdu_mlme_action
action
,
...
...
@@ -3529,14 +3467,33 @@ static int iwl_mac_ampdu_action(struct ieee80211_hw *hw,
}
if
(
test_bit
(
STATUS_EXIT_PENDING
,
&
priv
->
status
))
ret
=
0
;
if
(
priv
->
cfg
->
use_rts_for_aggregation
)
{
struct
iwl_station_priv
*
sta_priv
=
(
void
*
)
sta
->
drv_priv
;
/*
* switch off RTS/CTS if it was previously enabled
*/
sta_priv
->
lq_sta
.
lq
.
general_params
.
flags
&=
~
LINK_QUAL_FLAGS_SET_STA_TLC_RTS_MSK
;
iwl_send_lq_cmd
(
priv
,
&
sta_priv
->
lq_sta
.
lq
,
CMD_ASYNC
,
false
);
}
break
;
case
IEEE80211_AMPDU_TX_OPERATIONAL
:
if
(
priv
->
cfg
->
use_rts_for_ht
)
{
if
(
priv
->
cfg
->
use_rts_for_aggregation
)
{
struct
iwl_station_priv
*
sta_priv
=
(
void
*
)
sta
->
drv_priv
;
/*
* switch to RTS/CTS if it is the prefer protection
* method for HT traffic
*/
iwl_enable_rts_cts
(
priv
);
sta_priv
->
lq_sta
.
lq
.
general_params
.
flags
|=
LINK_QUAL_FLAGS_SET_STA_TLC_RTS_MSK
;
iwl_send_lq_cmd
(
priv
,
&
sta_priv
->
lq_sta
.
lq
,
CMD_ASYNC
,
false
);
}
ret
=
0
;
break
;
...
...
drivers/net/wireless/iwlwifi/iwl-core.c
View file @
1c114f42
...
...
@@ -401,21 +401,38 @@ void iwlcore_free_geos(struct iwl_priv *priv)
EXPORT_SYMBOL
(
iwlcore_free_geos
);
/*
* iwlcore_
rts_tx_cmd_flag
: Set rts/cts. 3945 and 4965 only share this
* iwlcore_
tx_cmd_protection
: Set rts/cts. 3945 and 4965 only share this
* function.
*/
void
iwlcore_rts_tx_cmd_flag
(
struct
ieee80211_tx_info
*
info
,
__le32
*
tx_flags
)
void
iwlcore_tx_cmd_protection
(
struct
iwl_priv
*
priv
,
struct
ieee80211_tx_info
*
info
,
__le16
fc
,
__le32
*
tx_flags
)
{
if
(
info
->
control
.
rates
[
0
].
flags
&
IEEE80211_TX_RC_USE_RTS_CTS
)
{
*
tx_flags
|=
TX_CMD_FLG_RTS_MSK
;
*
tx_flags
&=
~
TX_CMD_FLG_CTS_MSK
;
*
tx_flags
|=
TX_CMD_FLG_FULL_TXOP_PROT_MSK
;
if
(
!
ieee80211_is_mgmt
(
fc
))
return
;
switch
(
fc
&
cpu_to_le16
(
IEEE80211_FCTL_STYPE
))
{
case
cpu_to_le16
(
IEEE80211_STYPE_AUTH
):
case
cpu_to_le16
(
IEEE80211_STYPE_DEAUTH
):
case
cpu_to_le16
(
IEEE80211_STYPE_ASSOC_REQ
):
case
cpu_to_le16
(
IEEE80211_STYPE_REASSOC_REQ
):
*
tx_flags
&=
~
TX_CMD_FLG_RTS_MSK
;
*
tx_flags
|=
TX_CMD_FLG_CTS_MSK
;
break
;
}
}
else
if
(
info
->
control
.
rates
[
0
].
flags
&
IEEE80211_TX_RC_USE_CTS_PROTECT
)
{
*
tx_flags
&=
~
TX_CMD_FLG_RTS_MSK
;
*
tx_flags
|=
TX_CMD_FLG_CTS_MSK
;
*
tx_flags
|=
TX_CMD_FLG_FULL_TXOP_PROT_MSK
;
}
}
EXPORT_SYMBOL
(
iwlcore_rts_tx_cmd_flag
);
EXPORT_SYMBOL
(
iwlcore_tx_cmd_protection
);
static
bool
is_single_rx_stream
(
struct
iwl_priv
*
priv
)
{
...
...
@@ -1869,6 +1886,10 @@ void iwl_bss_info_changed(struct ieee80211_hw *hw,
priv
->
staging_rxon
.
flags
|=
RXON_FLG_TGG_PROTECT_MSK
;
else
priv
->
staging_rxon
.
flags
&=
~
RXON_FLG_TGG_PROTECT_MSK
;
if
(
bss_conf
->
use_cts_prot
)
priv
->
staging_rxon
.
flags
|=
RXON_FLG_SELF_CTS_EN
;
else
priv
->
staging_rxon
.
flags
&=
~
RXON_FLG_SELF_CTS_EN
;
}
if
(
changes
&
BSS_CHANGED_BASIC_RATES
)
{
...
...
drivers/net/wireless/iwlwifi/iwl-core.h
View file @
1c114f42
...
...
@@ -104,8 +104,9 @@ struct iwl_hcmd_utils_ops {
u32
min_average_noise
,
u8
default_chain
);
void
(
*
chain_noise_reset
)(
struct
iwl_priv
*
priv
);
void
(
*
rts_tx_cmd_flag
)(
struct
ieee80211_tx_info
*
info
,
__le32
*
tx_flags
);
void
(
*
tx_cmd_protection
)(
struct
iwl_priv
*
priv
,
struct
ieee80211_tx_info
*
info
,
__le16
fc
,
__le32
*
tx_flags
);
int
(
*
calc_rssi
)(
struct
iwl_priv
*
priv
,
struct
iwl_rx_phy_res
*
rx_resp
);
void
(
*
request_scan
)(
struct
iwl_priv
*
priv
,
struct
ieee80211_vif
*
vif
);
...
...
@@ -249,7 +250,7 @@ struct iwl_mod_params {
* @led_compensation: compensate on the led on/off time per HW according
* to the deviation to achieve the desired led frequency.
* The detail algorithm is described in iwl-led.c
* @use_rts_for_
ht
: use rts/cts protection for HT traffic
* @use_rts_for_
aggregation
: use rts/cts protection for HT traffic
* @chain_noise_num_beacons: number of beacons used to compute chain noise
* @adv_thermal_throttle: support advance thermal throttle
* @support_ct_kill_exit: support ct kill exit condition
...
...
@@ -318,7 +319,7 @@ struct iwl_cfg {
const
bool
ht_greenfield_support
;
u16
led_compensation
;
const
bool
broken_powersave
;
bool
use_rts_for_
ht
;
bool
use_rts_for_
aggregation
;
int
chain_noise_num_beacons
;
const
bool
supports_idle
;
bool
adv_thermal_throttle
;
...
...
@@ -390,8 +391,9 @@ void iwl_config_ap(struct iwl_priv *priv, struct ieee80211_vif *vif);
void
iwl_mac_reset_tsf
(
struct
ieee80211_hw
*
hw
);
int
iwl_alloc_txq_mem
(
struct
iwl_priv
*
priv
);
void
iwl_free_txq_mem
(
struct
iwl_priv
*
priv
);
void
iwlcore_rts_tx_cmd_flag
(
struct
ieee80211_tx_info
*
info
,
__le32
*
tx_flags
);
void
iwlcore_tx_cmd_protection
(
struct
iwl_priv
*
priv
,
struct
ieee80211_tx_info
*
info
,
__le16
fc
,
__le32
*
tx_flags
);
#ifdef CONFIG_IWLWIFI_DEBUGFS
int
iwl_alloc_traffic_mem
(
struct
iwl_priv
*
priv
);
void
iwl_free_traffic_mem
(
struct
iwl_priv
*
priv
);
...
...
drivers/net/wireless/iwlwifi/iwl3945-base.c
View file @
1c114f42
...
...
@@ -435,10 +435,7 @@ static void iwl3945_build_tx_cmd_basic(struct iwl_priv *priv,
tx_flags
|=
TX_CMD_FLG_SEQ_CTL_MSK
;
}
priv
->
cfg
->
ops
->
utils
->
rts_tx_cmd_flag
(
info
,
&
tx_flags
);
if
((
tx_flags
&
TX_CMD_FLG_RTS_MSK
)
||
(
tx_flags
&
TX_CMD_FLG_CTS_MSK
))
tx_flags
|=
TX_CMD_FLG_FULL_TXOP_PROT_MSK
;
priv
->
cfg
->
ops
->
utils
->
tx_cmd_protection
(
priv
,
info
,
fc
,
&
tx_flags
);
tx_flags
&=
~
(
TX_CMD_FLG_ANT_SEL_MSK
);
if
(
ieee80211_is_mgmt
(
fc
))
{
...
...
drivers/net/wireless/libertas/cfg.c
View file @
1c114f42
...
...
@@ -7,6 +7,7 @@
*/
#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/ieee80211.h>
#include <net/cfg80211.h>
#include <asm/unaligned.h>
...
...
drivers/net/wireless/p54/p54pci.c
View file @
1c114f42
...
...
@@ -43,8 +43,6 @@ static DEFINE_PCI_DEVICE_TABLE(p54p_table) = {
{
PCI_DEVICE
(
0x1260
,
0x3886
)
},
/* Intersil PRISM Xbow Wireless LAN adapter (Symbol AP-300) */
{
PCI_DEVICE
(
0x1260
,
0xffff
)
},
/* Standard Microsystems Corp SMC2802W Wireless PCI */
{
PCI_DEVICE
(
0x10b8
,
0x2802
)
},
{
},
};
...
...
include/net/bluetooth/l2cap.h
View file @
1c114f42
...
...
@@ -33,9 +33,9 @@
#define L2CAP_DEFAULT_FLUSH_TO 0xffff
#define L2CAP_DEFAULT_TX_WINDOW 63
#define L2CAP_DEFAULT_MAX_TX 3
#define L2CAP_DEFAULT_RETRANS_TO
1000
/* 1 second
*/
#define L2CAP_DEFAULT_RETRANS_TO
2000
/* 2 seconds
*/
#define L2CAP_DEFAULT_MONITOR_TO 12000
/* 12 seconds */
#define L2CAP_DEFAULT_MAX_PDU_SIZE
672
#define L2CAP_DEFAULT_MAX_PDU_SIZE
1009
/* Sized for 3-DH5 packet */
#define L2CAP_DEFAULT_ACK_TO 200
#define L2CAP_LOCAL_BUSY_TRIES 12
...
...
net/bluetooth/l2cap.c
View file @
1c114f42
...
...
@@ -2705,8 +2705,9 @@ static int l2cap_parse_conf_req(struct sock *sk, void *data)
case
L2CAP_MODE_ERTM
:
pi
->
remote_tx_win
=
rfc
.
txwin_size
;
pi
->
remote_max_tx
=
rfc
.
max_transmit
;
if
(
rfc
.
max_pdu_size
>
pi
->
conn
->
mtu
-
10
)
rfc
.
max_pdu_size
=
le16_to_cpu
(
pi
->
conn
->
mtu
-
10
);
if
(
le16_to_cpu
(
rfc
.
max_pdu_size
)
>
pi
->
conn
->
mtu
-
10
)
rfc
.
max_pdu_size
=
cpu_to_le16
(
pi
->
conn
->
mtu
-
10
);
pi
->
remote_mps
=
le16_to_cpu
(
rfc
.
max_pdu_size
);
...
...
@@ -2723,8 +2724,8 @@ static int l2cap_parse_conf_req(struct sock *sk, void *data)
break
;
case
L2CAP_MODE_STREAMING
:
if
(
rfc
.
max_pdu_size
>
pi
->
conn
->
mtu
-
10
)
rfc
.
max_pdu_size
=
le16_to_cpu
(
pi
->
conn
->
mtu
-
10
);
if
(
le16_to_cpu
(
rfc
.
max_pdu_size
)
>
pi
->
conn
->
mtu
-
10
)
rfc
.
max_pdu_size
=
cpu_to_le16
(
pi
->
conn
->
mtu
-
10
);
pi
->
remote_mps
=
le16_to_cpu
(
rfc
.
max_pdu_size
);
...
...
@@ -2806,7 +2807,6 @@ static int l2cap_parse_conf_rsp(struct sock *sk, void *rsp, int len, void *data,
if
(
*
result
==
L2CAP_CONF_SUCCESS
)
{
switch
(
rfc
.
mode
)
{
case
L2CAP_MODE_ERTM
:
pi
->
remote_tx_win
=
rfc
.
txwin_size
;
pi
->
retrans_timeout
=
le16_to_cpu
(
rfc
.
retrans_timeout
);
pi
->
monitor_timeout
=
le16_to_cpu
(
rfc
.
monitor_timeout
);
pi
->
mps
=
le16_to_cpu
(
rfc
.
max_pdu_size
);
...
...
@@ -2862,7 +2862,6 @@ static void l2cap_conf_rfc_get(struct sock *sk, void *rsp, int len)
done:
switch
(
rfc
.
mode
)
{
case
L2CAP_MODE_ERTM
:
pi
->
remote_tx_win
=
rfc
.
txwin_size
;
pi
->
retrans_timeout
=
le16_to_cpu
(
rfc
.
retrans_timeout
);
pi
->
monitor_timeout
=
le16_to_cpu
(
rfc
.
monitor_timeout
);
pi
->
mps
=
le16_to_cpu
(
rfc
.
max_pdu_size
);
...
...
net/wireless/mlme.c
View file @
1c114f42
...
...
@@ -843,15 +843,21 @@ int cfg80211_mlme_action(struct cfg80211_registered_device *rdev,
return
-
EINVAL
;
if
(
mgmt
->
u
.
action
.
category
!=
WLAN_CATEGORY_PUBLIC
)
{
/* Verify that we are associated with the destination AP */
wdev_lock
(
wdev
);
if
(
!
wdev
->
current_bss
||
memcmp
(
wdev
->
current_bss
->
pub
.
bssid
,
mgmt
->
bssid
,
ETH_ALEN
)
!=
0
||
(
wdev
->
iftype
==
NL80211_IFTYPE_STATION
&&
memcmp
(
wdev
->
current_bss
->
pub
.
bssid
,
mgmt
->
da
,
ETH_ALEN
)
!=
0
))
ETH_ALEN
)
!=
0
))
{
wdev_unlock
(
wdev
);
return
-
ENOTCONN
;
}
wdev_unlock
(
wdev
);
}
if
(
memcmp
(
mgmt
->
sa
,
dev
->
dev_addr
,
ETH_ALEN
)
!=
0
)
return
-
EINVAL
;
...
...
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