2011-05-26 15:14:47

by Stanislaw Gruszka

[permalink] [raw]
Subject: [PATCH v2] iwlagn: use cts-to-self protection on 5000 adapters series

This patch fixes 802.11n stability and performance regression we have
since 2.6.35. It boost performance on my 5GHz N-only network from about
5MB/s to 8MB/s. Similar percentage boost can be observed on 2.4 GHz.

These are test results of 5x downloading of approximately 700MB iso
image:

vanilla: 5.27 5.22 4.94 4.47 5.31 ; avr 5.0420 std 0.35110
patched: 8.07 7.95 8.06 7.99 7.96 ; avr 8.0060 std 0.055946

This was achieved with NetworkManager configured to do not perform
periodical scans, by configuring constant BSSID. With periodical scans,
after some time, performance downgrade to unpatched driver level, like
in example below:

patched: 7.40 7.61 4.28 4.37 4.80 avr 5.6920 std 1.6683

However patch still make better here, since similar test on unpatched
driver make link disconnects with below messages after some time:

wlan1: authenticate with 00:23:69:35:d1:3f (try 1)
wlan1: authenticate with 00:23:69:35:d1:3f (try 2)
wlan1: authenticate with 00:23:69:35:d1:3f (try 3)
wlan1: authentication with 00:23:69:35:d1:3f timed out

On 2.6.35 kernel patch helps against connection hangs with messages:

iwlagn 0000:20:00.0: queue 10 stuck 3 time. Fw reload.
iwlagn 0000:20:00.0: On demand firmware reload
iwlagn 0000:20:00.0: Stopping AGG while state not ON or starting

Cc: [email protected] # 2.6.35+
Signed-off-by: Stanislaw Gruszka <[email protected]>
---
v1 -> v2: s/unpached/unpatched/

drivers/net/wireless/iwlwifi/iwl-5000.c | 1 -
drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c | 12 ++----------
drivers/net/wireless/iwlwifi/iwl-agn-rxon.c | 8 ++++++++
3 files changed, 10 insertions(+), 11 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c
index a70b8cf..f96eb5b 100644
--- a/drivers/net/wireless/iwlwifi/iwl-5000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-5000.c
@@ -425,7 +425,6 @@ static struct iwl_base_params iwl5000_base_params = {
};
static struct iwl_ht_params iwl5000_ht_params = {
.ht_greenfield_support = true,
- .use_rts_for_aggregation = true, /* use rts/cts protection */
};

#define IWL_DEVICE_5000 \
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c b/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
index b12c72d..23fa93d 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
@@ -163,17 +163,9 @@ static void iwlagn_tx_cmd_protection(struct iwl_priv *priv,
__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) {
+ info->control.rates[0].flags & IEEE80211_TX_RC_USE_CTS_PROTECT ||
+ info->flags & IEEE80211_TX_CTL_AMPDU)
*tx_flags |= TX_CMD_FLG_PROT_REQUIRE_MSK;
- return;
- }
-
- if (priv->cfg->ht_params &&
- priv->cfg->ht_params->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 */
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c b/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
index a95ad84..0a1941d 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
@@ -325,6 +325,14 @@ int iwlagn_commit_rxon(struct iwl_priv *priv, struct iwl_rxon_context *ctx)
return 0;
}

+ /*
+ * force CTS-to-self frames protection if RTS-CTS is not preferred
+ * one aggregation protection method
+ */
+ if (!(priv->cfg->ht_params &&
+ priv->cfg->ht_params->use_rts_for_aggregation))
+ ctx->staging.flags |= RXON_FLG_SELF_CTS_EN;
+
if ((ctx->vif && ctx->vif->bss_conf.use_short_slot) ||
!(ctx->staging.flags & RXON_FLG_BAND_24G_MSK))
ctx->staging.flags |= RXON_FLG_SHORT_SLOT_MSK;
--
1.7.1




