Add common macros for extracting parts of VLAN tag.
Fixes: 4e9c73e96e83 ("net/netvsc: add Hyper-V network device")
Cc: [email protected]
Cc: [email protected]
Signed-off-by: Alan Elder <[email protected]>
---
v7:
* Split patches for lib and driver
v6:
* Line length can be 100 - un-split lines
v5:
* Move the VLAN parsing macros to rte_ether.h
v4:
* Make consistent with FreeBSD code
---
.mailmap | 1 +
lib/net/rte_ether.h | 14 ++++++++++++++
2 files changed, 15 insertions(+)
diff --git a/.mailmap b/.mailmap
index de339562f4..08fce0c472 100644
--- a/.mailmap
+++ b/.mailmap
@@ -33,6 +33,7 @@ Alain Leon <[email protected]>
Alan Brady <[email protected]>
Alan Carew <[email protected]>
Alan Dewar <[email protected]> <[email protected]>
+Alan Elder <[email protected]>
Alan Liu <[email protected]>
Alan Winkowski <[email protected]>
Alejandro Lucero <[email protected]>
diff --git a/lib/net/rte_ether.h b/lib/net/rte_ether.h
index ce073ea818..75285bdd12 100644
--- a/lib/net/rte_ether.h
+++ b/lib/net/rte_ether.h
@@ -46,6 +46,20 @@ extern "C" {
#define RTE_ETHER_MIN_MTU 68 /**< Minimum MTU for IPv4 packets, see RFC 791. */
+/* VLAN header fields */
+#define RTE_VLAN_DEI_SHIFT 12
+#define RTE_VLAN_PRI_SHIFT 13
+#define RTE_VLAN_PRI_MASK 0xe000 /* Priority Code Point */
+#define RTE_VLAN_DEI_MASK 0x1000 /* Drop Eligible Indicator */
+#define RTE_VLAN_ID_MASK 0x0fff /* VLAN Identifier */
+
+#define RTE_VLAN_TCI_ID(vlan_tci) ((vlan_tci) & RTE_VLAN_ID_MASK)
+#define RTE_VLAN_TCI_PRI(vlan_tci) (((vlan_tci) & RTE_VLAN_PRI_MASK) >>
RTE_VLAN_PRI_SHIFT)
+#define RTE_VLAN_TCI_DEI(vlan_tci) (((vlan_tci) & RTE_VLAN_DEI_MASK) >>
RTE_VLAN_DEI_SHIFT)
+#define RTE_VLAN_TCI_MAKE(id, pri, dei) ((id) |
\
+ ((pri) << RTE_VLAN_PRI_SHIFT) |
\
+ ((dei) << RTE_VLAN_DEI_SHIFT))
+
/**
* Ethernet address:
* A universally administered address is uniquely assigned to a device by its
--
2.25.1