net/vlan: introduce skb_vlan_tag_get_cfi() helper
authorMichał Mirosław <mirq-linux@rere.qmqm.pl>
Tue, 20 Nov 2018 12:20:31 +0000 (13:20 +0100)
committerDavid S. Miller <davem@davemloft.net>
Wed, 21 Nov 2018 23:41:30 +0000 (15:41 -0800)
Abstract CFI/DEI bit access consistently with other VLAN tag fields.

Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/if_vlan.h

index 7a541eadf78eb7045054a99120c0c6e72b00ed90..4cca4da7a6de6a7312e691267b00876a8f8ec290 100644 (file)
@@ -65,7 +65,7 @@ static inline struct vlan_ethhdr *vlan_eth_hdr(const struct sk_buff *skb)
 
 #define VLAN_PRIO_MASK         0xe000 /* Priority Code Point */
 #define VLAN_PRIO_SHIFT                13
-#define VLAN_CFI_MASK          0x1000 /* Canonical Format Indicator */
+#define VLAN_CFI_MASK          0x1000 /* Canonical Format Indicator / Drop Eligible Indicator */
 #define VLAN_VID_MASK          0x0fff /* VLAN Identifier */
 #define VLAN_N_VID             4096
 
@@ -80,6 +80,7 @@ static inline bool is_vlan_dev(const struct net_device *dev)
 #define skb_vlan_tag_present(__skb)    ((__skb)->vlan_present)
 #define skb_vlan_tag_get(__skb)                ((__skb)->vlan_tci)
 #define skb_vlan_tag_get_id(__skb)     ((__skb)->vlan_tci & VLAN_VID_MASK)
+#define skb_vlan_tag_get_cfi(__skb)    (!!((__skb)->vlan_tci & VLAN_CFI_MASK))
 #define skb_vlan_tag_get_prio(__skb)   (((__skb)->vlan_tci & VLAN_PRIO_MASK) >> VLAN_PRIO_SHIFT)
 
 static inline int vlan_get_rx_ctag_filter_info(struct net_device *dev)