|
@@ -816,37 +816,33 @@ xdp_drop_no_cnt:
|
|
|
if (likely(dev->features & NETIF_F_RXCSUM)) {
|
|
|
if (cqe->status & cpu_to_be16(MLX4_CQE_STATUS_TCP |
|
|
|
MLX4_CQE_STATUS_UDP)) {
|
|
|
- if ((cqe->status & cpu_to_be16(MLX4_CQE_STATUS_IPOK)) &&
|
|
|
- cqe->checksum == cpu_to_be16(0xffff)) {
|
|
|
- bool l2_tunnel = (dev->hw_enc_features & NETIF_F_RXCSUM) &&
|
|
|
- (cqe->vlan_my_qpn & cpu_to_be32(MLX4_CQE_L2_TUNNEL));
|
|
|
-
|
|
|
- ip_summed = CHECKSUM_UNNECESSARY;
|
|
|
- hash_type = PKT_HASH_TYPE_L4;
|
|
|
- if (l2_tunnel)
|
|
|
- skb->csum_level = 1;
|
|
|
- ring->csum_ok++;
|
|
|
- } else {
|
|
|
+ bool l2_tunnel;
|
|
|
+
|
|
|
+ if (!((cqe->status & cpu_to_be16(MLX4_CQE_STATUS_IPOK)) &&
|
|
|
+ cqe->checksum == cpu_to_be16(0xffff)))
|
|
|
goto csum_none;
|
|
|
- }
|
|
|
+
|
|
|
+ l2_tunnel = (dev->hw_enc_features & NETIF_F_RXCSUM) &&
|
|
|
+ (cqe->vlan_my_qpn & cpu_to_be32(MLX4_CQE_L2_TUNNEL));
|
|
|
+ ip_summed = CHECKSUM_UNNECESSARY;
|
|
|
+ hash_type = PKT_HASH_TYPE_L4;
|
|
|
+ if (l2_tunnel)
|
|
|
+ skb->csum_level = 1;
|
|
|
+ ring->csum_ok++;
|
|
|
} else {
|
|
|
- if (priv->flags & MLX4_EN_FLAG_RX_CSUM_NON_TCP_UDP &&
|
|
|
- (cqe->status & cpu_to_be16(MLX4_CQE_STATUS_IPV4 |
|
|
|
+ if (!(priv->flags & MLX4_EN_FLAG_RX_CSUM_NON_TCP_UDP &&
|
|
|
+ (cqe->status & cpu_to_be16(MLX4_CQE_STATUS_IPV4 |
|
|
|
#if IS_ENABLED(CONFIG_IPV6)
|
|
|
- MLX4_CQE_STATUS_IPV6))) {
|
|
|
+ MLX4_CQE_STATUS_IPV6))))
|
|
|
#else
|
|
|
- 0))) {
|
|
|
+ 0))))
|
|
|
#endif
|
|
|
- if (check_csum(cqe, skb, va, dev->features)) {
|
|
|
- goto csum_none;
|
|
|
- } else {
|
|
|
- ip_summed = CHECKSUM_COMPLETE;
|
|
|
- hash_type = PKT_HASH_TYPE_L3;
|
|
|
- ring->csum_complete++;
|
|
|
- }
|
|
|
- } else {
|
|
|
goto csum_none;
|
|
|
- }
|
|
|
+ if (check_csum(cqe, skb, va, dev->features))
|
|
|
+ goto csum_none;
|
|
|
+ ip_summed = CHECKSUM_COMPLETE;
|
|
|
+ hash_type = PKT_HASH_TYPE_L3;
|
|
|
+ ring->csum_complete++;
|
|
|
}
|
|
|
} else {
|
|
|
csum_none:
|