2011-05-26 15:17:52

by Wey-Yi Guy

[permalink] [raw]
Subject: Re: [PATCH v2] iwlagn: use cts-to-self protection on 5000 adapters series

On Thu, 2011-05-26 at 08:14 -0700, Stanislaw Gruszka wrote:
> This patch fixes 802.11n stability and performance regression we have
> since 2.6.35. It boost performance on my 5GHz N-only network from about
> 5MB/s to 8MB/s. Similar percentage boost can be observed on 2.4 GHz.
>
> These are test results of 5x downloading of approximately 700MB iso
> image:
>
> vanilla: 5.27 5.22 4.94 4.47 5.31 ; avr 5.0420 std 0.35110
> patched: 8.07 7.95 8.06 7.99 7.96 ; avr 8.0060 std 0.055946
>
> This was achieved with NetworkManager configured to do not perform
> periodical scans, by configuring constant BSSID. With periodical scans,
> after some time, performance downgrade to unpatched driver level, like
> in example below:
>
> patched: 7.40 7.61 4.28 4.37 4.80 avr 5.6920 std 1.6683
>
> However patch still make better here, since similar test on unpatched
> driver make link disconnects with below messages after some time:
>
> wlan1: authenticate with 00:23:69:35:d1:3f (try 1)
> wlan1: authenticate with 00:23:69:35:d1:3f (try 2)
> wlan1: authenticate with 00:23:69:35:d1:3f (try 3)
> wlan1: authentication with 00:23:69:35:d1:3f timed out
>
> On 2.6.35 kernel patch helps against connection hangs with messages:
>
> iwlagn 0000:20:00.0: queue 10 stuck 3 time. Fw reload.
> iwlagn 0000:20:00.0: On demand firmware reload
> iwlagn 0000:20:00.0: Stopping AGG while state not ON or starting
>
> Cc: [email protected] # 2.6.35+
> Signed-off-by: Stanislaw Gruszka <[email protected]>
Acked-by: Wey-Yi Guy <[email protected]>
> ---
> v1 -> v2: s/unpached/unpatched/
>
> drivers/net/wireless/iwlwifi/iwl-5000.c | 1 -
> drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c | 12 ++----------
> drivers/net/wireless/iwlwifi/iwl-agn-rxon.c | 8 ++++++++
> 3 files changed, 10 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c
> index a70b8cf..f96eb5b 100644
> --- a/drivers/net/wireless/iwlwifi/iwl-5000.c
> +++ b/drivers/net/wireless/iwlwifi/iwl-5000.c
> @@ -425,7 +425,6 @@ static struct iwl_base_params iwl5000_base_params = {
> };
> static struct iwl_ht_params iwl5000_ht_params = {
> .ht_greenfield_support = true,
> - .use_rts_for_aggregation = true, /* use rts/cts protection */
> };
>
> #define IWL_DEVICE_5000 \
> diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c b/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
> index b12c72d..23fa93d 100644
> --- a/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
> +++ b/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
> @@ -163,17 +163,9 @@ static void iwlagn_tx_cmd_protection(struct iwl_priv *priv,
> __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) {
> + info->control.rates[0].flags & IEEE80211_TX_RC_USE_CTS_PROTECT ||
> + info->flags & IEEE80211_TX_CTL_AMPDU)
> *tx_flags |= TX_CMD_FLG_PROT_REQUIRE_MSK;
> - return;
> - }
> -
> - if (priv->cfg->ht_params &&
> - priv->cfg->ht_params->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 */
> diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c b/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
> index a95ad84..0a1941d 100644
> --- a/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
> +++ b/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
> @@ -325,6 +325,14 @@ int iwlagn_commit_rxon(struct iwl_priv *priv, struct iwl_rxon_context *ctx)
> return 0;
> }
>
> + /*
> + * force CTS-to-self frames protection if RTS-CTS is not preferred
> + * one aggregation protection method
> + */
> + if (!(priv->cfg->ht_params &&
> + priv->cfg->ht_params->use_rts_for_aggregation))
> + ctx->staging.flags |= RXON_FLG_SELF_CTS_EN;
> +
> if ((ctx->vif && ctx->vif->bss_conf.use_short_slot) ||
> !(ctx->staging.flags & RXON_FLG_BAND_24G_MSK))
> ctx->staging.flags |= RXON_FLG_SHORT_SLOT_MSK;



