2008-04-12 13:40:16

by Jory A. Pratt

[permalink] [raw]
Subject: [RFC 1/2] b43: Fixes injection speed (up to 350 pps)

# Fixes injection speed (up to 350 pps)

diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
index 345c34b..d3a5535 100644
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
@@ -2841,6 +2841,11 @@ static int b43_op_tx(struct ieee80211_hw *hw,
goto out;
if (unlikely(b43_status(dev) < B43_STAT_STARTED))
goto out;
+
+ if (ctl->type == IEEE80211_IF_TYPE_MNTR) {
+ ctl->flags |= IEEE80211_TXCTL_NO_ACK;
+ }
+
/* TX is done without a global lock. */
if (b43_using_pio_transfers(dev))
err = b43_pio_tx(dev, skb, ctl);
diff --git a/drivers/net/wireless/b43/xmit.c b/drivers/net/wireless/b43/xmit.c
index 19aefbf..85e446b 100644
--- a/drivers/net/wireless/b43/xmit.c
+++ b/drivers/net/wireless/b43/xmit.c
@@ -318,7 +318,8 @@ int b43_generate_txhdr(struct b43_wldev *dev,
/* MAC control */
if (!(txctl->flags & IEEE80211_TXCTL_NO_ACK))
mac_ctl |= B43_TXH_MAC_ACK;
- if (!(((fctl & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_CTL) &&
+ if ( (txctl->type != IEEE80211_IF_TYPE_MNTR) &&
+ !(((fctl & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_CTL) &&
((fctl & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_PSPOLL)))
mac_ctl |= B43_TXH_MAC_HWSEQ;
if (txctl->flags & IEEE80211_TXCTL_FIRST_FRAGMENT)


Attachments:
b43-injection-wireless-testing.patch (1.39 kB)

2008-04-13 07:43:20

by Johannes Berg

[permalink] [raw]
Subject: Re: [RFC 1/2] b43: Fixes injection speed (up to 350 pps)


> + if (ctl->type == IEEE80211_IF_TYPE_MNTR) {
> + ctl->flags |= IEEE80211_TXCTL_NO_ACK;
> + }
> +
> /* TX is done without a global lock. */
> if (b43_using_pio_transfers(dev))
> err = b43_pio_tx(dev, skb, ctl);
> diff --git a/drivers/net/wireless/b43/xmit.c b/drivers/net/wireless/b43/xmit.c
> index 19aefbf..85e446b 100644
> --- a/drivers/net/wireless/b43/xmit.c
> +++ b/drivers/net/wireless/b43/xmit.c
> @@ -318,7 +318,8 @@ int b43_generate_txhdr(struct b43_wldev *dev,
> /* MAC control */
> if (!(txctl->flags & IEEE80211_TXCTL_NO_ACK))
> mac_ctl |= B43_TXH_MAC_ACK;
> - if (!(((fctl & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_CTL) &&
> + if ( (txctl->type != IEEE80211_IF_TYPE_MNTR) &&
> + !(((fctl & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_CTL) &&
> ((fctl & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_PSPOLL)))
> mac_ctl |= B43_TXH_MAC_HWSEQ;
> if (txctl->flags & IEEE80211_TXCTL_FIRST_FRAGMENT)

FWIW, Michael meant this one too, it's not acceptable and we've
previously said why.

johannes


Attachments:
signature.asc (828.00 B)
This is a digitally signed message part