Net_Tx_Action

Net_Tx_Action



9/11/2012  · diff –git a/net/core/dev.c b/net/core/dev.c index 8398836..00774ce 100644— a/net/core/dev.c +++ b/net/core/dev.c @@ -3015,7 +3015,7 @@ static void net_ tx_action (struct softirq_action *h) clist = clist->next WARN_ON(atomic_read(&skb->users)) – trace_kfree_skb(skb, net_ tx_action ) + trace_consume_skb(skb) __kfree_skb(skb) } }, At a later time, when the scheduler selects a ksoftirqd_CPUn kernel thread, the net_tx_action( ) function invokes qdisc_run( ) again to retry the packet transmission. In particular, qdisc_run( ) performs the following actions:, As the bailout added above for deactived lockless qdisc in net_tx_action() provides better protection for the race without calling qdisc_run() at all, so remove the STATE_DEACTIVATED checking in qdisc_run(). After qdisc_reset(), there is no skb in qdisc to be dequeued, so clear the STATE_MISSED in dev_reset_queue() too.


net_ tx_action () calls qdisc_run() for each device with an active queue. dev_hard_start_xmit() calls the hard_start_xmit virtual method for the net_device. But first, it calls dev_queue_xmit_nit(), which checks if a packet handler has been registered for the ETH_P_ALL protocol.


As the bailout added above for deactived lockless qdisc in net_tx_action() provides better protection for the race without calling qdisc_run() at all, so remove the STATE_DEACTIVATED checking in qdisc_run(). After qdisc_reset(), there is no skb in qdisc to be dequeued, so clear the STATE_MISSED in dev_reset_queue() too.


1/28/2016  · These function calls register the functions net_ tx_action and net_rx_action as softirq handlers that will be run when NET_TX_SOFTIRQ and NET_RX_SOFTIRQ softirqs are pending. rx packet processing begins

Advertiser