qcacmn: Set skb's ip_summed to CHECKSUM_NONE if checksum failure

Only if both IP and TCP/UDP checksum passed for TCP/UDP
packets, then set ip_summed to CHECKSUM_UNNECESSARY,
otherwise set it to CHECKSUM_NONE.

Change-Id: Ic4973e32d622f66830dbd7a5bc03012cf6dd87bf
CRs-Fixed: 3626292
This commit is contained in:
Jinwei Chen
2023-09-27 20:26:25 -07:00
committato da Rahul Choudhary
parent 5ebeb8ac41
commit e0d7d004e0

Vedi File

@@ -2329,25 +2329,27 @@ void dp_rx_cksum_offload(struct dp_pdev *pdev,
cksum.l4_result = QDF_NBUF_RX_CKSUM_TCP_UDP_UNNECESSARY;
if (qdf_nbuf_is_ipv4_udp_pkt(nbuf) ||
qdf_nbuf_is_ipv4_tcp_pkt(nbuf)) {
if (qdf_likely(!tcp_udp_csum_er))
if (qdf_likely(!tcp_udp_csum_er)) {
cksum.csum_level = 1;
else
DP_STATS_INCC(pdev,
err.tcp_udp_csum_err, 1,
tcp_udp_csum_er);
} else {
cksum.l4_result =
QDF_NBUF_RX_CKSUM_NONE;
DP_STATS_INC(pdev,
err.tcp_udp_csum_err, 1);
}
}
} else {
DP_STATS_INCC(pdev, err.ip_csum_err, 1, ip_csum_err);
DP_STATS_INC(pdev, err.ip_csum_err, 1);
}
} else if (qdf_nbuf_is_ipv6_udp_pkt(nbuf) ||
qdf_nbuf_is_ipv6_tcp_pkt(nbuf)) {
if (qdf_likely(!tcp_udp_csum_er))
if (qdf_likely(!ip_csum_err && !tcp_udp_csum_er))
cksum.l4_result = QDF_NBUF_RX_CKSUM_TCP_UDP_UNNECESSARY;
else
DP_STATS_INCC(pdev, err.tcp_udp_csum_err, 1,
tcp_udp_csum_er);
} else {
cksum.l4_result = QDF_NBUF_RX_CKSUM_NONE;
else if (ip_csum_err) {
DP_STATS_INC(pdev, err.ip_csum_err, 1);
} else {
DP_STATS_INC(pdev, err.tcp_udp_csum_err, 1);
}
}
qdf_nbuf_set_rx_cksum(nbuf, &cksum);