|
@@ -3126,6 +3126,8 @@ static int ixgbe_tso(struct ixgbe_adapter *adapter,
|
|
mss_l4len_idx |=
|
|
mss_l4len_idx |=
|
|
(skb_shinfo(skb)->gso_size << IXGBE_ADVTXD_MSS_SHIFT);
|
|
(skb_shinfo(skb)->gso_size << IXGBE_ADVTXD_MSS_SHIFT);
|
|
mss_l4len_idx |= (l4len << IXGBE_ADVTXD_L4LEN_SHIFT);
|
|
mss_l4len_idx |= (l4len << IXGBE_ADVTXD_L4LEN_SHIFT);
|
|
|
|
+ /* use index 1 for TSO */
|
|
|
|
+ mss_l4len_idx |= (1 << IXGBE_ADVTXD_IDX_SHIFT);
|
|
context_desc->mss_l4len_idx = cpu_to_le32(mss_l4len_idx);
|
|
context_desc->mss_l4len_idx = cpu_to_le32(mss_l4len_idx);
|
|
|
|
|
|
tx_buffer_info->time_stamp = jiffies;
|
|
tx_buffer_info->time_stamp = jiffies;
|
|
@@ -3198,6 +3200,7 @@ static bool ixgbe_tx_csum(struct ixgbe_adapter *adapter,
|
|
}
|
|
}
|
|
|
|
|
|
context_desc->type_tucmd_mlhl = cpu_to_le32(type_tucmd_mlhl);
|
|
context_desc->type_tucmd_mlhl = cpu_to_le32(type_tucmd_mlhl);
|
|
|
|
+ /* use index zero for tx checksum offload */
|
|
context_desc->mss_l4len_idx = 0;
|
|
context_desc->mss_l4len_idx = 0;
|
|
|
|
|
|
tx_buffer_info->time_stamp = jiffies;
|
|
tx_buffer_info->time_stamp = jiffies;
|
|
@@ -3306,6 +3309,8 @@ static void ixgbe_tx_queue(struct ixgbe_adapter *adapter,
|
|
olinfo_status |= IXGBE_TXD_POPTS_TXSM <<
|
|
olinfo_status |= IXGBE_TXD_POPTS_TXSM <<
|
|
IXGBE_ADVTXD_POPTS_SHIFT;
|
|
IXGBE_ADVTXD_POPTS_SHIFT;
|
|
|
|
|
|
|
|
+ /* use index 1 context for tso */
|
|
|
|
+ olinfo_status |= (1 << IXGBE_ADVTXD_IDX_SHIFT);
|
|
if (tx_flags & IXGBE_TX_FLAGS_IPV4)
|
|
if (tx_flags & IXGBE_TX_FLAGS_IPV4)
|
|
olinfo_status |= IXGBE_TXD_POPTS_IXSM <<
|
|
olinfo_status |= IXGBE_TXD_POPTS_IXSM <<
|
|
IXGBE_ADVTXD_POPTS_SHIFT;
|
|
IXGBE_ADVTXD_POPTS_SHIFT;
|