1131a75b6SHemant Agrawal /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) 2e6b82573SHemant Agrawal * 3e6b82573SHemant Agrawal * Copyright 2013-2015 Freescale Semiconductor Inc. 496f7bfe8SSachin Saxena * Copyright 2018-2019 NXP 5e6b82573SHemant Agrawal * 6e6b82573SHemant Agrawal */ 796f7bfe8SSachin Saxena 8e6b82573SHemant Agrawal #ifndef __FSL_NET_H 9e6b82573SHemant Agrawal #define __FSL_NET_H 10e6b82573SHemant Agrawal 11e6b82573SHemant Agrawal #define LAST_HDR_INDEX 0xFFFFFFFF 12e6b82573SHemant Agrawal 13e6b82573SHemant Agrawal /*****************************************************************************/ 14e6b82573SHemant Agrawal /* Protocol fields */ 15e6b82573SHemant Agrawal /*****************************************************************************/ 16e6b82573SHemant Agrawal 17e6b82573SHemant Agrawal /************************* Ethernet fields *********************************/ 18e6b82573SHemant Agrawal #define NH_FLD_ETH_DA (1) 19e6b82573SHemant Agrawal #define NH_FLD_ETH_SA (NH_FLD_ETH_DA << 1) 20e6b82573SHemant Agrawal #define NH_FLD_ETH_LENGTH (NH_FLD_ETH_DA << 2) 21e6b82573SHemant Agrawal #define NH_FLD_ETH_TYPE (NH_FLD_ETH_DA << 3) 22e6b82573SHemant Agrawal #define NH_FLD_ETH_FINAL_CKSUM (NH_FLD_ETH_DA << 4) 23e6b82573SHemant Agrawal #define NH_FLD_ETH_PADDING (NH_FLD_ETH_DA << 5) 24e6b82573SHemant Agrawal #define NH_FLD_ETH_ALL_FIELDS ((NH_FLD_ETH_DA << 6) - 1) 25e6b82573SHemant Agrawal 26e6b82573SHemant Agrawal #define NH_FLD_ETH_ADDR_SIZE 6 27e6b82573SHemant Agrawal 28e6b82573SHemant Agrawal /*************************** VLAN fields ***********************************/ 29e6b82573SHemant Agrawal #define NH_FLD_VLAN_VPRI (1) 30e6b82573SHemant Agrawal #define NH_FLD_VLAN_CFI (NH_FLD_VLAN_VPRI << 1) 31e6b82573SHemant Agrawal #define NH_FLD_VLAN_VID (NH_FLD_VLAN_VPRI << 2) 32e6b82573SHemant Agrawal #define NH_FLD_VLAN_LENGTH (NH_FLD_VLAN_VPRI << 3) 33e6b82573SHemant Agrawal #define NH_FLD_VLAN_TYPE (NH_FLD_VLAN_VPRI << 4) 34e6b82573SHemant Agrawal #define NH_FLD_VLAN_ALL_FIELDS ((NH_FLD_VLAN_VPRI << 5) - 1) 35e6b82573SHemant Agrawal 36e6b82573SHemant Agrawal #define NH_FLD_VLAN_TCI (NH_FLD_VLAN_VPRI | \ 37e6b82573SHemant Agrawal NH_FLD_VLAN_CFI | \ 38e6b82573SHemant Agrawal NH_FLD_VLAN_VID) 39e6b82573SHemant Agrawal 40e6b82573SHemant Agrawal /************************ IP (generic) fields ******************************/ 41e6b82573SHemant Agrawal #define NH_FLD_IP_VER (1) 42e6b82573SHemant Agrawal #define NH_FLD_IP_DSCP (NH_FLD_IP_VER << 2) 43e6b82573SHemant Agrawal #define NH_FLD_IP_ECN (NH_FLD_IP_VER << 3) 44e6b82573SHemant Agrawal #define NH_FLD_IP_PROTO (NH_FLD_IP_VER << 4) 45e6b82573SHemant Agrawal #define NH_FLD_IP_SRC (NH_FLD_IP_VER << 5) 46e6b82573SHemant Agrawal #define NH_FLD_IP_DST (NH_FLD_IP_VER << 6) 47e6b82573SHemant Agrawal #define NH_FLD_IP_TOS_TC (NH_FLD_IP_VER << 7) 48e6b82573SHemant Agrawal #define NH_FLD_IP_ID (NH_FLD_IP_VER << 8) 49e6b82573SHemant Agrawal #define NH_FLD_IP_ALL_FIELDS ((NH_FLD_IP_VER << 9) - 1) 50e6b82573SHemant Agrawal 51e6b82573SHemant Agrawal #define NH_FLD_IP_PROTO_SIZE 1 52e6b82573SHemant Agrawal 53e6b82573SHemant Agrawal /***************************** IPV4 fields *********************************/ 54e6b82573SHemant Agrawal #define NH_FLD_IPV4_VER (1) 55e6b82573SHemant Agrawal #define NH_FLD_IPV4_HDR_LEN (NH_FLD_IPV4_VER << 1) 56e6b82573SHemant Agrawal #define NH_FLD_IPV4_TOS (NH_FLD_IPV4_VER << 2) 57e6b82573SHemant Agrawal #define NH_FLD_IPV4_TOTAL_LEN (NH_FLD_IPV4_VER << 3) 58e6b82573SHemant Agrawal #define NH_FLD_IPV4_ID (NH_FLD_IPV4_VER << 4) 59e6b82573SHemant Agrawal #define NH_FLD_IPV4_FLAG_D (NH_FLD_IPV4_VER << 5) 60e6b82573SHemant Agrawal #define NH_FLD_IPV4_FLAG_M (NH_FLD_IPV4_VER << 6) 61e6b82573SHemant Agrawal #define NH_FLD_IPV4_OFFSET (NH_FLD_IPV4_VER << 7) 62e6b82573SHemant Agrawal #define NH_FLD_IPV4_TTL (NH_FLD_IPV4_VER << 8) 63e6b82573SHemant Agrawal #define NH_FLD_IPV4_PROTO (NH_FLD_IPV4_VER << 9) 64e6b82573SHemant Agrawal #define NH_FLD_IPV4_CKSUM (NH_FLD_IPV4_VER << 10) 65e6b82573SHemant Agrawal #define NH_FLD_IPV4_SRC_IP (NH_FLD_IPV4_VER << 11) 66e6b82573SHemant Agrawal #define NH_FLD_IPV4_DST_IP (NH_FLD_IPV4_VER << 12) 67e6b82573SHemant Agrawal #define NH_FLD_IPV4_OPTS (NH_FLD_IPV4_VER << 13) 68e6b82573SHemant Agrawal #define NH_FLD_IPV4_OPTS_COUNT (NH_FLD_IPV4_VER << 14) 69e6b82573SHemant Agrawal #define NH_FLD_IPV4_ALL_FIELDS ((NH_FLD_IPV4_VER << 15) - 1) 70e6b82573SHemant Agrawal 71e6b82573SHemant Agrawal #define NH_FLD_IPV4_ADDR_SIZE 4 72e6b82573SHemant Agrawal #define NH_FLD_IPV4_PROTO_SIZE 1 73e6b82573SHemant Agrawal 74e6b82573SHemant Agrawal /***************************** IPV6 fields *********************************/ 75e6b82573SHemant Agrawal #define NH_FLD_IPV6_VER (1) 76e6b82573SHemant Agrawal #define NH_FLD_IPV6_TC (NH_FLD_IPV6_VER << 1) 77e6b82573SHemant Agrawal #define NH_FLD_IPV6_SRC_IP (NH_FLD_IPV6_VER << 2) 78e6b82573SHemant Agrawal #define NH_FLD_IPV6_DST_IP (NH_FLD_IPV6_VER << 3) 79e6b82573SHemant Agrawal #define NH_FLD_IPV6_NEXT_HDR (NH_FLD_IPV6_VER << 4) 80e6b82573SHemant Agrawal #define NH_FLD_IPV6_FL (NH_FLD_IPV6_VER << 5) 81e6b82573SHemant Agrawal #define NH_FLD_IPV6_HOP_LIMIT (NH_FLD_IPV6_VER << 6) 82e6b82573SHemant Agrawal #define NH_FLD_IPV6_ID (NH_FLD_IPV6_VER << 7) 83e6b82573SHemant Agrawal #define NH_FLD_IPV6_ALL_FIELDS ((NH_FLD_IPV6_VER << 8) - 1) 84e6b82573SHemant Agrawal 85e6b82573SHemant Agrawal #define NH_FLD_IPV6_ADDR_SIZE 16 86e6b82573SHemant Agrawal #define NH_FLD_IPV6_NEXT_HDR_SIZE 1 87e6b82573SHemant Agrawal 88e6b82573SHemant Agrawal /***************************** ICMP fields *********************************/ 89e6b82573SHemant Agrawal #define NH_FLD_ICMP_TYPE (1) 90e6b82573SHemant Agrawal #define NH_FLD_ICMP_CODE (NH_FLD_ICMP_TYPE << 1) 91e6b82573SHemant Agrawal #define NH_FLD_ICMP_CKSUM (NH_FLD_ICMP_TYPE << 2) 92e6b82573SHemant Agrawal #define NH_FLD_ICMP_ID (NH_FLD_ICMP_TYPE << 3) 93e6b82573SHemant Agrawal #define NH_FLD_ICMP_SQ_NUM (NH_FLD_ICMP_TYPE << 4) 94e6b82573SHemant Agrawal #define NH_FLD_ICMP_ALL_FIELDS ((NH_FLD_ICMP_TYPE << 5) - 1) 95e6b82573SHemant Agrawal 96e6b82573SHemant Agrawal #define NH_FLD_ICMP_CODE_SIZE 1 97e6b82573SHemant Agrawal #define NH_FLD_ICMP_TYPE_SIZE 1 98e6b82573SHemant Agrawal 99e6b82573SHemant Agrawal /***************************** IGMP fields *********************************/ 100e6b82573SHemant Agrawal #define NH_FLD_IGMP_VERSION (1) 101e6b82573SHemant Agrawal #define NH_FLD_IGMP_TYPE (NH_FLD_IGMP_VERSION << 1) 102e6b82573SHemant Agrawal #define NH_FLD_IGMP_CKSUM (NH_FLD_IGMP_VERSION << 2) 103e6b82573SHemant Agrawal #define NH_FLD_IGMP_DATA (NH_FLD_IGMP_VERSION << 3) 104e6b82573SHemant Agrawal #define NH_FLD_IGMP_ALL_FIELDS ((NH_FLD_IGMP_VERSION << 4) - 1) 105e6b82573SHemant Agrawal 106e6b82573SHemant Agrawal /***************************** TCP fields **********************************/ 107e6b82573SHemant Agrawal #define NH_FLD_TCP_PORT_SRC (1) 108e6b82573SHemant Agrawal #define NH_FLD_TCP_PORT_DST (NH_FLD_TCP_PORT_SRC << 1) 109e6b82573SHemant Agrawal #define NH_FLD_TCP_SEQ (NH_FLD_TCP_PORT_SRC << 2) 110e6b82573SHemant Agrawal #define NH_FLD_TCP_ACK (NH_FLD_TCP_PORT_SRC << 3) 111e6b82573SHemant Agrawal #define NH_FLD_TCP_OFFSET (NH_FLD_TCP_PORT_SRC << 4) 112e6b82573SHemant Agrawal #define NH_FLD_TCP_FLAGS (NH_FLD_TCP_PORT_SRC << 5) 113e6b82573SHemant Agrawal #define NH_FLD_TCP_WINDOW (NH_FLD_TCP_PORT_SRC << 6) 114e6b82573SHemant Agrawal #define NH_FLD_TCP_CKSUM (NH_FLD_TCP_PORT_SRC << 7) 115e6b82573SHemant Agrawal #define NH_FLD_TCP_URGPTR (NH_FLD_TCP_PORT_SRC << 8) 116e6b82573SHemant Agrawal #define NH_FLD_TCP_OPTS (NH_FLD_TCP_PORT_SRC << 9) 117e6b82573SHemant Agrawal #define NH_FLD_TCP_OPTS_COUNT (NH_FLD_TCP_PORT_SRC << 10) 118e6b82573SHemant Agrawal #define NH_FLD_TCP_ALL_FIELDS ((NH_FLD_TCP_PORT_SRC << 11) - 1) 119e6b82573SHemant Agrawal 120e6b82573SHemant Agrawal #define NH_FLD_TCP_PORT_SIZE 2 121e6b82573SHemant Agrawal 122e6b82573SHemant Agrawal /***************************** UDP fields **********************************/ 123e6b82573SHemant Agrawal #define NH_FLD_UDP_PORT_SRC (1) 124e6b82573SHemant Agrawal #define NH_FLD_UDP_PORT_DST (NH_FLD_UDP_PORT_SRC << 1) 125e6b82573SHemant Agrawal #define NH_FLD_UDP_LEN (NH_FLD_UDP_PORT_SRC << 2) 126e6b82573SHemant Agrawal #define NH_FLD_UDP_CKSUM (NH_FLD_UDP_PORT_SRC << 3) 127e6b82573SHemant Agrawal #define NH_FLD_UDP_ALL_FIELDS ((NH_FLD_UDP_PORT_SRC << 4) - 1) 128e6b82573SHemant Agrawal 129e6b82573SHemant Agrawal #define NH_FLD_UDP_PORT_SIZE 2 130e6b82573SHemant Agrawal 131e6b82573SHemant Agrawal /*************************** UDP-lite fields *******************************/ 132e6b82573SHemant Agrawal #define NH_FLD_UDP_LITE_PORT_SRC (1) 133e6b82573SHemant Agrawal #define NH_FLD_UDP_LITE_PORT_DST (NH_FLD_UDP_LITE_PORT_SRC << 1) 134e6b82573SHemant Agrawal #define NH_FLD_UDP_LITE_ALL_FIELDS \ 135e6b82573SHemant Agrawal ((NH_FLD_UDP_LITE_PORT_SRC << 2) - 1) 136e6b82573SHemant Agrawal 137e6b82573SHemant Agrawal #define NH_FLD_UDP_LITE_PORT_SIZE 2 138e6b82573SHemant Agrawal 139e6b82573SHemant Agrawal /*************************** UDP-encap-ESP fields **************************/ 140e6b82573SHemant Agrawal #define NH_FLD_UDP_ENC_ESP_PORT_SRC (1) 141e6b82573SHemant Agrawal #define NH_FLD_UDP_ENC_ESP_PORT_DST (NH_FLD_UDP_ENC_ESP_PORT_SRC << 1) 142e6b82573SHemant Agrawal #define NH_FLD_UDP_ENC_ESP_LEN (NH_FLD_UDP_ENC_ESP_PORT_SRC << 2) 143e6b82573SHemant Agrawal #define NH_FLD_UDP_ENC_ESP_CKSUM (NH_FLD_UDP_ENC_ESP_PORT_SRC << 3) 144e6b82573SHemant Agrawal #define NH_FLD_UDP_ENC_ESP_SPI (NH_FLD_UDP_ENC_ESP_PORT_SRC << 4) 145e6b82573SHemant Agrawal #define NH_FLD_UDP_ENC_ESP_SEQUENCE_NUM (NH_FLD_UDP_ENC_ESP_PORT_SRC << 5) 146e6b82573SHemant Agrawal #define NH_FLD_UDP_ENC_ESP_ALL_FIELDS \ 147e6b82573SHemant Agrawal ((NH_FLD_UDP_ENC_ESP_PORT_SRC << 6) - 1) 148e6b82573SHemant Agrawal 149e6b82573SHemant Agrawal #define NH_FLD_UDP_ENC_ESP_PORT_SIZE 2 150e6b82573SHemant Agrawal #define NH_FLD_UDP_ENC_ESP_SPI_SIZE 4 151e6b82573SHemant Agrawal 152e6b82573SHemant Agrawal /***************************** SCTP fields *********************************/ 153e6b82573SHemant Agrawal #define NH_FLD_SCTP_PORT_SRC (1) 154e6b82573SHemant Agrawal #define NH_FLD_SCTP_PORT_DST (NH_FLD_SCTP_PORT_SRC << 1) 155e6b82573SHemant Agrawal #define NH_FLD_SCTP_VER_TAG (NH_FLD_SCTP_PORT_SRC << 2) 156e6b82573SHemant Agrawal #define NH_FLD_SCTP_CKSUM (NH_FLD_SCTP_PORT_SRC << 3) 157e6b82573SHemant Agrawal #define NH_FLD_SCTP_ALL_FIELDS ((NH_FLD_SCTP_PORT_SRC << 4) - 1) 158e6b82573SHemant Agrawal 159e6b82573SHemant Agrawal #define NH_FLD_SCTP_PORT_SIZE 2 160e6b82573SHemant Agrawal 161e6b82573SHemant Agrawal /***************************** DCCP fields *********************************/ 162e6b82573SHemant Agrawal #define NH_FLD_DCCP_PORT_SRC (1) 163e6b82573SHemant Agrawal #define NH_FLD_DCCP_PORT_DST (NH_FLD_DCCP_PORT_SRC << 1) 164e6b82573SHemant Agrawal #define NH_FLD_DCCP_ALL_FIELDS ((NH_FLD_DCCP_PORT_SRC << 2) - 1) 165e6b82573SHemant Agrawal 166e6b82573SHemant Agrawal #define NH_FLD_DCCP_PORT_SIZE 2 167e6b82573SHemant Agrawal 168e6b82573SHemant Agrawal /***************************** IPHC fields *********************************/ 169e6b82573SHemant Agrawal #define NH_FLD_IPHC_CID (1) 170e6b82573SHemant Agrawal #define NH_FLD_IPHC_CID_TYPE (NH_FLD_IPHC_CID << 1) 171e6b82573SHemant Agrawal #define NH_FLD_IPHC_HCINDEX (NH_FLD_IPHC_CID << 2) 172e6b82573SHemant Agrawal #define NH_FLD_IPHC_GEN (NH_FLD_IPHC_CID << 3) 173e6b82573SHemant Agrawal #define NH_FLD_IPHC_D_BIT (NH_FLD_IPHC_CID << 4) 174e6b82573SHemant Agrawal #define NH_FLD_IPHC_ALL_FIELDS ((NH_FLD_IPHC_CID << 5) - 1) 175e6b82573SHemant Agrawal 176e6b82573SHemant Agrawal /***************************** SCTP fields *********************************/ 177e6b82573SHemant Agrawal #define NH_FLD_SCTP_CHUNK_DATA_TYPE (1) 178e6b82573SHemant Agrawal #define NH_FLD_SCTP_CHUNK_DATA_FLAGS (NH_FLD_SCTP_CHUNK_DATA_TYPE << 1) 179e6b82573SHemant Agrawal #define NH_FLD_SCTP_CHUNK_DATA_LENGTH (NH_FLD_SCTP_CHUNK_DATA_TYPE << 2) 180e6b82573SHemant Agrawal #define NH_FLD_SCTP_CHUNK_DATA_TSN (NH_FLD_SCTP_CHUNK_DATA_TYPE << 3) 181e6b82573SHemant Agrawal #define NH_FLD_SCTP_CHUNK_DATA_STREAM_ID (NH_FLD_SCTP_CHUNK_DATA_TYPE << 4) 182e6b82573SHemant Agrawal #define NH_FLD_SCTP_CHUNK_DATA_STREAM_SQN (NH_FLD_SCTP_CHUNK_DATA_TYPE << 5) 183e6b82573SHemant Agrawal #define NH_FLD_SCTP_CHUNK_DATA_PAYLOAD_PID (NH_FLD_SCTP_CHUNK_DATA_TYPE << 6) 184e6b82573SHemant Agrawal #define NH_FLD_SCTP_CHUNK_DATA_UNORDERED (NH_FLD_SCTP_CHUNK_DATA_TYPE << 7) 18525fea082SHemant Agrawal #define NH_FLD_SCTP_CHUNK_DATA_BEGGINING (NH_FLD_SCTP_CHUNK_DATA_TYPE << 8) 186e6b82573SHemant Agrawal #define NH_FLD_SCTP_CHUNK_DATA_END (NH_FLD_SCTP_CHUNK_DATA_TYPE << 9) 187e6b82573SHemant Agrawal #define NH_FLD_SCTP_CHUNK_DATA_ALL_FIELDS \ 188e6b82573SHemant Agrawal ((NH_FLD_SCTP_CHUNK_DATA_TYPE << 10) - 1) 189e6b82573SHemant Agrawal 190e6b82573SHemant Agrawal /*************************** L2TPV2 fields *********************************/ 191e6b82573SHemant Agrawal #define NH_FLD_L2TPV2_TYPE_BIT (1) 192e6b82573SHemant Agrawal #define NH_FLD_L2TPV2_LENGTH_BIT (NH_FLD_L2TPV2_TYPE_BIT << 1) 193e6b82573SHemant Agrawal #define NH_FLD_L2TPV2_SEQUENCE_BIT (NH_FLD_L2TPV2_TYPE_BIT << 2) 194e6b82573SHemant Agrawal #define NH_FLD_L2TPV2_OFFSET_BIT (NH_FLD_L2TPV2_TYPE_BIT << 3) 195e6b82573SHemant Agrawal #define NH_FLD_L2TPV2_PRIORITY_BIT (NH_FLD_L2TPV2_TYPE_BIT << 4) 196e6b82573SHemant Agrawal #define NH_FLD_L2TPV2_VERSION (NH_FLD_L2TPV2_TYPE_BIT << 5) 197e6b82573SHemant Agrawal #define NH_FLD_L2TPV2_LEN (NH_FLD_L2TPV2_TYPE_BIT << 6) 198e6b82573SHemant Agrawal #define NH_FLD_L2TPV2_TUNNEL_ID (NH_FLD_L2TPV2_TYPE_BIT << 7) 199e6b82573SHemant Agrawal #define NH_FLD_L2TPV2_SESSION_ID (NH_FLD_L2TPV2_TYPE_BIT << 8) 200e6b82573SHemant Agrawal #define NH_FLD_L2TPV2_NS (NH_FLD_L2TPV2_TYPE_BIT << 9) 201e6b82573SHemant Agrawal #define NH_FLD_L2TPV2_NR (NH_FLD_L2TPV2_TYPE_BIT << 10) 202e6b82573SHemant Agrawal #define NH_FLD_L2TPV2_OFFSET_SIZE (NH_FLD_L2TPV2_TYPE_BIT << 11) 203e6b82573SHemant Agrawal #define NH_FLD_L2TPV2_FIRST_BYTE (NH_FLD_L2TPV2_TYPE_BIT << 12) 204e6b82573SHemant Agrawal #define NH_FLD_L2TPV2_ALL_FIELDS \ 205e6b82573SHemant Agrawal ((NH_FLD_L2TPV2_TYPE_BIT << 13) - 1) 206e6b82573SHemant Agrawal 207e6b82573SHemant Agrawal /*************************** L2TPV3 fields *********************************/ 208e6b82573SHemant Agrawal #define NH_FLD_L2TPV3_CTRL_TYPE_BIT (1) 209e6b82573SHemant Agrawal #define NH_FLD_L2TPV3_CTRL_LENGTH_BIT (NH_FLD_L2TPV3_CTRL_TYPE_BIT << 1) 210e6b82573SHemant Agrawal #define NH_FLD_L2TPV3_CTRL_SEQUENCE_BIT (NH_FLD_L2TPV3_CTRL_TYPE_BIT << 2) 211e6b82573SHemant Agrawal #define NH_FLD_L2TPV3_CTRL_VERSION (NH_FLD_L2TPV3_CTRL_TYPE_BIT << 3) 212e6b82573SHemant Agrawal #define NH_FLD_L2TPV3_CTRL_LENGTH (NH_FLD_L2TPV3_CTRL_TYPE_BIT << 4) 213e6b82573SHemant Agrawal #define NH_FLD_L2TPV3_CTRL_CONTROL (NH_FLD_L2TPV3_CTRL_TYPE_BIT << 5) 214e6b82573SHemant Agrawal #define NH_FLD_L2TPV3_CTRL_SENT (NH_FLD_L2TPV3_CTRL_TYPE_BIT << 6) 215e6b82573SHemant Agrawal #define NH_FLD_L2TPV3_CTRL_RECV (NH_FLD_L2TPV3_CTRL_TYPE_BIT << 7) 216e6b82573SHemant Agrawal #define NH_FLD_L2TPV3_CTRL_FIRST_BYTE (NH_FLD_L2TPV3_CTRL_TYPE_BIT << 8) 217e6b82573SHemant Agrawal #define NH_FLD_L2TPV3_CTRL_ALL_FIELDS \ 218e6b82573SHemant Agrawal ((NH_FLD_L2TPV3_CTRL_TYPE_BIT << 9) - 1) 219e6b82573SHemant Agrawal 220e6b82573SHemant Agrawal #define NH_FLD_L2TPV3_SESS_TYPE_BIT (1) 221e6b82573SHemant Agrawal #define NH_FLD_L2TPV3_SESS_VERSION (NH_FLD_L2TPV3_SESS_TYPE_BIT << 1) 222e6b82573SHemant Agrawal #define NH_FLD_L2TPV3_SESS_ID (NH_FLD_L2TPV3_SESS_TYPE_BIT << 2) 223e6b82573SHemant Agrawal #define NH_FLD_L2TPV3_SESS_COOKIE (NH_FLD_L2TPV3_SESS_TYPE_BIT << 3) 224e6b82573SHemant Agrawal #define NH_FLD_L2TPV3_SESS_ALL_FIELDS \ 225e6b82573SHemant Agrawal ((NH_FLD_L2TPV3_SESS_TYPE_BIT << 4) - 1) 226e6b82573SHemant Agrawal 227e6b82573SHemant Agrawal /**************************** PPP fields ***********************************/ 228e6b82573SHemant Agrawal #define NH_FLD_PPP_PID (1) 229e6b82573SHemant Agrawal #define NH_FLD_PPP_COMPRESSED (NH_FLD_PPP_PID << 1) 230e6b82573SHemant Agrawal #define NH_FLD_PPP_ALL_FIELDS ((NH_FLD_PPP_PID << 2) - 1) 231e6b82573SHemant Agrawal 232e6b82573SHemant Agrawal /************************** PPPoE fields ***********************************/ 233e6b82573SHemant Agrawal #define NH_FLD_PPPOE_VER (1) 234e6b82573SHemant Agrawal #define NH_FLD_PPPOE_TYPE (NH_FLD_PPPOE_VER << 1) 235e6b82573SHemant Agrawal #define NH_FLD_PPPOE_CODE (NH_FLD_PPPOE_VER << 2) 236e6b82573SHemant Agrawal #define NH_FLD_PPPOE_SID (NH_FLD_PPPOE_VER << 3) 237e6b82573SHemant Agrawal #define NH_FLD_PPPOE_LEN (NH_FLD_PPPOE_VER << 4) 238e6b82573SHemant Agrawal #define NH_FLD_PPPOE_SESSION (NH_FLD_PPPOE_VER << 5) 239e6b82573SHemant Agrawal #define NH_FLD_PPPOE_PID (NH_FLD_PPPOE_VER << 6) 240e6b82573SHemant Agrawal #define NH_FLD_PPPOE_ALL_FIELDS ((NH_FLD_PPPOE_VER << 7) - 1) 241e6b82573SHemant Agrawal 242e6b82573SHemant Agrawal /************************* PPP-Mux fields **********************************/ 243e6b82573SHemant Agrawal #define NH_FLD_PPPMUX_PID (1) 244e6b82573SHemant Agrawal #define NH_FLD_PPPMUX_CKSUM (NH_FLD_PPPMUX_PID << 1) 245e6b82573SHemant Agrawal #define NH_FLD_PPPMUX_COMPRESSED (NH_FLD_PPPMUX_PID << 2) 246e6b82573SHemant Agrawal #define NH_FLD_PPPMUX_ALL_FIELDS ((NH_FLD_PPPMUX_PID << 3) - 1) 247e6b82573SHemant Agrawal 248e6b82573SHemant Agrawal /*********************** PPP-Mux sub-frame fields **************************/ 249e6b82573SHemant Agrawal #define NH_FLD_PPPMUX_SUBFRM_PFF (1) 250e6b82573SHemant Agrawal #define NH_FLD_PPPMUX_SUBFRM_LXT (NH_FLD_PPPMUX_SUBFRM_PFF << 1) 251e6b82573SHemant Agrawal #define NH_FLD_PPPMUX_SUBFRM_LEN (NH_FLD_PPPMUX_SUBFRM_PFF << 2) 252e6b82573SHemant Agrawal #define NH_FLD_PPPMUX_SUBFRM_PID (NH_FLD_PPPMUX_SUBFRM_PFF << 3) 253e6b82573SHemant Agrawal #define NH_FLD_PPPMUX_SUBFRM_USE_PID (NH_FLD_PPPMUX_SUBFRM_PFF << 4) 254e6b82573SHemant Agrawal #define NH_FLD_PPPMUX_SUBFRM_ALL_FIELDS \ 255e6b82573SHemant Agrawal ((NH_FLD_PPPMUX_SUBFRM_PFF << 5) - 1) 256e6b82573SHemant Agrawal 257e6b82573SHemant Agrawal /*************************** LLC fields ************************************/ 258e6b82573SHemant Agrawal #define NH_FLD_LLC_DSAP (1) 259e6b82573SHemant Agrawal #define NH_FLD_LLC_SSAP (NH_FLD_LLC_DSAP << 1) 260e6b82573SHemant Agrawal #define NH_FLD_LLC_CTRL (NH_FLD_LLC_DSAP << 2) 261e6b82573SHemant Agrawal #define NH_FLD_LLC_ALL_FIELDS ((NH_FLD_LLC_DSAP << 3) - 1) 262e6b82573SHemant Agrawal 263e6b82573SHemant Agrawal /*************************** NLPID fields **********************************/ 264e6b82573SHemant Agrawal #define NH_FLD_NLPID_NLPID (1) 265e6b82573SHemant Agrawal #define NH_FLD_NLPID_ALL_FIELDS ((NH_FLD_NLPID_NLPID << 1) - 1) 266e6b82573SHemant Agrawal 267e6b82573SHemant Agrawal /*************************** SNAP fields ***********************************/ 268e6b82573SHemant Agrawal #define NH_FLD_SNAP_OUI (1) 269e6b82573SHemant Agrawal #define NH_FLD_SNAP_PID (NH_FLD_SNAP_OUI << 1) 270e6b82573SHemant Agrawal #define NH_FLD_SNAP_ALL_FIELDS ((NH_FLD_SNAP_OUI << 2) - 1) 271e6b82573SHemant Agrawal 272e6b82573SHemant Agrawal /*************************** LLC SNAP fields *******************************/ 273e6b82573SHemant Agrawal #define NH_FLD_LLC_SNAP_TYPE (1) 274e6b82573SHemant Agrawal #define NH_FLD_LLC_SNAP_ALL_FIELDS ((NH_FLD_LLC_SNAP_TYPE << 1) - 1) 275e6b82573SHemant Agrawal 276e6b82573SHemant Agrawal #define NH_FLD_ARP_HTYPE (1) 277e6b82573SHemant Agrawal #define NH_FLD_ARP_PTYPE (NH_FLD_ARP_HTYPE << 1) 278e6b82573SHemant Agrawal #define NH_FLD_ARP_HLEN (NH_FLD_ARP_HTYPE << 2) 279e6b82573SHemant Agrawal #define NH_FLD_ARP_PLEN (NH_FLD_ARP_HTYPE << 3) 280e6b82573SHemant Agrawal #define NH_FLD_ARP_OPER (NH_FLD_ARP_HTYPE << 4) 281e6b82573SHemant Agrawal #define NH_FLD_ARP_SHA (NH_FLD_ARP_HTYPE << 5) 282e6b82573SHemant Agrawal #define NH_FLD_ARP_SPA (NH_FLD_ARP_HTYPE << 6) 283e6b82573SHemant Agrawal #define NH_FLD_ARP_THA (NH_FLD_ARP_HTYPE << 7) 284e6b82573SHemant Agrawal #define NH_FLD_ARP_TPA (NH_FLD_ARP_HTYPE << 8) 285e6b82573SHemant Agrawal #define NH_FLD_ARP_ALL_FIELDS ((NH_FLD_ARP_HTYPE << 9) - 1) 286e6b82573SHemant Agrawal 287e6b82573SHemant Agrawal /*************************** RFC2684 fields ********************************/ 288e6b82573SHemant Agrawal #define NH_FLD_RFC2684_LLC (1) 289e6b82573SHemant Agrawal #define NH_FLD_RFC2684_NLPID (NH_FLD_RFC2684_LLC << 1) 290e6b82573SHemant Agrawal #define NH_FLD_RFC2684_OUI (NH_FLD_RFC2684_LLC << 2) 291e6b82573SHemant Agrawal #define NH_FLD_RFC2684_PID (NH_FLD_RFC2684_LLC << 3) 292e6b82573SHemant Agrawal #define NH_FLD_RFC2684_VPN_OUI (NH_FLD_RFC2684_LLC << 4) 293e6b82573SHemant Agrawal #define NH_FLD_RFC2684_VPN_IDX (NH_FLD_RFC2684_LLC << 5) 294e6b82573SHemant Agrawal #define NH_FLD_RFC2684_ALL_FIELDS ((NH_FLD_RFC2684_LLC << 6) - 1) 295e6b82573SHemant Agrawal 296e6b82573SHemant Agrawal /*************************** User defined fields ***************************/ 297e6b82573SHemant Agrawal #define NH_FLD_USER_DEFINED_SRCPORT (1) 298e6b82573SHemant Agrawal #define NH_FLD_USER_DEFINED_PCDID (NH_FLD_USER_DEFINED_SRCPORT << 1) 299e6b82573SHemant Agrawal #define NH_FLD_USER_DEFINED_ALL_FIELDS \ 300e6b82573SHemant Agrawal ((NH_FLD_USER_DEFINED_SRCPORT << 2) - 1) 301e6b82573SHemant Agrawal 302e6b82573SHemant Agrawal /*************************** Payload fields ********************************/ 303e6b82573SHemant Agrawal #define NH_FLD_PAYLOAD_BUFFER (1) 304e6b82573SHemant Agrawal #define NH_FLD_PAYLOAD_SIZE (NH_FLD_PAYLOAD_BUFFER << 1) 305e6b82573SHemant Agrawal #define NH_FLD_MAX_FRM_SIZE (NH_FLD_PAYLOAD_BUFFER << 2) 306e6b82573SHemant Agrawal #define NH_FLD_MIN_FRM_SIZE (NH_FLD_PAYLOAD_BUFFER << 3) 307e6b82573SHemant Agrawal #define NH_FLD_PAYLOAD_TYPE (NH_FLD_PAYLOAD_BUFFER << 4) 308e6b82573SHemant Agrawal #define NH_FLD_FRAME_SIZE (NH_FLD_PAYLOAD_BUFFER << 5) 309e6b82573SHemant Agrawal #define NH_FLD_PAYLOAD_ALL_FIELDS ((NH_FLD_PAYLOAD_BUFFER << 6) - 1) 310e6b82573SHemant Agrawal 311e6b82573SHemant Agrawal /*************************** GRE fields ************************************/ 312e6b82573SHemant Agrawal #define NH_FLD_GRE_TYPE (1) 313e6b82573SHemant Agrawal #define NH_FLD_GRE_ALL_FIELDS ((NH_FLD_GRE_TYPE << 1) - 1) 314e6b82573SHemant Agrawal 315e6b82573SHemant Agrawal /*************************** MINENCAP fields *******************************/ 316e6b82573SHemant Agrawal #define NH_FLD_MINENCAP_SRC_IP (1) 317e6b82573SHemant Agrawal #define NH_FLD_MINENCAP_DST_IP (NH_FLD_MINENCAP_SRC_IP << 1) 318e6b82573SHemant Agrawal #define NH_FLD_MINENCAP_TYPE (NH_FLD_MINENCAP_SRC_IP << 2) 319e6b82573SHemant Agrawal #define NH_FLD_MINENCAP_ALL_FIELDS \ 320e6b82573SHemant Agrawal ((NH_FLD_MINENCAP_SRC_IP << 3) - 1) 321e6b82573SHemant Agrawal 322e6b82573SHemant Agrawal /*************************** IPSEC AH fields *******************************/ 323e6b82573SHemant Agrawal #define NH_FLD_IPSEC_AH_SPI (1) 324e6b82573SHemant Agrawal #define NH_FLD_IPSEC_AH_NH (NH_FLD_IPSEC_AH_SPI << 1) 325e6b82573SHemant Agrawal #define NH_FLD_IPSEC_AH_ALL_FIELDS ((NH_FLD_IPSEC_AH_SPI << 2) - 1) 326e6b82573SHemant Agrawal 327e6b82573SHemant Agrawal /*************************** IPSEC ESP fields ******************************/ 328e6b82573SHemant Agrawal #define NH_FLD_IPSEC_ESP_SPI (1) 329e6b82573SHemant Agrawal #define NH_FLD_IPSEC_ESP_SEQUENCE_NUM (NH_FLD_IPSEC_ESP_SPI << 1) 330e6b82573SHemant Agrawal #define NH_FLD_IPSEC_ESP_ALL_FIELDS ((NH_FLD_IPSEC_ESP_SPI << 2) - 1) 331e6b82573SHemant Agrawal 332e6b82573SHemant Agrawal #define NH_FLD_IPSEC_ESP_SPI_SIZE 4 333e6b82573SHemant Agrawal 334e6b82573SHemant Agrawal /*************************** MPLS fields ***********************************/ 335e6b82573SHemant Agrawal #define NH_FLD_MPLS_LABEL_STACK (1) 336e6b82573SHemant Agrawal #define NH_FLD_MPLS_LABEL_STACK_ALL_FIELDS \ 337e6b82573SHemant Agrawal ((NH_FLD_MPLS_LABEL_STACK << 1) - 1) 338e6b82573SHemant Agrawal 339e6b82573SHemant Agrawal /*************************** MACSEC fields *********************************/ 340e6b82573SHemant Agrawal #define NH_FLD_MACSEC_SECTAG (1) 341e6b82573SHemant Agrawal #define NH_FLD_MACSEC_ALL_FIELDS ((NH_FLD_MACSEC_SECTAG << 1) - 1) 342e6b82573SHemant Agrawal 343e6b82573SHemant Agrawal /*************************** GTP fields ************************************/ 344e6b82573SHemant Agrawal #define NH_FLD_GTP_TEID (1) 345e6b82573SHemant Agrawal 346*1832bc8eSApeksha Gupta /*************************** MPLS fields ************************************/ 347*1832bc8eSApeksha Gupta #define NH_FLD_MPLS_MPLSL_1 (1) 348*1832bc8eSApeksha Gupta #define NH_FLD_MPLS_MPLSL_2 (NH_FLD_MPLS_MPLSL_1 << 1) 349*1832bc8eSApeksha Gupta #define NH_FLD_MPLS_MPLSL_N (NH_FLD_MPLS_MPLSL_1 << 2) 350*1832bc8eSApeksha Gupta 351e6b82573SHemant Agrawal /* Protocol options */ 352e6b82573SHemant Agrawal 353e6b82573SHemant Agrawal /* Ethernet options */ 354e6b82573SHemant Agrawal #define NH_OPT_ETH_BROADCAST 1 355e6b82573SHemant Agrawal #define NH_OPT_ETH_MULTICAST 2 356e6b82573SHemant Agrawal #define NH_OPT_ETH_UNICAST 3 357e6b82573SHemant Agrawal #define NH_OPT_ETH_BPDU 4 358e6b82573SHemant Agrawal 359e6b82573SHemant Agrawal #define NH_ETH_IS_MULTICAST_ADDR(addr) (addr[0] & 0x01) 360e6b82573SHemant Agrawal /* also applicable for broadcast */ 361e6b82573SHemant Agrawal 362e6b82573SHemant Agrawal /* VLAN options */ 363e6b82573SHemant Agrawal #define NH_OPT_VLAN_CFI 1 364e6b82573SHemant Agrawal 365e6b82573SHemant Agrawal /* IPV4 options */ 366e6b82573SHemant Agrawal #define NH_OPT_IPV4_UNICAST 1 367e6b82573SHemant Agrawal #define NH_OPT_IPV4_MULTICAST 2 368e6b82573SHemant Agrawal #define NH_OPT_IPV4_BROADCAST 3 369e6b82573SHemant Agrawal #define NH_OPT_IPV4_OPTION 4 370e6b82573SHemant Agrawal #define NH_OPT_IPV4_FRAG 5 371e6b82573SHemant Agrawal #define NH_OPT_IPV4_INITIAL_FRAG 6 372e6b82573SHemant Agrawal 373e6b82573SHemant Agrawal /* IPV6 options */ 374e6b82573SHemant Agrawal #define NH_OPT_IPV6_UNICAST 1 375e6b82573SHemant Agrawal #define NH_OPT_IPV6_MULTICAST 2 376e6b82573SHemant Agrawal #define NH_OPT_IPV6_OPTION 3 377e6b82573SHemant Agrawal #define NH_OPT_IPV6_FRAG 4 378e6b82573SHemant Agrawal #define NH_OPT_IPV6_INITIAL_FRAG 5 379e6b82573SHemant Agrawal 380e6b82573SHemant Agrawal /* General IP options (may be used for any version) */ 381e6b82573SHemant Agrawal #define NH_OPT_IP_FRAG 1 382e6b82573SHemant Agrawal #define NH_OPT_IP_INITIAL_FRAG 2 383e6b82573SHemant Agrawal #define NH_OPT_IP_OPTION 3 384e6b82573SHemant Agrawal 385e6b82573SHemant Agrawal /* Minenc. options */ 386e6b82573SHemant Agrawal #define NH_OPT_MINENCAP_SRC_ADDR_PRESENT 1 387e6b82573SHemant Agrawal 388e6b82573SHemant Agrawal /* GRE. options */ 389e6b82573SHemant Agrawal #define NH_OPT_GRE_ROUTING_PRESENT 1 390e6b82573SHemant Agrawal 391e6b82573SHemant Agrawal /* TCP options */ 392e6b82573SHemant Agrawal #define NH_OPT_TCP_OPTIONS 1 393e6b82573SHemant Agrawal #define NH_OPT_TCP_CONTROL_HIGH_BITS 2 394e6b82573SHemant Agrawal #define NH_OPT_TCP_CONTROL_LOW_BITS 3 395e6b82573SHemant Agrawal 396e6b82573SHemant Agrawal /* CAPWAP options */ 397e6b82573SHemant Agrawal #define NH_OPT_CAPWAP_DTLS 1 398e6b82573SHemant Agrawal 399e6b82573SHemant Agrawal enum net_prot { 400e6b82573SHemant Agrawal NET_PROT_NONE = 0, 401e6b82573SHemant Agrawal NET_PROT_PAYLOAD, 402e6b82573SHemant Agrawal NET_PROT_ETH, 403e6b82573SHemant Agrawal NET_PROT_VLAN, 404e6b82573SHemant Agrawal NET_PROT_IPV4, 405e6b82573SHemant Agrawal NET_PROT_IPV6, 406e6b82573SHemant Agrawal NET_PROT_IP, 407e6b82573SHemant Agrawal NET_PROT_TCP, 408e6b82573SHemant Agrawal NET_PROT_UDP, 409e6b82573SHemant Agrawal NET_PROT_UDP_LITE, 410e6b82573SHemant Agrawal NET_PROT_IPHC, 411e6b82573SHemant Agrawal NET_PROT_SCTP, 412e6b82573SHemant Agrawal NET_PROT_SCTP_CHUNK_DATA, 413e6b82573SHemant Agrawal NET_PROT_PPPOE, 414e6b82573SHemant Agrawal NET_PROT_PPP, 415e6b82573SHemant Agrawal NET_PROT_PPPMUX, 416e6b82573SHemant Agrawal NET_PROT_PPPMUX_SUBFRM, 417e6b82573SHemant Agrawal NET_PROT_L2TPV2, 418e6b82573SHemant Agrawal NET_PROT_L2TPV3_CTRL, 419e6b82573SHemant Agrawal NET_PROT_L2TPV3_SESS, 420e6b82573SHemant Agrawal NET_PROT_LLC, 421e6b82573SHemant Agrawal NET_PROT_LLC_SNAP, 422e6b82573SHemant Agrawal NET_PROT_NLPID, 423e6b82573SHemant Agrawal NET_PROT_SNAP, 424e6b82573SHemant Agrawal NET_PROT_MPLS, 425e6b82573SHemant Agrawal NET_PROT_IPSEC_AH, 426e6b82573SHemant Agrawal NET_PROT_IPSEC_ESP, 427e6b82573SHemant Agrawal NET_PROT_UDP_ENC_ESP, /* RFC 3948 */ 428e6b82573SHemant Agrawal NET_PROT_MACSEC, 429e6b82573SHemant Agrawal NET_PROT_GRE, 430e6b82573SHemant Agrawal NET_PROT_MINENCAP, 431e6b82573SHemant Agrawal NET_PROT_DCCP, 432e6b82573SHemant Agrawal NET_PROT_ICMP, 433e6b82573SHemant Agrawal NET_PROT_IGMP, 434e6b82573SHemant Agrawal NET_PROT_ARP, 435e6b82573SHemant Agrawal NET_PROT_CAPWAP_DATA, 436e6b82573SHemant Agrawal NET_PROT_CAPWAP_CTRL, 437e6b82573SHemant Agrawal NET_PROT_RFC2684, 438e6b82573SHemant Agrawal NET_PROT_ICMPV6, 439e6b82573SHemant Agrawal NET_PROT_FCOE, 440e6b82573SHemant Agrawal NET_PROT_FIP, 441e6b82573SHemant Agrawal NET_PROT_ISCSI, 442e6b82573SHemant Agrawal NET_PROT_GTP, 443e6b82573SHemant Agrawal NET_PROT_USER_DEFINED_L2, 444e6b82573SHemant Agrawal NET_PROT_USER_DEFINED_L3, 445e6b82573SHemant Agrawal NET_PROT_USER_DEFINED_L4, 446e6b82573SHemant Agrawal NET_PROT_USER_DEFINED_L5, 447e6b82573SHemant Agrawal NET_PROT_USER_DEFINED_SHIM1, 448e6b82573SHemant Agrawal NET_PROT_USER_DEFINED_SHIM2, 449e6b82573SHemant Agrawal 450e6b82573SHemant Agrawal NET_PROT_DUMMY_LAST 451e6b82573SHemant Agrawal }; 452e6b82573SHemant Agrawal 453e6b82573SHemant Agrawal /*! IEEE8021.Q */ 454e6b82573SHemant Agrawal #define NH_IEEE8021Q_ETYPE 0x8100 455e6b82573SHemant Agrawal #define NH_IEEE8021Q_HDR(etype, pcp, dei, vlan_id) \ 456e6b82573SHemant Agrawal ((((uint32_t)(etype & 0xFFFF)) << 16) | \ 457e6b82573SHemant Agrawal (((uint32_t)(pcp & 0x07)) << 13) | \ 458e6b82573SHemant Agrawal (((uint32_t)(dei & 0x01)) << 12) | \ 459e6b82573SHemant Agrawal (((uint32_t)(vlan_id & 0xFFF)))) 460e6b82573SHemant Agrawal 461e6b82573SHemant Agrawal #endif /* __FSL_NET_H */ 462