Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/ixgbe/ix_txrx.c
Show First 20 Lines • Show All 114 Lines • ▼ Show 20 Lines | if (pi->ipi_csum_flags & CSUM_TSO) { | ||||
mss_l4len_idx |= (pi->ipi_tcp_hlen << IXGBE_ADVTXD_L4LEN_SHIFT); | mss_l4len_idx |= (pi->ipi_tcp_hlen << IXGBE_ADVTXD_L4LEN_SHIFT); | ||||
} | } | ||||
olinfo_status |= pktlen << IXGBE_ADVTXD_PAYLEN_SHIFT; | olinfo_status |= pktlen << IXGBE_ADVTXD_PAYLEN_SHIFT; | ||||
if (pi->ipi_flags & IPI_TX_IPV4) { | if (pi->ipi_flags & IPI_TX_IPV4) { | ||||
type_tucmd_mlhl |= IXGBE_ADVTXD_TUCMD_IPV4; | type_tucmd_mlhl |= IXGBE_ADVTXD_TUCMD_IPV4; | ||||
/* Tell transmit desc to also do IPv4 checksum. */ | /* Tell transmit desc to also do IPv4 checksum. */ | ||||
if (pi->ipi_csum_flags & (CSUM_IP|CSUM_TSO)) | if (pi->ipi_csum_flags & (CSUM_IP|CSUM_TSO)) | ||||
jacob.e.keller_intel.com: In fact, we already do a check for enabling IP checksums when CSUM_TSO is on, but CSUM_IP is… | |||||
olinfo_status |= IXGBE_TXD_POPTS_IXSM << 8; | olinfo_status |= IXGBE_TXD_POPTS_IXSM << 8; | ||||
} else if (pi->ipi_flags & IPI_TX_IPV6) | } else if (pi->ipi_flags & IPI_TX_IPV6) | ||||
type_tucmd_mlhl |= IXGBE_ADVTXD_TUCMD_IPV6; | type_tucmd_mlhl |= IXGBE_ADVTXD_TUCMD_IPV6; | ||||
else | else | ||||
offload = FALSE; | offload = FALSE; | ||||
vlan_macip_lens |= pi->ipi_ip_hlen; | vlan_macip_lens |= pi->ipi_ip_hlen; | ||||
switch (pi->ipi_ipproto) { | switch (pi->ipi_ipproto) { | ||||
case IPPROTO_TCP: | case IPPROTO_TCP: | ||||
if (pi->ipi_csum_flags & (CSUM_IP_TCP | CSUM_IP6_TCP)) | if (pi->ipi_csum_flags & (CSUM_IP_TCP | CSUM_IP6_TCP | CSUM_TSO)) | ||||
Not Done Inline ActionsThis line is correct, but... jacob.e.keller_intel.com: This line is correct, but... | |||||
type_tucmd_mlhl |= IXGBE_ADVTXD_TUCMD_L4T_TCP; | type_tucmd_mlhl |= IXGBE_ADVTXD_TUCMD_L4T_TCP; | ||||
else | else | ||||
offload = FALSE; | offload = FALSE; | ||||
break; | break; | ||||
case IPPROTO_UDP: | case IPPROTO_UDP: | ||||
if (pi->ipi_csum_flags & (CSUM_IP_UDP | CSUM_IP6_UDP)) | if (pi->ipi_csum_flags & (CSUM_IP_UDP | CSUM_IP6_UDP)) | ||||
Not Done Inline ActionsI don't think we want to enable UDP checksums if CSUM_TSO is on, but UDP checksums are off? jacob.e.keller_intel.com: I don't think we want to enable UDP checksums if CSUM_TSO is on, but UDP checksums are off? | |||||
type_tucmd_mlhl |= IXGBE_ADVTXD_TUCMD_L4T_UDP; | type_tucmd_mlhl |= IXGBE_ADVTXD_TUCMD_L4T_UDP; | ||||
else | else | ||||
offload = FALSE; | offload = FALSE; | ||||
break; | break; | ||||
case IPPROTO_SCTP: | case IPPROTO_SCTP: | ||||
if (pi->ipi_csum_flags & (CSUM_IP_SCTP | CSUM_IP6_SCTP)) | if (pi->ipi_csum_flags & (CSUM_IP_SCTP | CSUM_IP6_SCTP)) | ||||
Not Done Inline ActionsSame here, I think the check for CSUM_TSO here is incorrect. jacob.e.keller_intel.com: Same here, I think the check for CSUM_TSO here is incorrect. | |||||
type_tucmd_mlhl |= IXGBE_ADVTXD_TUCMD_L4T_SCTP; | type_tucmd_mlhl |= IXGBE_ADVTXD_TUCMD_L4T_SCTP; | ||||
else | else | ||||
offload = FALSE; | offload = FALSE; | ||||
break; | break; | ||||
default: | default: | ||||
offload = FALSE; | offload = FALSE; | ||||
break; | break; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 391 Lines • Show Last 20 Lines |
In fact, we already do a check for enabling IP checksums when CSUM_TSO is on, but CSUM_IP is off, here.