2011-05-30 09:41:02

by Stanislaw Gruszka

[permalink] [raw]
Subject: Re: [PATCH v2] iwlagn: use cts-to-self protection on 5000 adapters series

On Thu, May 26, 2011 at 08:20:58AM -0700, Daniel Halperin wrote:
> On Thu, May 26, 2011 at 7:50 AM, Guy, Wey-Yi <[email protected]> wrote:
> > On Thu, 2011-05-26 at 08:14 -0700, Stanislaw Gruszka wrote:
> >> diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c b/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
> >> index b12c72d..23fa93d 100644
> >> --- a/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
> >> +++ b/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
> >> @@ -163,17 +163,9 @@ static void iwlagn_tx_cmd_protection(struct iwl_priv *priv,
> >> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?__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) {
> >> + ? ? ? ? info->control.rates[0].flags & IEEE80211_TX_RC_USE_CTS_PROTECT ||
> >> + ? ? ? ? info->flags & IEEE80211_TX_CTL_AMPDU)
> >> ? ? ? ? ? ? ? *tx_flags |= TX_CMD_FLG_PROT_REQUIRE_MSK;
> >> - ? ? ? ? ? ? return;
> >> - ? ? }
> >> -
> >> - ? ? if (priv->cfg->ht_params &&
> >> - ? ? ? ? priv->cfg->ht_params->use_rts_for_aggregation &&
> >> - ? ? ? ? info->flags & IEEE80211_TX_CTL_AMPDU) {
> >> - ? ? ? ? ? ? *tx_flags |= TX_CMD_FLG_PROT_REQUIRE_MSK;
> >> - ? ? ? ? ? ? return;
> >> - ? ? }
> >> ?}
>
> Shouldn't there be a new "use_cts_for_aggregation" flag and one that
> dominates (looks like use_rts in your setup), rather than this?

Not sure if I understand. Rts-cts and cts-to-self are mutual exclusive
at present, so if use_rts_for_aggregations = 0 mean that cts-to-self
protection must be used. Perhaps we should introduce 4-way module
option like: FORCE_RTS_CTS, FORCE_CTS_TO_SELF, FORCE_NO_PROTECTION,
DEFAULT (HW depend) just for doing experiments.

> I'm
> still a bit confused as to why CTS-to-self should help (as opposed to
> masking some other bug).

I have no idea too, and indeed this could mask some (firmware?) bug.
I think I can explain slight better performance on 6000 - when we
use rts-cts two additional frames must be used when starting BA session,
with cts-to-self only one frame.

Anyway 11n on iwlwifi still need some more investigation and fixing.

Stanislaw

2011-05-26 15:21:20

by Daniel Halperin

[permalink] [raw]
Subject: Re: [PATCH v2] iwlagn: use cts-to-self protection on 5000 adapters series

