|
@@ -440,8 +440,9 @@ igb_tx_insert_vlan(IGBCore *core, uint16_t qn, struct igb_tx *tx,
|
|
|
static bool
|
|
|
igb_setup_tx_offloads(IGBCore *core, struct igb_tx *tx)
|
|
|
{
|
|
|
+ uint32_t idx = (tx->first_olinfo_status >> 4) & 1;
|
|
|
+
|
|
|
if (tx->first_cmd_type_len & E1000_ADVTXD_DCMD_TSE) {
|
|
|
- uint32_t idx = (tx->first_olinfo_status >> 4) & 1;
|
|
|
uint32_t mss = tx->ctx[idx].mss_l4len_idx >> E1000_ADVTXD_MSS_SHIFT;
|
|
|
if (!net_tx_pkt_build_vheader(tx->tx_pkt, true, true, mss)) {
|
|
|
return false;
|
|
@@ -452,10 +453,11 @@ igb_setup_tx_offloads(IGBCore *core, struct igb_tx *tx)
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
- if (tx->first_olinfo_status & E1000_ADVTXD_POTS_TXSM) {
|
|
|
- if (!net_tx_pkt_build_vheader(tx->tx_pkt, false, true, 0)) {
|
|
|
- return false;
|
|
|
- }
|
|
|
+ if ((tx->first_olinfo_status & E1000_ADVTXD_POTS_TXSM) &&
|
|
|
+ !((tx->ctx[idx].type_tucmd_mlhl & E1000_ADVTXD_TUCMD_L4T_SCTP) ?
|
|
|
+ net_tx_pkt_update_sctp_checksum(tx->tx_pkt) :
|
|
|
+ net_tx_pkt_build_vheader(tx->tx_pkt, false, true, 0))) {
|
|
|
+ return false;
|
|
|
}
|
|
|
|
|
|
if (tx->first_olinfo_status & E1000_ADVTXD_POTS_IXSM) {
|