浏览代码

ixgbe: Update ATR to use recorded TX queues instead of CPU for routing

This change is meant to update ATR so that it will use the recorded RX
queue instead of the CPU in the case of routing.  This change is meant to
help ixgbe default behavior to more closely match that of the kernel.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Ross Brattain <ross.b.brattain@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Alexander Duyck 14 年之前
父节点
当前提交
6440752c87
共有 1 个文件被更改,包括 3 次插入4 次删除
  1. 3 4
      drivers/net/ixgbe/ixgbe_main.c

+ 3 - 4
drivers/net/ixgbe/ixgbe_main.c

@@ -6795,11 +6795,10 @@ static int ixgbe_maybe_stop_tx(struct ixgbe_ring *tx_ring, u16 size)
 static u16 ixgbe_select_queue(struct net_device *dev, struct sk_buff *skb)
 static u16 ixgbe_select_queue(struct net_device *dev, struct sk_buff *skb)
 {
 {
 	struct ixgbe_adapter *adapter = netdev_priv(dev);
 	struct ixgbe_adapter *adapter = netdev_priv(dev);
-	int txq = smp_processor_id();
+	int txq = skb_rx_queue_recorded(skb) ? skb_get_rx_queue(skb) :
+					       smp_processor_id();
 #ifdef IXGBE_FCOE
 #ifdef IXGBE_FCOE
-	__be16 protocol;
-
-	protocol = vlan_get_protocol(skb);
+	__be16 protocol = vlan_get_protocol(skb);
 
 
 	if (((protocol == htons(ETH_P_FCOE)) ||
 	if (((protocol == htons(ETH_P_FCOE)) ||
 	    (protocol == htons(ETH_P_FIP))) &&
 	    (protocol == htons(ETH_P_FIP))) &&