On Thu, May 26, 2011 at 7:50 AM, Guy, Wey-Yi <[email protected]> wrote:
> On Thu, 2011-05-26 at 08:14 -0700, Stanislaw Gruszka wrote:
>> diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c b/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
>> index b12c72d..23fa93d 100644
>> --- a/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
>> +++ b/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
>> @@ -163,17 +163,9 @@ static void iwlagn_tx_cmd_protection(struct iwl_priv *priv,
>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?__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) {
>> + ? ? ? ? info->control.rates[0].flags & IEEE80211_TX_RC_USE_CTS_PROTECT ||
>> + ? ? ? ? info->flags & IEEE80211_TX_CTL_AMPDU)
>> ? ? ? ? ? ? ? *tx_flags |= TX_CMD_FLG_PROT_REQUIRE_MSK;
>> - ? ? ? ? ? ? return;
>> - ? ? }
>> -
>> - ? ? if (priv->cfg->ht_params &&
>> - ? ? ? ? priv->cfg->ht_params->use_rts_for_aggregation &&
>> - ? ? ? ? info->flags & IEEE80211_TX_CTL_AMPDU) {
>> - ? ? ? ? ? ? *tx_flags |= TX_CMD_FLG_PROT_REQUIRE_MSK;
>> - ? ? ? ? ? ? return;
>> - ? ? }
>> ?}

Shouldn't there be a new "use_cts_for_aggregation" flag and one that
dominates (looks like use_rts in your setup), rather than this? I'm
still a bit confused as to why CTS-to-self should help (as opposed to
masking some other bug).

Dan

2011-06-06 21:35:28

by Daniel Halperin

[permalink] [raw]
Subject: Re: [PATCH v2] iwlagn: use cts-to-self protection on 5000 adapters series

On Mon, Jun 6, 2011 at 11:21 AM, John W. Linville
<[email protected]> wrote:
> On Mon, Jun 06, 2011 at 10:58:52AM +0200, Stanislaw Gruszka wrote:
>> On Thu, May 26, 2011 at 07:50:42AM -0700, Guy, Wey-Yi wrote:
>> > On Thu, 2011-05-26 at 08:14 -0700, Stanislaw Gruszka wrote:
>> > > This patch fixes 802.11n stability and performance regression we have
>> > > since 2.6.35. It boost performance on my 5GHz N-only network from about
>> > > 5MB/s to 8MB/s. Similar percentage boost can be observed on 2.4 GHz.
>> > >
>> > > These are test results of 5x downloading of approximately 700MB iso
>> > > image:
>> > >
>> > > vanilla: 5.27 5.22 4.94 4.47 5.31 ; avr 5.0420 std 0.35110
>> > > patched: 8.07 7.95 8.06 7.99 7.96 ; avr 8.0060 std 0.055946
>> > >
>> > > This was achieved with NetworkManager configured to do not perform
>> > > periodical scans, by configuring constant BSSID. With periodical scans,
>> > > after some time, performance downgrade to unpatched driver level, like
>> > > in example below:
>> > >
>> > > patched: 7.40 7.61 4.28 4.37 4.80 avr 5.6920 std 1.6683
>> > >
>> > > However patch still make better here, since similar test on unpatched
>> > > driver make link disconnects with below messages after some time:
>> > >
>> > > wlan1: authenticate with 00:23:69:35:d1:3f (try 1)
>> > > wlan1: authenticate with 00:23:69:35:d1:3f (try 2)
>> > > wlan1: authenticate with 00:23:69:35:d1:3f (try 3)
>> > > wlan1: authentication with 00:23:69:35:d1:3f timed out
>> > >
>> > > On 2.6.35 kernel patch helps against connection hangs with messages:
>> > >
>> > > iwlagn 0000:20:00.0: queue 10 stuck 3 time. Fw reload.
>> > > iwlagn 0000:20:00.0: On demand firmware reload
>> > > iwlagn 0000:20:00.0: Stopping AGG while state not ON or starting
>> > >
>> > > Cc: [email protected] # 2.6.35+
>> > > Signed-off-by: Stanislaw Gruszka <[email protected]>
>> > Acked-by: Wey-Yi Guy <[email protected]>
>>
>> John, can you apply that patch and push upstream? Or should I
>> repost? I want backport it to Fedora 2.6.35 as it fixes random
>> 11n connection hangs there (common F-14 bug).
>
> Sorry, I was waiting to see if Daniel was going to reply further...
>

