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
6b8a3ecf
Commit
6b8a3ecf
authored
Feb 13, 2014
by
John W. Linville
Browse files
Options
Browse Files
Download
Plain Diff
Merge
git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-fixes
parents
348f7d4a
205e2210
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
48 additions
and
9 deletions
+48
-9
drivers/net/wireless/iwlwifi/dvm/mac80211.c
drivers/net/wireless/iwlwifi/dvm/mac80211.c
+20
-2
drivers/net/wireless/iwlwifi/iwl-drv.c
drivers/net/wireless/iwlwifi/iwl-drv.c
+1
-1
drivers/net/wireless/iwlwifi/iwl-modparams.h
drivers/net/wireless/iwlwifi/iwl-modparams.h
+7
-4
drivers/net/wireless/iwlwifi/mvm/mac80211.c
drivers/net/wireless/iwlwifi/mvm/mac80211.c
+20
-2
No files found.
drivers/net/wireless/iwlwifi/dvm/mac80211.c
View file @
6b8a3ecf
...
@@ -696,6 +696,24 @@ static int iwlagn_mac_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
...
@@ -696,6 +696,24 @@ static int iwlagn_mac_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
return
ret
;
return
ret
;
}
}
static
inline
bool
iwl_enable_rx_ampdu
(
const
struct
iwl_cfg
*
cfg
)
{
if
(
iwlwifi_mod_params
.
disable_11n
&
IWL_DISABLE_HT_RXAGG
)
return
false
;
return
true
;
}
static
inline
bool
iwl_enable_tx_ampdu
(
const
struct
iwl_cfg
*
cfg
)
{
if
(
iwlwifi_mod_params
.
disable_11n
&
IWL_DISABLE_HT_TXAGG
)
return
false
;
if
(
iwlwifi_mod_params
.
disable_11n
&
IWL_ENABLE_HT_TXAGG
)
return
true
;
/* disabled by default */
return
false
;
}
static
int
iwlagn_mac_ampdu_action
(
struct
ieee80211_hw
*
hw
,
static
int
iwlagn_mac_ampdu_action
(
struct
ieee80211_hw
*
hw
,
struct
ieee80211_vif
*
vif
,
struct
ieee80211_vif
*
vif
,
enum
ieee80211_ampdu_mlme_action
action
,
enum
ieee80211_ampdu_mlme_action
action
,
...
@@ -717,7 +735,7 @@ static int iwlagn_mac_ampdu_action(struct ieee80211_hw *hw,
...
@@ -717,7 +735,7 @@ static int iwlagn_mac_ampdu_action(struct ieee80211_hw *hw,
switch
(
action
)
{
switch
(
action
)
{
case
IEEE80211_AMPDU_RX_START
:
case
IEEE80211_AMPDU_RX_START
:
if
(
iwlwifi_mod_params
.
disable_11n
&
IWL_DISABLE_HT_RXAGG
)
if
(
!
iwl_enable_rx_ampdu
(
priv
->
cfg
)
)
break
;
break
;
IWL_DEBUG_HT
(
priv
,
"start Rx
\n
"
);
IWL_DEBUG_HT
(
priv
,
"start Rx
\n
"
);
ret
=
iwl_sta_rx_agg_start
(
priv
,
sta
,
tid
,
*
ssn
);
ret
=
iwl_sta_rx_agg_start
(
priv
,
sta
,
tid
,
*
ssn
);
...
@@ -729,7 +747,7 @@ static int iwlagn_mac_ampdu_action(struct ieee80211_hw *hw,
...
@@ -729,7 +747,7 @@ static int iwlagn_mac_ampdu_action(struct ieee80211_hw *hw,
case
IEEE80211_AMPDU_TX_START
:
case
IEEE80211_AMPDU_TX_START
:
if
(
!
priv
->
trans
->
ops
->
txq_enable
)
if
(
!
priv
->
trans
->
ops
->
txq_enable
)
break
;
break
;
if
(
iwlwifi_mod_params
.
disable_11n
&
IWL_DISABLE_HT_TXAGG
)
if
(
!
iwl_enable_tx_ampdu
(
priv
->
cfg
)
)
break
;
break
;
IWL_DEBUG_HT
(
priv
,
"start Tx
\n
"
);
IWL_DEBUG_HT
(
priv
,
"start Tx
\n
"
);
ret
=
iwlagn_tx_agg_start
(
priv
,
vif
,
sta
,
tid
,
ssn
);
ret
=
iwlagn_tx_agg_start
(
priv
,
vif
,
sta
,
tid
,
ssn
);
...
...
drivers/net/wireless/iwlwifi/iwl-drv.c
View file @
6b8a3ecf
...
@@ -1286,7 +1286,7 @@ module_param_named(swcrypto, iwlwifi_mod_params.sw_crypto, int, S_IRUGO);
...
@@ -1286,7 +1286,7 @@ module_param_named(swcrypto, iwlwifi_mod_params.sw_crypto, int, S_IRUGO);
MODULE_PARM_DESC
(
swcrypto
,
"using crypto in software (default 0 [hardware])"
);
MODULE_PARM_DESC
(
swcrypto
,
"using crypto in software (default 0 [hardware])"
);
module_param_named
(
11
n_disable
,
iwlwifi_mod_params
.
disable_11n
,
uint
,
S_IRUGO
);
module_param_named
(
11
n_disable
,
iwlwifi_mod_params
.
disable_11n
,
uint
,
S_IRUGO
);
MODULE_PARM_DESC
(
11
n_disable
,
MODULE_PARM_DESC
(
11
n_disable
,
"disable 11n functionality, bitmap: 1: full, 2:
agg TX, 4: agg R
X"
);
"disable 11n functionality, bitmap: 1: full, 2:
disable agg TX, 4: disable agg RX, 8 enable agg T
X"
);
module_param_named
(
amsdu_size_8K
,
iwlwifi_mod_params
.
amsdu_size_8K
,
module_param_named
(
amsdu_size_8K
,
iwlwifi_mod_params
.
amsdu_size_8K
,
int
,
S_IRUGO
);
int
,
S_IRUGO
);
MODULE_PARM_DESC
(
amsdu_size_8K
,
"enable 8K amsdu size (default 0)"
);
MODULE_PARM_DESC
(
amsdu_size_8K
,
"enable 8K amsdu size (default 0)"
);
...
...
drivers/net/wireless/iwlwifi/iwl-modparams.h
View file @
6b8a3ecf
...
@@ -79,9 +79,12 @@ enum iwl_power_level {
...
@@ -79,9 +79,12 @@ enum iwl_power_level {
IWL_POWER_NUM
IWL_POWER_NUM
};
};
#define IWL_DISABLE_HT_ALL BIT(0)
enum
iwl_disable_11n
{
#define IWL_DISABLE_HT_TXAGG BIT(1)
IWL_DISABLE_HT_ALL
=
BIT
(
0
),
#define IWL_DISABLE_HT_RXAGG BIT(2)
IWL_DISABLE_HT_TXAGG
=
BIT
(
1
),
IWL_DISABLE_HT_RXAGG
=
BIT
(
2
),
IWL_ENABLE_HT_TXAGG
=
BIT
(
3
),
};
/**
/**
* struct iwl_mod_params
* struct iwl_mod_params
...
@@ -90,7 +93,7 @@ enum iwl_power_level {
...
@@ -90,7 +93,7 @@ enum iwl_power_level {
*
*
* @sw_crypto: using hardware encryption, default = 0
* @sw_crypto: using hardware encryption, default = 0
* @disable_11n: disable 11n capabilities, default = 0,
* @disable_11n: disable 11n capabilities, default = 0,
* use IWL_
DIS
ABLE_HT_* constants
* use IWL_
[DIS,EN]
ABLE_HT_* constants
* @amsdu_size_8K: enable 8K amsdu size, default = 0
* @amsdu_size_8K: enable 8K amsdu size, default = 0
* @restart_fw: restart firmware, default = 1
* @restart_fw: restart firmware, default = 1
* @wd_disable: enable stuck queue check, default = 0
* @wd_disable: enable stuck queue check, default = 0
...
...
drivers/net/wireless/iwlwifi/mvm/mac80211.c
View file @
6b8a3ecf
...
@@ -328,6 +328,24 @@ static void iwl_mvm_mac_tx(struct ieee80211_hw *hw,
...
@@ -328,6 +328,24 @@ static void iwl_mvm_mac_tx(struct ieee80211_hw *hw,
ieee80211_free_txskb
(
hw
,
skb
);
ieee80211_free_txskb
(
hw
,
skb
);
}
}
static
inline
bool
iwl_enable_rx_ampdu
(
const
struct
iwl_cfg
*
cfg
)
{
if
(
iwlwifi_mod_params
.
disable_11n
&
IWL_DISABLE_HT_RXAGG
)
return
false
;
return
true
;
}
static
inline
bool
iwl_enable_tx_ampdu
(
const
struct
iwl_cfg
*
cfg
)
{
if
(
iwlwifi_mod_params
.
disable_11n
&
IWL_DISABLE_HT_TXAGG
)
return
false
;
if
(
iwlwifi_mod_params
.
disable_11n
&
IWL_ENABLE_HT_TXAGG
)
return
true
;
/* enabled by default */
return
true
;
}
static
int
iwl_mvm_mac_ampdu_action
(
struct
ieee80211_hw
*
hw
,
static
int
iwl_mvm_mac_ampdu_action
(
struct
ieee80211_hw
*
hw
,
struct
ieee80211_vif
*
vif
,
struct
ieee80211_vif
*
vif
,
enum
ieee80211_ampdu_mlme_action
action
,
enum
ieee80211_ampdu_mlme_action
action
,
...
@@ -347,7 +365,7 @@ static int iwl_mvm_mac_ampdu_action(struct ieee80211_hw *hw,
...
@@ -347,7 +365,7 @@ static int iwl_mvm_mac_ampdu_action(struct ieee80211_hw *hw,
switch
(
action
)
{
switch
(
action
)
{
case
IEEE80211_AMPDU_RX_START
:
case
IEEE80211_AMPDU_RX_START
:
if
(
iwlwifi_mod_params
.
disable_11n
&
IWL_DISABLE_HT_RXAGG
)
{
if
(
!
iwl_enable_rx_ampdu
(
mvm
->
cfg
)
)
{
ret
=
-
EINVAL
;
ret
=
-
EINVAL
;
break
;
break
;
}
}
...
@@ -357,7 +375,7 @@ static int iwl_mvm_mac_ampdu_action(struct ieee80211_hw *hw,
...
@@ -357,7 +375,7 @@ static int iwl_mvm_mac_ampdu_action(struct ieee80211_hw *hw,
ret
=
iwl_mvm_sta_rx_agg
(
mvm
,
sta
,
tid
,
0
,
false
);
ret
=
iwl_mvm_sta_rx_agg
(
mvm
,
sta
,
tid
,
0
,
false
);
break
;
break
;
case
IEEE80211_AMPDU_TX_START
:
case
IEEE80211_AMPDU_TX_START
:
if
(
iwlwifi_mod_params
.
disable_11n
&
IWL_DISABLE_HT_TXAGG
)
{
if
(
!
iwl_enable_tx_ampdu
(
mvm
->
cfg
)
)
{
ret
=
-
EINVAL
;
ret
=
-
EINVAL
;
break
;
break
;
}
}
...
...
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