net: fix how L4 checksum choice is tested
The API to prepare checksum offloads mistreats L4 checksum type enum values as self-contained flags. Turning these flag checks into enum checks causes warnings by GCC about possibly uninitialised IPv4 header pointer. The issue was found to show up in the case of GCC versions 4.8.5 and 5.4.0, however, it might be the case for a wider variety of other versions. Initialise the pointer upon declaration. and explain the reason behind this in the comment. Fixes: 4fb7e803eb1a ("ethdev: add Tx preparation") Cc: stable@dpdk.org Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru> Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com> Acked-by: Stephen Hemminger <stephen@networkplumber.org> Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
This commit is contained in:
parent
4dad9c7895
commit
39a9429919
@ -113,7 +113,8 @@ uint32_t rte_net_get_ptype(const struct rte_mbuf *m,
|
||||
static inline int
|
||||
rte_net_intel_cksum_flags_prepare(struct rte_mbuf *m, uint64_t ol_flags)
|
||||
{
|
||||
struct rte_ipv4_hdr *ipv4_hdr;
|
||||
/* Initialise ipv4_hdr to avoid false positive compiler warnings. */
|
||||
struct rte_ipv4_hdr *ipv4_hdr = NULL;
|
||||
struct rte_ipv6_hdr *ipv6_hdr;
|
||||
struct rte_tcp_hdr *tcp_hdr;
|
||||
struct rte_udp_hdr *udp_hdr;
|
||||
@ -151,7 +152,7 @@ rte_net_intel_cksum_flags_prepare(struct rte_mbuf *m, uint64_t ol_flags)
|
||||
ipv4_hdr->hdr_checksum = 0;
|
||||
}
|
||||
|
||||
if ((ol_flags & PKT_TX_UDP_CKSUM) == PKT_TX_UDP_CKSUM) {
|
||||
if ((ol_flags & PKT_TX_L4_MASK) == PKT_TX_UDP_CKSUM) {
|
||||
if (ol_flags & PKT_TX_IPV4) {
|
||||
udp_hdr = (struct rte_udp_hdr *)((char *)ipv4_hdr +
|
||||
m->l3_len);
|
||||
@ -167,7 +168,7 @@ rte_net_intel_cksum_flags_prepare(struct rte_mbuf *m, uint64_t ol_flags)
|
||||
udp_hdr->dgram_cksum = rte_ipv6_phdr_cksum(ipv6_hdr,
|
||||
ol_flags);
|
||||
}
|
||||
} else if ((ol_flags & PKT_TX_TCP_CKSUM) ||
|
||||
} else if ((ol_flags & PKT_TX_L4_MASK) == PKT_TX_TCP_CKSUM ||
|
||||
(ol_flags & PKT_TX_TCP_SEG)) {
|
||||
if (ol_flags & PKT_TX_IPV4) {
|
||||
/* non-TSO tcp or TSO */
|
||||
|
Loading…
x
Reference in New Issue
Block a user