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 <rgoyal@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2366244
Reviewed-by: automaticguardword <automaticguardword@nvidia.com>
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Nagarjuna Kristam <nkristam@nvidia.com>
Reviewed-by: Mahesh Patil <maheshp@nvidia.com>
Reviewed-by: Narayan Reddy <narayanr@nvidia.com>
Reviewed-by: Srinivas Ramachandran <srinivasra@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
This commit is contained in:
rakesh goyal
2020-06-24 20:37:10 +05:30
committed by Revanth Kumar Uppala
parent a7a0aea104
commit b5d381e7ec

View File

@@ -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;
}