ixgbe: Always use context 0, even for FCoE and TSO
authorAlexander Duyck <alexander.h.duyck@intel.com>
Tue, 30 Oct 2012 06:01:45 +0000 (06:01 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Sat, 19 Jan 2013 12:06:14 +0000 (04:06 -0800)
We were spending cycles separating the FCoE and TSO contexts even though we
always overwriting the context anyway.  Instead of doing that we can just
use context 0 for all descriptors.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/ixgbe/ixgbe_fcoe.c
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c

index 252850d9a3e0925b45bcb3524dd7c6e490540616..c88aa1c85862242e505fe614df613cf9b7cd2504 100644 (file)
@@ -550,9 +550,8 @@ int ixgbe_fso(struct ixgbe_ring *tx_ring,
        /* set flag indicating FCOE to ixgbe_tx_map call */
        first->tx_flags |= IXGBE_TX_FLAGS_FCOE;
 
-       /* mss_l4len_id: use 1 for FSO as TSO, no need for L4LEN */
+       /* mss_l4len_id: use 0 for FSO as TSO, no need for L4LEN */
        mss_l4len_idx = skb_shinfo(skb)->gso_size << IXGBE_ADVTXD_MSS_SHIFT;
-       mss_l4len_idx |= 1 << IXGBE_ADVTXD_IDX_SHIFT;
 
        /* vlan_macip_lens: HEADLEN, MACLEN, VLAN tag */
        vlan_macip_lens = skb_transport_offset(skb) +
index e197cc2493eba43e8d8a9ed1d7a9aba56441213f..2e2bf3360781637cdb6f8552724689dfb393be62 100644 (file)
@@ -5944,10 +5944,9 @@ static int ixgbe_tso(struct ixgbe_ring *tx_ring,
        first->gso_segs = skb_shinfo(skb)->gso_segs;
        first->bytecount += (first->gso_segs - 1) * *hdr_len;
 
-       /* mss_l4len_id: use 1 as index for TSO */
+       /* mss_l4len_id: use 0 as index for TSO */
        mss_l4len_idx = l4len << IXGBE_ADVTXD_L4LEN_SHIFT;
        mss_l4len_idx |= skb_shinfo(skb)->gso_size << IXGBE_ADVTXD_MSS_SHIFT;
-       mss_l4len_idx |= 1 << IXGBE_ADVTXD_IDX_SHIFT;
 
        /* vlan_macip_lens: HEADLEN, MACLEN, VLAN tag */
        vlan_macip_lens = skb_network_header_len(skb);
@@ -6073,14 +6072,6 @@ static void ixgbe_tx_olinfo_status(union ixgbe_adv_tx_desc *tx_desc,
        if (tx_flags & IXGBE_TX_FLAGS_IPV4)
                olinfo_status |= cpu_to_le32(IXGBE_ADVTXD_POPTS_IXSM);
 
-       /* use index 1 context for TSO/FSO/FCOE */
-#ifdef IXGBE_FCOE
-       if (tx_flags & (IXGBE_TX_FLAGS_TSO | IXGBE_TX_FLAGS_FCOE))
-#else
-       if (tx_flags & IXGBE_TX_FLAGS_TSO)
-#endif
-               olinfo_status |= cpu_to_le32(1 << IXGBE_ADVTXD_IDX_SHIFT);
-
        /*
         * Check Context must be set if Tx switch is enabled, which it
         * always is for case where virtual functions are running