On Thu, 28 May 2020 11:36:14 -0700 Ronak Doshi wrote: > @@ -1168,13 +1220,21 @@ vmxnet3_rx_csum(struct vmxnet3_adapter *adapter, > (le32_to_cpu(gdesc->dword[3]) & > VMXNET3_RCD_CSUM_OK) == VMXNET3_RCD_CSUM_OK) { > skb->ip_summed = CHECKSUM_UNNECESSARY; > - BUG_ON(!(gdesc->rcd.tcp || gdesc->rcd.udp)); > - BUG_ON(gdesc->rcd.frg); > + BUG_ON(!(gdesc->rcd.tcp || gdesc->rcd.udp) && > + !(le32_to_cpu(gdesc->dword[0]) & > + (1UL << VMXNET3_RCD_HDR_INNER_SHIFT))); > + BUG_ON(gdesc->rcd.frg && > + !(le32_to_cpu(gdesc->dword[0]) & > + (1UL << VMXNET3_RCD_HDR_INNER_SHIFT))); > } else if (gdesc->rcd.v6 && (le32_to_cpu(gdesc->dword[3]) & > (1 << VMXNET3_RCD_TUC_SHIFT))) { > skb->ip_summed = CHECKSUM_UNNECESSARY; > - BUG_ON(!(gdesc->rcd.tcp || gdesc->rcd.udp)); > - BUG_ON(gdesc->rcd.frg); > + BUG_ON(!(gdesc->rcd.tcp || gdesc->rcd.udp) && > + !(le32_to_cpu(gdesc->dword[0]) & > + (1UL << VMXNET3_RCD_HDR_INNER_SHIFT))); > + BUG_ON(gdesc->rcd.frg && > + !(le32_to_cpu(gdesc->dword[0]) & > + (1UL << VMXNET3_RCD_HDR_INNER_SHIFT))); > } else { > if (gdesc->rcd.csum) { > skb->csum = htons(gdesc->rcd.csum);
Seems fairly extreme to trigger BUG_ONs if rx descriptor doesn't contain valid checksum offload flags :S WARN_ON_ONCE() and ignore checsum or drop packet would be more than sufficient.