Gotcha -- I doubt it harms much, and Stanislaw is right that changing
RTS/CTS to CTS-self is more efficient. This patch is likely a good
thing to have, though I still think there's something else going on ;)

Dan

2011-06-06 18:31:20

by John W. Linville

[permalink] [raw]
Subject: Re: [PATCH v2] iwlagn: use cts-to-self protection on 5000 adapters series

On Mon, Jun 06, 2011 at 10:58:52AM +0200, Stanislaw Gruszka wrote:
> On Thu, May 26, 2011 at 07:50:42AM -0700, Guy, Wey-Yi wrote:
> > On Thu, 2011-05-26 at 08:14 -0700, Stanislaw Gruszka wrote:
> > > This patch fixes 802.11n stability and performance regression we have
> > > since 2.6.35. It boost performance on my 5GHz N-only network from about
> > > 5MB/s to 8MB/s. Similar percentage boost can be observed on 2.4 GHz.
> > >
> > > These are test results of 5x downloading of approximately 700MB iso
> > > image:
> > >
> > > vanilla: 5.27 5.22 4.94 4.47 5.31 ; avr 5.0420 std 0.35110
> > > patched: 8.07 7.95 8.06 7.99 7.96 ; avr 8.0060 std 0.055946
> > >
> > > This was achieved with NetworkManager configured to do not perform
> > > periodical scans, by configuring constant BSSID. With periodical scans,
> > > after some time, performance downgrade to unpatched driver level, like
> > > in example below:
> > >
> > > patched: 7.40 7.61 4.28 4.37 4.80 avr 5.6920 std 1.6683
> > >
> > > However patch still make better here, since similar test on unpatched
> > > driver make link disconnects with below messages after some time:
> > >
> > > wlan1: authenticate with 00:23:69:35:d1:3f (try 1)
> > > wlan1: authenticate with 00:23:69:35:d1:3f (try 2)
> > > wlan1: authenticate with 00:23:69:35:d1:3f (try 3)
> > > wlan1: authentication with 00:23:69:35:d1:3f timed out
> > >
> > > On 2.6.35 kernel patch helps against connection hangs with messages:
> > >
> > > iwlagn 0000:20:00.0: queue 10 stuck 3 time. Fw reload.
> > > iwlagn 0000:20:00.0: On demand firmware reload
> > > iwlagn 0000:20:00.0: Stopping AGG while state not ON or starting
> > >
> > > Cc: [email protected] # 2.6.35+
> > > Signed-off-by: Stanislaw Gruszka <[email protected]>
> > Acked-by: Wey-Yi Guy <[email protected]>
>
> John, can you apply that patch and push upstream? Or should I
> repost? I want backport it to Fedora 2.6.35 as it fixes random
> 11n connection hangs there (common F-14 bug).

Sorry, I was waiting to see if Daniel was going to reply further...

John
--
John W. Linville Someday the world will need a hero, and you
[email protected] might be all we have. Be ready.

2011-06-06 08:59:50

by Stanislaw Gruszka

[permalink] [raw]
Subject: Re: [PATCH v2] iwlagn: use cts-to-self protection on 5000 adapters series

