[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <CA+mtBx8sHDprEct3zgGXXKEESK6i0FYnFS-_z35FOyVQjS9R4Q@mail.gmail.com>
Date: Thu, 17 Nov 2011 08:10:01 -0800
From: Tom Herbert <therbert@...gle.com>
To: Linux Netdev List <netdev@...r.kernel.org>
Subject: root_lock vs. device's TX lock
>From sch_direct_xmit:
/* And release qdisc */
spin_unlock(root_lock);
HARD_TX_LOCK(dev, txq, smp_processor_id());
if (!netif_tx_queue_frozen_or_stopped(txq))
ret = dev_hard_start_xmit(skb, dev, txq);
HARD_TX_UNLOCK(dev, txq);
spin_lock(root_lock);
This is a lot of lock manipulation to basically switch from one lock
to another and possibly thrashing just to send a packet. I am
thinking that if the there is a 1-1 correspondence between qdisc and
device queue then we could actually use the device's lock as the root
lock for the qdisc. So in that case, we would need to touch any locks
from sch_direct_xmit (just hold root lock which is already device lock
for the duration).
Is there any reason why this couldn't work?
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists