As per comments, this isn't a foolproof implementation. This is being added so that we can contain and isolate all the explicit ->tx_queue references in the tree. Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx> --- include/net/irda/irda_device.h | 2 +- include/net/sch_generic.h | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletions(-) diff --git a/include/net/irda/irda_device.h b/include/net/irda/irda_device.h index 16fbf67..3025ae1 100644 --- a/include/net/irda/irda_device.h +++ b/include/net/irda/irda_device.h @@ -223,7 +223,7 @@ int irda_device_is_receiving(struct net_device *dev); /* Interface for internal use */ static inline int irda_device_txqueue_empty(const struct net_device *dev) { - return skb_queue_empty(&dev->tx_queue.qdisc->q); + return qdisc_all_tx_empty(dev); } int irda_device_set_raw_mode(struct net_device* self, int status); struct net_device *alloc_irdadev(int sizeof_priv); diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h index a71994b..f83e860 100644 --- a/include/net/sch_generic.h +++ b/include/net/sch_generic.h @@ -191,6 +191,19 @@ static inline void qdisc_reset_all_tx(struct net_device *dev) qdisc_reset(dev->tx_queue.qdisc); } +/* Are all TX queues of the device empty? */ +static inline bool qdisc_all_tx_empty(const struct net_device *dev) +{ + struct netdev_queue *txq = &dev->tx_queue; + + /* XXX This is not correct but it is good enough for the + * XXX one place that wants this, IRDA. If we wanted to + * XXX do this right, we'd need to add a qdisc op to + * XXX probe for the queue state. + */ + return skb_queue_empty(&txq->qdisc->q); +} + static inline int __qdisc_enqueue_tail(struct sk_buff *skb, struct Qdisc *sch, struct sk_buff_head *list) { -- 1.5.6 -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html