Skip to content

Commit a56b158

Browse files
Ronak Doshidavem330
authored andcommitted
vmxnet3: disable overlay offloads if UPT device does not support
'Commit 6f91f4b ("vmxnet3: add support for capability registers")' added support for capability registers. These registers are used to advertize capabilities of the device. The patch updated the dev_caps to disable outer checksum offload if PTCR register does not support it. However, it missed to update other overlay offloads. This patch fixes this issue. Fixes: 6f91f4b ("vmxnet3: add support for capability registers") Signed-off-by: Ronak Doshi <doshir@vmware.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 6f9d704 commit a56b158

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

drivers/net/vmxnet3/vmxnet3_drv.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3365,10 +3365,17 @@ vmxnet3_declare_features(struct vmxnet3_adapter *adapter)
33653365
adapter->dev_caps[0] = VMXNET3_READ_BAR1_REG(adapter, VMXNET3_REG_CMD);
33663366
spin_unlock_irqrestore(&adapter->cmd_lock, flags);
33673367

3368+
if (!(adapter->dev_caps[0] & (1UL << VMXNET3_CAP_GENEVE_CHECKSUM_OFFLOAD)) &&
3369+
!(adapter->dev_caps[0] & (1UL << VMXNET3_CAP_VXLAN_CHECKSUM_OFFLOAD)) &&
3370+
!(adapter->dev_caps[0] & (1UL << VMXNET3_CAP_GENEVE_TSO)) &&
3371+
!(adapter->dev_caps[0] & (1UL << VMXNET3_CAP_VXLAN_TSO))) {
3372+
netdev->hw_enc_features &= ~NETIF_F_GSO_UDP_TUNNEL;
3373+
netdev->hw_features &= ~NETIF_F_GSO_UDP_TUNNEL;
3374+
}
33683375
if (!(adapter->dev_caps[0] & (1UL << VMXNET3_CAP_GENEVE_OUTER_CHECKSUM_OFFLOAD)) &&
33693376
!(adapter->dev_caps[0] & (1UL << VMXNET3_CAP_VXLAN_OUTER_CHECKSUM_OFFLOAD))) {
33703377
netdev->hw_enc_features &= ~NETIF_F_GSO_UDP_TUNNEL_CSUM;
3371-
netdev->features &= ~NETIF_F_GSO_UDP_TUNNEL_CSUM;
3378+
netdev->hw_features &= ~NETIF_F_GSO_UDP_TUNNEL_CSUM;
33723379
}
33733380
}
33743381

drivers/net/vmxnet3/vmxnet3_ethtool.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,12 @@ static void vmxnet3_enable_encap_offloads(struct net_device *netdev, netdev_feat
346346
adapter->dev_caps[0] = VMXNET3_READ_BAR1_REG(adapter, VMXNET3_REG_CMD);
347347
spin_unlock_irqrestore(&adapter->cmd_lock, flags);
348348

349+
if (!(adapter->dev_caps[0] & (1UL << VMXNET3_CAP_GENEVE_CHECKSUM_OFFLOAD)) &&
350+
!(adapter->dev_caps[0] & (1UL << VMXNET3_CAP_VXLAN_CHECKSUM_OFFLOAD)) &&
351+
!(adapter->dev_caps[0] & (1UL << VMXNET3_CAP_GENEVE_TSO)) &&
352+
!(adapter->dev_caps[0] & (1UL << VMXNET3_CAP_VXLAN_TSO))) {
353+
netdev->hw_enc_features &= ~NETIF_F_GSO_UDP_TUNNEL;
354+
}
349355
if (!(adapter->dev_caps[0] & (1UL << VMXNET3_CAP_GENEVE_OUTER_CHECKSUM_OFFLOAD)) &&
350356
!(adapter->dev_caps[0] & (1UL << VMXNET3_CAP_VXLAN_OUTER_CHECKSUM_OFFLOAD))) {
351357
netdev->hw_enc_features &= ~NETIF_F_GSO_UDP_TUNNEL_CSUM;

0 commit comments

Comments
 (0)