]> git.openfabrics.org - ~shefty/rdma-dev.git/commitdiff
ixgbe: allow vlan egress priority mapping in DCB mode
authorLucy Liu <lucy.liu@intel.com>
Wed, 5 Aug 2009 20:06:34 +0000 (13:06 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 5 Aug 2009 20:06:34 +0000 (13:06 -0700)
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>
drivers/net/ixgbe/ixgbe_main.c

index 44adc9862826cddf4c1582a7c7c52fd82fb3c90a..52d7f19de4355409d00288161ace50edb6b6ef95 100644 (file)
@@ -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);
 }