Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (43 commits) net: Fix 'Re: PACKET_TX_RING: packet size is too long' netdev: usb: dm9601.c can drive a device not supported yet, add support for it qlge: Fix firmware mailbox command timeout. qlge: Fix EEH handling. AF_RAW: Augment raw_send_hdrinc to expand skb to fit iphdr->ihl (v2) bonding: fix a race condition in calls to slave MII ioctls virtio-net: fix data corruption with OOM sfc: Set ip_summed correctly for page buffers passed to GRO cnic: Fix L2CTX_STATUSB_NUM offset in context memory. MAINTAINERS: rt2x00 list is moderated airo: Reorder tests, check bounds before element mac80211: fix for incorrect sequence number on hostapd injected frames libertas spi: fix sparse errors mac80211: trivial: fix spelling in mesh_hwmp cfg80211: sme: deauthenticate on assoc failure mac80211: keep auth state when assoc fails mac80211: fix ibss joining b43: add 'struct b43_wl' missing declaration b43: Fix Bugzilla #14181 and the bug from the previous 'fix' rt2x00: Fix crypto in TX frame for rt2800usb ...
This commit is contained in:
@@ -516,8 +516,7 @@ again:
|
||||
/* Free up any pending old buffers before queueing new ones. */
|
||||
free_old_xmit_skbs(vi);
|
||||
|
||||
/* Put new one in send queue and do transmit */
|
||||
__skb_queue_head(&vi->send, skb);
|
||||
/* Try to transmit */
|
||||
capacity = xmit_skb(vi, skb);
|
||||
|
||||
/* This can happen with OOM and indirect buffers. */
|
||||
@@ -531,8 +530,17 @@ again:
|
||||
}
|
||||
return NETDEV_TX_BUSY;
|
||||
}
|
||||
|
||||
vi->svq->vq_ops->kick(vi->svq);
|
||||
|
||||
/*
|
||||
* Put new one in send queue. You'd expect we'd need this before
|
||||
* xmit_skb calls add_buf(), since the callback can be triggered
|
||||
* immediately after that. But since the callback just triggers
|
||||
* another call back here, normal network xmit locking prevents the
|
||||
* race.
|
||||
*/
|
||||
__skb_queue_head(&vi->send, skb);
|
||||
|
||||
/* Don't wait up for transmitted skbs to be freed. */
|
||||
skb_orphan(skb);
|
||||
nf_reset(skb);
|
||||
|
Reference in New Issue
Block a user