aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ixgbe/ixgbe_main.c
diff options
context:
space:
mode:
authorPJ Waskiewicz <peter.p.waskiewicz.jr@intel.com>2008-08-26 07:27:30 -0400
committerJeff Garzik <jgarzik@redhat.com>2008-09-03 10:03:34 -0400
commit4eeae6fd3f6a7f4cee0e75cf8b0d30b265339ae8 (patch)
treebf3efc95fd5bcaef596b21492a26d42d771d02cd /drivers/net/ixgbe/ixgbe_main.c
parentcc41ac7c0011703460dd4d4674bb7cbf73bb883d (diff)
ixgbe: use different context for tso and offload
Change TSO offloads to use a different context than VLAN insertion and Tx checksumming. Hardware has separate registers internally for storing these so use them. Signed-off-by: Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@intel.com> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'drivers/net/ixgbe/ixgbe_main.c')
-rw-r--r--drivers/net/ixgbe/ixgbe_main.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c
index 28d3321b0dd2..198b9d9a3d4c 100644
--- a/drivers/net/ixgbe/ixgbe_main.c
+++ b/drivers/net/ixgbe/ixgbe_main.c
@@ -3126,6 +3126,8 @@ static int ixgbe_tso(struct ixgbe_adapter *adapter,
3126 mss_l4len_idx |= 3126 mss_l4len_idx |=
3127 (skb_shinfo(skb)->gso_size << IXGBE_ADVTXD_MSS_SHIFT); 3127 (skb_shinfo(skb)->gso_size << IXGBE_ADVTXD_MSS_SHIFT);
3128 mss_l4len_idx |= (l4len << IXGBE_ADVTXD_L4LEN_SHIFT); 3128 mss_l4len_idx |= (l4len << IXGBE_ADVTXD_L4LEN_SHIFT);
3129 /* use index 1 for TSO */
3130 mss_l4len_idx |= (1 << IXGBE_ADVTXD_IDX_SHIFT);
3129 context_desc->mss_l4len_idx = cpu_to_le32(mss_l4len_idx); 3131 context_desc->mss_l4len_idx = cpu_to_le32(mss_l4len_idx);
3130 3132
3131 tx_buffer_info->time_stamp = jiffies; 3133 tx_buffer_info->time_stamp = jiffies;
@@ -3198,6 +3200,7 @@ static bool ixgbe_tx_csum(struct ixgbe_adapter *adapter,
3198 } 3200 }
3199 3201
3200 context_desc->type_tucmd_mlhl = cpu_to_le32(type_tucmd_mlhl); 3202 context_desc->type_tucmd_mlhl = cpu_to_le32(type_tucmd_mlhl);
3203 /* use index zero for tx checksum offload */
3201 context_desc->mss_l4len_idx = 0; 3204 context_desc->mss_l4len_idx = 0;
3202 3205
3203 tx_buffer_info->time_stamp = jiffies; 3206 tx_buffer_info->time_stamp = jiffies;
@@ -3306,6 +3309,8 @@ static void ixgbe_tx_queue(struct ixgbe_adapter *adapter,
3306 olinfo_status |= IXGBE_TXD_POPTS_TXSM << 3309 olinfo_status |= IXGBE_TXD_POPTS_TXSM <<
3307 IXGBE_ADVTXD_POPTS_SHIFT; 3310 IXGBE_ADVTXD_POPTS_SHIFT;
3308 3311
3312 /* use index 1 context for tso */
3313 olinfo_status |= (1 << IXGBE_ADVTXD_IDX_SHIFT);
3309 if (tx_flags & IXGBE_TX_FLAGS_IPV4) 3314 if (tx_flags & IXGBE_TX_FLAGS_IPV4)
3310 olinfo_status |= IXGBE_TXD_POPTS_IXSM << 3315 olinfo_status |= IXGBE_TXD_POPTS_IXSM <<
3311 IXGBE_ADVTXD_POPTS_SHIFT; 3316 IXGBE_ADVTXD_POPTS_SHIFT;