net: Push highest priority net_pkt directly to driver
If user has set the priority of the sent net_pkt to highest priority (NET_PRIORITY_CA) and enabled CONFIG_NET_TC_SKIP_FOR_HIGH_PRIO option, then push that packet directly to driver instead of TX queue. This will make the TX sending latency smaller for the high priority packet. This is not enabled by default. Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
This commit is contained in:
parent
1771cee065
commit
c59372b6e6
2 changed files with 20 additions and 2 deletions
|
@ -341,12 +341,23 @@ void net_if_queue_tx(struct net_if *iface, struct net_pkt *pkt)
|
|||
uint8_t prio = net_pkt_priority(pkt);
|
||||
uint8_t tc = net_tx_priority2tc(prio);
|
||||
|
||||
k_work_init(net_pkt_work(pkt), process_tx_packet);
|
||||
|
||||
net_stats_update_tc_sent_pkt(iface, tc);
|
||||
net_stats_update_tc_sent_bytes(iface, tc, net_pkt_get_len(pkt));
|
||||
net_stats_update_tc_sent_priority(iface, tc, prio);
|
||||
|
||||
/* For highest priority packet, skip the TX queue and push directly to
|
||||
* the driver.
|
||||
*/
|
||||
if (IS_ENABLED(CONFIG_NET_TC_SKIP_FOR_HIGH_PRIO) &&
|
||||
prio == NET_PRIORITY_CA) {
|
||||
net_pkt_set_tx_stats_tick(pkt, k_cycle_get_32());
|
||||
|
||||
net_if_tx(net_pkt_iface(pkt), pkt);
|
||||
return;
|
||||
}
|
||||
|
||||
k_work_init(net_pkt_work(pkt), process_tx_packet);
|
||||
|
||||
#if NET_TC_TX_COUNT > 1
|
||||
NET_DBG("TC %d with prio %d pkt %p", tc, prio, pkt);
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue