diff options
author | PJ Waskiewicz <peter.p.waskiewicz.jr@intel.com> | 2008-08-26 07:27:30 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@redhat.com> | 2008-09-03 10:03:34 -0400 |
commit | 4eeae6fd3f6a7f4cee0e75cf8b0d30b265339ae8 (patch) | |
tree | bf3efc95fd5bcaef596b21492a26d42d771d02cd /drivers/net/ixgbe/ixgbe_main.c | |
parent | cc41ac7c0011703460dd4d4674bb7cbf73bb883d (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.c | 5 |
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; |