On Thu, May 26, 2011 at 07:50:42AM -0700, Guy, Wey-Yi wrote:
> On Thu, 2011-05-26 at 08:14 -0700, Stanislaw Gruszka wrote:
> > This patch fixes 802.11n stability and performance regression we have
> > since 2.6.35. It boost performance on my 5GHz N-only network from about
> > 5MB/s to 8MB/s. Similar percentage boost can be observed on 2.4 GHz.
> >
> > These are test results of 5x downloading of approximately 700MB iso
> > image:
> >
> > vanilla: 5.27 5.22 4.94 4.47 5.31 ; avr 5.0420 std 0.35110
> > patched: 8.07 7.95 8.06 7.99 7.96 ; avr 8.0060 std 0.055946
> >
> > This was achieved with NetworkManager configured to do not perform
> > periodical scans, by configuring constant BSSID. With periodical scans,
> > after some time, performance downgrade to unpatched driver level, like
> > in example below:
> >
> > patched: 7.40 7.61 4.28 4.37 4.80 avr 5.6920 std 1.6683
> >
> > However patch still make better here, since similar test on unpatched
> > driver make link disconnects with below messages after some time:
> >
> > wlan1: authenticate with 00:23:69:35:d1:3f (try 1)
> > wlan1: authenticate with 00:23:69:35:d1:3f (try 2)
> > wlan1: authenticate with 00:23:69:35:d1:3f (try 3)
> > wlan1: authentication with 00:23:69:35:d1:3f timed out
> >
> > On 2.6.35 kernel patch helps against connection hangs with messages:
> >
> > iwlagn 0000:20:00.0: queue 10 stuck 3 time. Fw reload.
> > iwlagn 0000:20:00.0: On demand firmware reload
> > iwlagn 0000:20:00.0: Stopping AGG while state not ON or starting
> >
> > Cc: [email protected] # 2.6.35+
> > Signed-off-by: Stanislaw Gruszka <[email protected]>
> Acked-by: Wey-Yi Guy <[email protected]>

John, can you apply that patch and push upstream? Or should I
repost? I want backport it to Fedora 2.6.35 as it fixes random
11n connection hangs there (common F-14 bug).

> > ---
> > v1 -> v2: s/unpached/unpatched/
> >
> > drivers/net/wireless/iwlwifi/iwl-5000.c | 1 -
> > drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c | 12 ++----------
> > drivers/net/wireless/iwlwifi/iwl-agn-rxon.c | 8 ++++++++
> > 3 files changed, 10 insertions(+), 11 deletions(-)
> >
> > diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c
> > index a70b8cf..f96eb5b 100644
> > --- a/drivers/net/wireless/iwlwifi/iwl-5000.c
> > +++ b/drivers/net/wireless/iwlwifi/iwl-5000.c
> > @@ -425,7 +425,6 @@ static struct iwl_base_params iwl5000_base_params = {
> > };
> > static struct iwl_ht_params iwl5000_ht_params = {
> > .ht_greenfield_support = true,
> > - .use_rts_for_aggregation = true, /* use rts/cts protection */
> > };
> >
> > #define IWL_DEVICE_5000 \
> > diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c b/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
> > index b12c72d..23fa93d 100644
> > --- a/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
> > +++ b/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
> > @@ -163,17 +163,9 @@ static void iwlagn_tx_cmd_protection(struct iwl_priv *priv,
> > __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) {
> > + info->control.rates[0].flags & IEEE80211_TX_RC_USE_CTS_PROTECT ||
> > + info->flags & IEEE80211_TX_CTL_AMPDU)
> > *tx_flags |= TX_CMD_FLG_PROT_REQUIRE_MSK;
> > - return;
> > - }
> > -
> > - if (priv->cfg->ht_params &&
> > - priv->cfg->ht_params->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 */
> > diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c b/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
> > index a95ad84..0a1941d 100644
> > --- a/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
> > +++ b/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
> > @@ -325,6 +325,14 @@ int iwlagn_commit_rxon(struct iwl_priv *priv, struct iwl_rxon_context *ctx)
> > return 0;
> > }
> >
> > + /*
> > + * force CTS-to-self frames protection if RTS-CTS is not preferred
> > + * one aggregation protection method
> > + */
> > + if (!(priv->cfg->ht_params &&
> > + priv->cfg->ht_params->use_rts_for_aggregation))
> > + ctx->staging.flags |= RXON_FLG_SELF_CTS_EN;
> > +
> > if ((ctx->vif && ctx->vif->bss_conf.use_short_slot) ||
> > !(ctx->staging.flags & RXON_FLG_BAND_24G_MSK))
> > ctx->staging.flags |= RXON_FLG_SHORT_SLOT_MSK;
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html