This file defines constants, data structures and macros used among the PA LLD, SA LLD and the host.
More...
Data Structures |
struct | pasahoCmdInfo_s |
| pasahoCmdInfo_t defines the general short command information More...
|
struct | pasahoLongInfo_s |
| pasahoLongInfo_t defines the packet parsing information in the long format. The information is structured as an array of 32 bit values. These values are broken down through macros. This allows the representation to be endian independent to the hardware which operates only on 32 bit values. More...
|
struct | pasahoShortInfo_s |
| pasahoShortInfo_t defines the packet parsing information in the short format More...
|
struct | pasahoNextRoute_s |
| pasahoNextRoute_t defines the next route command. The command structure is defined as 32 bit values to work with the hardware regardless of the device endianness. More...
|
struct | pasahoComChkCrc_s |
| pasahoComChkCrc_t defines the checksum and CRC generation command. The command structure is defined as 32 bit values to wrok with the hardware regardless of the device endianness. More...
|
struct | pasahoReportTimestamp_s |
| pasahoReportTimestamp_t defines the report timestamp command. The command structure is defined as 32 bit values to work with the hardware regardless of the device endianness. More...
|
struct | pasahoIpFrag_s |
| pasahoIpFrag_t defines the IP Fragmentation command. The command structure is defined as 32 bit values to work with the hardware regardless of the device endianness. More...
|
struct | pasahoPatchMsgLen_s |
| pasahoPatchMsgLen_t defines the message length patching command. The command structure is defined as 32 bit values to work with the hardware regardless of the device endianness. More...
|
struct | pasahoEfOp_s |
| pasahoEfOp_t defines the egress flow operation command which is used to instruct PASS to perform optional flow cache lookup and egress packet modification according to the associated egress flow records. The command structure is defined as 32 bit values to wrok with the hardware regardless of the device endianness. More...
|
Defines |
#define | PA_INV_TF_INDEX 0xFF |
#define | PASAHO_BPATCH_MAX_PATCH_WORDS 4 |
| pasahoComBlindPatch_t defines the blind patch command. The command structure is defined as 32 bit values to work with the hardware regardless of the device endianness.
|
|
Define PASS Firmware Commands These values are placed in the 3 msbits of the protocol specific information
|
#define | PASAHO_CONFIGURE 4 |
#define | PASAHO_PARX_PARSECMD 0 |
#define | PASAHO_PARX_MULTI_ROUTE 5 |
#define | PASAHO_PAMOD_CMPT_CHKSUM 0 |
#define | PASAHO_PAMOD_CMPT_CRC 1 |
#define | PASAHO_PAMOD_PATCH 2 |
#define | PASAHO_PAMOD_NROUTE 3 |
#define | PASAHO_PAMOD_EF_OP 5 |
#define | PASAHO_PAMOD_REPORT_TIMESTAMP 6 |
#define | PASAHO_PAMOD_GROUP_7 7 |
#define | PASAHO_PAMOD_DUMMY PASAHO_PAMOD_GROUP_7 |
#define | PASAHO_PAMOD_IP_FRAGMENT PASAHO_PAMOD_GROUP_7 |
#define | PASAHO_PAMOD_PATCH_MSG_LEN PASAHO_PAMOD_GROUP_7 |
#define | PASAHO_SA_LONG_INFO 0 |
#define | PASAHO_SA_SHORT_INFO 1 |
#define | PASAHO_SA_AIR_INFO 2 |
|
#define | PASAHO_READ_BITFIELD(a, b, c) (((a)>>(b)) & ((1UL<<(c))-1)) |
| PASAHO_READ_BITFIELD is used to read the specific bit fields.
|
#define | PASAHO_SET_BITFIELD(a, x, b, c) |
| PASAHO_SET_BITFIELD is used to set the specific bit fields.
|
#define | PASAHO_SET_CMDID(x, v) PASAHO_SET_BITFIELD((x)->word0, (v), 29,3) |
| PASAHO_SET_CMDID is used to set the command ID.
|
#define | PASAHO_PACFG_CMD (((uint32_t)PASAHO_CONFIGURE << 5) << 24) |
| PASAHO_PACFG_CMD is used to set the PA configuration command only.
|
|
Macros used by the PASAHO Long Info Command
|
#define | PASAHO_LINFO_READ_CMDID_GEN1(x) PASAHO_READ_BITFIELD((x)->word0,29,3) |
#define | PASAHO_LINFO_READ_RECLEN_GEN1(x) PASAHO_READ_BITFIELD((x)->word0,24,5) |
#define | PASAHO_LINFO_READ_START_OFFSET_GEN1(x) PASAHO_READ_BITFIELD((x)->word0,0,16) |
#define | PASAHO_LINFO_IS_MAC_BROADCAST_GEN1(x) PASAHO_READ_BITFIELD((x)->word0,16,1) |
#define | PASAHO_LINFO_IS_MAC_MULTICAST_GEN1(x) PASAHO_READ_BITFIELD((x)->word0,17,1) |
#define | PASAHO_LINFO_READ_MAC_PKTTYPE_GEN1(x) PASAHO_READ_BITFIELD((x)->word0,16,2) |
#define | PASAHO_LINFO_IS_IP_BROADCAST_GEN1(x) PASAHO_READ_BITFIELD((x)->word0,18,1) |
#define | PASAHO_LINFO_IS_IP_MULTICAST_GEN1(x) PASAHO_READ_BITFIELD((x)->word0,19,1) |
#define | PASAHO_LINFO_READ_IP_PKTTYPE_GEN1(x) PASAHO_READ_BITFIELD((x)->word0,18,2) |
#define | PASAHO_LINFO_READ_END_OFFSET_GEN1(x) PASAHO_READ_BITFIELD((x)->word1,16,16) |
#define | PASAHO_LINFO_READ_EIDX_GEN1(x) PASAHO_READ_BITFIELD((x)->word1,11,5) |
#define | PASAHO_LINFO_READ_PMATCH_GEN1(x) PASAHO_READ_BITFIELD((x)->word1,10,1) |
#define | PASAHO_LINFO_READ_L1_PDSP_ID_GEN1(x) PASAHO_READ_BITFIELD((x)->word1,6,3) |
#define | PASAHO_LINFO_READ_L1_IDX_GEN1(x) PASAHO_READ_BITFIELD((x)->word1,0,6) |
#define | PASAHO_LINFO_READ_L3_OFFSET_GEN1(x) PASAHO_READ_BITFIELD((x)->word2,24,8) |
#define | PASAHO_LINFO_READ_L4_OFFSET_GEN1(x) PASAHO_READ_BITFIELD((x)->word2,16,8) |
#define | PASAHO_LINFO_READ_L5_OFFSET_GEN1(x) PASAHO_READ_BITFIELD((x)->word2,8,8) |
#define | PASAHO_LINFO_READ_ESP_AH_OFFSET_GEN1(x) PASAHO_READ_BITFIELD((x)->word2,0,8) |
#define | PASAHO_LINFO_READ_HDR_BITMASK_GEN1(x) PASAHO_READ_BITFIELD((x)->word3,21,11) |
#define | PASAHO_LINFO_READ_HDR_BITMASK2_GEN1(x) PASAHO_READ_BITFIELD((x)->word3, 4,4) |
#define | PASAHO_LINFO_READ_NXT_HDR_TYPE_GEN1(x) PASAHO_READ_BITFIELD((x)->word3,16,5) |
#define | PASAHO_LINFO_READ_VLAN_COUNT_GEN1(x) PASAHO_READ_BITFIELD((x)->word3,14,2) |
#define | PASAHO_LINFO_READ_IP_COUNT_GEN1(x) PASAHO_READ_BITFIELD((x)->word3,8,3) |
#define | PASAHO_LINFO_READ_GRE_COUNT_GEN1(x) PASAHO_READ_BITFIELD((x)->word3,11,3) |
#define | PASAHO_LINFO_READ_FLAG_FRAG_GEN1(x) PASAHO_READ_BITFIELD((x)->word3,3,1) |
#define | PASAHO_LINFO_READ_INPORT_GEN1(x) PASAHO_READ_BITFIELD((x)->word3,0,3) |
#define | PASAHO_LINFO_READ_INNER_IP_OFFSET_GEN1(x) PASAHO_READ_BITFIELD((x)->word4,16,8) |
#define | PASAHO_LINFO_READ_TSTAMP_MSB_GEN1(x) PASAHO_READ_BITFIELD((x)->word5,0,16) |
|
Macros used by the PASAHO Long Info Command
|
#define | PASAHO_LINFO_READ_CMDID_GEN2(x) PASAHO_READ_BITFIELD((x)->word0,29,3) |
#define | PASAHO_LINFO_READ_RECLEN_GEN2(x) PASAHO_READ_BITFIELD((x)->word0,24,5) |
#define | PASAHO_LINFO_READ_START_OFFSET_GEN2(x) PASAHO_READ_BITFIELD((x)->word0,0,8) |
#define | PASAHO_LINFO_IS_MAC_BROADCAST_GEN2(x) PASAHO_READ_BITFIELD((x)->word0,16,1) |
#define | PASAHO_LINFO_IS_MAC_MULTICAST_GEN2(x) PASAHO_READ_BITFIELD((x)->word0,17,1) |
#define | PASAHO_LINFO_READ_MAC_PKTTYPE_GEN2(x) PASAHO_READ_BITFIELD((x)->word0,16,2) |
#define | PASAHO_LINFO_IS_IP_BROADCAST_GEN2(x) PASAHO_READ_BITFIELD((x)->word0,16,1) |
#define | PASAHO_LINFO_IS_IP_MULTICAST_GEN2(x) PASAHO_READ_BITFIELD((x)->word0,17,1) |
#define | PASAHO_LINFO_READ_IP_PKTTYPE_GEN2(x) PASAHO_READ_BITFIELD((x)->word0,16,2) |
#define | PASAHO_LINFO_READ_PMATCH_GEN2(x) PASAHO_READ_BITFIELD((x)->word0,23,1) |
#define | PASAHO_LINFO_READ_FLAG_FRAG_GEN2(x) PASAHO_READ_BITFIELD((x)->word0,19,1) |
#define | PASAHO_LINFO_READ_END_OFFSET_GEN2(x) PASAHO_READ_BITFIELD((x)->word1,16,16) |
#define | PASAHO_LINFO_READ_EIDX_GEN2(x) PASAHO_READ_BITFIELD((x)->word1,10,6) |
#define | PASAHO_LINFO_READ_NXT_HDR_TYPE_GEN2(x) PASAHO_READ_BITFIELD((x)->word1,0,6) |
#define | PASAHO_LINFO_READ_INPORT_GEN2(x) PASAHO_READ_BITFIELD((x)->word1,6,4) |
#define | PASAHO_LINFO_READ_L3_OFFSET_GEN2(x) PASAHO_READ_BITFIELD((x)->word2,24,8) |
#define | PASAHO_LINFO_READ_L4_OFFSET_GEN2(x) PASAHO_READ_BITFIELD((x)->word2,16,8) |
#define | PASAHO_LINFO_READ_L5_OFFSET_GEN2(x) PASAHO_READ_BITFIELD((x)->word2,8,8) |
#define | PASAHO_LINFO_READ_ESP_AH_OFFSET_GEN2(x) PASAHO_READ_BITFIELD((x)->word2,0,8) |
#define | PASAHO_LINFO_READ_L1_PDSP_ID_GEN2(x) PASAHO_READ_BITFIELD((x)->word3,26,6) |
#define | PASAHO_LINFO_READ_L1_IDX_GEN2(x) PASAHO_READ_BITFIELD((x)->word3,16,10) |
#define | PASAHO_LINFO_READ_HDR_BITMASK_GEN2(x) PASAHO_READ_BITFIELD((x)->word3,0,16) |
#define | PASAHO_LINFO_READ_HDR_BITMASK2_GEN2(x) 0 |
#define | PASAHO_LINFO_READ_TSTAMP_MSB_GEN2(x) PASAHO_READ_BITFIELD((x)->word5,0,16) |
#define | PASAHO_LINFO_READ_VLAN_COUNT_GEN2(x) PASAHO_READ_BITFIELD((x)->word4,6,2) |
#define | PASAHO_LINFO_READ_IP_COUNT_GEN2(x) PASAHO_READ_BITFIELD((x)->word4,0,3) |
#define | PASAHO_LINFO_READ_GRE_COUNT_GEN2(x) PASAHO_READ_BITFIELD((x)->word4,3,3) |
#define | PASAHO_LINFO_READ_INNER_IP_OFFSET_GEN2(x) PASAHO_READ_BITFIELD((x)->word5,24,8) |
#define | PASAHO_LINFO_READ_TSTAMP_MSB_GEN2(x) PASAHO_READ_BITFIELD((x)->word5,0,16) |
|
Macros used by the PASAHO Long Info Command
|
#define | PASAHO_LINFO_READ_CMDID(x) PASAHO_LINFO_READ_CMDID_GEN1(x) |
#define | PASAHO_LINFO_READ_RECLEN(x) PASAHO_LINFO_READ_RECLEN_GEN1(x) |
#define | PASAHO_LINFO_READ_START_OFFSET(x) PASAHO_LINFO_READ_START_OFFSET_GEN1(x) |
#define | PASAHO_LINFO_IS_MAC_BROADCAST(x) PASAHO_LINFO_IS_MAC_BROADCAST_GEN1(x) |
#define | PASAHO_LINFO_IS_MAC_MULTICAST(x) PASAHO_LINFO_IS_MAC_MULTICAST_GEN1(x) |
#define | PASAHO_LINFO_READ_MAC_PKTTYPE(x) PASAHO_LINFO_READ_MAC_PKTTYPE_GEN1(x) |
#define | PASAHO_LINFO_IS_IP_BROADCAST(x) PASAHO_LINFO_IS_IP_BROADCAST_GEN1(x) |
#define | PASAHO_LINFO_IS_IP_MULTICAST(x) PASAHO_LINFO_IS_IP_MULTICAST_GEN1(x) |
#define | PASAHO_LINFO_READ_IP_PKTTYPE(x) PASAHO_LINFO_READ_IP_PKTTYPE_GEN1(x) |
#define | PASAHO_LINFO_READ_END_OFFSET(x) PASAHO_LINFO_READ_END_OFFSET_GEN1(x) |
#define | PASAHO_LINFO_READ_EIDX(x) PASAHO_LINFO_READ_EIDX_GEN1(x) |
#define | PASAHO_LINFO_READ_PMATCH(x) PASAHO_LINFO_READ_PMATCH_GEN1(x) |
#define | PASAHO_LINFO_READ_L1_PDSP_ID(x) PASAHO_LINFO_READ_L1_PDSP_ID_GEN1(x) |
#define | PASAHO_LINFO_READ_L1_IDX(x) PASAHO_LINFO_READ_L1_IDX_GEN1(x) |
#define | PASAHO_LINFO_READ_L3_OFFSET(x) PASAHO_LINFO_READ_L3_OFFSET_GEN1(x) |
#define | PASAHO_LINFO_READ_L4_OFFSET(x) PASAHO_LINFO_READ_L4_OFFSET_GEN1(x) |
#define | PASAHO_LINFO_READ_L5_OFFSET(x) PASAHO_LINFO_READ_L5_OFFSET_GEN1(x) |
#define | PASAHO_LINFO_READ_ESP_AH_OFFSET(x) PASAHO_LINFO_READ_ESP_AH_OFFSET_GEN1(x) |
#define | PASAHO_LINFO_READ_HDR_BITMASK(x) PASAHO_LINFO_READ_HDR_BITMASK_GEN1(x) |
#define | PASAHO_LINFO_READ_HDR_BITMASK2(x) PASAHO_LINFO_READ_HDR_BITMASK2_GEN1(x) |
#define | PASAHO_LINFO_READ_NXT_HDR_TYPE(x) PASAHO_LINFO_READ_NXT_HDR_TYPE_GEN1(x) |
#define | PASAHO_LINFO_READ_VLAN_COUNT(x) PASAHO_LINFO_READ_VLAN_COUNT_GEN1(x) |
#define | PASAHO_LINFO_READ_IP_COUNT(x) PASAHO_LINFO_READ_IP_COUNT_GEN1(x) |
#define | PASAHO_LINFO_READ_GRE_COUNT(x) PASAHO_LINFO_READ_GRE_COUNT_GEN1(x) |
#define | PASAHO_LINFO_READ_FLAG_FRAG(x) PASAHO_LINFO_READ_FLAG_FRAG_GEN1(x) |
#define | PASAHO_LINFO_READ_INPORT(x) PASAHO_LINFO_READ_INPORT_GEN1(x) |
#define | PASAHO_LINFO_READ_INNER_IP_OFFSET(x) PASAHO_LINFO_READ_INNER_IP_OFFSET_GEN1(x) |
#define | PASAHO_LINFO_READ_TSTAMP_MSB(x) PASAHO_LINFO_READ_TSTAMP_MSB_GEN1(x) |
|
#define | PASAHO_LINFO_IS_MAC_GEN1(x) PASAHO_READ_BITFIELD((x)->word3,21,1) |
#define | PASAHO_LINFO_IS_802_3_GEN1(x) PASAHO_READ_BITFIELD((x)->word3,7,1) |
#define | PASAHO_LINFO_IS_WITH_VLAN_GEN1(x) PASAHO_LINFO_READ_VLAN_COUNT(x) |
#define | PASAHO_LINFO_IS_WITH_MPLS_GEN1(x) PASAHO_READ_BITFIELD((x)->word3,23,1) |
#define | PASAHO_LINFO_IS_PPPoE_GEN1(x) PASAHO_READ_BITFIELD((x)->word3,6,1) |
#define | PASAHO_LINFO_IS_IP_GEN1(x) PASAHO_LINFO_READ_IP_COUNT(x) |
#define | PASAHO_LINFO_IS_IPSEC_ESP_GEN1(x) PASAHO_READ_BITFIELD((x)->word3,25,1) |
#define | PASAHO_LINFO_IS_IPSEC_AH_GEN1(x) PASAHO_READ_BITFIELD((x)->word3,26,1) |
#define | PASAHO_LINFO_IS_UDP_GEN1(x) PASAHO_READ_BITFIELD((x)->word3,27,1) |
#define | PASAHO_LINFO_IS_UDP_LITE_GEN1(x) PASAHO_READ_BITFIELD((x)->word3,28,1) |
#define | PASAHO_LINFO_IS_TCP_GEN1(x) PASAHO_READ_BITFIELD((x)->word3,29,1) |
#define | PASAHO_LINFO_IS_GRE_GEN1(x) PASAHO_LINFO_READ_GRE_COUNT(x) |
#define | PASAHO_LINFO_IS_GTPU_GEN1(x) PASAHO_READ_BITFIELD((x)->word3,30,1) |
#define | PASAHO_LINFO_IS_CUSTOM_GEN1(x) PASAHO_READ_BITFIELD((x)->word3,31,1) |
#define | PASAHO_LINFO_IS_SCTP_GEN1(x) PASAHO_READ_BITFIELD((x)->word3,4,1) |
#define | PASAHO_LINFO_IS_IPSEC_NAT_T_GEN1(x) PASAHO_READ_BITFIELD((x)->word3,5,1) |
|
#define | PASAHO_LINFO_IS_MAC_GEN2(x) PASAHO_READ_BITFIELD((x)->word3,0,1) |
#define | PASAHO_LINFO_IS_WITH_VLAN_GEN2(x) PASAHO_LINFO_READ_VLAN_COUNT(x) |
#define | PASAHO_LINFO_IS_WITH_MPLS_GEN2(x) PASAHO_READ_BITFIELD((x)->word3,2,1) |
#define | PASAHO_LINFO_IS_802_3_GEN2(x) PASAHO_READ_BITFIELD((x)->word3,3,1) |
#define | PASAHO_LINFO_IS_PPPoE_GEN2(x) PASAHO_READ_BITFIELD((x)->word3,4,1) |
#define | PASAHO_LINFO_IS_IP_GEN2(x) PASAHO_LINFO_READ_IP_COUNT(x) |
#define | PASAHO_LINFO_IS_IPv4_GEN2(x) PASAHO_READ_BITFIELD((x)->word3,5,1) |
#define | PASAHO_LINFO_IS_IPv6_GEN2(x) PASAHO_READ_BITFIELD((x)->word3,6,1) |
#define | PASAHO_LINFO_IS_IP_OPTIONS_GEN2(x) PASAHO_READ_BITFIELD((x)->word3,7,1) |
#define | PASAHO_LINFO_IS_IPSEC_ESP_GEN2(x) PASAHO_READ_BITFIELD((x)->word3,8,1) |
#define | PASAHO_LINFO_IS_IPSEC_AH_GEN2(x) PASAHO_READ_BITFIELD((x)->word3,9,1) |
#define | PASAHO_LINFO_IS_SCTP_GEN2(x) PASAHO_READ_BITFIELD((x)->word3,10,1) |
#define | PASAHO_LINFO_IS_UDP_GEN2(x) PASAHO_READ_BITFIELD((x)->word3,11,1) |
#define | PASAHO_LINFO_IS_UDP_LITE_GEN2(x) PASAHO_READ_BITFIELD((x)->word3,11,1) |
#define | PASAHO_LINFO_IS_TCP_GEN2(x) PASAHO_READ_BITFIELD((x)->word3,12,1) |
#define | PASAHO_LINFO_IS_GRE_GEN2(x) PASAHO_LINFO_READ_GRE_COUNT(x) |
#define | PASAHO_LINFO_IS_GTPU_GEN2(x) PASAHO_READ_BITFIELD((x)->word3,13,1) |
#define | PASAHO_LINFO_IS_CUSTOM_GEN2(x) PASAHO_READ_BITFIELD((x)->word3,14,1) |
#define | PASAHO_LINFO_IS_IPSEC_NAT_T_GEN2(x) PASAHO_READ_BITFIELD((x)->word3,15,1) |
|
#define | PASAHO_LINFO_IS_MAC(x) PASAHO_LINFO_IS_MAC_GEN1(x) |
#define | PASAHO_LINFO_IS_802_3(x) PASAHO_LINFO_IS_802_3_GEN1(x) |
#define | PASAHO_LINFO_IS_WITH_VLAN(x) PASAHO_LINFO_IS_WITH_VLAN_GEN1(x) |
#define | PASAHO_LINFO_IS_WITH_MPLS(x) PASAHO_LINFO_IS_WITH_MPLS_GEN1(x) |
#define | PASAHO_LINFO_IS_PPPoE(x) PASAHO_LINFO_IS_PPPoE_GEN1(x) |
#define | PASAHO_LINFO_IS_IP(x) PASAHO_LINFO_IS_IP_GEN1(x) |
#define | PASAHO_LINFO_IS_IPSEC_ESP(x) PASAHO_LINFO_IS_IPSEC_ESP_GEN1(x) |
#define | PASAHO_LINFO_IS_IPSEC_AH(x) PASAHO_LINFO_IS_IPSEC_AH_GEN1(x) |
#define | PASAHO_LINFO_IS_UDP(x) PASAHO_LINFO_IS_UDP_GEN1(x) |
#define | PASAHO_LINFO_IS_UDP_LITE(x) PASAHO_LINFO_IS_UDP_LITE_GEN1(x) |
#define | PASAHO_LINFO_IS_TCP(x) PASAHO_LINFO_IS_TCP_GEN1(x) |
#define | PASAHO_LINFO_IS_GRE(x) PASAHO_LINFO_IS_GRE_GEN1(x) |
#define | PASAHO_LINFO_IS_GTPU(x) PASAHO_LINFO_IS_GTPU_GEN1(x) |
#define | PASAHO_LINFO_IS_CUSTOM(x) PASAHO_LINFO_IS_CUSTOM_GEN1(x) |
#define | PASAHO_LINFO_IS_SCTP(x) PASAHO_LINFO_IS_SCTP_GEN1(x) |
#define | PASAHO_LINFO_IS_IPSEC_NAT_T(x) PASAHO_LINFO_IS_IPSEC_NAT_T_GEN1(x) |
|
Macros used by the PASAHO PASS-assisted IP Reassembly Operation
|
#define | PASAHO_LINFO_READ_TFINDEX_GEN1(x) PASAHO_READ_BITFIELD((x)->word4,24,8) |
#define | PASAHO_LINFO_READ_FRANCNT_GEN1(x) PASAHO_READ_BITFIELD((x)->word4,16,8) |
#define | PASAHO_LINFO_SET_TFINDEX_GEN1(x, v) PASAHO_SET_BITFIELD((x)->word4,(v),24,8) |
#define | PASAHO_LINFO_SET_FRANCNT_GEN1(x, v) PASAHO_SET_BITFIELD((x)->word4,(v),16,8) |
#define | PASAHO_LINFO_IS_IPSEC_GEN1(x) PASAHO_READ_BITFIELD((x)->word3,25,2) |
#define | PASAHO_LINFO_CLR_IPSEC_GEN1(x) PASAHO_SET_BITFIELD((x)->word3,0,25,2) |
#define | PASAHO_LINFO_CLR_IPSEC_ESP_GEN1(x) PASAHO_SET_BITFIELD((x)->word3,0,26,1) |
#define | PASAHO_LINFO_CLR_IPSEC_AH_GEN1(x) PASAHO_SET_BITFIELD((x)->word3,0,25,1) |
#define | PASAHO_LINFO_CLR_FLAG_FRAG_GEN1(x) PASAHO_SET_BITFIELD((x)->word3,0,3,1) |
#define | PASAHO_LINFO_SET_START_OFFSET_GEN1(x, v) PASAHO_SET_BITFIELD((x)->word0,(v),0,16) |
#define | PASAHO_LINFO_SET_END_OFFSET_GEN1(x, v) PASAHO_SET_BITFIELD((x)->word1,(v),16,16) |
#define | PASAHO_LINFO_SET_NULL_PKT_IND_GEN1(x, v) PASAHO_SET_BITFIELD((x)->word0,(v),21,1) |
|
Macros used by the PASAHO PASS-assisted IP Reassembly Operation
|
#define | PASAHO_LINFO_READ_TFINDEX_GEN2(x) PASAHO_READ_BITFIELD((x)->word5,24,8) |
#define | PASAHO_LINFO_READ_FRANCNT_GEN2(x) PASAHO_READ_BITFIELD((x)->word5,16,8) |
#define | PASAHO_LINFO_SET_TFINDEX_GEN2(x, v) PASAHO_SET_BITFIELD((x)->word5,(v),24,8) |
#define | PASAHO_LINFO_SET_FRANCNT_GEN2(x, v) PASAHO_SET_BITFIELD((x)->word5,(v),16,8) |
#define | PASAHO_LINFO_IS_IPSEC_GEN2(x) PASAHO_READ_BITFIELD((x)->word3,8,2) |
#define | PASAHO_LINFO_CLR_IPSEC_GEN2(x) PASAHO_SET_BITFIELD((x)->word3,0,8,2) |
#define | PASAHO_LINFO_CLR_IPSEC_ESP_GEN2(x) PASAHO_SET_BITFIELD((x)->word3,0,8,1) |
#define | PASAHO_LINFO_CLR_IPSEC_AH_GEN2(x) PASAHO_SET_BITFIELD((x)->word3,0,9,1) |
#define | PASAHO_LINFO_CLR_FLAG_FRAG_GEN2(x) PASAHO_SET_BITFIELD((x)->word1,0,19,1) |
#define | PASAHO_LINFO_SET_START_OFFSET_GEN2(x, v) PASAHO_SET_BITFIELD((x)->word0,(v),0,8) |
#define | PASAHO_LINFO_SET_END_OFFSET_GEN2(x, v) PASAHO_SET_BITFIELD((x)->word1,(v),16,16) |
#define | PASAHO_LINFO_SET_NXT_HDR_TYPE_GEN2(x, v) PASAHO_SET_BITFIELD((x)->word1,(v),0,6) |
#define | PASAHO_LINFO_SET_NULL_PKT_IND_GEN2(x, v) PASAHO_SET_BITFIELD((x)->word0,(v),13,1) |
#define | PASAHO_LINFO_READ_TFINDEX(x) PASAHO_LINFO_READ_TFINDEX_GEN1(x) |
#define | PASAHO_LINFO_READ_FRANCNT(x) PASAHO_LINFO_READ_FRANCNT_GEN1(x) |
#define | PASAHO_LINFO_SET_TFINDEX(x, v) PASAHO_LINFO_SET_TFINDEX_GEN1(x, v) |
#define | PASAHO_LINFO_SET_FRANCNT(x, v) PASAHO_LINFO_SET_FRANCNT_GEN1(x, v) |
#define | PASAHO_LINFO_IS_IPSEC(x) PASAHO_LINFO_IS_IPSEC_GEN1(x) |
#define | PASAHO_LINFO_CLR_IPSEC(x) PASAHO_LINFO_CLR_IPSEC_GEN1(x) |
#define | PASAHO_LINFO_CLR_IPSEC_ESP(x) PASAHO_LINFO_CLR_IPSEC_ESP_GEN1(x) |
#define | PASAHO_LINFO_CLR_IPSEC_AH(x) PASAHO_LINFO_CLR_IPSEC_AH_GEN1(x) |
#define | PASAHO_LINFO_CLR_FLAG_FRAG(x) PASAHO_LINFO_CLR_FLAG_FRAG_GEN1(x) |
#define | PASAHO_LINFO_SET_START_OFFSET(x, v) PASAHO_LINFO_SET_START_OFFSET_GEN1(x, v) |
#define | PASAHO_LINFO_SET_END_OFFSET(x, v) PASAHO_LINFO_SET_END_OFFSET_GEN1(x, v) |
#define | PASAHO_LINFO_SET_NULL_PKT_IND(x, v) PASAHO_LINFO_SET_NULL_PKT_IND_GEN1(x, v) |
|
Macros used by the PASAHO Short Info Command
|
#define | PASAHO_SINFO_READ_CMDID(x) PASAHO_READ_BITFIELD((x)->word0,29,3) |
#define | PASAHO_SINFO_RESD_PAYLOAD_OFFSET(x) PASAHO_READ_BITFIELD((x)->word0,16,8) |
#define | PASAHO_SINFO_READ_PAYLOAD_LENGTH(x) PASAHO_READ_BITFIELD((x)->word0,0,16) |
#define | PASAHO_SINFO_SET_PAYLOAD_OFFSET(x, v) PASAHO_SET_BITFIELD((x)->word0, (v), 16, 8) |
#define | PASAHO_SINFO_SET_PAYLOAD_LENGTH(x, v) PASAHO_SET_BITFIELD((x)->word0, (v), 0, 16) |
#define | PASAHO_SINFO_FORMAT_CMD(offset, len) (((offset) << 16) | (len) | (PASAHO_SA_SHORT_INFO << 29)) |
|
Bitmap definition of the protocol header bitmask at the long info of First Generation PASS.
|
#define | PASAHO_HDR_BITMASK_MAC_GEN1 (1 << 0) |
#define | PASAHO_HDR_BITMASK_VLAN_GEN1 (1 << 1) |
#define | PASAHO_HDR_BITMASK_MPLS_GEN1 (1 << 2) |
#define | PASAHO_HDR_BITMASK_IP_GEN1 (1 << 3) |
#define | PASAHO_HDR_BITMASK_ESP_GEN1 (1 << 4) |
#define | PASAHO_HDR_BITMASK_AH_GEN1 (1 << 5) |
#define | PASAHO_HDR_BITMASK_UDP_GEN1 (1 << 6) |
#define | PASAHO_HDR_BITMASK_UDPLITE_GEN1 (1 << 7) |
#define | PASAHO_HDR_BITMASK_TCP_GEN1 (1 << 8) |
#define | PASAHO_HDR_BITMASK_GTPU_GEN1 (1 << 9) |
#define | PASAHO_HDR_BITMASK_CUSTOM_GEN1 (1 << 10) |
#define | PASAHO_HDR_BITMASK2_SCTP_GEN1 (1 << 0) |
#define | PASAHO_HDR_BITMASK2_IPSEC_NAT_T_GEN1 (1 << 1) |
#define | PASAHO_HDR_BITMASK2_PPPoE_GEN1 (1 << 2) |
#define | PASAHO_HDR_BITMASK2_802_3_GEN1 (1 << 3) |
|
Bitmap definition of the protocol header bitmask at the long info For Second Generation PASS.
|
#define | PASAHO_HDR_BITMASK_MAC_GEN2 (1 << 0) |
#define | PASAHO_HDR_BITMASK_VLAN_GEN2 (1 << 1) |
#define | PASAHO_HDR_BITMASK_MPLS_GEN2 (1 << 2) |
#define | PASAHO_HDR_BITMASK_802_3_GEN2 (1 << 3) |
#define | PASAHO_HDR_BITMASK_PPPoE_GEN2 (1 << 4) |
#define | PASAHO_HDR_BITMASK_IPv4_GEN2 (1 << 5) |
#define | PASAHO_HDR_BITMASK_IPv6_GEN2 (1 << 6) |
#define | PASAHO_HDR_BITMASK_IP_OPTS_GEN2 (1 << 7) |
#define | PASAHO_HDR_BITMASK_ESP_GEN2 (1 << 8) |
#define | PASAHO_HDR_BITMASK_AH_GEN2 (1 << 9) |
#define | PASAHO_HDR_BITMASK_SCTP_GEN2 (1 << 10) |
#define | PASAHO_HDR_BITMASK_UDP_GEN2 (1 << 11) |
#define | PASAHO_HDR_BITMASK_UDPLITE_GEN2 (1 << 11) |
#define | PASAHO_HDR_BITMASK_TCP_GEN2 (1 << 12) |
#define | PASAHO_HDR_BITMASK_GTPU_GEN2 (1 << 13) |
#define | PASAHO_HDR_BITMASK_CUSTOM_GEN2 (1 << 14) |
#define | PASAHO_HDR_BITMASK_IPSEC_NAT_T_GEN2 (1 << 15) |
|
Bitmap definition of the protocol header bitmask at the long info.
|
#define | PASAHO_HDR_BITMASK_MAC PASAHO_HDR_BITMASK_MAC_GEN1 |
#define | PASAHO_HDR_BITMASK_VLAN PASAHO_HDR_BITMASK_VLAN_GEN1 |
#define | PASAHO_HDR_BITMASK_MPLS PASAHO_HDR_BITMASK_MPLS_GEN1 |
#define | PASAHO_HDR_BITMASK_IP PASAHO_HDR_BITMASK_IP_GEN1 |
#define | PASAHO_HDR_BITMASK_ESP PASAHO_HDR_BITMASK_ESP_GEN1 |
#define | PASAHO_HDR_BITMASK_AH PASAHO_HDR_BITMASK_AH_GEN1 |
#define | PASAHO_HDR_BITMASK_UDP PASAHO_HDR_BITMASK_UDP_GEN1 |
#define | PASAHO_HDR_BITMASK_UDPLITE PASAHO_HDR_BITMASK_UDPLITE_GEN1 |
#define | PASAHO_HDR_BITMASK_TCP PASAHO_HDR_BITMASK_TCP_GEN1 |
#define | PASAHO_HDR_BITMASK_GTPU PASAHO_HDR_BITMASK_GTPU_GEN1 |
#define | PASAHO_HDR_BITMASK_CUSTOM PASAHO_HDR_BITMASK_CUSTOM_GEN1 |
#define | PASAHO_HDR_BITMASK2_SCTP PASAHO_HDR_BITMASK2_SCTP_GEN1 |
#define | PASAHO_HDR_BITMASK2_IPSEC_NAT_T PASAHO_HDR_BITMASK2_IPSEC_NAT_T_GEN1 |
#define | PASAHO_HDR_BITMASK2_PPPoE PASAHO_HDR_BITMASK2_PPPoE_GEN1 |
#define | PASAHO_HDR_BITMASK2_802_3 PASAHO_HDR_BITMASK2_802_3_GEN1 |
|
Bitmap definition of the destination type at the nextRoute command of First Generation PASS.
|
#define | PASAHO_NR_DEST_PKTDMA_GEN1 6 |
#define | PASAHO_NR_DEST_ETH_GEN1 7 |
#define | PASAHO_NR_DEST_SRIO_GEN1 0 |
|
Bitmap definition of the destination type at the nextRoute command of Second Generation PASS.
|
#define | PASAHO_NR_DEST_PKTDMA_GEN2 0 |
#define | PASAHO_NR_DEST_ETH_GEN2 2 |
#define | PASAHO_NR_DEST_SRIO_GEN2 7 |
|
Bitmap definition of the destination type at the nextRoute command
|
#define | PASAHO_NR_DEST_PKTDMA PASAHO_NR_DEST_PKTDMA_GEN1 |
#define | PASAHO_NR_DEST_ETH PASAHO_NR_DEST_ETH_GEN1 |
#define | PASAHO_NR_DEST_SRIO PASAHO_NR_DEST_SRIO_GEN1 |
|
Macros used by the PASAHO Next Route Command
|
#define | PASAHO_SET_N(x, v) PASAHO_SET_BITFIELD((x)->word0, (v), 28, 1) |
#define | PASAHO_SET_E(x, v) PASAHO_SET_BITFIELD((x)->word0, (v), 27, 1) |
#define | PASAHO_SET_DEST(x, v) PASAHO_SET_BITFIELD((x)->word0, (v), 24, 3) |
#define | PASAHO_SET_FLOW(x, v) PASAHO_SET_BITFIELD((x)->word0, (v), 16, 8) |
#define | PASAHO_SET_QUEUE(x, v) PASAHO_SET_BITFIELD((x)->word0, (v), 0, 16) |
#define | PASAHO_SET_PKTTYPE(x, v) PASAHO_SET_BITFIELD((x)->word1, (v), 24, 8) |
#define | PASAHO_SET_TX_PADDING(x, v) PASAHO_SET_BITFIELD((x)->word1, (v), 0, 1) |
#define | PASAHO_SET_TX_STATS(x, v) PASAHO_SET_BITFIELD((x)->word1, (v), 1, 1) |
#define | PASAHO_SET_USR_STATS_INDEX(x, v) PASAHO_SET_BITFIELD((x)->word1, (v), 8, 16) |
|
Macros used by the ASAHO Checksum/CRC Command
|
#define | PASAHO_CHKCRC_SET_NEG0(x, v) PASAHO_SET_BITFIELD((x)->word0, (v), 23, 1) |
#define | PASAHO_CHKCRC_SET_CTRL(x, v) PASAHO_SET_BITFIELD((x)->word0, (v), 16, 4) |
#define | PASAHO_CHKCRC_SET_CRCSIZE(x, v) PASAHO_SET_BITFIELD((x)->word0, (v), 8, 8) |
#define | PASAHO_CHKCRC_SET_START(x, v) PASAHO_SET_BITFIELD((x)->word0, (v), 0, 8) |
#define | PASAHO_CHKCRC_SET_LEN(x, v) PASAHO_SET_BITFIELD((x)->word1, (v), 16, 16) |
#define | PASAHO_CHKCRC_SET_RESULT_OFF(x, v) PASAHO_SET_BITFIELD((x)->word1, (v), 0, 16) |
#define | PASAHO_CHKCRC_SET_INITVAL(x, v) PASAHO_SET_BITFIELD((x)->word2, (v), 16, 16) |
#define | PASAHO_CHKCRC_SET_INITVAL32(x, v) (x)->word2 = (v) |
|
Macros used by the PASAHO Blind Patch Command
|
#define | PASAHO_BPATCH_SET_PATCH_NBYTES(x, v) PASAHO_SET_BITFIELD((x)->word0, v, 24, 5) |
#define | PASAHO_BPATCH_SET_PATCH_CMDSIZE(x, v) PASAHO_SET_BITFIELD((x)->word0, v, 20, 4) |
#define | PASAHO_BPATCH_SET_OVERWRITE(x, v) PASAHO_SET_BITFIELD((x)->word0, v, 19, 1) |
#define | PASAHO_BPATCH_SET_DELETE(x, v) PASAHO_SET_BITFIELD((x)->word0, v, 18, 1) |
#define | PASAHO_BPATCH_SET_OFFSET(x, v) PASAHO_SET_BITFIELD((x)->word0, v, 0, 16) |
#define | PASAHO_BPATCH_SET_PATCH_BYTE(x, byteNum, byte) PASAHO_SET_BITFIELD((x)->patch[(byteNum) >> 2], byte, ((3 - (byteNum & 0x3)) << 3), 8) |
|
Macros used by the PASAHO Report Timestamp Command
|
#define | PASAHO_SET_REPORT_FLOW(x, v) PASAHO_SET_BITFIELD((x)->word0, (v), 16, 8) |
#define | PASAHO_SET_REPORT_QUEUE(x, v) PASAHO_SET_BITFIELD((x)->word0, (v), 0, 16) |
|
Macros used by the PASAHO IP Fragmentation Command
|
#define | PASAHO_SET_SUB_CODE_IP_FRAG(x) PASAHO_SET_BITFIELD((x)->word0, PASAHO_SUB_CMD_IP_FRAG, 24, 5) |
#define | PASAHO_SET_SUB_CODE(x, v) PASAHO_SET_BITFIELD((x)->word0, (v), 24, 5) |
#define | PASAHO_SET_IP_OFFSET(x, v) PASAHO_SET_BITFIELD((x)->word0, (v), 16, 8) |
#define | PASAHO_SET_MTU_SIZE(x, v) PASAHO_SET_BITFIELD((x)->word0, (v), 0, 16) |
|
Macros used by the PASAHO Message Length Patching Command
|
#define | PASAHO_SET_SUB_CODE_PATCH_MSG_LEN(x) PASAHO_SET_BITFIELD((x)->word0, PASAHO_SUB_CMD_PATCH_MSG_LEN, 24, 5) |
#define | PASAHO_SET_MSGLEN_OFFSET(x, v) PASAHO_SET_BITFIELD((x)->word0, (v), 16, 8) |
#define | PASAHO_SET_MSGLEN_SIZE(x, v) PASAHO_SET_BITFIELD((x)->word0, (v), 15, 1) |
#define | PASAHO_SET_MSGLEN(x, v) PASAHO_SET_BITFIELD((x)->word0, (v), 0, 15) |
|
Bitmap definition of the control bitmap at the Egress Flow operation info.
|
#define | PASAHO_HDR_EF_OP_CTRL_FC (1 << 15) |
#define | PASAHO_HDR_EF_OP_CTRL_LVL4_REC (1 << 7) |
#define | PASAHO_HDR_EF_OP_CTRL_LVL3_REC (1 << 6) |
#define | PASAHO_HDR_EF_OP_CTRL_LVL2_REC (1 << 5) |
#define | PASAHO_HDR_EF_OP_CTRL_LVL1_REC (1 << 4) |
|
Macros used by the PASAHO Egress Flow Operation Command
|
#define | PASAHO_EF_OP_SET_CTRL(x, v) PASAHO_SET_BITFIELD((x)->word0,(v), 8, 16) |
#define | PASAHO_EF_OP_SET_CTRL_FC(x, v) PASAHO_SET_BITFIELD((x)->word0,(v), 23, 1) |
#define | PASAHO_EF_OP_SET_CTRL_LVL4(x, v) PASAHO_SET_BITFIELD((x)->word0,(v), 15, 1) |
#define | PASAHO_EF_OP_SET_CTRL_LVL3(x, v) PASAHO_SET_BITFIELD((x)->word0,(v), 14, 1) |
#define | PASAHO_EF_OP_SET_CTRL_LVL2(x, v) PASAHO_SET_BITFIELD((x)->word0,(v), 13, 1) |
#define | PASAHO_EF_OP_SET_CTRL_LVL1(x, v) PASAHO_SET_BITFIELD((x)->word0,(v), 12, 1) |
#define | PASAHO_EF_OP_SET_L2_OFFSET(x, v) PASAHO_SET_BITFIELD((x)->word1,(v),8,8) |
#define | PASAHO_EF_OP_SET_L3_OFFSET2(x, v) PASAHO_SET_BITFIELD((x)->word1,(v),0,8) |
#define | PASAHO_EF_OP_SET_L3_OFFSET(x, v) PASAHO_SET_BITFIELD((x)->word2,(v),24,8) |
#define | PASAHO_EF_OP_SET_IPSEC_OFFSET(x, v) PASAHO_SET_BITFIELD((x)->word2,(v),0, 8) |
#define | PASAHO_EF_OP_SET_END_OFFSET(x, v) PASAHO_SET_BITFIELD((x)->word1,(v),16,16) |
#define | PASAHO_EF_OP_SET_LVL1_REC(x, v) PASAHO_SET_BITFIELD((x)->word3,(v),24, 8) |
#define | PASAHO_EF_OP_SET_LVL2_REC(x, v) PASAHO_SET_BITFIELD((x)->word3,(v),16, 8) |
#define | PASAHO_EF_OP_SET_LVL3_REC(x, v) PASAHO_SET_BITFIELD((x)->word3,(v), 8, 8) |
#define | PASAHO_EF_OP_SET_LVL4_REC(x, v) PASAHO_SET_BITFIELD((x)->word3,(v), 0, 8) |
Typedefs |
typedef struct pasahoCmdInfo_s | pasahoCmdInfo_t |
| pasahoCmdInfo_t defines the general short command information
|
typedef struct pasahoLongInfo_s | pasahoLongInfo_t |
| pasahoLongInfo_t defines the packet parsing information in the long format. The information is structured as an array of 32 bit values. These values are broken down through macros. This allows the representation to be endian independent to the hardware which operates only on 32 bit values.
|
typedef struct pasahoShortInfo_s | pasahoShortInfo_t |
| pasahoShortInfo_t defines the packet parsing information in the short format
|
typedef struct pasahoNextRoute_s | pasahoNextRoute_t |
| pasahoNextRoute_t defines the next route command. The command structure is defined as 32 bit values to work with the hardware regardless of the device endianness.
|
typedef struct pasahoComChkCrc_s | pasahoComChkCrc_t |
| pasahoComChkCrc_t defines the checksum and CRC generation command. The command structure is defined as 32 bit values to wrok with the hardware regardless of the device endianness.
|
typedef struct
pasahoReportTimestamp_s | pasahoReportTimestamp_t |
| pasahoReportTimestamp_t defines the report timestamp command. The command structure is defined as 32 bit values to work with the hardware regardless of the device endianness.
|
typedef struct pasahoIpFrag_s | pasahoIpFrag_t |
| pasahoIpFrag_t defines the IP Fragmentation command. The command structure is defined as 32 bit values to work with the hardware regardless of the device endianness.
|
typedef struct pasahoPatchMsgLen_s | pasahoPatchMsgLen_t |
| pasahoPatchMsgLen_t defines the message length patching command. The command structure is defined as 32 bit values to work with the hardware regardless of the device endianness.
|
typedef struct pasahoEfOp_s | pasahoComEfOp_t |
| pasahoEfOp_t defines the egress flow operation command which is used to instruct PASS to perform optional flow cache lookup and egress packet modification according to the associated egress flow records. The command structure is defined as 32 bit values to wrok with the hardware regardless of the device endianness.
|
Enumerations |
|
Definition of protocol header types used at the PASS PDSP Firmwase. In the long info field these values specify what the next header type will be at the next parse offset
|
enum | pasaho_HeaderType_e {
PASAHO_HDR_MAC = 0,
PASAHO_HDR_VLAN,
PASAHO_HDR_MPLS,
PASAHO_HDR_IPv4,
PASAHO_HDR_IPv6,
PASAHO_HDR_IPv6_EXT_HOP,
PASAHO_HDR_IPv6_EXT_ROUTE,
PASAHO_HDR_IPv6_EXT_FRAG,
PASAHO_HDR_IPv6_EXT_DEST,
PASAHO_HDR_GRE,
PASAHO_HDR_ESP,
PASAHO_HDR_ESP_DECODED,
PASAHO_HDR_AUTH,
PASAHO_HDR_CUSTOM_C1,
PASAHO_HDR_PPPoE,
PASAHO_HDR_SCTP,
PASAHO_HDR_UNKNOWN,
PASAHO_HDR_UDP,
PASAHO_HDR_UDP_LITE,
PASAHO_HDR_TCP,
PASAHO_HDR_GTPU,
PASAHO_HDR_ESP_DECODED_C2,
PASAHO_HDR_CUSTOM_C2
} |
|
Definition of the 5-bit sub-command codes which is used to specify the group 7 commands.
|
enum | pasaho_SubCmdCode_e { PASAHO_SUB_CMD_DUMMY = 0,
PASAHO_SUB_CMD_IP_FRAG,
PASAHO_SUB_CMD_PATCH_MSG_LEN
} |
|
Definition of the MAC or IP packet types.
|
enum | pasaho_pktType_e { PASAHO_PKT_TYPE_UNICAST = 0,
PASAHO_PKT_TYPE_BROADCAST,
PASAHO_PKT_TYPE_MULTICAST
} |
This file defines constants, data structures and macros used among the PA LLD, SA LLD and the host.
- NOTE: (C) Copyright 2009-2013 Texas Instruments, Inc.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
Neither the name of Texas Instruments Incorporated nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.