diff options
Diffstat (limited to 'drivers/net/ixgbe/ixgbe_main.c')
-rw-r--r-- | drivers/net/ixgbe/ixgbe_main.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c index 7d6a415bcf88..e32af434cc9d 100644 --- a/drivers/net/ixgbe/ixgbe_main.c +++ b/drivers/net/ixgbe/ixgbe_main.c | |||
@@ -748,6 +748,7 @@ static bool ixgbe_clean_tx_irq(struct ixgbe_q_vector *q_vector, | |||
748 | while ((eop_desc->wb.status & cpu_to_le32(IXGBE_TXD_STAT_DD)) && | 748 | while ((eop_desc->wb.status & cpu_to_le32(IXGBE_TXD_STAT_DD)) && |
749 | (count < tx_ring->work_limit)) { | 749 | (count < tx_ring->work_limit)) { |
750 | bool cleaned = false; | 750 | bool cleaned = false; |
751 | rmb(); /* read buffer_info after eop_desc */ | ||
751 | for ( ; !cleaned; count++) { | 752 | for ( ; !cleaned; count++) { |
752 | struct sk_buff *skb; | 753 | struct sk_buff *skb; |
753 | tx_desc = IXGBE_TX_DESC_ADV(*tx_ring, i); | 754 | tx_desc = IXGBE_TX_DESC_ADV(*tx_ring, i); |
@@ -6155,9 +6156,11 @@ static u16 ixgbe_select_queue(struct net_device *dev, struct sk_buff *skb) | |||
6155 | txq &= (adapter->ring_feature[RING_F_FCOE].indices - 1); | 6156 | txq &= (adapter->ring_feature[RING_F_FCOE].indices - 1); |
6156 | txq += adapter->ring_feature[RING_F_FCOE].mask; | 6157 | txq += adapter->ring_feature[RING_F_FCOE].mask; |
6157 | return txq; | 6158 | return txq; |
6159 | #ifdef CONFIG_IXGBE_DCB | ||
6158 | } else if (adapter->flags & IXGBE_FLAG_DCB_ENABLED) { | 6160 | } else if (adapter->flags & IXGBE_FLAG_DCB_ENABLED) { |
6159 | txq = adapter->fcoe.up; | 6161 | txq = adapter->fcoe.up; |
6160 | return txq; | 6162 | return txq; |
6163 | #endif | ||
6161 | } | 6164 | } |
6162 | } | 6165 | } |
6163 | #endif | 6166 | #endif |
@@ -6216,10 +6219,14 @@ static netdev_tx_t ixgbe_xmit_frame(struct sk_buff *skb, | |||
6216 | if (adapter->flags & IXGBE_FLAG_FCOE_ENABLED && | 6219 | if (adapter->flags & IXGBE_FLAG_FCOE_ENABLED && |
6217 | (skb->protocol == htons(ETH_P_FCOE) || | 6220 | (skb->protocol == htons(ETH_P_FCOE) || |
6218 | skb->protocol == htons(ETH_P_FIP))) { | 6221 | skb->protocol == htons(ETH_P_FIP))) { |
6219 | tx_flags &= ~(IXGBE_TX_FLAGS_VLAN_PRIO_MASK | 6222 | #ifdef CONFIG_IXGBE_DCB |
6220 | << IXGBE_TX_FLAGS_VLAN_SHIFT); | 6223 | if (adapter->flags & IXGBE_FLAG_DCB_ENABLED) { |
6221 | tx_flags |= ((adapter->fcoe.up << 13) | 6224 | tx_flags &= ~(IXGBE_TX_FLAGS_VLAN_PRIO_MASK |
6222 | << IXGBE_TX_FLAGS_VLAN_SHIFT); | 6225 | << IXGBE_TX_FLAGS_VLAN_SHIFT); |
6226 | tx_flags |= ((adapter->fcoe.up << 13) | ||
6227 | << IXGBE_TX_FLAGS_VLAN_SHIFT); | ||
6228 | } | ||
6229 | #endif | ||
6223 | /* flag for FCoE offloads */ | 6230 | /* flag for FCoE offloads */ |
6224 | if (skb->protocol == htons(ETH_P_FCOE)) | 6231 | if (skb->protocol == htons(ETH_P_FCOE)) |
6225 | tx_flags |= IXGBE_TX_FLAGS_FCOE; | 6232 | tx_flags |= IXGBE_TX_FLAGS_FCOE; |