diff mbox series

[net,v2] net: Fix Tx hash bound checking

Message ID 158257056094.10327.890174763453610916.stgit@anambiarhost.jf.intel.com
State Accepted
Delegated to: David Miller
Headers show
Series [net,v2] net: Fix Tx hash bound checking | expand

Commit Message

Nambiar, Amritha Feb. 24, 2020, 6:56 p.m. UTC
Fixes the lower and upper bounds when there are multiple TCs and
traffic is on the the same TC on the same device.

The lower bound is represented by 'qoffset' and the upper limit for
hash value is 'qcount + qoffset'. This gives a clean Rx to Tx queue
mapping when there are multiple TCs, as the queue indices for upper TCs
will be offset by 'qoffset'.

v2: Fixed commit description based on comments.

Fixes: 1b837d489e06 ("net: Revoke export for __skb_tx_hash, update it to just be static skb_tx_hash")
Fixes: eadec877ce9c ("net: Add support for subordinate traffic classes to netdev_pick_tx")
Signed-off-by: Amritha Nambiar <amritha.nambiar@intel.com>
Reviewed-by: Alexander Duyck <alexander.h.duyck@linux.intel.com>
Reviewed-by: Sridhar Samudrala <sridhar.samudrala@intel.com>
---
 net/core/dev.c |    2 ++
 1 file changed, 2 insertions(+)

Comments

David Miller Feb. 26, 2020, 7:14 p.m. UTC | #1
From: Amritha Nambiar <amritha.nambiar@intel.com>
Date: Mon, 24 Feb 2020 10:56:00 -0800

> Fixes the lower and upper bounds when there are multiple TCs and
> traffic is on the the same TC on the same device.
> 
> The lower bound is represented by 'qoffset' and the upper limit for
> hash value is 'qcount + qoffset'. This gives a clean Rx to Tx queue
> mapping when there are multiple TCs, as the queue indices for upper TCs
> will be offset by 'qoffset'.
> 
> v2: Fixed commit description based on comments.
> 
> Fixes: 1b837d489e06 ("net: Revoke export for __skb_tx_hash, update it to just be static skb_tx_hash")
> Fixes: eadec877ce9c ("net: Add support for subordinate traffic classes to netdev_pick_tx")
> Signed-off-by: Amritha Nambiar <amritha.nambiar@intel.com>
> Reviewed-by: Alexander Duyck <alexander.h.duyck@linux.intel.com>
> Reviewed-by: Sridhar Samudrala <sridhar.samudrala@intel.com>

Applied and queued up for -stable, thanks.
diff mbox series

Patch

diff --git a/net/core/dev.c b/net/core/dev.c
index e10bd680dc03..c6c985fe7b1b 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -3076,6 +3076,8 @@  static u16 skb_tx_hash(const struct net_device *dev,
 
 	if (skb_rx_queue_recorded(skb)) {
 		hash = skb_get_rx_queue(skb);
+		if (hash >= qoffset)
+			hash -= qoffset;
 		while (unlikely(hash >= qcount))
 			hash -= qcount;
 		return hash + qoffset;