/* Returns to the caller: 0 - queue is empty or throttled. >0 - queue is not empty.  */
static int qdisc_restart(struct Qdisc *q)
/* Returns to the caller: 0 - queue is empty or throttled. >0 - queue is not empty.  */
static int qdisc_restart(struct Qdisc *q)
{
	struct netdev_queue *txq;
	struct net_device *dev;
	spinlock_t *root_lock;
	struct sk_buff *skb;
	skb = dequeue_skb(q);
	if (unlikely(!skb))
		return 0;
	root_lock = qdisc_lock(q);
	dev = qdisc_dev(q);
	txq = netdev_get_tx_queue(dev, skb_get_queue_mapping(skb));
	return sch_direct_xmit(skb, q, dev, txq, root_lock);
}