net/ice: fix GTP-U rule conflict
[dpdk.git] / drivers / net / ice / base / ice_protocol_type.h
index 91f56f3..fdcbb2c 100644 (file)
@@ -31,6 +31,7 @@ enum ice_protocol_type {
        ICE_MAC_OFOS = 0,
        ICE_MAC_IL,
        ICE_ETYPE_OL,
+       ICE_VLAN_OFOS,
        ICE_IPV4_OFOS,
        ICE_IPV4_IL,
        ICE_IPV6_OFOS,
@@ -109,15 +110,15 @@ enum ice_prot_id {
        ICE_PROT_ARP_OF         = 118,
        ICE_PROT_EAPOL_OF       = 120,
        ICE_PROT_META_ID        = 255, /* when offset == metaddata */
-       ICE_PROT_INVALID        = 255  /* when offset == 0xFF */
+       ICE_PROT_INVALID        = 255  /* when offset == ICE_FV_OFFSET_INVAL */
 };
 
 #define ICE_VNI_OFFSET         12 /* offset of VNI from ICE_PROT_UDP_OF */
 
-
 #define ICE_MAC_OFOS_HW                1
 #define ICE_MAC_IL_HW          4
 #define ICE_ETYPE_OL_HW                9
+#define ICE_VLAN_OL_HW         17
 #define ICE_IPV4_OFOS_HW       32
 #define ICE_IPV4_IL_HW         33
 #define ICE_IPV6_OFOS_HW       40
@@ -148,40 +149,53 @@ struct ice_protocol_entry {
        u8 protocol_id;
 };
 
-
 struct ice_ether_hdr {
        u8 dst_addr[ETH_ALEN];
        u8 src_addr[ETH_ALEN];
 };
 
 struct ice_ethtype_hdr {
-       u16 ethtype_id;
+       __be16 ethtype_id;
 };
 
 struct ice_ether_vlan_hdr {
        u8 dst_addr[ETH_ALEN];
        u8 src_addr[ETH_ALEN];
-       u32 vlan_id;
+       __be32 vlan_id;
+};
+
+struct ice_vlan_hdr {
+       __be16 vlan;
+       __be16 type;
 };
 
 struct ice_ipv4_hdr {
        u8 version;
        u8 tos;
-       u16 total_length;
-       u16 id;
-       u16 frag_off;
+       __be16 total_length;
+       __be16 id;
+       __be16 frag_off;
        u8 time_to_live;
        u8 protocol;
-       u16 check;
-       u32 src_addr;
-       u32 dst_addr;
+       __be16 check;
+       __be32 src_addr;
+       __be32 dst_addr;
+};
+
+struct ice_le_ver_tc_flow {
+       union {
+               struct {
+                       u32 flow_label : 20;
+                       u32 tc : 8;
+                       u32 version : 4;
+               } fld;
+               u32 val;
+       } u;
 };
 
 struct ice_ipv6_hdr {
-       u8 version;
-       u8 tc;
-       u16 flow_label;
-       u16 payload_len;
+       __be32 be_ver_tc_flow;
+       __be16 payload_len;
        u8 next_hdr;
        u8 hop_limit;
        u8 src_addr[ICE_IPV6_ADDR_LENGTH];
@@ -189,32 +203,32 @@ struct ice_ipv6_hdr {
 };
 
 struct ice_sctp_hdr {
-       u16 src_port;
-       u16 dst_port;
-       u32 verification_tag;
-       u32 check;
+       __be16 src_port;
+       __be16 dst_port;
+       __be32 verification_tag;
+       __be32 check;
 };
 
 struct ice_l4_hdr {
-       u16 src_port;
-       u16 dst_port;
-       u16 len;
-       u16 check;
+       __be16 src_port;
+       __be16 dst_port;
+       __be16 len;
+       __be16 check;
 };
 
 struct ice_udp_tnl_hdr {
-       u16 field;
-       u16 proto_type;
-       u32 vni;        /* only use lower 24-bits */
+       __be16 field;
+       __be16 proto_type;
+       __be32 vni;     /* only use lower 24-bits */
 };
 
 #pragma pack(1)
 struct ice_udp_gtp_hdr {
        u8 flags;
        u8 msg_type;
-       u16 rsrvd_len;
-       u32 teid;
-       u16 rsrvd_seq_nbr;
+       __be16 rsrvd_len;
+       __be32 teid;
+       __be16 rsrvd_seq_nbr;
        u8 rsrvd_n_pdu_nbr;
        u8 rsrvd_next_ext;
        u8 rsvrd_ext_len;
@@ -225,22 +239,23 @@ struct ice_udp_gtp_hdr {
 
 struct ice_pppoe_hdr {
        u8 rsrvd_ver_type;
-       u8 rsrved_code;
-       u16 session_id;
-       u16 length;
-       u16 ppp_prot_id; /* control and data only */
+       u8 rsrvd_code;
+       __be16 session_id;
+       __be16 length;
+       __be16 ppp_prot_id; /* control and data only */
 };
 #pragma pack()
 
 struct ice_nvgre {
-       u16 flags;
-       u16 protocol;
-       u32 tni_flow;
+       __be16 flags;
+       __be16 protocol;
+       __be32 tni_flow;
 };
 
 union ice_prot_hdr {
        struct ice_ether_hdr eth_hdr;
        struct ice_ethtype_hdr ethertype;
+       struct ice_vlan_hdr vlan_hdr;
        struct ice_ipv4_hdr ipv4_hdr;
        struct ice_ipv6_hdr ipv6_hdr;
        struct ice_l4_hdr l4_hdr;