From: David Marchand Date: Thu, 6 May 2021 14:04:55 +0000 (+0200) Subject: net: add endianness annotations to ethernet headers X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=dc2c712f72b58d6506fcd0e0a4b54a7bae316a46;p=dpdk.git net: add endianness annotations to ethernet headers Spotted by sparse in OVS build: /home/runner/work/ovs/ovs/dpdk-dir/build/include/rte_flow.h:789:27: error: incorrect type in initializer (different base types) /home/runner/work/ovs/ovs/dpdk-dir/build/include/rte_flow.h:789:27: expected unsigned short [usertype] ether_type /home/runner/work/ovs/ovs/dpdk-dir/build/include/rte_flow.h:789:27: got restricted ovs_be16 [usertype] /home/runner/work/ovs/ovs/dpdk-dir/build/include/rte_flow.h:829:25: error: incorrect type in initializer (different base types) /home/runner/work/ovs/ovs/dpdk-dir/build/include/rte_flow.h:829:25: expected unsigned short [usertype] vlan_tci /home/runner/work/ovs/ovs/dpdk-dir/build/include/rte_flow.h:829:25: got restricted ovs_be16 [usertype] /home/runner/work/ovs/ovs/dpdk-dir/build/include/rte_flow.h:830:26: error: incorrect type in initializer (different base types) /home/runner/work/ovs/ovs/dpdk-dir/build/include/rte_flow.h:830:26: expected unsigned short [usertype] eth_proto /home/runner/work/ovs/ovs/dpdk-dir/build/include/rte_flow.h:830:26: got restricted ovs_be16 [usertype] This was not caught before as no code in headers was using those fields. This changed with commit 6f2168b69aee ("ethdev: reuse ethernet header definition in flow item") and commit a56a262e3408 ("ethdev: reuse VLAN header definition in flow item"). Signed-off-by: David Marchand Acked-by: Olivier Matz --- diff --git a/lib/net/rte_ether.h b/lib/net/rte_ether.h index a303c24a8c..7ee5e9a292 100644 --- a/lib/net/rte_ether.h +++ b/lib/net/rte_ether.h @@ -276,7 +276,7 @@ struct rte_ether_hdr { struct rte_ether_addr S_addr; } S_un; /**< Do not use directly; use s_addr instead.*/ }; - uint16_t ether_type; /**< Frame type. */ + rte_be16_t ether_type; /**< Frame type. */ } __rte_aligned(2); #pragma pop_macro("s_addr") @@ -287,8 +287,8 @@ struct rte_ether_hdr { * of the encapsulated frame. */ struct rte_vlan_hdr { - uint16_t vlan_tci; /**< Priority (3) + CFI (1) + Identifier Code (12) */ - uint16_t eth_proto;/**< Ethernet type of encapsulated frame. */ + rte_be16_t vlan_tci; /**< Priority (3) + CFI (1) + Identifier Code (12) */ + rte_be16_t eth_proto; /**< Ethernet type of encapsulated frame. */ } __rte_packed;