diff options
Diffstat (limited to 'net/sched/sch_teql.c')
| -rw-r--r-- | net/sched/sch_teql.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/net/sched/sch_teql.c b/net/sched/sch_teql.c index 79b8ef34c6e4..4c16ad57a3e4 100644 --- a/net/sched/sch_teql.c +++ b/net/sched/sch_teql.c | |||
| @@ -302,20 +302,17 @@ restart: | |||
| 302 | 302 | ||
| 303 | switch (teql_resolve(skb, skb_res, slave)) { | 303 | switch (teql_resolve(skb, skb_res, slave)) { |
| 304 | case 0: | 304 | case 0: |
| 305 | if (spin_trylock(&slave->xmit_lock)) { | 305 | if (netif_tx_trylock(slave)) { |
| 306 | slave->xmit_lock_owner = smp_processor_id(); | ||
| 307 | if (!netif_queue_stopped(slave) && | 306 | if (!netif_queue_stopped(slave) && |
| 308 | slave->hard_start_xmit(skb, slave) == 0) { | 307 | slave->hard_start_xmit(skb, slave) == 0) { |
| 309 | slave->xmit_lock_owner = -1; | 308 | netif_tx_unlock(slave); |
| 310 | spin_unlock(&slave->xmit_lock); | ||
| 311 | master->slaves = NEXT_SLAVE(q); | 309 | master->slaves = NEXT_SLAVE(q); |
| 312 | netif_wake_queue(dev); | 310 | netif_wake_queue(dev); |
| 313 | master->stats.tx_packets++; | 311 | master->stats.tx_packets++; |
| 314 | master->stats.tx_bytes += len; | 312 | master->stats.tx_bytes += len; |
| 315 | return 0; | 313 | return 0; |
| 316 | } | 314 | } |
| 317 | slave->xmit_lock_owner = -1; | 315 | netif_tx_unlock(slave); |
| 318 | spin_unlock(&slave->xmit_lock); | ||
| 319 | } | 316 | } |
| 320 | if (netif_queue_stopped(dev)) | 317 | if (netif_queue_stopped(dev)) |
| 321 | busy = 1; | 318 | busy = 1; |
