diff options
author | Lucy Liu <lucy.liu@intel.com> | 2009-08-05 13:06:34 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-08-05 13:06:34 -0700 |
commit | 36e89d73e54c8db79d0fd1636cab9236eea7aae9 (patch) | |
tree | 46b72e16547463fcee1e74233ddc2f6776e61307 | |
parent | 14074eab8dcaa7f66d8f52612b2dcec51222bb5f (diff) | |
download | linux-stable-36e89d73e54c8db79d0fd1636cab9236eea7aae9.tar.gz linux-stable-36e89d73e54c8db79d0fd1636cab9236eea7aae9.tar.bz2 linux-stable-36e89d73e54c8db79d0fd1636cab9236eea7aae9.zip |
ixgbe: allow vlan egress priority mapping in DCB mode
The skb priority to vlan-qos egress mapping that can be configured using
set_egress_map with vconfig is overriden by the DCB code in the driver.
This patch allows this existing mechanism to work and will increase the
configuration flexibility of DCB mode on Linux.
A hierarchy of configuration is:
1. Modifies the ixgbe_select_queue() routine for DCB mode to return the
priority value from the VLAN tag. It will normally be zero, unless the egress
priority map has modified it. This will get packets into the correct queue and
result in the queue_mapping field being set correctly.
2. Any tc filter which modifies queue_mapping will be honored, as the filters
are handled after the vlan egress map is handled.
Signed-off-by: Lucy Liu <lucy.liu@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ixgbe/ixgbe_main.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c index 44adc9862826..52d7f19de435 100644 --- a/drivers/net/ixgbe/ixgbe_main.c +++ b/drivers/net/ixgbe/ixgbe_main.c @@ -5126,7 +5126,7 @@ static u16 ixgbe_select_queue(struct net_device *dev, struct sk_buff *skb) return smp_processor_id(); if (adapter->flags & IXGBE_FLAG_DCB_ENABLED) - return 0; /* All traffic should default to class 0 */ + return (skb->vlan_tci & IXGBE_TX_FLAGS_VLAN_PRIO_MASK) >> 13; return skb_tx_hash(dev, skb); } |