From b5d381e7ec3610fecb9131d8a0b8b579ffb67196 Mon Sep 17 00:00:00 2001 From: rakesh goyal Date: Wed, 24 Jun 2020 20:37:10 +0530 Subject: [PATCH] nvethernet: use vlan priority to select queue Adding support to use VLAN priority field to select correct TX queue. For TX packets which are for VLAN interface, skb->priority is not used. Bug 200630202 Change-Id: I4755066ead11e7528a18ee99b1eaba2b7a936d6d Signed-off-by: rakesh goyal Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2366244 Reviewed-by: automaticguardword Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Nagarjuna Kristam Reviewed-by: Mahesh Patil Reviewed-by: Narayan Reddy Reviewed-by: Srinivas Ramachandran Reviewed-by: mobile promotions Tested-by: mobile promotions GVS: Gerrit_Virtual_Submit --- drivers/net/ethernet/nvidia/nvethernet/ether_linux.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/nvidia/nvethernet/ether_linux.c b/drivers/net/ethernet/nvidia/nvethernet/ether_linux.c index df692f11..f840a336 100644 --- a/drivers/net/ethernet/nvidia/nvethernet/ether_linux.c +++ b/drivers/net/ethernet/nvidia/nvethernet/ether_linux.c @@ -2125,10 +2125,16 @@ static unsigned short ether_select_queue(struct net_device *dev, struct osi_core_priv_data *osi_core = pdata->osi_core; unsigned short txqueue_select = 0; unsigned int i, mtlq; + u16 vlan_tci; + unsigned int priority = skb->priority; + + if (vlan_get_tag(skb, &vlan_tci) == 0) { + priority = (vlan_tci & VLAN_PRIO_MASK) >> VLAN_PRIO_SHIFT; + } for (i = 0; i < osi_core->num_mtl_queues; i++) { mtlq = osi_core->mtl_queues[i]; - if (pdata->txq_prio[mtlq] == skb->priority) { + if (pdata->txq_prio[mtlq] == priority) { txqueue_select = (unsigned short)i; break; }