diff options
Diffstat (limited to 'drivers/net/ixgbe/ixgbe_main.c')
-rw-r--r-- | drivers/net/ixgbe/ixgbe_main.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c index a2119d79ccdd..47a3c6d70569 100644 --- a/drivers/net/ixgbe/ixgbe_main.c +++ b/drivers/net/ixgbe/ixgbe_main.c | |||
@@ -34,6 +34,7 @@ | |||
34 | #include <linux/in.h> | 34 | #include <linux/in.h> |
35 | #include <linux/ip.h> | 35 | #include <linux/ip.h> |
36 | #include <linux/tcp.h> | 36 | #include <linux/tcp.h> |
37 | #include <linux/pkt_sched.h> | ||
37 | #include <linux/ipv6.h> | 38 | #include <linux/ipv6.h> |
38 | #include <net/checksum.h> | 39 | #include <net/checksum.h> |
39 | #include <net/ip6_checksum.h> | 40 | #include <net/ip6_checksum.h> |
@@ -5126,9 +5127,6 @@ static int ixgbe_xmit_frame(struct sk_buff *skb, struct net_device *netdev) | |||
5126 | int count = 0; | 5127 | int count = 0; |
5127 | unsigned int f; | 5128 | unsigned int f; |
5128 | 5129 | ||
5129 | r_idx = skb->queue_mapping; | ||
5130 | tx_ring = &adapter->tx_ring[r_idx]; | ||
5131 | |||
5132 | if (adapter->vlgrp && vlan_tx_tag_present(skb)) { | 5130 | if (adapter->vlgrp && vlan_tx_tag_present(skb)) { |
5133 | tx_flags |= vlan_tx_tag_get(skb); | 5131 | tx_flags |= vlan_tx_tag_get(skb); |
5134 | if (adapter->flags & IXGBE_FLAG_DCB_ENABLED) { | 5132 | if (adapter->flags & IXGBE_FLAG_DCB_ENABLED) { |
@@ -5138,11 +5136,19 @@ static int ixgbe_xmit_frame(struct sk_buff *skb, struct net_device *netdev) | |||
5138 | tx_flags <<= IXGBE_TX_FLAGS_VLAN_SHIFT; | 5136 | tx_flags <<= IXGBE_TX_FLAGS_VLAN_SHIFT; |
5139 | tx_flags |= IXGBE_TX_FLAGS_VLAN; | 5137 | tx_flags |= IXGBE_TX_FLAGS_VLAN; |
5140 | } else if (adapter->flags & IXGBE_FLAG_DCB_ENABLED) { | 5138 | } else if (adapter->flags & IXGBE_FLAG_DCB_ENABLED) { |
5141 | tx_flags |= (skb->queue_mapping << 13); | 5139 | if (skb->priority != TC_PRIO_CONTROL) { |
5142 | tx_flags <<= IXGBE_TX_FLAGS_VLAN_SHIFT; | 5140 | tx_flags |= (skb->queue_mapping << 13); |
5143 | tx_flags |= IXGBE_TX_FLAGS_VLAN; | 5141 | tx_flags <<= IXGBE_TX_FLAGS_VLAN_SHIFT; |
5142 | tx_flags |= IXGBE_TX_FLAGS_VLAN; | ||
5143 | } else { | ||
5144 | skb->queue_mapping = | ||
5145 | adapter->ring_feature[RING_F_DCB].indices-1; | ||
5146 | } | ||
5144 | } | 5147 | } |
5145 | 5148 | ||
5149 | r_idx = skb->queue_mapping; | ||
5150 | tx_ring = &adapter->tx_ring[r_idx]; | ||
5151 | |||
5146 | if ((adapter->flags & IXGBE_FLAG_FCOE_ENABLED) && | 5152 | if ((adapter->flags & IXGBE_FLAG_FCOE_ENABLED) && |
5147 | (skb->protocol == htons(ETH_P_FCOE))) | 5153 | (skb->protocol == htons(ETH_P_FCOE))) |
5148 | tx_flags |= IXGBE_TX_FLAGS_FCOE; | 5154 | tx_flags |= IXGBE_TX_FLAGS_FCOE; |