diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/core/pktgen.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/net/core/pktgen.c b/net/core/pktgen.c index d068ec25db1e..0304f981f7ff 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c | |||
@@ -3338,7 +3338,9 @@ static void pktgen_xmit(struct pktgen_dev *pkt_dev) | |||
3338 | queue_map = skb_get_queue_mapping(pkt_dev->skb); | 3338 | queue_map = skb_get_queue_mapping(pkt_dev->skb); |
3339 | txq = netdev_get_tx_queue(odev, queue_map); | 3339 | txq = netdev_get_tx_queue(odev, queue_map); |
3340 | 3340 | ||
3341 | __netif_tx_lock_bh(txq); | 3341 | local_bh_disable(); |
3342 | |||
3343 | HARD_TX_LOCK(odev, txq, smp_processor_id()); | ||
3342 | 3344 | ||
3343 | if (unlikely(netif_xmit_frozen_or_drv_stopped(txq))) { | 3345 | if (unlikely(netif_xmit_frozen_or_drv_stopped(txq))) { |
3344 | ret = NETDEV_TX_BUSY; | 3346 | ret = NETDEV_TX_BUSY; |
@@ -3374,7 +3376,9 @@ static void pktgen_xmit(struct pktgen_dev *pkt_dev) | |||
3374 | pkt_dev->last_ok = 0; | 3376 | pkt_dev->last_ok = 0; |
3375 | } | 3377 | } |
3376 | unlock: | 3378 | unlock: |
3377 | __netif_tx_unlock_bh(txq); | 3379 | HARD_TX_UNLOCK(odev, txq); |
3380 | |||
3381 | local_bh_enable(); | ||
3378 | 3382 | ||
3379 | /* If pkt_dev->count is zero, then run forever */ | 3383 | /* If pkt_dev->count is zero, then run forever */ |
3380 | if ((pkt_dev->count != 0) && (pkt_dev->sofar >= pkt_dev->count)) { | 3384 | if ((pkt_dev->count != 0) && (pkt_dev->sofar >= pkt_dev->count)) { |