Skip to contentSkip to conversation

b43: Fixes injection speed (up to 350 pps)

RFC In review Jory A. Pratt 2 participants 2 messages Apr 12, 2008 – Apr 13, 2008 Networking drivers (wireless)

lore
Share & tools
lore
#0 lore raw

RFC 1/2 b43: Fixes injection speed (up to 350 pps)

# Fixes injection speed (up to 350 pps)

drivers/net/wireless/b43/main.c +5 -0
index 345c34b..d3a5535 100644
@@ -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);
drivers/net/wireless/b43/xmit.c +2 -1
index 19aefbf..85e446b 100644
@@ -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)
maintainer
#1 lore raw
Quoted 13 lines
drivers/net/wireless/b43/main.c +4 -0
+       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);
drivers/net/wireless/b43/xmit.c +0 -0
index 19aefbf..85e446b 100644

drivers/net/wireless/b43/xmit.c int b43_generate_txhdr(struct b43_wldev *dev, · line 325

Quoted 9 lines
drivers/net/wireless/b43/xmit.c +2 -1
@@ -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