diff options
-rw-r--r-- | libdde_linux26/lib/src/arch/l4/mach_glue.c | 4 | ||||
-rw-r--r-- | libdde_linux26/lib/src/net/core/dev.c | 20 |
2 files changed, 3 insertions, 21 deletions
diff --git a/libdde_linux26/lib/src/arch/l4/mach_glue.c b/libdde_linux26/lib/src/arch/l4/mach_glue.c index 8f8b6fca..f3f56bda 100644 --- a/libdde_linux26/lib/src/arch/l4/mach_glue.c +++ b/libdde_linux26/lib/src/arch/l4/mach_glue.c @@ -50,7 +50,9 @@ int linux_pkg_xmit (char *pkg_data, int len, void *del_data, skb->dev = dev; - return dev->netdev_ops->ndo_start_xmit(skb, dev); + dev_queue_xmit(skb); + // TODO how should I return errors? + return 0; } char *netdev_addr(struct net_device *dev) diff --git a/libdde_linux26/lib/src/net/core/dev.c b/libdde_linux26/lib/src/net/core/dev.c index 65b4ba42..64917332 100644 --- a/libdde_linux26/lib/src/net/core/dev.c +++ b/libdde_linux26/lib/src/net/core/dev.c @@ -1777,8 +1777,6 @@ static struct netdev_queue *dev_pick_tx(struct net_device *dev, if (ops->ndo_select_queue) queue_index = ops->ndo_select_queue(dev, skb); - else if (dev->real_num_tx_queues > 1) - queue_index = simple_tx_hash(dev, skb); skb_set_queue_mapping(skb, queue_index); return netdev_get_tx_queue(dev, queue_index); @@ -1813,7 +1811,6 @@ int dev_queue_xmit(struct sk_buff *skb) { struct net_device *dev = skb->dev; struct netdev_queue *txq; - struct Qdisc *q; int rc = -ENOMEM; /* GSO will handle the following emulations directly. */ @@ -1851,27 +1848,10 @@ gso: rcu_read_lock_bh(); txq = dev_pick_tx(dev, skb); - q = rcu_dereference(txq->qdisc); #ifdef CONFIG_NET_CLS_ACT skb->tc_verd = SET_TC_AT(skb->tc_verd,AT_EGRESS); #endif - if (q->enqueue) { - spinlock_t *root_lock = qdisc_lock(q); - - spin_lock(root_lock); - - if (unlikely(test_bit(__QDISC_STATE_DEACTIVATED, &q->state))) { - kfree_skb(skb); - rc = NET_XMIT_DROP; - } else { - rc = qdisc_enqueue_root(skb, q); - qdisc_run(q); - } - spin_unlock(root_lock); - - goto out; - } /* The device has no queue. Common case for software devices: loopback, all the sorts of tunnels... |