X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=net%2Fsched%2Fsch_teql.c;fp=net%2Fsched%2Fsch_teql.c;h=79b8ef34c6e4c9b14d5d877ba64f0a496701e316;hb=64ba3f394c830ec48a1c31b53dcae312c56f1604;hp=4c16ad57a3e49141335a2812b4c7bc3e976e9b46;hpb=be1e6109ac94a859551f8e1774eb9a8469fe055c;p=linux-2.6.git diff --git a/net/sched/sch_teql.c b/net/sched/sch_teql.c index 4c16ad57a..79b8ef34c 100644 --- a/net/sched/sch_teql.c +++ b/net/sched/sch_teql.c @@ -302,17 +302,20 @@ restart: switch (teql_resolve(skb, skb_res, slave)) { case 0: - if (netif_tx_trylock(slave)) { + if (spin_trylock(&slave->xmit_lock)) { + slave->xmit_lock_owner = smp_processor_id(); if (!netif_queue_stopped(slave) && slave->hard_start_xmit(skb, slave) == 0) { - netif_tx_unlock(slave); + slave->xmit_lock_owner = -1; + spin_unlock(&slave->xmit_lock); master->slaves = NEXT_SLAVE(q); netif_wake_queue(dev); master->stats.tx_packets++; master->stats.tx_bytes += len; return 0; } - netif_tx_unlock(slave); + slave->xmit_lock_owner = -1; + spin_unlock(&slave->xmit_lock); } if (netif_queue_stopped(dev)) busy = 1;