Skip to content

Commit

Permalink
[PATCH] ieee80211: Return NETDEV_TX_BUSY when QoS buffer full
Browse files Browse the repository at this point in the history
tree ba6509c7cd1dd4244a2f285f2da5d632e7ffbb25
parent 7b5f9f2ddcabdaea214527a895e6e8445cafdd80
author James Ketrenos <[email protected]> 1124447000 -0500
committer James Ketrenos <[email protected]> 1127313383 -0500

Per the conversations with folks at OLS, the QoS layer in 802.11
drivers can now result in NETDEV_TX_BUSY being returned when the queue
a packet is targetted for is full.

To implement this, ieee80211_xmit will now call the driver's
is_queue_full to determine if the current priority queue is full.  If
so, NETDEV_TX_BUSY is returned to the kernel and no processing is done
on the frame.

Signed-off-by: James Ketrenos <[email protected]>
Signed-off-by: Jeff Garzik <[email protected]>
  • Loading branch information
James Ketrenos authored and jgarzik committed Sep 22, 2005
1 parent 1264fc0 commit 2c0aa2a
Showing 1 changed file with 12 additions and 0 deletions.
12 changes: 12 additions & 0 deletions net/ieee80211/ieee80211_tx.c
Original file line number Diff line number Diff line change
Expand Up @@ -236,8 +236,12 @@ int ieee80211_xmit(struct sk_buff *skb, struct net_device *dev)
};
u8 dest[ETH_ALEN], src[ETH_ALEN];
struct ieee80211_crypt_data *crypt;
int priority = skb->priority;
int snapped = 0;

if (ieee->is_queue_full && (*ieee->is_queue_full) (dev, priority))
return NETDEV_TX_BUSY;

spin_lock_irqsave(&ieee->lock, flags);

/* If there is no driver handler to take the TXB, dont' bother
Expand Down Expand Up @@ -467,6 +471,14 @@ int ieee80211_xmit(struct sk_buff *skb, struct net_device *dev)
stats->tx_bytes += txb->payload_size;
return 0;
}

if (ret == NETDEV_TX_BUSY) {
printk(KERN_ERR "%s: NETDEV_TX_BUSY returned; "
"driver should report queue full via "
"ieee_device->is_queue_full.\n",
ieee->dev->name);
}

ieee80211_txb_free(txb);
}

Expand Down

0 comments on commit 2c0aa2a

Please sign in to comment.