X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fice%2Fbase%2Fice_protocol_type.h;h=548c9730afbee989763eb39163a54b488dfd1da4;hb=2048f3a965d85f264ffe62a5dc7b272a85464331;hp=38bed7a792f6b0d3fb42c6dfe0abd6ec6f57b4bb;hpb=839c0a4b77e66b5f09e1c8bee069ccf427fe26d6;p=dpdk.git diff --git a/drivers/net/ice/base/ice_protocol_type.h b/drivers/net/ice/base/ice_protocol_type.h index 38bed7a792..548c9730af 100644 --- a/drivers/net/ice/base/ice_protocol_type.h +++ b/drivers/net/ice/base/ice_protocol_type.h @@ -30,10 +30,12 @@ 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_IL, ICE_IPV6_OFOS, + ICE_IPV6_IL, ICE_TCP_IL, ICE_UDP_OF, ICE_UDP_ILOS, @@ -42,11 +44,14 @@ enum ice_protocol_type { ICE_GENEVE, ICE_VXLAN_GPE, ICE_NVGRE, + ICE_GTP, + ICE_PPPOE, ICE_PROTOCOL_LAST }; enum ice_sw_tunnel_type { - ICE_NON_TUN, + ICE_NON_TUN = 0, + ICE_SW_TUN_AND_NON_TUN, ICE_SW_TUN_VXLAN_GPE, ICE_SW_TUN_GENEVE, ICE_SW_TUN_VXLAN, @@ -54,6 +59,8 @@ enum ice_sw_tunnel_type { ICE_SW_TUN_UDP, /* This means all "UDP" tunnel types: VXLAN-GPE, VXLAN * and GENEVE */ + ICE_SW_TUN_GTP, + ICE_SW_TUN_PPPOE, ICE_ALL_TUNNELS /* All tunnel types including NVGRE */ }; @@ -96,26 +103,30 @@ enum ice_prot_id { ICE_PROT_ICMPV6_IL = 100, ICE_PROT_VRRP_F = 101, ICE_PROT_OSPF = 102, + ICE_PROT_PPPOE = 103, ICE_PROT_ATAOE_OF = 114, ICE_PROT_CTRL_OF = 116, ICE_PROT_LLDP_OF = 117, 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 #define ICE_IPV6_IL_HW 41 #define ICE_TCP_IL_HW 49 -#define ICE_UDP_OF_HW 52 #define ICE_UDP_ILOS_HW 53 #define ICE_SCTP_IL_HW 96 +#define ICE_PPPOE_HW 103 /* ICE_UDP_OF is used to identify all 3 tunnel types * VXLAN, GENEVE and VXLAN_GPE. To differentiate further @@ -125,6 +136,8 @@ enum ice_prot_id { #define ICE_GRE_OF_HW 64 /* NVGRE */ #define ICE_META_DATA_ID_HW 255 /* this is used for tunnel type */ +#define ICE_MDID_SIZE 2 +#define ICE_TUN_FLAG_MDID 21 #define ICE_TUN_FLAG_MASK 0xFF #define ICE_TUN_FLAG_FV_IND 2 @@ -136,10 +149,12 @@ 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; }; @@ -149,6 +164,11 @@ struct ice_ether_vlan_hdr { u32 vlan_id; }; +struct ice_vlan_hdr { + u16 vlan; + u16 type; +}; + struct ice_ipv4_hdr { u8 version; u8 tos; @@ -163,9 +183,9 @@ struct ice_ipv4_hdr { }; struct ice_ipv6_hdr { - u8 version; - u8 tc; - u16 flow_label; + u32 version:4; + u32 tc:8; + u32 flow_label:20; u16 payload_len; u8 next_hdr; u8 hop_limit; @@ -193,19 +213,48 @@ struct ice_udp_tnl_hdr { u32 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; + u8 rsrvd_n_pdu_nbr; + u8 rsrvd_next_ext; + u8 rsvrd_ext_len; + u8 pdu_type; + u8 qfi; + u8 rsvrd; +}; + +struct ice_pppoe_hdr { + u8 rsrvd_ver_type; + u8 rsrved_code; + u16 session_id; + u16 length; + u16 ppp_prot_id; /* control and data only */ +}; +#pragma pack() + struct ice_nvgre { - u16 tni; - u16 flow_id; + u16 flags; + u16 protocol; + u32 tni_flow; }; union ice_prot_hdr { - struct ice_ether_hdr eth_hdr; - struct ice_ipv4_hdr ipv4_hdr; - struct ice_ipv6_hdr ice_ipv6_ofos_hdr; - struct ice_l4_hdr l4_hdr; - struct ice_sctp_hdr sctp_hdr; - struct ice_udp_tnl_hdr tnl_hdr; - struct ice_nvgre nvgre_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; + struct ice_sctp_hdr sctp_hdr; + struct ice_udp_tnl_hdr tnl_hdr; + struct ice_nvgre nvgre_hdr; + struct ice_udp_gtp_hdr gtp_hdr; + struct ice_pppoe_hdr pppoe_hdr; }; /* This is mapping table entry that maps every word within a given protocol