sfc: only use fixed-id if the skb asks for it
AIUI, the NETIF_F_TSO_MANGLEID flag is a signal to the stack that a driver may _need_ to mangle IDs in order to do TSO, and conversely a signal from the stack that the driver is permitted to do so. Since we support both fixed and incrementing IPIDs, we should rely on the SKB_GSO_FIXEDID flag on a per-skb basis, rather than using the MANGLEID feature to make all TSOs fixed-id. Includes other minor cleanups of ef100_make_tso_desc() coding style. Signed-off-by: Edward Cree <ecree@solarflare.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Родитель
806f9f23b6
Коммит
dbe2f251f9
|
@ -694,7 +694,7 @@ static unsigned int ef100_check_caps(const struct efx_nic *efx,
|
|||
#define EF100_OFFLOAD_FEATURES (NETIF_F_HW_CSUM | NETIF_F_RXCSUM | \
|
||||
NETIF_F_HIGHDMA | NETIF_F_SG | NETIF_F_FRAGLIST | NETIF_F_NTUPLE | \
|
||||
NETIF_F_RXHASH | NETIF_F_RXFCS | NETIF_F_TSO_ECN | NETIF_F_RXALL | \
|
||||
NETIF_F_TSO_MANGLEID | NETIF_F_HW_VLAN_CTAG_TX)
|
||||
NETIF_F_HW_VLAN_CTAG_TX)
|
||||
|
||||
const struct efx_nic_type ef100_pf_nic_type = {
|
||||
.revision = EFX_REV_EF100,
|
||||
|
|
|
@ -187,21 +187,22 @@ static void ef100_make_tso_desc(struct efx_nic *efx,
|
|||
struct efx_tx_buffer *buffer, efx_oword_t *txd,
|
||||
unsigned int segment_count)
|
||||
{
|
||||
u32 mangleid = (efx->net_dev->features & NETIF_F_TSO_MANGLEID) ||
|
||||
skb_shinfo(skb)->gso_type & SKB_GSO_TCP_FIXEDID ?
|
||||
ESE_GZ_TX_DESC_IP4_ID_NO_OP :
|
||||
ESE_GZ_TX_DESC_IP4_ID_INC_MOD16;
|
||||
u16 vlan_enable = efx->net_dev->features & NETIF_F_HW_VLAN_CTAG_TX ?
|
||||
skb_vlan_tag_present(skb) : 0;
|
||||
bool gso_partial = skb_shinfo(skb)->gso_type & SKB_GSO_PARTIAL;
|
||||
unsigned int len, ip_offset, tcp_offset, payload_segs;
|
||||
u32 mangleid = ESE_GZ_TX_DESC_IP4_ID_INC_MOD16;
|
||||
unsigned int outer_ip_offset, outer_l4_offset;
|
||||
u16 vlan_tci = skb_vlan_tag_get(skb);
|
||||
u32 mss = skb_shinfo(skb)->gso_size;
|
||||
bool encap = skb->encapsulation;
|
||||
u16 vlan_enable = 0;
|
||||
struct tcphdr *tcp;
|
||||
u32 paylen;
|
||||
|
||||
if (skb_shinfo(skb)->gso_type & SKB_GSO_TCP_FIXEDID)
|
||||
mangleid = ESE_GZ_TX_DESC_IP4_ID_NO_OP;
|
||||
if (efx->net_dev->features & NETIF_F_HW_VLAN_CTAG_TX)
|
||||
vlan_enable = skb_vlan_tag_present(skb);
|
||||
|
||||
len = skb->len - buffer->len;
|
||||
/* We use 1 for the TSO descriptor and 1 for the header */
|
||||
payload_segs = segment_count - 2;
|
||||
|
|
Загрузка…
Ссылка в новой задаче