]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - keystone-rtos/pa-lld.git/blobdiff - pasahost.h
NOTICE OF RELOCATION
[keystone-rtos/pa-lld.git] / pasahost.h
old mode 100755 (executable)
new mode 100644 (file)
index 0750e22..e490b05
-#ifndef _PASAHOST_H\r
-#define _PASAHOST_H\r
-/**\r
- *   @file  pasahost.h\r
- *\r
- *   @brief   \r
- *      This file defines constants, data structures and macros used\r
- *      among the PA LLD, SA LLD and the host.  \r
- *\r
- *  \par\r
- *  NOTE:\r
- *      (C) Copyright 2009-2010 Texas Instruments, Inc.\r
- * \r
- *  Redistribution and use in source and binary forms, with or without \r
- *  modification, are permitted provided that the following conditions \r
- *  are met:\r
- *\r
- *    Redistributions of source code must retain the above copyright \r
- *    notice, this list of conditions and the following disclaimer.\r
- *\r
- *    Redistributions in binary form must reproduce the above copyright\r
- *    notice, this list of conditions and the following disclaimer in the \r
- *    documentation and/or other materials provided with the   \r
- *    distribution.\r
- *\r
- *    Neither the name of Texas Instruments Incorporated nor the names of\r
- *    its contributors may be used to endorse or promote products derived\r
- *    from this software without specific prior written permission.\r
- *\r
- *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \r
- *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT \r
- *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\r
- *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT \r
- *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, \r
- *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT \r
- *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r
- *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r
- *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT \r
- *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE \r
- *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
- *\r
-*/\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-/** @defgroup pasaho_if_module PA/SA/Host Interface\r
- *  @{\r
- */\r
-/** @} */\r
-\r
-/** @defgroup pasaho_if_macros PA/SA/Host Macros\r
- *  @ingroup pasaho_if_module\r
- */\r
-\r
-/** @defgroup pasaho_if_structures PA/SA/Host Data Structures\r
- *  @ingroup pasaho_if_module\r
- */\r
-\r
-/** @defgroup pasaho_if_constants PA/SA/Host Constants (enum's and define's)\r
- *  @ingroup pasaho_if_module\r
- */\r
-\r
-\r
-\r
-/**\r
- *  @defgroup pasahoCommands PA/SA/Host Commands\r
- *  @ingroup pasaho_if_constants\r
- *  @{\r
- *\r
- *  @name PA/SA/Host Commands\r
- *\r
- *  Define PASS Firmware Commands\r
- *  These values are placed in the 3 msbits of the protocol specific information\r
- */\r
-/*@{*/\r
-/**\r
- *  @def  PASAHO_CONFIGURE\r
- *        PA/SA Configuration command\r
- */\r
-\r
-#define PASAHO_CONFIGURE                       4\r
-\r
-/* PA commands for receive packet PDSPs */\r
-/**\r
- *  @def  PASAHO_PARX_PARSECMD\r
- *        Instruct PDSP to parse the receive packet\r
- */\r
-\r
-#define PASAHO_PARX_PARSECMD           0\r
-\r
-/**\r
- *  @def  PASAHO_PARX_MULTI_ROUTE\r
- *        Instruct PDSP to perform multiple routing\r
- */\r
-\r
-#define PASAHO_PARX_MULTI_ROUTE        5\r
-\r
-/* PA commands for modify packet PDSPs */\r
-/**\r
- *  @def  PASAHO_PAMOD_CMPT_CHKSUM\r
- *        Instruct PDSP to compute checksum\r
- */\r
-\r
-#define PASAHO_PAMOD_CMPT_CHKSUM       0\r
-\r
-/**\r
- *  @def  PASAHO_PAMOD_CMPT_CRC\r
- *        Instruct PDSP to compute CRC\r
- */\r
-\r
-#define PASAHO_PAMOD_CMPT_CRC          1\r
-\r
-/**\r
- *  @def  PASAHO_PAMOD_PATCH\r
- *        Instruct PDSP to perform blind patch\r
- */\r
-\r
-#define PASAHO_PAMOD_PATCH                     2\r
-\r
-/**\r
- *  @def  PASAHO_PAMOD_NROUTE\r
- *        Provide PDSP with the next routing information\r
- */\r
-\r
-#define PASAHO_PAMOD_NROUTE                    3\r
-\r
-\r
-/**\r
- *  @def  PASAHO_PAMOD_MULTI_ROUTE\r
- *        Instruct PDSP to perform multiple routing\r
- */\r
-\r
-#define PASAHO_PAMOD_MULTI_ROUTE       5\r
-\r
-/**\r
- *  @def  PASAHO_PAMOD_REPORT_TIMESTAMP\r
- *        Instruct PDSP to report the system timestamp at the timestamp field of the packet descriptor \r
- *        when the tx packet is delivered out of the PASS \r
- */\r
-\r
-#define PASAHO_PAMOD_REPORT_TIMESTAMP  6   \r
-\r
-\r
-/**\r
- *  @def  PASAHO_PAMOD_GROUP_7\r
- *        Define this group command so that several command can share the same command code. They will be distinguished\r
- *        by its unique 5-bit sub-command code as defined at\r
- */\r
-\r
-#define PASAHO_PAMOD_GROUP_7        7   \r
-\r
-\r
-/**\r
- *  @def  PASAHO_PAMOD_DUMMY\r
- *        No action is required. It is for SA alignment only\r
- */\r
-\r
-#define PASAHO_PAMOD_DUMMY                     PASAHO_PAMOD_GROUP_7\r
-\r
-/**\r
- *  @def  PASAHO_PAMOD_IP_FRAGMENT\r
- *        Instruct PDSP to perform IPv4 fragmentation. The transmit IP packets will be divided into smaller \r
- *        IP fragments with the updated IPv4 header and checksum based on the specified MTU size and forwarded \r
- *        to the destination specified by the next route command. It is up to the module user to format the\r
- *        correct IPv4 header. The IP fragmentation command will be ignored if any error is detected.\r
- */\r
-#define PASAHO_PAMOD_IP_FRAGMENT    PASAHO_PAMOD_GROUP_7   \r
-\r
-\r
-/* SA commands */\r
-/**\r
- *  @def  PASAHO_SA_LONG_INFO\r
- *        Provide SA with the packet parsing information in the long form\r
- */\r
-\r
-#define PASAHO_SA_LONG_INFO         0\r
-\r
-/**\r
- *  @def  PASAHO_SA_SHORT_INFO\r
- *        Provide SA with the packet parsing information in the short form\r
- */\r
-\r
-#define PASAHO_SA_SHORT_INFO        1\r
-\r
-\r
-/**\r
- *  @def  PASAHO_SA_AIR_INFO\r
- *        Provide SA with the packet parsing information for the air ciphering \r
- *        operation\r
- */\r
-\r
-#define PASAHO_SA_AIR_INFO          2\r
-\r
-\r
-/*@}*/\r
-/** @} */\r
-\r
-/** @name PASAHO Common Macros\r
- *  \r
- */\r
-/*@{*/\r
-\r
-/**\r
- *  @ingroup pasaho_if_macros\r
- *  @brief  PASAHO_READ_BITFIELD is used to read the specific bit fields\r
- *\r
- *  @details  It is one of the main macros for accessing configuration bit fields\r
- *            Input parameter a contains bit field\r
- *            b is bit offset withing bit field\r
- *            c is number of bits used by that parameter\r
- */\r
-\r
-#define PASAHO_READ_BITFIELD(a,b,c)    (((a)>>(b)) & ((1UL<<(c))-1))\r
-\r
-/**\r
- *  @ingroup ingroup pasaho_if_macros\r
- *  @brief  PASAHO_SET_BITFIELD is used to set the specific bit fields\r
- *\r
- *  @details  It is one of the main macros for accessing configuration bit fields\r
- *            Input parameter a contains bit field\r
- *            b is bit offset withing bit field\r
- *            c is number of bits used by that parameter\r
- *            x is new value of parameter that is packed in this bit field\r
- *\r
- *  @note    It enforces strict setting to prevent overflow into other bits, would\r
- *           cost program space for additional protection. \r
- */\r
-\r
-#define PASAHO_SET_BITFIELD(a,x,b,c)   (a) &= ~(((1UL<<(c))-1)<<(b)), \\r
-                                       (a) |= (((x) & ((1UL<<(c))-1))<<(b))\r
-\r
-/**\r
- *  @ingroup ingroup pasaho_if_macros\r
- *  @brief  PASAHO_SET_CMDID is used to set the command ID\r
- */\r
-#define PASAHO_SET_CMDID(x,v)  ((x)->word0) = PASAHO_SET_BITFIELD((x)->word0, (v), 29,3)\r
-\r
-/**\r
- *  @ingroup ingroup pasaho_if_macros\r
- *  @brief  PASAHO_PACFG_CMD is used to set the PA configuration command only\r
- */\r
-#define PASAHO_PACFG_CMD        (((uint32_t)PASAHO_CONFIGURE << 5) << 24)\r
-\r
-/*@}*/ /* @name PASAHO Common Macros */\r
-\r
-\r
-/**\r
- *  @defgroup pasahoHeaderTypes PASS Header Types\r
- *  @ingroup pasaho_if_constants\r
- *  @{\r
- *\r
- *  @name PASS Header Types\r
- *  Definition of protocol header types used at the PASS PDSP Firmwase. In the \r
- *  long info field these values specify what the next header type will be\r
- *  at the next parse offset \r
- */ \r
-/*@{*/\r
-\r
-typedef enum {\r
-\r
-  PASAHO_HDR_MAC        = 0,        /**< MAC */\r
-  PASAHO_HDR_VLAN,                  /**< VLAN */\r
-  PASAHO_HDR_MPLS,                  /**< MPLS */\r
-  PASAHO_HDR_IPv4,                  /**< IPv4 */\r
-  PASAHO_HDR_IPv6,                  /**< IPv6 */\r
-  PASAHO_HDR_IPv6_EXT_HOP,          /**< IPv6 hop by hop extenstion header */\r
-  PASAHO_HDR_IPv6_EXT_ROUTE,        /**< IPv6 routing extenstion header */\r
-  PASAHO_HDR_IPv6_EXT_FRAG,         /**< IPv6 fragmentation extention header */\r
-  PASAHO_HDR_IPv6_EXT_DEST,         /**< IPv6 destination options header */\r
-  PASAHO_HDR_GRE,                   /**< Generic Routing Encapsulation header */\r
-  PASAHO_HDR_ESP,                   /**< Encapsulating Security Payload header */\r
-  PASAHO_HDR_ESP_DECODED,           /**< Decoded Encapsulating Security Payload header */\r
-  PASAHO_HDR_AUTH,                  /**< Authentication header */\r
-  PASAHO_HDR_CUSTOM_C1,             /**< Custom classify 1 header */\r
-  PASAHO_HDR_FORCE_LOOKUP,          /**< A contrived header type used with custom SRIO to force\r
-                                       * a parse after looking at only the SRIO L0-L2 */\r
-  PASAHO_HDR_UNKNOWN,               /**< Next header type is unknown */\r
-  PASAHO_HDR_UDP,                   /**< User Datagram Protocol header */\r
-  PASAHO_HDR_UDP_LITE,              /**< Lightweight User Datagram Protocol header */\r
-  PASAHO_HDR_TCP,                   /**< Transmission Control Protocol header */\r
-  PASAHO_HDR_CUSTOM_C2              /**< Custom classify 2 header */\r
\r
-} pasaho_HeaderType_e;\r
-/*@}*/\r
-/** @} */\r
-\r
-/**\r
- *  @defgroup pasahoSubCmdCode PASS Sub-Command Code\r
- *  @ingroup pasaho_if_constants\r
- *  @{\r
- *\r
- *  @name PASS Sub-Command Code\r
- *  Definition of the 5-bit sub-command codes which is used to specify the group 7 commands. \r
- */ \r
-/*@{*/\r
-\r
-typedef enum {\r
-\r
-  PASAHO_SUB_CMD_DUMMY        = 0,   /**< Dummy */\r
-  PASAHO_SUB_CMD_IP_FRAG             /**< IPv4 fragmentation */\r
-} pasaho_SubCmdCode_e;\r
-/*@}*/\r
-/** @} */\r
-\r
-\r
-/**\r
- *  @ingroup pasaho_if_structures\r
- *  @brief  pasahoCmdInfo_t defines the general short command information\r
- *\r
- */\r
-\r
-typedef struct pasahoCmdInfo_s {\r
-    uint32_t  word0;    /**< Control block word 0 */\r
-} pasahoCmdInfo_t;\r
-\r
-/**\r
- *  @ingroup pasaho_if_structures\r
- *  @brief  pasahoLongInfo_t defines the packet parsing information in the long format. \r
- *          The information is structured as an array of 32 bit values. These values\r
- *          are broken down through macros. This allows the representation to be\r
- *          endian independent to the hardware which operates only on 32 bit values.\r
- *\r
- *  @details  \r
- */\r
-\r
-typedef struct pasahoLongInfo_s  {\r
-\r
-  uint32_t   word0;  /**< Control block word 0 */\r
-  uint32_t   word1;  /**< Control block word 1 */\r
-  uint32_t   word2;  /**< Control block word 2 */\r
-  uint32_t   word3;  /**< Control block word 3 */\r
-  uint32_t   word4;  /**< Control block word 4 */\r
-  \r
-} pasahoLongInfo_t;\r
-\r
-/** \r
- *  @defgroup PASAHO_long_info_command_macros  PASAHO Long Info Command Macros\r
- *  @ingroup pasaho_if_macros\r
- *  @{\r
- *  @name PASAHO Long Info Command Macros\r
- *  Macros used by the PASAHO Long Info Command\r
- */\r
-/*@{*/\r
-\r
-\r
-#define PASAHO_LINFO_READ_CMDID(x)          PASAHO_READ_BITFIELD((x)->word0,29,3)    /**< Extract the command ID defined at @ref pasahoCommands */\r
-#define PASAHO_LINFO_READ_RECLEN(x)         PASAHO_READ_BITFIELD((x)->word0,24,5)    /**< Extract the block length */\r
-#define PASAHO_LINFO_READ_START_OFFSET(x)   PASAHO_READ_BITFIELD((x)->word0,0,16)    /**< Extract the next parse start offset */\r
-\r
-#define PASAHO_LINFO_READ_END_OFFSET(x)     PASAHO_READ_BITFIELD((x)->word1,16,16)   /**< Extract the end of packet parse offset */\r
-#define PASAHO_LINFO_READ_EIDX(x)           PASAHO_READ_BITFIELD((x)->word1,11,5)    /**< Extract the error index */\r
-#define PASAHO_LINFO_READ_PMATCH(x)         PASAHO_READ_BITFIELD((x)->word1,10,1)    /**< Extract the previous match flag */\r
-#define PASAHO_LINFO_READ_C2C(x)            PASAHO_READ_BITFIELD((x)->word1,9,1)     /**< Extract the custom classify flag */\r
-#define PASAHO_LINFO_READ_L1_PDSP_ID(x)     PASAHO_READ_BITFIELD((x)->word1,6,3)     /**< Extract the first parse module ID */\r
-#define PASAHO_LINFO_READ_L1_IDX(x)         PASAHO_READ_BITFIELD((x)->word1,0,6)     /**< Extract the first parse module match index */\r
-\r
-#define PASAHO_LINFO_READ_L3_OFFSET(x)      PASAHO_READ_BITFIELD((x)->word2,24,8)    /**< Extract the offset to the level 3 header */\r
-#define PASAHO_LINFO_READ_L4_OFFSET(x)      PASAHO_READ_BITFIELD((x)->word2,16,8)    /**< Extract the offset to the level 4 header */\r
-#define PASAHO_LINFO_READ_L5_OFFSET(x)      PASAHO_READ_BITFIELD((x)->word2,8,8)     /**< Extract the offset to the level 5 header */\r
-#define PASAHO_LINFO_READ_ESP_AH_OFFSET(x)  PASAHO_READ_BITFIELD((x)->word2,0,8)     /**< Extract the offset to the security header */\r
-\r
-#define PASAHO_LINFO_READ_HDR_BITMASK(x)    PASAHO_READ_BITFIELD((x)->word3,21,11)   /**< Extract the bitmask of parsed header types */\r
-#define PASAHO_LINFO_READ_NXT_HDR_TYPE(x)   PASAHO_READ_BITFIELD((x)->word3,16,5)    /**< Extract the next header to parse type */\r
-#define PASAHO_LINFO_READ_VLAN_COUNT(x)     PASAHO_READ_BITFIELD((x)->word3,12,4)    /**< Extract the number of VLAN tags found */\r
-#define PASAHO_LINFO_READ_IP_COUNT(x)       PASAHO_READ_BITFIELD((x)->word3,8,4)     /**< Extract the number of IP headers found */\r
-#define PASAHO_LINFO_READ_GRE_COUNT(x)      PASAHO_READ_BITFIELD((x)->word3,4,4)     /**< Extract the number of GRE headers found */\r
-#define PASAHO_LINFO_READ_FLAG_FRAG(x)      PASAHO_READ_BITFIELD((x)->word3,3,1)     /**< Extract the fragmentation found flag */\r
-#define PASAHO_LINFO_READ_FLAG_ROUTE(x)     PASAHO_READ_BITFIELD((x)->word3,2,1)     /**< Extract the incomplete IP route flag */\r
-\r
-#define PASAHO_LINFO_READ_PSEUDO_CHKSM(x)   PASAHO_READ_BITFIELD((x)->word4,16,16)   /**< Extract the last pseudo-header checksum computed */\r
-\r
-/*@}*/ /* PASAHO_long_info_command_macros */\r
-/** @}*/ /* @name PASAHO Long Info Command Macros */\r
-\r
-/**\r
- *  @defgroup PASAHO_long_info_ipReassm_macros  PASAHO Long Info IP Reassembly Macros\r
- *  @ingroup pasaho_if_macros\r
- *  @{\r
- *  @name PASAHO Long Info IpReassm Macros\r
- *  Macros used by the PASAHO PASS-assisted IP Reassembly Operation\r
- *\r
- */\r
-#define PASAHO_LINFO_READ_TFINDEX(x)        PASAHO_READ_BITFIELD((x)->word4,24,8)     /**< Extract the IP Reassembly Traffic Flow Index */\r
-#define PASAHO_LINFO_READ_FRANCNT(x)        PASAHO_READ_BITFIELD((x)->word4,16,8)     /**< Extract the IP Reassembly Fragment count */\r
-\r
-#define PASAHO_LINFO_SET_TFINDEX(x, v)      PASAHO_SET_BITFIELD((x)->word4,(v),24,8)  /**< Set the IP Reassembly Traffic Flow Index */\r
-#define PASAHO_LINFO_SET_FRANCNT(x, v)      PASAHO_SET_BITFIELD((x)->word4,(v),16,8)  /**< Set the IP Reassembly Fragment count */\r
-\r
-#define PASAHO_LINFO_IS_IPSEC(x)            PASAHO_READ_BITFIELD((x)->word3,25,2)     /**< Indicate whether it is an IPSEC packet */\r
-#define PASAHO_LINFO_IS_IPSEC_ESP(x)        PASAHO_READ_BITFIELD((x)->word3,26,1)     /**< Indicate whether it is an IPSEC ESP packet */\r
-#define PASAHO_LINFO_IS_IPSEC_AH(x)         PASAHO_READ_BITFIELD((x)->word3,25,1)     /**< Indicate whether it is an IPSEC AH packet */\r
-#define PASAHO_LINFO_CLR_IPSEC(x)           PASAHO_SET_BITFIELD((x)->word3,0,25,2)    /**< Clear IPSEC indication bits */\r
-#define PASAHO_LINFO_CLR_IPSEC_ESP(x)       PASAHO_SET_BITFIELD((x)->word3,0,26,1)    /**< Clear IPSEC ESP indication bit */\r
-#define PASAHO_LINFO_CLR_IPSEC_AH(x)        PASAHO_SET_BITFIELD((x)->word3,0,25,1)    /**< Claer IPSEC AH indication bit */\r
-#define PASAHO_LINFO_CLR_FLAG_FRAG(x)       PASAHO_SET_BITFIELD((x)->word3,0,3,1)     /**< Clear the fragmentation found flag */\r
-\r
-\r
-#define PASAHO_LINFO_SET_START_OFFSET(x, v) PASAHO_SET_BITFIELD((x)->word0,(v),0,16)  /**< Update the next parse start offset */\r
-#define PASAHO_LINFO_SET_END_OFFSET(x, v)   PASAHO_SET_BITFIELD((x)->word1,(v),16,16) /**< Update the end of packet parse offset */\r
-\r
-#define PASAHO_LINFO_SET_NULL_PKT_IND(x, v) PASAHO_SET_BITFIELD((x)->word0,(v),21,1)  /**< Set the null packet flag which indicates that the packet should be dropped. \r
-                                                                                           This flag should be set for the null packet to be delivered to PASS when\r
-                                                                                           the reassembly timeout occurs    */\r
-/*@}*/ /* PASAHO_long_info_ipReassm_macros */\r
-/** @}*/ /* @name PASAHO Long Info IpReassm Macros */\r
-\r
-/**\r
- *  @def  PA_INV_TF_INDEX\r
- *        PASS-asssited IP reassembly traffic flow index to indicate that no traffic flow is available \r
- */\r
-#define PA_INV_TF_INDEX     0xFF    \r
-\r
-/**\r
- *  @ingroup pasaho_if_structures\r
- *  @brief  pasahoShortInfo_t defines the packet parsing information in the short format\r
- *\r
- *  @details pasahoShortInfo_t defines the packet parsing information in terms of\r
- *           payload offset and payload length as described below\r
- *           SRTP:      offset to the RTP header; RTP payload length including ICV\r
- *           IPSEC AH:  offset to the Outer IP; IP payload length\r
- *           IPSEC ESP: offset to the ESP header; ESP papload length including ICV\r
- */\r
-\r
-typedef struct pasahoShortInfo_s {\r
-    uint32_t  word0;    /**< Control block word 0 */\r
-} pasahoShortInfo_t;\r
-\r
-/** \r
- *  @defgroup PASAHO_short_info_command_macros  PASAHO Short Info Command Macros\r
- *  @ingroup pasaho_if_macros\r
- *  @{\r
- *  @name PASAHO Short Info Command Macros\r
- *  Macros used by the PASAHO Short Info Command\r
- *  \r
- */\r
-/*@{*/\r
-\r
-#define PASAHO_SINFO_READ_CMDID(x)          PASAHO_READ_BITFIELD((x)->word0,29,3)                           /**< Extract the command ID defined at @ref pasahoCommands */\r
-#define PASAHO_SINFO_RESD_PAYLOAD_OFFSET(x) PASAHO_READ_BITFIELD((x)->word0,16,8)                           /**< Extract the offset to the packet payload */\r
-#define PASAHO_SINFO_READ_PAYLOAD_LENGTH(x) PASAHO_READ_BITFIELD((x)->word0,0,16)                           /**< Extract the byte length of the payload */\r
-\r
-#define PASAHO_SINFO_SET_PAYLOAD_OFFSET(x, v)  ((x)->word0) = PASAHO_SET_BITFIELD((x)->word0, (v), 16, 8)   /**< Set the offset to the payload */\r
-#define PASAHO_SINFO_SET_PAYLOAD_LENGTH(x, v)  ((x)->word0) = PASAHO_SET_BITFIELD((x)->word0, (v), 0,  16)  /**< Set the payload length */\r
-#define PASAHO_SINFO_FORMAT_CMD(offset, len)   (((offset) << 16) | (len) | (PASAHO_SA_SHORT_INFO << 29))    /**< Format the entire short info command */\r
-\r
-/*@}*/ /* PASAHO_short_info_command_macros */\r
-/** @}*/ /* @name PASAHO Short Info Command Macros */\r
-\r
-\r
-/* Header bitmask bits */\r
-/**\r
- *  @defgroup pasahoHeaderBitmap  PA/SA/HO Header Bitmap Bit Definitions\r
- *  @ingroup pasaho_if_constants\r
- *  @{\r
- *\r
- *  @name PA/SA/HO Header Bitmap Bit Definitions\r
- *  Bitmap definition of the protocol header bitmask at the long info. \r
- */ \r
-/*@{*/\r
-\r
-#define PASAHO_HDR_BITMASK_MAC     (1 << 0)     /**< MAC present */\r
-#define PASAHO_HDR_BITMASK_VLAN    (1 << 1)     /**< VLAN present */\r
-#define PASAHO_HDR_BITMASK_MPLS    (1 << 2)     /**< MPLS present */\r
-#define PASAHO_HDR_BITMASK_IP      (1 << 3)     /**< IP present */\r
-#define PASAHO_HDR_BITMASK_ESP     (1 << 4)     /**< IPSEC/ESP present */\r
-#define PASAHO_HDR_BITMASK_AH      (1 << 5)     /**< IPSEC/AH present */\r
-#define PASAHO_HDR_BITMASK_UDP     (1 << 6)     /**< UDP present */\r
-#define PASAHO_HDR_BITMASK_UDPLITE (1 << 7)     /**< UDPLITE present */\r
-#define PASAHO_HDR_BITMASK_TCP     (1 << 8)     /**< TCP present */\r
-#define PASAHO_HDR_BITMASK_GRE     (1 << 9)     /**< GRE present */\r
-#define PASAHO_HDR_BITMASK_CUSTOM  (1 << 10)    /**< Custom header present */\r
-\r
-/*@}*/\r
-/** @} */\r
-\r
-\r
-/* Next Route command */\r
-/**\r
- *  @ingroup pasaho_if_structures\r
- *  @brief  pasahoNextRoute_t defines the next route command. The command structure is defined as 32 bit\r
- *          values to work with the hardware regardless of the device endianness.\r
- *\r
- *  @details \r
- */\r
-\r
-typedef struct pasahoNextRoute_s  {\r
-    uint32_t  word0;          /**< Contains the next route command information. @ref PASAHO_next_route_command_macros */\r
-    uint32_t  swInfo0;        /**< Information placed into returned descriptor. Used if next destination is the host */\r
-    uint32_t  swInfo1;        /**< Information placed into returned descriptor. Used if next destination is the host */\r
-    uint32_t  word1;          /**< Contains the optional information such as pktType for SRIO. @ref PASAHO_next_route_command_macros */\r
-} pasahoNextRoute_t;\r
-\r
-/** \r
- *  @defgroup PASAHO_next_route_command_macros  PASAHO Next Route Command Macros\r
- *  @ingroup pasaho_if_macros\r
- *  @{\r
- *  @name PASAHO Next Route Command Macros\r
- *  Macros used by the PASAHO Next Route Command\r
- *  \r
- */\r
-/*@{*/\r
-\r
-\r
-#define PASAHO_SET_N(x,v)       ((x)->word0) = PASAHO_SET_BITFIELD((x)->word0, (v), 28, 1)    /**< Sets the N bit which indicates the next command should be executed prior to the route command */\r
-#define PASAHO_SET_E(x,v)       ((x)->word0) = PASAHO_SET_BITFIELD((x)->word0, (v), 27, 1)    /**< Sets the E bit which indicates the extened parameters (packet type) are present for SRIO */\r
-#define PASAHO_SET_DEST(x,v)    ((x)->word0) = PASAHO_SET_BITFIELD((x)->word0, (v), 24, 3)    /**< Sets the destination of the route defined at @ref pktDest */\r
-#define PASAHO_SET_FLOW(x,v)    ((x)->word0) = PASAHO_SET_BITFIELD((x)->word0, (v), 16, 8)    /**< Specifies the flow to use for packets sent to the host */\r
-#define PASAHO_SET_QUEUE(x,v)   ((x)->word0) = PASAHO_SET_BITFIELD((x)->word0, (v), 0,  16)   /**< Specifies the queue to use for packets send to the host */\r
-#define PASAHO_SET_PKTTYPE(x,v) ((x)->word1) = PASAHO_SET_BITFIELD((x)->word1, (v), 24, 8)    /**< Specifies the packet type to use for packets send to the SRIO */\r
-\r
-/*@}*/ /* PASAHO_next_route_command_macros */\r
-/** @}*/ /* @name PASAHO Next Route Command Macros */\r
-\r
-\r
-/* Compute checksum command */\r
-/**\r
- *  @ingroup pasaho_if_structures\r
- *  @brief  pasahoComChkCrc_t defines the checksum and CRC generation command. The command structure is defined as\r
- *          32 bit values to wrok with the hardware regardless of the device endianness.\r
- *\r
- *  @details \r
- */\r
-\r
-typedef struct pasahoComChkCrc_s  {\r
-    uint32_t  word0;        /**<  @ref PASAHO_chksum_command_macros */\r
-    uint32_t  word1;        /**<  @ref PASAHO_chksum_command_macros */\r
-    uint32_t  word2;        /**<  @ref PASAHO_chksum_command_macros */\r
-\r
-} pasahoComChkCrc_t;\r
-\r
-/** \r
- *  @defgroup PASAHO_chksum_command_macros  PASAHO Checksum/CRC Command Macros\r
- *  @ingroup pasaho_if_macros\r
- *  @{\r
- *  @name PASAHO Checksum/CRC Command Macros\r
- *  Macros used by the ASAHO Checksum/CRC Command \r
- */\r
-/*@{*/\r
-\r
-\r
-#define PASAHO_CHKCRC_SET_NEG0(x,v)        ((x)->word0) = PASAHO_SET_BITFIELD((x)->word0, (v), 23, 1)           /**< Sets the negative 0 flag - if set a checksum computed as 0 will be sent as 0xffff */\r
-#define PASAHO_CHKCRC_SET_CTRL(x,v)        ((x)->word0) = PASAHO_SET_BITFIELD((x)->word0, (v), 16, 8)           /**< Sets the optional flags of the CRC/Checksum command */\r
-#define PASAHO_CHKCRC_SET_START(x,v)       ((x)->word0) = PASAHO_SET_BITFIELD((x)->word0, (v), 0,  16)          /**< Sets the start offset of the checksum/crc */\r
-#define PASAHO_CHKCRC_SET_LEN(x,v)         ((x)->word1) = PASAHO_SET_BITFIELD((x)->word1, (v), 16, 16)          /**< Sets the length of the checksum/crc */\r
-#define PASAHO_CHKCRC_SET_RESULT_OFF(x,v)  ((x)->word1) = PASAHO_SET_BITFIELD((x)->word1, (v), 0,  16)          /**< Sets the offset to where to paste the checksum/crc into the packet */\r
-#define PASAHO_CHKCRC_SET_INITVAL(x,v)     ((x)->word2) = PASAHO_SET_BITFIELD((x)->word2, (v), 16, 16)          /**< Sets the initial value of the checksum/crc */\r
-\r
-/*@}*/ /* @name PASAHO Checksum/CRC Command Macros */\r
-/** @}*/ /* PASAHO_chksum_command_macros */\r
-\r
-\r
-/* Blind patch command */\r
-/**\r
- *  @ingroup pasaho_if_structures\r
- *  @brief  pasahoComBlindPatch_t defines the blind patch command. The command structure is defined as\r
- *          32 bit values to work with the hardware regardless of the device endianness.\r
- *\r
- *  @details \r
- */\r
-\r
-#define PASAHO_BPATCH_MAX_PATCH_WORDS   4\r
-typedef struct pasahoComBlindPatch_s  {\r
-    uint32_t   word0;                                   /**<  @ref PASAHO_blind_patch_command_macros */\r
-    uint32_t   patch[PASAHO_BPATCH_MAX_PATCH_WORDS];    /**<  @ref PASAHO_blind_patch_command_macros */\r
-    \r
-} pasahoComBlindPatch_t;\r
-\r
-/** \r
- *  @defgroup PASAHO_blind_patch_command_macros  PASAHO Blind Patch Command Macros\r
- *  @ingroup pasaho_if_macros\r
- *  @{\r
- *  @name PASAHO Blind Patch Command Macros\r
- *  Macros used by the PASAHO Blind Patch Command\r
- */\r
-\r
-#define PASAHO_BPATCH_SET_PATCH_NBYTES(x,v)    ((x)->word0) = \\r
-                          PASAHO_SET_BITFIELD((x)->word0, v, 24,  5)\r
-/**< Sets the number of bytes to patch */\r
-                          \r
-#define PASAHO_BPATCH_SET_PATCH_CMDSIZE(x,v)   ((x)->word0) = \\r
-                          PASAHO_SET_BITFIELD((x)->word0, v, 20, 4)\r
-/**< Sets the size of the command in 32 bit word units */\r
-                          \r
-#define PASAHO_BPATCH_SET_OVERWRITE(x,v)       ((x)->word0) = \\r
-                          PASAHO_SET_BITFIELD((x)->word0, v, 19, 1)\r
-/**< Sets the overwrite flag. If set the patch will overwrite existing packet data, \r
-     otherwise data is inserted */                          \r
-                          \r
-#define PASAHO_BPATCH_SET_OFFSET(x,v)          ((x)->word0) = \\r
-                          PASAHO_SET_BITFIELD((x)->word0, v, 0,  16)\r
-/**< Sets the offset to the start of the patch */                          \r
-                          \r
-#define PASAHO_BPATCH_SET_PATCH_BYTE(x, byteNum, byte)  (x)->patch[(byteNum) >> 2] = \\r
-                                PASAHO_SET_BITFIELD((x)->patch[(byteNum) >> 2], byte, ((3 - (byteNum & 0x3)) << 3), 8)\r
-/**< Sets the data to patch */                                                   \r
-                                \r
-/*@}*/ /* @name PASAHO Blind Patch Command Macros */\r
-/** @}*/ /* PASAHO_blind_patch_command_macros */        \r
-\r
-/* Report Timestamp command */\r
-/**\r
- *  @ingroup pasaho_if_structures\r
- *  @brief  pasahoReportTimestamp_t defines the report timestamp command. The command structure is defined as 32 bit\r
- *          values to work with the hardware regardless of the device endianness.\r
- *\r
- *  @details \r
- */\r
-\r
-typedef struct pasahoReportTimestamp_s  {\r
-    uint32_t  word0;          /**< Contains the report timestamp command information. @ref PASAHO_report_timestamp_command_macros */\r
-    uint32_t  swInfo0;        /**< Information placed into returned descriptor of the reporting packet.  */\r
-} pasahoReportTimestamp_t;\r
-\r
-/** \r
- *  @defgroup PASAHO_report_timestamp_command_macros PASAHO Report Timestamp Command Macros\r
- *  @ingroup pasaho_if_macros\r
- *  @{\r
- *  @name PASAHO Report Timestamp Command Macros\r
- *  Macros used by the PASAHO Report Timestamp Command\r
- *  \r
- */\r
-/*@{*/\r
-#define PASAHO_SET_REPORT_FLOW(x,v)    ((x)->word0) = PASAHO_SET_BITFIELD((x)->word0, (v), 16, 8)    /**< Specifies the flow to use for report packets sent to the host */\r
-#define PASAHO_SET_REPORT_QUEUE(x,v)   ((x)->word0) = PASAHO_SET_BITFIELD((x)->word0, (v), 0,  16)   /**< Specifies the queue to use for report packets send to the host */\r
-\r
-/*@}*/ /* @name PASAHO Report Timestamp Command Macros */\r
-/** @}*/ /* PASAHO_report_timestamp_command_macros */        \r
-\r
-/* IP Fragmentation command */\r
-/**\r
- *  @ingroup pasaho_if_structures\r
- *  @brief  pasahoIpFrag_t defines the IP Fragmentation command. The command structure is defined as 32 bit\r
- *          values to work with the hardware regardless of the device endianness.\r
- *\r
- *  @details \r
- */\r
-\r
-typedef struct pasahoIpFrag_s  {\r
-    uint32_t  word0;          /**< Contains the ip fragmentation command information. @ref PASAHO_ip_frag_command_macros */\r
-} pasahoIpFrag_t;\r
-\r
-/** \r
- *  @defgroup PASAHO_ip_frag_command_macros  PASAHO IP Fragmentation Command Macros\r
- *  @ingroup pasaho_if_macros\r
- *  @{\r
- *  @name PASAHO IP Fragmentation Command Macros\r
- *  Macros used by the PASAHO IP Fragmentation Command\r
- *  \r
- */\r
-/*@{*/\r
-\r
-#define PASAHO_SET_SUB_CODE_IP_FRAG(x) ((x)->word0) = PASAHO_SET_BITFIELD((x)->word0, PASAHO_SUB_CMD_IP_FRAG, 24, 5)    /**< Set sub-command code to indicate IP Fragmentation command */\r
-#define PASAHO_SET_SUB_CODE(x,v)  ((x)->word0) = PASAHO_SET_BITFIELD((x)->word0, (v), 24, 5)  /**< Specifies the sub-command code */\r
-#define PASAHO_SET_IP_OFFSET(x,v) ((x)->word0) = PASAHO_SET_BITFIELD((x)->word0, (v), 16, 8)  /**< Specifies the offset to the IP header to be fragmented */\r
-#define PASAHO_SET_MTU_SIZE(x,v)  ((x)->word0) = PASAHO_SET_BITFIELD((x)->word0, (v), 0,  16) /**< Specifies the MTU size */\r
-\r
-/*@}*/ /* @name PASAHO IP Fragmentation Command Macros */\r
-/** @}*/ /* PASAHO_ip_frag_command_macros */\r
-\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif  /* _PASAHO_H */\r
-\r
-\r
-\r
-  \r
-  \r
+#ifndef _PASAHOST_H
+#define _PASAHOST_H
+/**
+ *   @file  pasahost.h
+ *
+ *   @brief   
+ *      This file defines constants, data structures and macros used
+ *      among the PA LLD, SA LLD and the host.  
+ *
+ *  \par
+ *  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.
+ *
+*/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/** @defgroup pasaho_if_module PA/SA/Host Interface
+ *  @{
+ */
+/** @} */
+
+/** @defgroup pasaho_if_macros PA/SA/Host Macros
+ *  @ingroup pasaho_if_module
+ */
+
+/** @defgroup pasaho_if_structures PA/SA/Host Data Structures
+ *  @ingroup pasaho_if_module
+ */
+
+/** @defgroup pasaho_if_constants PA/SA/Host Constants (enum's and define's)
+ *  @ingroup pasaho_if_module
+ */
+
+
+/**
+ *  @defgroup pasahoCommands PA/SA/Host Commands
+ *  @ingroup pasaho_if_constants
+ *  @{
+ *
+ *  @name PA/SA/Host Commands
+ *
+ *  Define PASS Firmware Commands
+ *  These values are placed in the 3 msbits of the protocol specific information
+ */
+/*@{*/
+/**
+ *  @def  PASAHO_CONFIGURE
+ *        PA/SA Configuration command
+ */
+
+#define PASAHO_CONFIGURE                       4
+
+/* PA commands for receive packet PDSPs */
+/**
+ *  @def  PASAHO_PARX_PARSECMD
+ *        Instruct PDSP to parse the receive packet
+ */
+
+#define PASAHO_PARX_PARSECMD           0
+
+/**
+ *  @def  PASAHO_PARX_MULTI_ROUTE
+ *        Instruct PDSP to perform multiple routing
+ */
+
+#define PASAHO_PARX_MULTI_ROUTE        5
+
+/* PA commands for modify packet PDSPs */
+/**
+ *  @def  PASAHO_PAMOD_CMPT_CHKSUM
+ *        Instruct PDSP to compute checksum
+ */
+
+#define PASAHO_PAMOD_CMPT_CHKSUM       0
+
+/**
+ *  @def  PASAHO_PAMOD_CMPT_CRC
+ *        Instruct PDSP to compute CRC
+ */
+
+#define PASAHO_PAMOD_CMPT_CRC          1
+
+/**
+ *  @def  PASAHO_PAMOD_PATCH
+ *        Instruct PDSP to perform blind patch
+ */
+
+#define PASAHO_PAMOD_PATCH                     2
+
+/**
+ *  @def  PASAHO_PAMOD_NROUTE
+ *        Provide PDSP with the next routing information
+ */
+
+#define PASAHO_PAMOD_NROUTE                    3
+
+
+/**
+ *  @def  PASAHO_PAMOD_EF_OP
+ *        Instruct PDSP to perform egress flow operation
+ */
+
+#define PASAHO_PAMOD_EF_OP             5
+
+/**
+ *  @def  PASAHO_PAMOD_REPORT_TIMESTAMP
+ *        Instruct PDSP to report the system timestamp at the timestamp field of the packet descriptor 
+ *        when the tx packet is delivered out of the PASS 
+ */
+
+#define PASAHO_PAMOD_REPORT_TIMESTAMP  6   
+
+
+/**
+ *  @def  PASAHO_PAMOD_GROUP_7
+ *        Define this group command so that several command can share the same command code. They will be distinguished
+ *        by its unique 5-bit sub-command code as defined at
+ */
+
+#define PASAHO_PAMOD_GROUP_7        7   
+
+
+/**
+ *  @def  PASAHO_PAMOD_DUMMY
+ *        No action is required. It is for SA alignment only
+ */
+
+#define PASAHO_PAMOD_DUMMY                     PASAHO_PAMOD_GROUP_7
+
+/**
+ *  @def  PASAHO_PAMOD_IP_FRAGMENT
+ *        Instruct PDSP to perform IPv4 fragmentation. The transmit IP packets will be divided into smaller 
+ *        IP fragments with the updated IPv4 header and checksum based on the specified MTU size and forwarded 
+ *        to the destination specified by the next route command. It is up to the module user to format the
+ *        correct IPv4 header. The IP fragmentation command will be ignored if any error is detected.
+ */
+#define PASAHO_PAMOD_IP_FRAGMENT    PASAHO_PAMOD_GROUP_7  
+
+/**
+ *  @def  PASAHO_PAMOD_PATCH_MSG_LEN
+ *        Instruct PDSP to perform message length patching after IPv4 fragmentation operation. This command is
+ *        valid only if it is in conjunction with the PASAHO_PAMOD_IP_FRAGMENT command.
+ */
+#define PASAHO_PAMOD_PATCH_MSG_LEN  PASAHO_PAMOD_GROUP_7  
+
+/**
+ *  @def  PASAHO_PAMOD_EMAC_CRC_VERIFY
+ *        Instruct PDSP to perform Ethernet CRC verification for egress traffic. This command is provided as a workarond 
+ *        for the following GbE errata at some keystone devices. (Gen1 support only)
+ *
+ *        The GbE switch may drop packets in TX path when:
+ *        - full gigabit speeds are sustained and
+ *        - the packet size is not a 32 bit multiple (1499, 1498, 1497, 1495, etc.) and
+ *        - Ethernet CRC is included in the last 4 bytes of the packet sent to the switch
+ *
+ *  @note The Ethernet CRC Verify command can not be combined with any other tx commands, all other commands will be ignored
+ *        by PASS when this command is processed.
+ */
+#define PASAHO_PAMOD_EMAC_CRC_VERIFY  PASAHO_PAMOD_GROUP_7   
+  
+/**
+ *  @def  PASAHO_PAMOD_PATCH_MSG_TIME
+ *        Instruct PDSP to perform message time insert for packets such as Ethernet OAM. (Gen2 support only)
+ */
+#define PASAHO_PAMOD_PATCH_MSG_TIME  PASAHO_PAMOD_GROUP_7 
+
+/**
+ *  @def  PASAHO_PAMOD_PATCH_MSG_COUNT
+ *        Instruct PDSP to perform message count insert for packets such as Ethernet OAM. 
+ */
+#define PASAHO_PAMOD_PATCH_MSG_COUNT  PASAHO_PAMOD_GROUP_7 
+
+/* SA commands */
+/**
+ *  @def  PASAHO_SA_LONG_INFO
+ *        Provide SA with the packet parsing information in the long form
+ */
+
+#define PASAHO_SA_LONG_INFO         0
+
+/**
+ *  @def  PASAHO_SA_SHORT_INFO
+ *        Provide SA with the packet parsing information in the short form
+ */
+
+#define PASAHO_SA_SHORT_INFO        1
+
+
+/**
+ *  @def  PASAHO_SA_AIR_INFO
+ *        Provide SA with the packet parsing information for the air ciphering 
+ *        operation
+ */
+
+#define PASAHO_SA_AIR_INFO          2
+
+
+/*@}*/
+/** @} */
+
+/** @name PASAHO Common Macros
+ *  
+ */
+/*@{*/
+
+/**
+ *  @ingroup pasaho_if_macros
+ *  @brief  PASAHO_READ_BITFIELD is used to read the specific bit fields
+ *
+ *  @details  It is one of the main macros for accessing configuration bit fields
+ *            Input parameter a contains bit field
+ *            b is bit offset withing bit field
+ *            c is number of bits used by that parameter
+ */
+
+#define PASAHO_READ_BITFIELD(a,b,c)    (((a)>>(b)) & ((1UL<<(c))-1))
+
+/**
+ *  @ingroup ingroup pasaho_if_macros
+ *  @brief  PASAHO_SET_BITFIELD is used to set the specific bit fields
+ *
+ *  @details  It is one of the main macros for accessing configuration bit fields
+ *            Input parameter a contains bit field
+ *            b is bit offset withing bit field
+ *            c is number of bits used by that parameter
+ *            x is new value of parameter that is packed in this bit field
+ *
+ *  @note    It enforces strict setting to prevent overflow into other bits, would
+ *           cost program space for additional protection. 
+ */
+
+#define PASAHO_SET_BITFIELD(a,x,b,c)   (a) &= ~(((1UL<<(c))-1)<<(b)), \
+                                       (a) |= (((x) & ((1UL<<(c))-1))<<(b))
+
+/**
+ *  @ingroup ingroup pasaho_if_macros
+ *  @brief  PASAHO_SET_CMDID is used to set the command ID
+ */
+#define PASAHO_SET_CMDID(x,v)  PASAHO_SET_BITFIELD((x)->word0, (v), 29,3)
+
+/**
+ *  @ingroup ingroup pasaho_if_macros
+ *  @brief  PASAHO_PACFG_CMD is used to set the PA configuration command only
+ */
+#define PASAHO_PACFG_CMD        (((uint32_t)PASAHO_CONFIGURE << 5) << 24)
+
+/*@}*/ /* @name PASAHO Common Macros */
+
+
+/**
+ *  @defgroup pasahoHeaderTypes PASS Header Types
+ *  @ingroup pasaho_if_constants
+ *  @{
+ *
+ *  @name PASS Header Types
+ *  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 
+ */ 
+/*@{*/
+
+typedef enum {
+
+  PASAHO_HDR_MAC        = 0,        /**< MAC */
+  PASAHO_HDR_VLAN,                  /**< VLAN */
+  PASAHO_HDR_MPLS,                  /**< MPLS */
+  PASAHO_HDR_IPv4,                  /**< IPv4 */
+  PASAHO_HDR_IPv6,                  /**< IPv6 */
+  PASAHO_HDR_IPv6_EXT_HOP,          /**< IPv6 hop by hop extenstion header */
+  PASAHO_HDR_IPv6_EXT_ROUTE,        /**< IPv6 routing extenstion header */
+  PASAHO_HDR_IPv6_EXT_FRAG,         /**< IPv6 fragmentation extention header */
+  PASAHO_HDR_IPv6_EXT_DEST,         /**< IPv6 destination options header */
+  PASAHO_HDR_GRE,                   /**< Generic Routing Encapsulation header */
+  PASAHO_HDR_ESP,                   /**< Encapsulating Security Payload header */
+  PASAHO_HDR_ESP_DECODED,           /**< Decoded Encapsulating Security Payload header */
+  PASAHO_HDR_AUTH,                  /**< Authentication header */
+  PASAHO_HDR_CUSTOM_C1,             /**< Custom classify 1 header */
+  PASAHO_HDR_PPPoE,                 /**< PPPoE Header */
+  PASAHO_HDR_SCTP,                  /**< SCTP Header */
+  PASAHO_HDR_UNKNOWN,               /**< Next header type is unknown */
+  PASAHO_HDR_UDP,                   /**< User Datagram Protocol header */
+  PASAHO_HDR_UDP_LITE,              /**< Lightweight User Datagram Protocol header */
+  PASAHO_HDR_TCP,                   /**< Transmission Control Protocol header */
+  PASAHO_HDR_GTPU,                  /**< GTPU header */
+  PASAHO_HDR_ESP_DECODED_C2,        /**< Decoded Encapsulating Security Payload header at Classifyer2 */
+  PASAHO_HDR_CUSTOM_C2              /**< Custom classify 2 header */
+} pasaho_HeaderType_e;
+/*@}*/
+/** @} */
+
+/**
+ *  @defgroup pasahoSubCmdCode PASS Sub-Command Code
+ *  @ingroup pasaho_if_constants
+ *  @{
+ *
+ *  @name PASS Sub-Command Code
+ *  Definition of the 5-bit sub-command codes which is used to specify the group 7 commands. 
+ */ 
+/*@{*/
+
+typedef enum {
+
+  PASAHO_SUB_CMD_DUMMY           = 0,   /**< Dummy */
+  PASAHO_SUB_CMD_IP_FRAG         = 1,   /**< IPv4 fragmentation */
+  PASAHO_SUB_CMD_PATCH_MSG_LEN   = 2,   /**< Message length Patching */ 
+  PASAHO_SUB_CMD_INS_TIME        = 3,   /**< Ethernet EOAM insert time at specified offset  (Gen2 only) */
+  PASAHO_SUB_CMD_INS_COUNT       = 4,   /**< Ethernet EOAM insert count at specified offset (Gen2 only) */
+  PASAHO_SUB_CMD_EMAC_CRC_VERIFY = 3    /**< Ethernet CRC Verification (Gen1 only)*/ 
+} pasaho_SubCmdCode_e;
+/*@}*/
+/** @} */
+
+/**
+ *  @defgroup pasahoPktType PASS Packet Type
+ *  @ingroup pasaho_if_constants
+ *  @{
+ *
+ *  @name PASS Packet Type
+ *  Definition of the MAC or IP packet types. 
+ */ 
+/*@{*/
+
+typedef enum {
+
+  PASAHO_PKT_TYPE_UNICAST        = 0,   /**< Unicast MAC/IP  */
+  PASAHO_PKT_TYPE_BROADCAST,            /**< Broadcast MAC/IP */
+  PASAHO_PKT_TYPE_MULTICAST             /**< Multicast MAC/IP */ 
+} pasaho_pktType_e;
+/*@}*/
+/** @} */
+
+
+
+/**
+ *  @ingroup pasaho_if_structures
+ *  @brief  pasahoCmdInfo_t defines the general short command information
+ *
+ */
+
+typedef struct pasahoCmdInfo_s {
+    uint32_t  word0;    /**< Control block word 0 */
+} pasahoCmdInfo_t;
+
+/**
+ *  @ingroup pasaho_if_structures
+ *  @brief  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.
+ *
+ *  @details  
+ */
+
+typedef struct pasahoLongInfo_s  {
+
+  uint32_t   word0;  /**< Control block word 0 */
+  uint32_t   word1;  /**< Control block word 1 */
+  uint32_t   word2;  /**< Control block word 2 */
+  uint32_t   word3;  /**< Control block word 3 */
+  uint32_t   word4;  /**< Control block word 4 */
+  uint32_t   word5;  /**< Control block word 5 */
+  uint32_t   word6;  /**< Control block word 6 */
+  uint32_t   word7;  /**< Control block word 7 */
+  uint32_t   word8;  /**< Control block word 8 */
+  uint32_t   word9;  /**< Control block word 9 */
+  uint32_t   word10; /**< Control block word 10 (optional) */
+  uint32_t   word11; /**< Control block word 11 (optional) */
+  uint32_t   word12; /**< Control block word 12 (optional) */
+  uint32_t   word13; /**< Control block word 13 (optional) */  
+} pasahoLongInfo_t;
+
+/** 
+ *  @defgroup PASAHO_long_info_command_gen1_macros  PASAHO Long Info Command Macros For First Generation PASS
+ *  @ingroup pasaho_if_macros
+ *  @{
+ *  @name PASAHO Long Info Command Macros For First Generation PASS
+ *  Macros used by the PASAHO Long Info Command
+ */
+/*@{*/
+
+#define PASAHO_LINFO_READ_CMDID_GEN1(x)          PASAHO_READ_BITFIELD((x)->word0,29,3)    /**< Extract the command ID defined at @ref pasahoCommands (PASS Gen1)*/
+#define PASAHO_LINFO_READ_RECLEN_GEN1(x)         PASAHO_READ_BITFIELD((x)->word0,24,5)    /**< Extract the block length (PASS Gen1)*/
+#define PASAHO_LINFO_READ_START_OFFSET_GEN1(x)   PASAHO_READ_BITFIELD((x)->word0,0,16)    /**< Extract the next parse start offset (PASS Gen1)*/
+
+#define PASAHO_LINFO_IS_MAC_BROADCAST_GEN1(x)    PASAHO_READ_BITFIELD((x)->word0,16,1)    /**< Indicate whether it is a broadcast MAC packet (PASS Gen1)*/
+#define PASAHO_LINFO_IS_MAC_MULTICAST_GEN1(x)    PASAHO_READ_BITFIELD((x)->word0,17,1)    /**< Indicate whether it is a multicast MAC packet (PASS Gen1)*/
+#define PASAHO_LINFO_READ_MAC_PKTTYPE_GEN1(x)    PASAHO_READ_BITFIELD((x)->word0,16,2)    /**< Extract the MAC packet type (PASS Gen1)*/
+
+#define PASAHO_LINFO_IS_IP_BROADCAST_GEN1(x)     PASAHO_READ_BITFIELD((x)->word0,18,1)    /**< Indicate whether it is a broadcast IP packet (PASS Gen1)*/
+#define PASAHO_LINFO_IS_IP_MULTICAST_GEN1(x)     PASAHO_READ_BITFIELD((x)->word0,19,1)    /**< Indicate whether it is a multicast IP packet (PASS Gen1)*/
+#define PASAHO_LINFO_READ_IP_PKTTYPE_GEN1(x)     PASAHO_READ_BITFIELD((x)->word0,18,2)    /**< Extract the IP packet type (PASS Gen1)*/
+
+#define PASAHO_LINFO_READ_END_OFFSET_GEN1(x)     PASAHO_READ_BITFIELD((x)->word1,16,16)   /**< Extract the end of packet parse offset (PASS Gen1)*/
+#define PASAHO_LINFO_READ_EIDX_GEN1(x)           PASAHO_READ_BITFIELD((x)->word1,11,5)    /**< Extract the error index (PASS Gen1)*/
+#define PASAHO_LINFO_READ_PMATCH_GEN1(x)         PASAHO_READ_BITFIELD((x)->word1,10,1)    /**< Extract the previous match flag (PASS Gen1)*/
+#define PASAHO_LINFO_READ_L1_PDSP_ID_GEN1(x)     PASAHO_READ_BITFIELD((x)->word1,6,3)     /**< Extract the first parse module ID (PASS Gen1)*/
+#define PASAHO_LINFO_READ_L1_IDX_GEN1(x)         PASAHO_READ_BITFIELD((x)->word1,0,6)     /**< Extract the first parse module match index (PASS Gen1)*/
+
+#define PASAHO_LINFO_READ_L3_OFFSET_GEN1(x)      PASAHO_READ_BITFIELD((x)->word2,24,8)    /**< Extract the offset to the level 3 header (PASS Gen1)*/
+#define PASAHO_LINFO_READ_L4_OFFSET_GEN1(x)      PASAHO_READ_BITFIELD((x)->word2,16,8)    /**< Extract the offset to the level 4 header (PASS Gen1)*/
+#define PASAHO_LINFO_READ_L5_OFFSET_GEN1(x)      PASAHO_READ_BITFIELD((x)->word2,8,8)     /**< Extract the offset to the level 5 header (PASS Gen1)*/
+#define PASAHO_LINFO_READ_ESP_AH_OFFSET_GEN1(x)  PASAHO_READ_BITFIELD((x)->word2,0,8)     /**< Extract the offset to the security header (PASS Gen1)*/
+
+#define PASAHO_LINFO_READ_HDR_BITMASK_GEN1(x)    PASAHO_READ_BITFIELD((x)->word3,21,11)   /**< Extract the bitmask of parsed header types (PASS Gen1)*/
+#define PASAHO_LINFO_READ_HDR_BITMASK2_GEN1(x)   PASAHO_READ_BITFIELD((x)->word3, 4,4)    /**< Extract the bitmask2 of parsed header types (PASS Gen1)*/
+#define PASAHO_LINFO_READ_NXT_HDR_TYPE_GEN1(x)   PASAHO_READ_BITFIELD((x)->word3,16,5)    /**< Extract the next header to parse type (PASS Gen1)*/
+#define PASAHO_LINFO_READ_VLAN_COUNT_GEN1(x)     PASAHO_READ_BITFIELD((x)->word3,14,2)    /**< Extract the number of VLAN tags found (PASS Gen1)*/
+#define PASAHO_LINFO_READ_IP_COUNT_GEN1(x)       PASAHO_READ_BITFIELD((x)->word3,8,3)     /**< Extract the number of IP headers found (PASS Gen1)*/
+#define PASAHO_LINFO_READ_GRE_COUNT_GEN1(x)      PASAHO_READ_BITFIELD((x)->word3,11,3)    /**< Extract the number of GRE headers found (PASS Gen1)*/
+#define PASAHO_LINFO_READ_FLAG_FRAG_GEN1(x)      PASAHO_READ_BITFIELD((x)->word3,3,1)     /**< Extract the fragmentation found flag (PASS Gen1)*/
+#define PASAHO_LINFO_READ_INPORT_GEN1(x)         PASAHO_READ_BITFIELD((x)->word3,0,3)     /**< Extract the (1-based) input EMAC port number  
+                                                                                               0: Indicates that the packet does not enter PASS 
+                                                                                               through CPSW (PASS Gen1)*/
+#define PASAHO_LINFO_READ_INNER_IP_OFFSET_GEN1(x) PASAHO_READ_BITFIELD((x)->word4,16,8)   /**< Extract the offset to the most inner IP header (PASS Gen1)*/
+#define PASAHO_LINFO_READ_TSTAMP_MSB_GEN1(x)     (x)->word6                               /**< Extract the most significant 32-bit of the 64-bit timestamp */
+#define PASAHO_LINFO_READ_TSTAMP_MSB2_GEN1(x)    (x)->word8                               /**< Extract the most significant 32-bit of the 64-bit timestamp 
+                                                                                          where the paylaod data has been copied to word6/7 within  
+                                                                                          pasahoLongInfo_t by using PASS command pa_CMD_COPY_DATA_TO_PSINFO */
+
+/*@}*/ /* PASAHO_long_info_command_gen1_macros */
+/** @}*/ /* @name PASAHO Long Info Command Macros For First Generation PASS */
+
+/** 
+ *  @defgroup PASAHO_long_info_command_gen2_macros  PASAHO Long Info Command Macros For Second Generation PASS
+ *  @ingroup pasaho_if_macros
+ *  @{
+ *  @name PASAHO Long Info Command Macros For Second Generation PASS
+ *  Macros used by the PASAHO Long Info Command
+ */
+/*@{*/
+
+#define PASAHO_LINFO_READ_CMDID_GEN2(x)          PASAHO_READ_BITFIELD((x)->word0,29,3)    /**< Extract the command ID defined at @ref pasahoCommands (PASS Gen2)*/
+#define PASAHO_LINFO_READ_RECLEN_GEN2(x)         PASAHO_READ_BITFIELD((x)->word0,24,5)    /**< Extract the block length (PASS Gen2)*/
+#define PASAHO_LINFO_READ_START_OFFSET_GEN2(x)   PASAHO_READ_BITFIELD((x)->word0,0,8)     /**< Extract the next parse start offset (PASS Gen2)*/
+
+#define PASAHO_LINFO_IS_MAC_BROADCAST_GEN2(x)    PASAHO_READ_BITFIELD((x)->word0,16,1)    /**< Indicate whether it is a broadcast MAC packet (PASS Gen2)*/
+#define PASAHO_LINFO_IS_MAC_MULTICAST_GEN2(x)    PASAHO_READ_BITFIELD((x)->word0,17,1)    /**< Indicate whether it is a multicast MAC packet (PASS Gen2)*/
+#define PASAHO_LINFO_READ_MAC_PKTTYPE_GEN2(x)    PASAHO_READ_BITFIELD((x)->word0,16,2)    /**< Extract the MAC packet type (PASS Gen2)*/
+
+#define PASAHO_LINFO_IS_IP_BROADCAST_GEN2(x)     PASAHO_READ_BITFIELD((x)->word0,16,1)    /**< Indicate whether it is a broadcast IP packet (PASS Gen2)*/
+#define PASAHO_LINFO_IS_IP_MULTICAST_GEN2(x)     PASAHO_READ_BITFIELD((x)->word0,17,1)    /**< Indicate whether it is a multicast IP packet (PASS Gen2)*/
+#define PASAHO_LINFO_READ_IP_PKTTYPE_GEN2(x)     PASAHO_READ_BITFIELD((x)->word0,16,2)    /**< Extract the IP packet type (PASS Gen2)*/
+
+#define PASAHO_LINFO_READ_PMATCH_GEN2(x)         PASAHO_READ_BITFIELD((x)->word0,23,1)    /**< Extract the previous match flag (PASS Gen2)*/
+#define PASAHO_LINFO_READ_FLAG_FRAG_GEN2(x)      PASAHO_READ_BITFIELD((x)->word0,19,1)    /**< Extract the fragmentation found flag (PASS Gen2)*/
+
+#define PASAHO_LINFO_READ_END_OFFSET_GEN2(x)     PASAHO_READ_BITFIELD((x)->word1,16,16)   /**< Extract the end of packet parse offset (PASS Gen2)*/
+#define PASAHO_LINFO_READ_EIDX_GEN2(x)           PASAHO_READ_BITFIELD((x)->word1,10,6)    /**< Extract the exception index (PASS Gen2)*/
+#define PASAHO_LINFO_READ_NXT_HDR_TYPE_GEN2(x)   PASAHO_READ_BITFIELD((x)->word1,0,6)     /**< Extract the next header to parse type (PASS Gen2)*/
+#define PASAHO_LINFO_READ_INPORT_GEN2(x)         PASAHO_READ_BITFIELD((x)->word1,6,4)     /**< Extract the (1-based) input EMAC port number  
+                                                                                               through CPSW (PASS Gen2)*/
+
+#define PASAHO_LINFO_READ_L3_OFFSET_GEN2(x)      PASAHO_READ_BITFIELD((x)->word2,24,8)    /**< Extract the offset to the level 3 header (PASS Gen2)*/
+#define PASAHO_LINFO_READ_L4_OFFSET_GEN2(x)      PASAHO_READ_BITFIELD((x)->word2,16,8)    /**< Extract the offset to the level 4 header (PASS Gen2)*/
+#define PASAHO_LINFO_READ_L5_OFFSET_GEN2(x)      PASAHO_READ_BITFIELD((x)->word2,8,8)     /**< Extract the offset to the level 5 header (PASS Gen2)*/
+#define PASAHO_LINFO_READ_ESP_AH_OFFSET_GEN2(x)  PASAHO_READ_BITFIELD((x)->word2,0,8)     /**< Extract the offset to the security header (PASS Gen2)*/
+
+#define PASAHO_LINFO_READ_L1_PDSP_ID_GEN2(x)     PASAHO_READ_BITFIELD((x)->word3,26,6)    /**< Extract the first parse module ID (PASS Gen2)*/
+#define PASAHO_LINFO_READ_L1_IDX_GEN2(x)         PASAHO_READ_BITFIELD((x)->word3,16,10)   /**< Extract the first parse module match index (PASS Gen2)*/
+#define PASAHO_LINFO_READ_HDR_BITMASK_GEN2(x)    PASAHO_READ_BITFIELD((x)->word3,0,16)    /**< Extract the bitmask of parsed header types (PASS Gen2)*/
+#define PASAHO_LINFO_READ_HDR_BITMASK2_GEN2(x)   0                                        /**< Extract the bitmask2 of parsed header types (PASS Gen2)*/
+#define PASAHO_LINFO_READ_VLAN_COUNT_GEN2(x)     PASAHO_READ_BITFIELD((x)->word4,6,2)     /**< Extract the number of VLAN tags found (PASS Gen2)*/
+#define PASAHO_LINFO_READ_IP_COUNT_GEN2(x)       PASAHO_READ_BITFIELD((x)->word4,0,3)     /**< Extract the number of IP headers found (PASS Gen2)*/
+#define PASAHO_LINFO_READ_GRE_COUNT_GEN2(x)      PASAHO_READ_BITFIELD((x)->word4,3,3)     /**< Extract the number of GRE headers found (PASS Gen2)*/
+
+#define PASAHO_LINFO_READ_INNER_IP_OFFSET_GEN2(x) PASAHO_READ_BITFIELD((x)->word5,24,8)   /**< Extract the offset to the inner IP header (PASS Gen2)*/
+#define PASAHO_LINFO_READ_TSTAMP_MSB_GEN2(x)     (x)->word6                               /**< Extract the most significant 32-bit of the 64-bit timestamp */
+#define PASAHO_LINFO_READ_TSTAMP_MSB2_GEN2(x)    (x)->word8                               /**< Extract the most significant 32-bit of the 64-bit timestamp 
+                                                                                          where the paylaod data has been copied to word6/7 within  
+                                                                                          pasahoLongInfo_t by using PASS command pa_CMD_COPY_DATA_TO_PSINFO */
+#define PASAHO_LINFO_READ_PATSTAMP_LSW_GEN2(x)   (x)->word9                               /**< Extract the most significant 32-bit of the 64-bit PA timestamp */
+#define PASAHO_LINFO_READ_PATSTAMP_MSW_GEN2(x)   (x)->word8                               /**< Extract the least significant 32-bit of the 64-bit PA timestamp */
+
+#define PASAHO_LINFO_READ_PATSTAMP_LSW2_GEN2(x)  (x)->word11                              /**< Extract the most significant 32-bit of the 64-bit PA timestamp
+                                                                                          where the paylaod data has been copied to word6/7 within
+                                                                                          pasahoLongInfo_t by using PASS command pa_CMD_COPY_DATA_TO_PSINFO */
+#define PASAHO_LINFO_READ_PATSTAMP_MSW2_GEN2(x)  (x)->word10                              /**< Extract the most significant 32-bit of the 64-bit PA timestamp
+                                                                                          where the paylaod data has been copied to word6/7 within
+                                                                                          pasahoLongInfo_t by using PASS command pa_CMD_COPY_DATA_TO_PSINFO */
+
+#define PASAHO_LINFO_READ_EOAM_TF_MATCH_CNT_GEN2(x)   (x)->word5                               /**< Extract the Ethernet OAM target flow match count, valid during 
+                                                                                               EOAM mode on LMM/LMR control packts only (PASS Gen2)*/
+#define PASAHO_LINFO_READ_EOAM_PKT_MEG_LEVEL_GEN2(x)  PASAHO_READ_BITFIELD((x)->word2,24,8)    /**< Extract the MEG Level during a valid EOAM packet measurement, valid during 
+                                                                                               EOAM mode only (PASS Gen2)*/  
+#define PASAHO_LINFO_READ_EOAM_PKT_OPCODE_GEN2(x)     PASAHO_READ_BITFIELD((x)->word2,16,8)    /**< Extract the MEG Level during a valid EOAM packet measurement, valid during 
+                                                                                                 EOAM mode only (PASS Gen2)*/                                                                                               
+                                                                                               
+
+/*@}*/ /* PASAHO_long_info_command_gen2 macros */
+/** @}*/ /* @name PASAHO Long Info Command Macros For Second Generation PASS */
+
+/** 
+ *  @defgroup PASAHO_long_info_command_macros  PASAHO Long Info Command Macros
+ *  @ingroup pasaho_if_macros
+ *  @{
+ *  @name PASAHO Long Info Command Macros
+ *  Macros used by the PASAHO Long Info Command
+ */
+/*@{*/
+
+#ifdef NSS_GEN2
+#define PASAHO_LINFO_READ_CMDID(x)          PASAHO_LINFO_READ_CMDID_GEN2(x)           /**< Extract the command ID defined at @ref pasahoCommands */
+#define PASAHO_LINFO_READ_RECLEN(x)         PASAHO_LINFO_READ_RECLEN_GEN2(x)          /**< Extract the block length */
+#define PASAHO_LINFO_READ_START_OFFSET(x)   PASAHO_LINFO_READ_START_OFFSET_GEN2(x)    /**< Extract the next parse start offset */
+
+#define PASAHO_LINFO_IS_MAC_BROADCAST(x)    PASAHO_LINFO_IS_MAC_BROADCAST_GEN2(x)     /**< Indicate whether it is a broadcast MAC packet */
+#define PASAHO_LINFO_IS_MAC_MULTICAST(x)    PASAHO_LINFO_IS_MAC_MULTICAST_GEN2(x)     /**< Indicate whether it is a multicast MAC packet */
+#define PASAHO_LINFO_READ_MAC_PKTTYPE(x)    PASAHO_LINFO_READ_MAC_PKTTYPE_GEN2(x)     /**< Extract the MAC packet type */
+
+#define PASAHO_LINFO_IS_IP_BROADCAST(x)     PASAHO_LINFO_IS_IP_BROADCAST_GEN2(x)      /**< Indicate whether it is a broadcast IP packet */
+#define PASAHO_LINFO_IS_IP_MULTICAST(x)     PASAHO_LINFO_IS_IP_MULTICAST_GEN2(x)      /**< Indicate whether it is a multicast IP packet */
+#define PASAHO_LINFO_READ_IP_PKTTYPE(x)     PASAHO_LINFO_READ_IP_PKTTYPE_GEN2(x)      /**< Extract the IP packet type */
+
+#define PASAHO_LINFO_READ_PMATCH(x)         PASAHO_LINFO_READ_PMATCH_GEN2(x)          /**< Extract the previous match flag */
+#define PASAHO_LINFO_READ_FLAG_FRAG(x)      PASAHO_LINFO_READ_FLAG_FRAG_GEN2(x)       /**< Extract the fragmentation found flag */
+
+#define PASAHO_LINFO_READ_END_OFFSET(x)     PASAHO_LINFO_READ_END_OFFSET_GEN2(x)      /**< Extract the end of packet parse offset */
+#define PASAHO_LINFO_READ_EIDX(x)           PASAHO_LINFO_READ_EIDX_GEN2(x)            /**< Extract the exception index */
+#define PASAHO_LINFO_READ_NXT_HDR_TYPE(x)   PASAHO_LINFO_READ_NXT_HDR_TYPE_GEN2(x)    /**< Extract the next header to parse type */
+#define PASAHO_LINFO_READ_INPORT(x)         PASAHO_LINFO_READ_INPORT_GEN2(x)          /**< Extract the (1-based) input EMAC port number  
+                                                                                           through CPSW */
+
+#define PASAHO_LINFO_READ_L3_OFFSET(x)      PASAHO_LINFO_READ_L3_OFFSET_GEN2(x)       /**< Extract the offset to the level 3 header */
+#define PASAHO_LINFO_READ_L4_OFFSET(x)      PASAHO_LINFO_READ_L4_OFFSET_GEN2(x)       /**< Extract the offset to the level 4 header */
+#define PASAHO_LINFO_READ_L5_OFFSET(x)      PASAHO_LINFO_READ_L5_OFFSET_GEN2(x)       /**< Extract the offset to the level 5 header */
+#define PASAHO_LINFO_READ_ESP_AH_OFFSET(x)  PASAHO_LINFO_READ_ESP_AH_OFFSET_GEN2(x)   /**< Extract the offset to the security header */
+
+#define PASAHO_LINFO_READ_L1_PDSP_ID(x)     PASAHO_LINFO_READ_L1_PDSP_ID_GEN2(x)      /**< Extract the first parse module ID */
+#define PASAHO_LINFO_READ_L1_IDX(x)         PASAHO_LINFO_READ_L1_IDX_GEN2(x)          /**< Extract the first parse module match index */
+#define PASAHO_LINFO_READ_HDR_BITMASK(x)    PASAHO_LINFO_READ_HDR_BITMASK_GEN2(x)     /**< Extract the bitmask of parsed header types */
+#define PASAHO_LINFO_READ_HDR_BITMASK2(x)   PASAHO_LINFO_READ_HDR_BITMASK2_GEN2(x)    /**< Extract the bitmask2 of parsed header types */
+#define PASAHO_LINFO_READ_VLAN_COUNT(x)     PASAHO_LINFO_READ_VLAN_COUNT_GEN2(x)      /**< Extract the number of VLAN tags found */
+#define PASAHO_LINFO_READ_IP_COUNT(x)       PASAHO_LINFO_READ_IP_COUNT_GEN2(x)        /**< Extract the number of IP headers found */
+#define PASAHO_LINFO_READ_GRE_COUNT(x)      PASAHO_LINFO_READ_GRE_COUNT_GEN2(x)       /**< Extract the number of GRE headers found */
+
+#define PASAHO_LINFO_READ_INNER_IP_OFFSET(x)PASAHO_LINFO_READ_INNER_IP_OFFSET_GEN2(x) /**< Extract the offset to the inner IP header */
+#define PASAHO_LINFO_READ_TSTAMP_MSB(x)     PASAHO_LINFO_READ_TSTAMP_MSB_GEN2(x)      /**< Extract the most significant 32-bit of the 64-bit timestamp */
+#define PASAHO_LINFO_READ_TSTAMP_MSB2(x)    PASAHO_LINFO_READ_TSTAMP_MSB2_GEN2(x)     /**< Extract the most significant 32-bit of the 64-bit timestamp 
+                                                                                           where the paylaod data has been copied to word6/7 within  
+                                                                                           pasahoLongInfo_t by using PASS command pa_CMD_COPY_DATA_TO_PSINFO */
+#define PASAHO_LINFO_READ_EOAM_TF_MATCH_CNT(x)  PASAHO_LINFO_READ_EOAM_TF_MATCH_CNT_GEN2(x) /**< Extract the EOAM target flow match count for LMM/LMR packets */
+#define PASAHO_LINFO_READ_EOAM_PKT_MEG_LEVEL(x) PASAHO_LINFO_READ_EOAM_PKT_MEG_LEVEL_GEN2(x) /**< Extract the EOAM MEG level for that packet */
+#define PASAHO_LINFO_READ_EOAM_PKT_OPCODE(x) PASAHO_LINFO_READ_EOAM_PKT_OPCODE_GEN2(x) /**< Extract the EOAM Opcode for that packet */
+
+#else
+#define PASAHO_LINFO_READ_CMDID(x)          PASAHO_LINFO_READ_CMDID_GEN1(x)           /**< Extract the command ID defined at @ref pasahoCommands */
+#define PASAHO_LINFO_READ_RECLEN(x)         PASAHO_LINFO_READ_RECLEN_GEN1(x)          /**< Extract the block length */
+#define PASAHO_LINFO_READ_START_OFFSET(x)   PASAHO_LINFO_READ_START_OFFSET_GEN1(x)    /**< Extract the next parse start offset */
+
+#define PASAHO_LINFO_IS_MAC_BROADCAST(x)    PASAHO_LINFO_IS_MAC_BROADCAST_GEN1(x)     /**< Indicate whether it is a broadcast MAC packet */
+#define PASAHO_LINFO_IS_MAC_MULTICAST(x)    PASAHO_LINFO_IS_MAC_MULTICAST_GEN1(x)     /**< Indicate whether it is a multicast MAC packet */
+#define PASAHO_LINFO_READ_MAC_PKTTYPE(x)    PASAHO_LINFO_READ_MAC_PKTTYPE_GEN1(x)     /**< Extract the MAC packet type */
+
+#define PASAHO_LINFO_IS_IP_BROADCAST(x)     PASAHO_LINFO_IS_IP_BROADCAST_GEN1(x)      /**< Indicate whether it is a broadcast IP packet */
+#define PASAHO_LINFO_IS_IP_MULTICAST(x)     PASAHO_LINFO_IS_IP_MULTICAST_GEN1(x)      /**< Indicate whether it is a multicast IP packet */
+#define PASAHO_LINFO_READ_IP_PKTTYPE(x)     PASAHO_LINFO_READ_IP_PKTTYPE_GEN1(x)      /**< Extract the IP packet type */
+
+#define PASAHO_LINFO_READ_END_OFFSET(x)     PASAHO_LINFO_READ_END_OFFSET_GEN1(x)      /**< Extract the end of packet parse offset */
+#define PASAHO_LINFO_READ_EIDX(x)           PASAHO_LINFO_READ_EIDX_GEN1(x)            /**< Extract the error index */
+#define PASAHO_LINFO_READ_PMATCH(x)         PASAHO_LINFO_READ_PMATCH_GEN1(x)          /**< Extract the previous match flag */
+#define PASAHO_LINFO_READ_L1_PDSP_ID(x)     PASAHO_LINFO_READ_L1_PDSP_ID_GEN1(x)      /**< Extract the first parse module ID */
+#define PASAHO_LINFO_READ_L1_IDX(x)         PASAHO_LINFO_READ_L1_IDX_GEN1(x)          /**< Extract the first parse module match index */
+
+#define PASAHO_LINFO_READ_L3_OFFSET(x)      PASAHO_LINFO_READ_L3_OFFSET_GEN1(x)       /**< Extract the offset to the level 3 header */
+#define PASAHO_LINFO_READ_L4_OFFSET(x)      PASAHO_LINFO_READ_L4_OFFSET_GEN1(x)       /**< Extract the offset to the level 4 header */
+#define PASAHO_LINFO_READ_L5_OFFSET(x)      PASAHO_LINFO_READ_L5_OFFSET_GEN1(x)       /**< Extract the offset to the level 5 header */
+#define PASAHO_LINFO_READ_ESP_AH_OFFSET(x)  PASAHO_LINFO_READ_ESP_AH_OFFSET_GEN1(x)   /**< Extract the offset to the security header */
+
+#define PASAHO_LINFO_READ_HDR_BITMASK(x)    PASAHO_LINFO_READ_HDR_BITMASK_GEN1(x)     /**< Extract the bitmask of parsed header types */
+#define PASAHO_LINFO_READ_HDR_BITMASK2(x)   PASAHO_LINFO_READ_HDR_BITMASK2_GEN1(x)    /**< Extract the bitmask2 of parsed header types */
+#define PASAHO_LINFO_READ_NXT_HDR_TYPE(x)   PASAHO_LINFO_READ_NXT_HDR_TYPE_GEN1(x)    /**< Extract the next header to parse type */
+#define PASAHO_LINFO_READ_VLAN_COUNT(x)     PASAHO_LINFO_READ_VLAN_COUNT_GEN1(x)      /**< Extract the number of VLAN tags found */
+#define PASAHO_LINFO_READ_IP_COUNT(x)       PASAHO_LINFO_READ_IP_COUNT_GEN1(x)        /**< Extract the number of IP headers found */
+#define PASAHO_LINFO_READ_GRE_COUNT(x)      PASAHO_LINFO_READ_GRE_COUNT_GEN1(x)       /**< Extract the number of GRE headers found */
+#define PASAHO_LINFO_READ_FLAG_FRAG(x)      PASAHO_LINFO_READ_FLAG_FRAG_GEN1(x)       /**< Extract the fragmentation found flag */
+#define PASAHO_LINFO_READ_INPORT(x)         PASAHO_LINFO_READ_INPORT_GEN1(x)          /**< Extract the (1-based) input EMAC port number  
+                                                                                           0: Indicates that the packet does not enter PASS 
+                                                                                           through CPSW */
+#define PASAHO_LINFO_READ_INNER_IP_OFFSET(x)PASAHO_LINFO_READ_INNER_IP_OFFSET_GEN1(x) /**< Extract the offset to the inner IP header */
+#define PASAHO_LINFO_READ_TSTAMP_MSB(x)     PASAHO_LINFO_READ_TSTAMP_MSB_GEN1(x)      /**< Extract the most significant 32-bit of the 64-bit timestamp */
+#define PASAHO_LINFO_READ_TSTAMP_MSB2(x)    PASAHO_LINFO_READ_TSTAMP_MSB2_GEN1(x)     /**< Extract the most significant 32-bit of the 64-bit timestamp 
+                                                                                           where the paylaod data has been copied to word6/7 within  
+                                                                                           pasahoLongInfo_t by using PASS command pa_CMD_COPY_DATA_TO_PSINFO */
+#endif
+
+/* Extract Protocol Information */
+
+/*@}*/ /* PASAHO_long_info_command_macros */
+/** @}*/ /* @name PASAHO Long Info Command Macros */
+
+/**
+ *  @defgroup PASAHO_long_info_proto_ind_gen1_macros  PASAHO Long Info Protocol Indication Macros For First Generation PASS
+ *  @ingroup pasaho_if_macros
+ *  @{
+ *  @name PASAHO Long Info Protocol Indication Macros For First Generation PASS
+ */
+#define PASAHO_LINFO_IS_MAC_GEN1(x)              PASAHO_READ_BITFIELD((x)->word3,21,1)    /**< Indicate whether it is a MAC packet (Pass Gen1)*/
+#define PASAHO_LINFO_IS_802_3_GEN1(x)            PASAHO_READ_BITFIELD((x)->word3,7,1)     /**< Indicate whether it is a 802.3 packet (Pass Gen1)*/
+#define PASAHO_LINFO_IS_WITH_VLAN_GEN1(x)        PASAHO_LINFO_READ_VLAN_COUNT(x)          /**< Indicate whether it is a MAC packet with VLAN (Pass Gen1)*/
+#define PASAHO_LINFO_IS_WITH_MPLS_GEN1(x)        PASAHO_READ_BITFIELD((x)->word3,23,1)    /**< Indicate whether it is a MAC packet with MPLS (Pass Gen1)*/
+#define PASAHO_LINFO_IS_PPPoE_GEN1(x)            PASAHO_READ_BITFIELD((x)->word3,6,1)     /**< Indicate whether it is a PPPoE packet (Pass Gen1)*/
+#define PASAHO_LINFO_IS_IP_GEN1(x)               PASAHO_LINFO_READ_IP_COUNT(x)            /**< Indicate whether it is an IP packet (Pass Gen1)*/
+#define PASAHO_LINFO_IS_IPSEC_ESP_GEN1(x)        PASAHO_READ_BITFIELD((x)->word3,25,1)    /**< Indicate whether it is an IPSEC ESP packet (Pass Gen1)*/
+#define PASAHO_LINFO_IS_IPSEC_AH_GEN1(x)         PASAHO_READ_BITFIELD((x)->word3,26,1)    /**< Indicate whether it is an IPSEC AH packet (Pass Gen1)*/
+#define PASAHO_LINFO_IS_UDP_GEN1(x)              PASAHO_READ_BITFIELD((x)->word3,27,1)    /**< Indicate whether it is an UDP packet (Pass Gen1)*/
+#define PASAHO_LINFO_IS_UDP_LITE_GEN1(x)         PASAHO_READ_BITFIELD((x)->word3,28,1)    /**< Indicate whether it is an UDP Lite packet (Pass Gen1)*/
+#define PASAHO_LINFO_IS_TCP_GEN1(x)              PASAHO_READ_BITFIELD((x)->word3,29,1)    /**< Indicate whether it is a TCP packet (Pass Gen1)*/
+#define PASAHO_LINFO_IS_GRE_GEN1(x)              PASAHO_LINFO_READ_GRE_COUNT(x)           /**< Indicate whether it is a GRE packet (Pass Gen1)*/
+#define PASAHO_LINFO_IS_GTPU_GEN1(x)             PASAHO_READ_BITFIELD((x)->word3,30,1)    /**< Indicate whether it is a GTPU packet (Pass Gen1)*/
+#define PASAHO_LINFO_IS_CUSTOM_GEN1(x)           PASAHO_READ_BITFIELD((x)->word3,31,1)    /**< Indicate whether it is a Custom packet (Pass Gen1)*/
+#define PASAHO_LINFO_IS_SCTP_GEN1(x)             PASAHO_READ_BITFIELD((x)->word3,4,1)     /**< Indicate whether it is a SCTP packet (Pass Gen1)*/
+#define PASAHO_LINFO_IS_IPSEC_NAT_T_GEN1(x)      PASAHO_READ_BITFIELD((x)->word3,5,1)     /**< Indicate whether it is an IPSEC NAT-T packet (Pass Gen1)*/
+
+/*@}*/ /* PASAHO_long_info_proto_ind_gen1_macross */
+/** @}*/ /* @name PASAHO Long Info Protocol Indication Macross For First Generation PASS */
+
+/**
+ *  @defgroup PASAHO_long_info_proto_ind_gen2_macros  PASAHO Long Info Protocol Indication Macros For Second Generation PASS
+ *  @ingroup pasaho_if_macros
+ *  @{
+ *  @name PASAHO Long Info Protocol Indication Macros For Second Generation PASS
+ */
+#define PASAHO_LINFO_IS_MAC_GEN2(x)              PASAHO_READ_BITFIELD((x)->word3,0,1)     /**< Indicate whether it is a MAC packet (Pass Gen2)*/
+#define PASAHO_LINFO_IS_WITH_VLAN_GEN2(x)        PASAHO_LINFO_READ_VLAN_COUNT(x)          /**< Indicate whether it is a MAC packet with VLAN (Pass Gen2)*/
+#define PASAHO_LINFO_IS_WITH_MPLS_GEN2(x)        PASAHO_READ_BITFIELD((x)->word3,2,1)     /**< Indicate whether it is a MAC packet with MPLS (Pass Gen2)*/
+#define PASAHO_LINFO_IS_802_3_GEN2(x)            PASAHO_READ_BITFIELD((x)->word3,3,1)     /**< Indicate whether it is a 802.3 packet (Pass Gen2)*/
+#define PASAHO_LINFO_IS_PPPoE_GEN2(x)            PASAHO_READ_BITFIELD((x)->word3,4,1)     /**< Indicate whether it is a PPPoE packet (Pass Gen2)*/
+#define PASAHO_LINFO_IS_IP_GEN2(x)               PASAHO_LINFO_READ_IP_COUNT(x)            /**< Indicate whether it is an IP packet (Pass Gen2)*/
+#define PASAHO_LINFO_IS_IPv4_GEN2(x)             PASAHO_READ_BITFIELD((x)->word3,5,1)     /**< Indicate whether it is an IPv4 packet (Pass Gen2)*/
+#define PASAHO_LINFO_IS_IPv6_GEN2(x)             PASAHO_READ_BITFIELD((x)->word3,6,1)     /**< Indicate whether it is an IPv4 packet (Pass Gen2)*/
+#define PASAHO_LINFO_IS_IP_OPTIONS_GEN2(x)       PASAHO_READ_BITFIELD((x)->word3,7,1)     /**< Indicate whether there are IPV4 options or IPv6 extention headers (Pass Gen2)*/
+#define PASAHO_LINFO_IS_IPSEC_ESP_GEN2(x)        PASAHO_READ_BITFIELD((x)->word3,8,1)     /**< Indicate whether it is an IPSEC ESP packet (Pass Gen2)*/
+#define PASAHO_LINFO_IS_IPSEC_AH_GEN2(x)         PASAHO_READ_BITFIELD((x)->word3,9,1)     /**< Indicate whether it is an IPSEC AH packet (Pass Gen2)*/
+#define PASAHO_LINFO_IS_SCTP_GEN2(x)             PASAHO_READ_BITFIELD((x)->word3,10,1)    /**< Indicate whether it is a SCTP packet (Pass Gen2)*/
+#define PASAHO_LINFO_IS_UDP_GEN2(x)              PASAHO_READ_BITFIELD((x)->word3,11,1)    /**< Indicate whether it is an UDP packet (Pass Gen2)*/
+#define PASAHO_LINFO_IS_UDP_LITE_GEN2(x)         PASAHO_READ_BITFIELD((x)->word3,11,1)    /**< Indicate whether it is an UDP Lite packet (Pass Gen2)*/
+#define PASAHO_LINFO_IS_TCP_GEN2(x)              PASAHO_READ_BITFIELD((x)->word3,12,1)    /**< Indicate whether it is a TCP packet (Pass Gen2)*/
+#define PASAHO_LINFO_IS_GRE_GEN2(x)              PASAHO_LINFO_READ_GRE_COUNT(x)           /**< Indicate whether it is a GRE packet (Pass Gen2)*/
+#define PASAHO_LINFO_IS_GTPU_GEN2(x)             PASAHO_READ_BITFIELD((x)->word3,13,1)    /**< Indicate whether it is a GTPU packet (Pass Gen2)*/
+#define PASAHO_LINFO_IS_CUSTOM_GEN2(x)           PASAHO_READ_BITFIELD((x)->word3,14,1)    /**< Indicate whether it is a Custom packet (Pass Gen2)*/
+#define PASAHO_LINFO_IS_IPSEC_NAT_T_GEN2(x)      PASAHO_READ_BITFIELD((x)->word3,15,1)    /**< Indicate whether it is an IPSEC NAT-T packet (Pass Gen2)*/
+
+/*@}*/ /* PASAHO_long_info_proto_ind_macross */
+/** @}*/ /* @name PASAHO Long Info Protocol Indication Macross For Second Generation PASS */
+
+/**
+ *  @defgroup PASAHO_long_info_proto_ind_macros  PASAHO Long Info Protocol Indication Macros
+ *  @ingroup pasaho_if_macros
+ *  @{
+ *  @name PASAHO Long Info Protocol Indication Macros
+ */
+#ifdef NSS_GEN2
+#define PASAHO_LINFO_IS_MAC(x)          PASAHO_LINFO_IS_MAC_GEN2(x)             /**< Indicate whether it is a MAC packet */
+#define PASAHO_LINFO_IS_WITH_VLAN(x)    PASAHO_LINFO_IS_WITH_VLAN_GEN2(x)       /**< Indicate whether it is a MAC packet with VLAN */
+#define PASAHO_LINFO_IS_WITH_MPLS(x)    PASAHO_LINFO_IS_WITH_MPLS_GEN2(x)       /**< Indicate whether it is a MAC packet with MPLS */
+#define PASAHO_LINFO_IS_802_3(x)        PASAHO_LINFO_IS_802_3_GEN2(x)           /**< Indicate whether it is a 802.3 packet */
+#define PASAHO_LINFO_IS_PPPoE(x)        PASAHO_LINFO_IS_PPPoE_GEN2(x)           /**< Indicate whether it is a PPPoE packet */
+#define PASAHO_LINFO_IS_IP(x)           PASAHO_LINFO_IS_IP_GEN2(x)              /**< Indicate whether it is an IP packet */
+#define PASAHO_LINFO_IS_IPv4(x)         PASAHO_LINFO_IS_IPv4_GEN2(x)            /**< Indicate whether it is an IPv4 packet */
+#define PASAHO_LINFO_IS_IPv6(x)         PASAHO_LINFO_IS_IPv6_GEN2(x)            /**< Indicate whether it is an IPv4 packet */
+#define PASAHO_LINFO_IS_IP_OPTIONS(x)   PASAHO_LINFO_IS_IP_OPTIONS_GEN2(x)      /**< Indicate whether there are IPV4 options or IPv6 extention headers */
+#define PASAHO_LINFO_IS_IPSEC_ESP(x)    PASAHO_LINFO_IS_IPSEC_ESP_GEN2(x)       /**< Indicate whether it is an IPSEC ESP packet */
+#define PASAHO_LINFO_IS_IPSEC_AH(x)     PASAHO_LINFO_IS_IPSEC_AH_GEN2(x)        /**< Indicate whether it is an IPSEC AH packet */
+#define PASAHO_LINFO_IS_SCTP(x)         PASAHO_LINFO_IS_SCTP_GEN2(x)            /**< Indicate whether it is a SCTP packet */
+#define PASAHO_LINFO_IS_UDP(x)          PASAHO_LINFO_IS_UDP_GEN2(x)             /**< Indicate whether it is an UDP packet */
+#define PASAHO_LINFO_IS_UDP_LITE(x)     PASAHO_LINFO_IS_UDP_LITE_GEN2(x)        /**< Indicate whether it is an UDP Lite packet */
+#define PASAHO_LINFO_IS_TCP(x)          PASAHO_LINFO_IS_TCP_GEN2(x)             /**< Indicate whether it is a TCP packet */
+#define PASAHO_LINFO_IS_GRE(x)          PASAHO_LINFO_IS_GRE_GEN2(x)             /**< Indicate whether it is a GRE packet */
+#define PASAHO_LINFO_IS_GTPU(x)         PASAHO_LINFO_IS_GTPU_GEN2(x)            /**< Indicate whether it is a GTPU packet */
+#define PASAHO_LINFO_IS_CUSTOM(x)       PASAHO_LINFO_IS_CUSTOM_GEN2(x)          /**< Indicate whether it is a Custom packet */
+#define PASAHO_LINFO_IS_IPSEC_NAT_T(x)  PASAHO_LINFO_IS_IPSEC_NAT_T_GEN2(x)     /**< Indicate whether it is an IPSEC NAT-T packet */
+#else
+#define PASAHO_LINFO_IS_MAC(x)          PASAHO_LINFO_IS_MAC_GEN1(x)             /**< Indicate whether it is a MAC packet */
+#define PASAHO_LINFO_IS_802_3(x)        PASAHO_LINFO_IS_802_3_GEN1(x)           /**< Indicate whether it is a 802.3 packet */
+#define PASAHO_LINFO_IS_WITH_VLAN(x)    PASAHO_LINFO_IS_WITH_VLAN_GEN1(x)       /**< Indicate whether it is a MAC packet with VLAN */
+#define PASAHO_LINFO_IS_WITH_MPLS(x)    PASAHO_LINFO_IS_WITH_MPLS_GEN1(x)       /**< Indicate whether it is a MAC packet with MPLS */
+#define PASAHO_LINFO_IS_PPPoE(x)        PASAHO_LINFO_IS_PPPoE_GEN1(x)           /**< Indicate whether it is a PPPoE packet */
+#define PASAHO_LINFO_IS_IP(x)           PASAHO_LINFO_IS_IP_GEN1(x)              /**< Indicate whether it is an IP packet */
+#define PASAHO_LINFO_IS_IPSEC_ESP(x)    PASAHO_LINFO_IS_IPSEC_ESP_GEN1(x)       /**< Indicate whether it is an IPSEC ESP packet */
+#define PASAHO_LINFO_IS_IPSEC_AH(x)     PASAHO_LINFO_IS_IPSEC_AH_GEN1(x)        /**< Indicate whether it is an IPSEC AH packet */
+#define PASAHO_LINFO_IS_UDP(x)          PASAHO_LINFO_IS_UDP_GEN1(x)             /**< Indicate whether it is an UDP packet */
+#define PASAHO_LINFO_IS_UDP_LITE(x)     PASAHO_LINFO_IS_UDP_LITE_GEN1(x)        /**< Indicate whether it is an UDP Lite packet */
+#define PASAHO_LINFO_IS_TCP(x)          PASAHO_LINFO_IS_TCP_GEN1(x)             /**< Indicate whether it is a TCP packet */
+#define PASAHO_LINFO_IS_GRE(x)          PASAHO_LINFO_IS_GRE_GEN1(x)             /**< Indicate whether it is a GRE packet */
+#define PASAHO_LINFO_IS_GTPU(x)         PASAHO_LINFO_IS_GTPU_GEN1(x)            /**< Indicate whether it is a GTPU packet */
+#define PASAHO_LINFO_IS_CUSTOM(x)       PASAHO_LINFO_IS_CUSTOM_GEN1(x)          /**< Indicate whether it is a Custom packet */
+#define PASAHO_LINFO_IS_SCTP(x)         PASAHO_LINFO_IS_SCTP_GEN1(x)            /**< Indicate whether it is a SCTP packet */
+#define PASAHO_LINFO_IS_IPSEC_NAT_T(x)  PASAHO_LINFO_IS_IPSEC_NAT_T_GEN1(x)     /**< Indicate whether it is an IPSEC NAT-T packet */
+#endif
+
+/*@}*/ /* PASAHO_long_info_proto_ind_macross */
+/** @}*/ /* @name PASAHO Long Info Protocol Indication Macross */
+
+/**
+ *  @defgroup PASAHO_long_info_ipReassm_gen1_macros  PASAHO Long Info IP Reassembly Macros For First Generation PASS
+ *  @ingroup pasaho_if_macros
+ *  @{
+ *  @name PASAHO Long Info IpReassm Macros For First Generation PASS
+ *  Macros used by the PASAHO PASS-assisted IP Reassembly Operation
+ *
+ */
+#define PASAHO_LINFO_READ_TFINDEX_GEN1(x)        PASAHO_READ_BITFIELD((x)->word4,24,8)     /**< Extract the IP Reassembly Traffic Flow Index (PASS Gen1)*/
+#define PASAHO_LINFO_READ_FRANCNT_GEN1(x)        PASAHO_READ_BITFIELD((x)->word4,16,8)     /**< Extract the IP Reassembly Fragment count (PASS Gen1)*/
+
+#define PASAHO_LINFO_SET_TFINDEX_GEN1(x, v)      PASAHO_SET_BITFIELD((x)->word4,(v),24,8)  /**< Set the IP Reassembly Traffic Flow Index (PASS Gen1)*/
+#define PASAHO_LINFO_SET_FRANCNT_GEN1(x, v)      PASAHO_SET_BITFIELD((x)->word4,(v),16,8)  /**< Set the IP Reassembly Fragment count (PASS Gen1)*/
+
+#define PASAHO_LINFO_IS_IPSEC_GEN1(x)            PASAHO_READ_BITFIELD((x)->word3,25,2)     /**< Indicate whether it is an IPSEC packet (PASS Gen1)*/
+#define PASAHO_LINFO_CLR_IPSEC_GEN1(x)           PASAHO_SET_BITFIELD((x)->word3,0,25,2)    /**< Clear IPSEC indication bits (PASS Gen1)*/
+#define PASAHO_LINFO_CLR_IPSEC_ESP_GEN1(x)       PASAHO_SET_BITFIELD((x)->word3,0,26,1)    /**< Clear IPSEC ESP indication bit (PASS Gen1)*/
+#define PASAHO_LINFO_CLR_IPSEC_AH_GEN1(x)        PASAHO_SET_BITFIELD((x)->word3,0,25,1)    /**< Claer IPSEC AH indication bit (PASS Gen1)*/
+#define PASAHO_LINFO_CLR_FLAG_FRAG_GEN1(x)       PASAHO_SET_BITFIELD((x)->word3,0,3,1)     /**< Clear the fragmentation found flag (PASS Gen1)*/
+
+
+#define PASAHO_LINFO_SET_START_OFFSET_GEN1(x, v) PASAHO_SET_BITFIELD((x)->word0,(v),0,16)  /**< Update the next parse start offset (PASS Gen1)*/
+#define PASAHO_LINFO_SET_END_OFFSET_GEN1(x, v)   PASAHO_SET_BITFIELD((x)->word1,(v),16,16) /**< Update the end of packet parse offset (PASS Gen1)*/
+
+#define PASAHO_LINFO_SET_NULL_PKT_IND_GEN1(x, v) PASAHO_SET_BITFIELD((x)->word0,(v),21,1)  /**< Set the null packet flag which indicates that the packet should be dropped. 
+                                                                                           This flag should be set for the null packet to be delivered to PASS when
+                                                                                           the reassembly timeout occurs    (PASS Gen1)*/
+
+/*@}*/ /* PASAHO_long_info_ipReassm_gen1_macros */
+/** @}*/ /* @name PASAHO Long Info IpReassm Macros For First Generation PASS */
+
+/**
+ *  @defgroup PASAHO_long_info_ipReassm_gen2_macros  PASAHO Long Info IP Reassembly Macros For Second Generation PASS
+ *  @ingroup pasaho_if_macros
+ *  @{
+ *  @name PASAHO Long Info IpReassm Macros
+ *  Macros used by the PASAHO PASS-assisted IP Reassembly Operation For Second Generation PASS
+ *
+ */
+#define PASAHO_LINFO_READ_TFINDEX_GEN2(x)        PASAHO_READ_BITFIELD((x)->word5,24,8)     /**< Extract the IP Reassembly Traffic Flow Index (Pass Gen2)*/
+#define PASAHO_LINFO_READ_FRANCNT_GEN2(x)        PASAHO_READ_BITFIELD((x)->word5,16,8)     /**< Extract the IP Reassembly Fragment count (Pass Gen2)*/
+
+#define PASAHO_LINFO_SET_TFINDEX_GEN2(x, v)      PASAHO_SET_BITFIELD((x)->word5,(v),24,8)  /**< Set the IP Reassembly Traffic Flow Index (Pass Gen2)*/
+#define PASAHO_LINFO_SET_FRANCNT_GEN2(x, v)      PASAHO_SET_BITFIELD((x)->word5,(v),16,8)  /**< Set the IP Reassembly Fragment count (Pass Gen2)*/
+
+#define PASAHO_LINFO_IS_IPSEC_GEN2(x)            PASAHO_READ_BITFIELD((x)->word3,8,2)      /**< Indicate whether it is an IPSEC packet (Pass Gen2)*/
+#define PASAHO_LINFO_CLR_IPSEC_GEN2(x)           PASAHO_SET_BITFIELD((x)->word3,0,8,2)     /**< Clear IPSEC indication bits (Pass Gen2)*/
+#define PASAHO_LINFO_CLR_IPSEC_ESP_GEN2(x)       PASAHO_SET_BITFIELD((x)->word3,0,8,1)     /**< Clear IPSEC ESP indication bit (Pass Gen2)*/
+#define PASAHO_LINFO_CLR_IPSEC_AH_GEN2(x)        PASAHO_SET_BITFIELD((x)->word3,0,9,1)     /**< Claer IPSEC AH indication bit (Pass Gen2)*/
+#define PASAHO_LINFO_CLR_FLAG_FRAG_GEN2(x)       PASAHO_SET_BITFIELD((x)->word1,0,19,1)    /**< Clear the fragmentation found flag (Pass Gen2)*/
+
+
+#define PASAHO_LINFO_SET_START_OFFSET_GEN2(x, v) PASAHO_SET_BITFIELD((x)->word0,(v),0,8)   /**< Update the next parse start offset (Pass Gen2)*/
+#define PASAHO_LINFO_SET_END_OFFSET_GEN2(x, v)   PASAHO_SET_BITFIELD((x)->word1,(v),16,16) /**< Update the end of packet parse offset (Pass Gen2)*/
+#define PASAHO_LINFO_SET_NXT_HDR_TYPE_GEN2(x, v) PASAHO_SET_BITFIELD((x)->word1,(v),0,6)   /**< Update the next header to parse type (Pass Gen2)*/
+
+#define PASAHO_LINFO_SET_NULL_PKT_IND_GEN2(x, v) PASAHO_SET_BITFIELD((x)->word0,(v),13,1)  /**< Set the null packet flag which indicates that the packet should be dropped. 
+                                                                                                This flag should be set for the null packet to be delivered to PASS when
+                                                                                                the reassembly timeout occurs    (Pass Gen2)*/
+/*@}*/ /* PASAHO_long_info_ipReassm_gen2_macros */
+/** @}*/ /* @name PASAHO Long Info IpReassm Macros For Second Generation PASS */
+
+/**
+ *  @defgroup PASAHO_long_info_ipReassm_macros  PASAHO Long Info IP Reassembly Macros
+ *  @ingroup pasaho_if_macros
+ *  @{
+ *  @name PASAHO Long Info IpReassm Macros
+ *  Macros used by the PASAHO PASS-assisted IP Reassembly Operation
+ *
+ */
+#ifdef NSS_GEN2 
+#define PASAHO_LINFO_READ_TFINDEX(x)        PASAHO_LINFO_READ_TFINDEX_GEN2(x)         /**< Extract the IP Reassembly Traffic Flow Index */
+#define PASAHO_LINFO_READ_FRANCNT(x)        PASAHO_LINFO_READ_FRANCNT_GEN2(x)         /**< Extract the IP Reassembly Fragment count */
+
+#define PASAHO_LINFO_SET_TFINDEX(x, v)      PASAHO_LINFO_SET_TFINDEX_GEN2(x, v)       /**< Set the IP Reassembly Traffic Flow Index */
+#define PASAHO_LINFO_SET_FRANCNT(x, v)      PASAHO_LINFO_SET_FRANCNT_GEN2(x, v)       /**< Set the IP Reassembly Fragment count */
+
+#define PASAHO_LINFO_IS_IPSEC(x)            PASAHO_LINFO_IS_IPSEC_GEN2(x)             /**< Indicate whether it is an IPSEC packet */
+#define PASAHO_LINFO_CLR_IPSEC(x)           PASAHO_LINFO_CLR_IPSEC_GEN2(x)            /**< Clear IPSEC indication bits */
+#define PASAHO_LINFO_CLR_IPSEC_ESP(x)       PASAHO_LINFO_CLR_IPSEC_ESP_GEN2(x)        /**< Clear IPSEC ESP indication bit */
+#define PASAHO_LINFO_CLR_IPSEC_AH(x)        PASAHO_LINFO_CLR_IPSEC_AH_GEN2(x)         /**< Claer IPSEC AH indication bit */
+#define PASAHO_LINFO_CLR_FLAG_FRAG(x)       PASAHO_LINFO_CLR_FLAG_FRAG_GEN2(x)        /**< Clear the fragmentation found flag */
+
+
+#define PASAHO_LINFO_SET_START_OFFSET(x, v) PASAHO_LINFO_SET_START_OFFSET_GEN2(x, v)  /**< Update the next parse start offset */
+#define PASAHO_LINFO_SET_END_OFFSET(x, v)   PASAHO_LINFO_SET_END_OFFSET_GEN2(x, v)    /**< Update the end of packet parse offset */
+#define PASAHO_LINFO_SET_NXT_HDR_TYPE(x, v) PASAHO_LINFO_SET_NXT_HDR_TYPE_GEN2(x, v)  /**< Update the next header to parse type */
+
+#define PASAHO_LINFO_SET_NULL_PKT_IND(x, v) PASAHO_LINFO_SET_NULL_PKT_IND_GEN2(x, v)  /**< Set the null packet flag which indicates that the packet should be dropped. 
+                                                                                           This flag should be set for the null packet to be delivered to PASS when
+                                                                                           the reassembly timeout occurs    */
+#else
+#define PASAHO_LINFO_READ_TFINDEX(x)        PASAHO_LINFO_READ_TFINDEX_GEN1(x)         /**< Extract the IP Reassembly Traffic Flow Index */
+#define PASAHO_LINFO_READ_FRANCNT(x)        PASAHO_LINFO_READ_FRANCNT_GEN1(x)         /**< Extract the IP Reassembly Fragment count */
+
+#define PASAHO_LINFO_SET_TFINDEX(x, v)      PASAHO_LINFO_SET_TFINDEX_GEN1(x, v)       /**< Set the IP Reassembly Traffic Flow Index */
+#define PASAHO_LINFO_SET_FRANCNT(x, v)      PASAHO_LINFO_SET_FRANCNT_GEN1(x, v)       /**< Set the IP Reassembly Fragment count */
+
+#define PASAHO_LINFO_IS_IPSEC(x)            PASAHO_LINFO_IS_IPSEC_GEN1(x)             /**< Indicate whether it is an IPSEC packet */
+#define PASAHO_LINFO_CLR_IPSEC(x)           PASAHO_LINFO_CLR_IPSEC_GEN1(x)            /**< Clear IPSEC indication bits */
+#define PASAHO_LINFO_CLR_IPSEC_ESP(x)       PASAHO_LINFO_CLR_IPSEC_ESP_GEN1(x)        /**< Clear IPSEC ESP indication bit */
+#define PASAHO_LINFO_CLR_IPSEC_AH(x)        PASAHO_LINFO_CLR_IPSEC_AH_GEN1(x)         /**< Claer IPSEC AH indication bit */
+#define PASAHO_LINFO_CLR_FLAG_FRAG(x)       PASAHO_LINFO_CLR_FLAG_FRAG_GEN1(x)        /**< Clear the fragmentation found flag */
+
+
+#define PASAHO_LINFO_SET_START_OFFSET(x, v) PASAHO_LINFO_SET_START_OFFSET_GEN1(x, v)  /**< Update the next parse start offset */
+#define PASAHO_LINFO_SET_END_OFFSET(x, v)   PASAHO_LINFO_SET_END_OFFSET_GEN1(x, v)    /**< Update the end of packet parse offset */
+
+#define PASAHO_LINFO_SET_NULL_PKT_IND(x, v) PASAHO_LINFO_SET_NULL_PKT_IND_GEN1(x, v)  /**< Set the null packet flag which indicates that the packet should be dropped. 
+                                                                                           This flag should be set for the null packet to be delivered to PASS when
+                                                                                           the reassembly timeout occurs    */
+
+#endif                                                                                           
+/*@}*/ /* PASAHO_long_info_ipReassm_macros */
+/** @}*/ /* @name PASAHO Long Info IpReassm Macros */
+
+/**
+ *  @def  PA_INV_TF_INDEX
+ *        PASS-asssited IP reassembly traffic flow index to indicate that no traffic flow is available 
+ */
+#define PA_INV_TF_INDEX     0xFF    
+
+/**
+ *  @ingroup pasaho_if_structures
+ *  @brief  pasahoShortInfo_t defines the packet parsing information in the short format
+ *
+ *  @details pasahoShortInfo_t defines the packet parsing information in terms of
+ *           payload offset and payload length as described below
+ *           SRTP:      offset to the RTP header; RTP payload length including ICV
+ *           IPSEC AH:  offset to the Outer IP; IP payload length
+ *           IPSEC ESP: offset to the ESP header; ESP papload length including ICV
+ */
+
+typedef struct pasahoShortInfo_s {
+    uint32_t  word0;   /**< Control block word 0 */
+    uint32_t  word1;   /**< Optional supplement data (It may be padding for alignment only) */
+} pasahoShortInfo_t;
+
+/** 
+ *  @defgroup PASAHO_short_info_command_macros  PASAHO Short Info Command Macros
+ *  @ingroup pasaho_if_macros
+ *  @{
+ *  @name PASAHO Short Info Command Macros
+ *  Macros used by the PASAHO Short Info Command
+ *  
+ */
+/*@{*/
+#define PASAHO_SINFO_READ_CMDID(x)          PASAHO_READ_BITFIELD((x)->word0,29,3)                           /**< Extract the command ID defined at @ref pasahoCommands */
+#define PASAHO_SINFO_RESD_PAYLOAD_OFFSET(x) PASAHO_READ_BITFIELD((x)->word0,16,8)                           /**< Extract the offset to the packet payload */
+#define PASAHO_SINFO_READ_PAYLOAD_LENGTH(x) PASAHO_READ_BITFIELD((x)->word0,0,16)                           /**< Extract the byte length of the payload */
+
+#define PASAHO_SINFO_SET_PAYLOAD_OFFSET(x, v)  PASAHO_SET_BITFIELD((x)->word0, (v), 16, 8)                  /**< Set the offset to the payload */
+#define PASAHO_SINFO_SET_PAYLOAD_LENGTH(x, v)  PASAHO_SET_BITFIELD((x)->word0, (v), 0,  16)                 /**< Set the payload length */
+#define PASAHO_SINFO_FORMAT_CMD(offset, len)   (((offset) << 16) | (len) | (PASAHO_SA_SHORT_INFO << 29))    /**< Format the entire short info command */
+
+/*@}*/ /* PASAHO_short_info_command_macros */
+/** @}*/ /* @name PASAHO Short Info Command Macros */
+
+/* Header bitmask bits */
+/**
+ *  @defgroup pasahoHeaderBitmapGen1  PA/SA/HO Header Bitmap Bit Definitions For First Generation PASS
+ *  @ingroup pasaho_if_constants
+ *  @{
+ *
+ *  @name PA/SA/HO Header Bitmap Bit Definitions For First Generation PASS
+ *  Bitmap definition of the protocol header bitmask at the long info of First Generation PASS. 
+ */ 
+/*@{*/
+#define PASAHO_HDR_BITMASK_MAC_GEN1     (1 << 0)     /**< MAC present (PASS Gen1)*/
+#define PASAHO_HDR_BITMASK_VLAN_GEN1    (1 << 1)     /**< VLAN present (PASS Gen1)*/
+#define PASAHO_HDR_BITMASK_MPLS_GEN1    (1 << 2)     /**< MPLS present (PASS Gen1)*/
+#define PASAHO_HDR_BITMASK_IP_GEN1      (1 << 3)     /**< IP present (PASS Gen1)*/
+#define PASAHO_HDR_BITMASK_ESP_GEN1     (1 << 4)     /**< IPSEC/ESP present (PASS Gen1)*/
+#define PASAHO_HDR_BITMASK_AH_GEN1      (1 << 5)     /**< IPSEC/AH present (PASS Gen1)*/
+#define PASAHO_HDR_BITMASK_UDP_GEN1     (1 << 6)     /**< UDP present (PASS Gen1)*/
+#define PASAHO_HDR_BITMASK_UDPLITE_GEN1 (1 << 7)     /**< UDPLITE present (PASS Gen1)*/
+#define PASAHO_HDR_BITMASK_TCP_GEN1     (1 << 8)     /**< TCP present (PASS Gen1)*/
+#define PASAHO_HDR_BITMASK_GTPU_GEN1    (1 << 9)     /**< GTPU present (PASS Gen1)*/
+#define PASAHO_HDR_BITMASK_CUSTOM_GEN1  (1 << 10)    /**< Custom header present (PASS Gen1)*/
+
+#define PASAHO_HDR_BITMASK2_SCTP_GEN1          (1 << 0)     /**< SCTP present (PASS Gen1)*/
+#define PASAHO_HDR_BITMASK2_IPSEC_NAT_T_GEN1   (1 << 1)     /**< IPSEC NAT-T present (PASS Gen1)*/
+#define PASAHO_HDR_BITMASK2_PPPoE_GEN1         (1 << 2)     /**< PPPoE present (PASS Gen1)*/
+#define PASAHO_HDR_BITMASK2_802_3_GEN1         (1 << 3)     /**< 802.3 present (PASS Gen1)*/
+
+/*@}*/
+/** @} */
+
+/* Header bitmask bits */
+/**
+ *  @defgroup pasahoHeaderBitmapGen2  PA/SA/HO Header Bitmap Bit Definitions For Second Generation PASS
+ *  @ingroup pasaho_if_constants
+ *  @{
+ *
+ *  @name PA/SA/HO Header Bitmap Bit Definitions For Second Generation PASS
+ *  Bitmap definition of the protocol header bitmask at the long info  For Second Generation PASS. 
+ */ 
+/*@{*/
+#define PASAHO_HDR_BITMASK_MAC_GEN2     (1 << 0)     /**< MAC present (PASS Gen2)*/
+#define PASAHO_HDR_BITMASK_VLAN_GEN2    (1 << 1)     /**< VLAN present (PASS Gen2)*/
+#define PASAHO_HDR_BITMASK_MPLS_GEN2    (1 << 2)     /**< MPLS present (PASS Gen2)*/
+#define PASAHO_HDR_BITMASK_802_3_GEN2   (1 << 3)     /**< 802.3 present (PASS Gen2)*/
+#define PASAHO_HDR_BITMASK_PPPoE_GEN2   (1 << 4)     /**< PPPoE present (PASS Gen2)*/
+#define PASAHO_HDR_BITMASK_IPv4_GEN2    (1 << 5)     /**< IPv4 present (PASS Gen2)*/
+#define PASAHO_HDR_BITMASK_IPv6_GEN2    (1 << 6)     /**< IPv6 present (PASS Gen2)*/
+#define PASAHO_HDR_BITMASK_IP_OPTS_GEN2 (1 << 7)     /**< IPv4 options or IPv6 extension headers present (PASS Gen2)*/
+#define PASAHO_HDR_BITMASK_ESP_GEN2     (1 << 8)     /**< IPSEC/ESP present (PASS Gen2)*/
+#define PASAHO_HDR_BITMASK_AH_GEN2      (1 << 9)     /**< IPSEC/AH present (PASS Gen2)*/
+#define PASAHO_HDR_BITMASK_SCTP_GEN2    (1 << 10)    /**< SCTP present (PASS Gen2)*/
+#define PASAHO_HDR_BITMASK_UDP_GEN2     (1 << 11)    /**< UDP present (PASS Gen2)*/
+#define PASAHO_HDR_BITMASK_UDPLITE_GEN2 (1 << 11)    /**< UDPLITE present (PASS Gen2)*/
+#define PASAHO_HDR_BITMASK_TCP_GEN2     (1 << 12)    /**< TCP present (PASS Gen2)*/
+#define PASAHO_HDR_BITMASK_GTPU_GEN2    (1 << 13)     /**< GTPU present (PASS Gen2)*/
+#define PASAHO_HDR_BITMASK_CUSTOM_GEN2  (1 << 14)    /**< Custom header present (PASS Gen2)*/
+#define PASAHO_HDR_BITMASK_IPSEC_NAT_T_GEN2   (1 << 15)     /**< IPSEC NAT-T present (PASS Gen2)*/
+
+/*@}*/
+/** @} */
+
+/* Header bitmask bits */
+/**
+ *  @defgroup pasahoHeaderBitmap  PA/SA/HO Header Bitmap Bit Definitions
+ *  @ingroup pasaho_if_constants
+ *  @{
+ *
+ *  @name PA/SA/HO Header Bitmap Bit Definitions
+ *  Bitmap definition of the protocol header bitmask at the long info. 
+ */ 
+/*@{*/
+#ifdef NSS_GEN2
+#define PASAHO_HDR_BITMASK_MAC         PASAHO_HDR_BITMASK_MAC_GEN2          /**< MAC present */
+#define PASAHO_HDR_BITMASK_VLAN        PASAHO_HDR_BITMASK_VLAN_GEN2         /**< VLAN present */
+#define PASAHO_HDR_BITMASK_MPLS        PASAHO_HDR_BITMASK_MPLS_GEN2         /**< MPLS present */
+#define PASAHO_HDR_BITMASK_802_3       PASAHO_HDR_BITMASK_802_3_GEN2        /**< 802.3 present */
+#define PASAHO_HDR_BITMASK_PPPoE       PASAHO_HDR_BITMASK_PPPoE_GEN2        /**< PPPoE present */
+#define PASAHO_HDR_BITMASK_IPv4        PASAHO_HDR_BITMASK_IPv4_GEN2         /**< IPv4 present */
+#define PASAHO_HDR_BITMASK_IPv6        PASAHO_HDR_BITMASK_IPv6_GEN2         /**< IPv6 present */
+#define PASAHO_HDR_BITMASK_IP_OPTS     PASAHO_HDR_BITMASK_IP_OPTS_GEN2      /**< IPv4 options or IPv6 extension headers present */
+#define PASAHO_HDR_BITMASK_ESP         PASAHO_HDR_BITMASK_ESP_GEN2          /**< IPSEC/ESP present */
+#define PASAHO_HDR_BITMASK_AH          PASAHO_HDR_BITMASK_AH_GEN2           /**< IPSEC/AH present */
+#define PASAHO_HDR_BITMASK_SCTP        PASAHO_HDR_BITMASK_SCTP_GEN2         /**< SCTP present */
+#define PASAHO_HDR_BITMASK_UDP         PASAHO_HDR_BITMASK_UDP_GEN2          /**< UDP present */
+#define PASAHO_HDR_BITMASK_UDPLITE     PASAHO_HDR_BITMASK_UDPLITE_GEN2      /**< UDPLITE present */
+#define PASAHO_HDR_BITMASK_TCP         PASAHO_HDR_BITMASK_TCP_GEN2          /**< TCP present */
+#define PASAHO_HDR_BITMASK_GTPU        PASAHO_HDR_BITMASK_GTPU_GEN2         /**< GTPU present */
+#define PASAHO_HDR_BITMASK_CUSTOM      PASAHO_HDR_BITMASK_CUSTOM_GEN2       /**< Custom header present */
+#define PASAHO_HDR_BITMASK_IPSEC_NAT_T PASAHO_HDR_BITMASK_IPSEC_NAT_T_GEN2  /**< IPSEC NAT-T present */
+#else
+#define PASAHO_HDR_BITMASK_MAC         PASAHO_HDR_BITMASK_MAC_GEN1          /**< MAC present */
+#define PASAHO_HDR_BITMASK_VLAN        PASAHO_HDR_BITMASK_VLAN_GEN1         /**< VLAN present */
+#define PASAHO_HDR_BITMASK_MPLS        PASAHO_HDR_BITMASK_MPLS_GEN1         /**< MPLS present */
+#define PASAHO_HDR_BITMASK_IP          PASAHO_HDR_BITMASK_IP_GEN1           /**< IP present */
+#define PASAHO_HDR_BITMASK_ESP         PASAHO_HDR_BITMASK_ESP_GEN1          /**< IPSEC/ESP present */
+#define PASAHO_HDR_BITMASK_AH          PASAHO_HDR_BITMASK_AH_GEN1           /**< IPSEC/AH present */
+#define PASAHO_HDR_BITMASK_UDP         PASAHO_HDR_BITMASK_UDP_GEN1          /**< UDP present */
+#define PASAHO_HDR_BITMASK_UDPLITE     PASAHO_HDR_BITMASK_UDPLITE_GEN1      /**< UDPLITE present */
+#define PASAHO_HDR_BITMASK_TCP         PASAHO_HDR_BITMASK_TCP_GEN1          /**< TCP present */
+#define PASAHO_HDR_BITMASK_GTPU        PASAHO_HDR_BITMASK_GTPU_GEN1         /**< GTPU present */
+#define PASAHO_HDR_BITMASK_CUSTOM      PASAHO_HDR_BITMASK_CUSTOM_GEN1       /**< Custom header present */
+
+#define PASAHO_HDR_BITMASK2_SCTP        PASAHO_HDR_BITMASK2_SCTP_GEN1       /**< SCTP present */
+#define PASAHO_HDR_BITMASK2_IPSEC_NAT_T PASAHO_HDR_BITMASK2_IPSEC_NAT_T_GEN1/**< IPSEC NAT-T present */
+#define PASAHO_HDR_BITMASK2_PPPoE       PASAHO_HDR_BITMASK2_PPPoE_GEN1      /**< PPPoE present */
+#define PASAHO_HDR_BITMASK2_802_3       PASAHO_HDR_BITMASK2_802_3_GEN1      /**< 802.3 present */
+#endif
+
+/*@}*/
+/** @} */
+
+
+
+
+/* Next Route command */
+/**
+ *  @defgroup pasahoNrDestGen1  PA/SA/HO Destination Types at NextRoute Command of First Generation PASS
+ *  @ingroup pasaho_if_constants
+ *  @{
+ *
+ *  @name PA/SA/HO Destination Types at NextRoute Command of First Generation PASS
+ *  Bitmap definition of the destination type at the nextRoute command of First Generation PASS. 
+ */ 
+/*@{*/
+#define PASAHO_NR_DEST_PKTDMA_GEN1      6            /**< NextRoute Destination: PKTDMA (PASS Gen1)*/
+#define PASAHO_NR_DEST_ETH_GEN1         7            /**< NextRoute Destination: Ethernet Port (PASS Gen1)*/
+#define PASAHO_NR_DEST_SRIO_GEN1        0            /**< NextRoute Destination: SRIO (PASS Gen1)*/
+
+/*@}*/
+/** @} */
+
+/**
+ *  @defgroup pasahoNrDestGen2  PA/SA/HO Destination Types at NextRoute Command of Second Generation PASS
+ *  @ingroup pasaho_if_constants
+ *  @{
+ *
+ *  @name PA/SA/HO Destination Types at NextRoute Command of Second Generation PASS
+ *  Bitmap definition of the destination type at the nextRoute command of Second Generation PASS. 
+ */ 
+/*@{*/
+#define PASAHO_NR_DEST_PKTDMA_GEN2      0            /**< NextRoute Destination: PKTDMA (PASS Gen2)*/
+#define PASAHO_NR_DEST_ETH_GEN2         2            /**< NextRoute Destination: Ethernet Port (PASS Gen2)*/
+#define PASAHO_NR_DEST_SRIO_GEN2        7            /**< NextRoute Destination: SRIO (PASS Gen2)*/
+
+/*@}*/
+/** @} */
+
+/**
+ *  @defgroup pasahoNrDest  PA/SA/HO Destination Types at NextRoute Command
+ *  @ingroup pasaho_if_constants
+ *  @{
+ *
+ *  @name PA/SA/HO Destination Types at NextRoute Command
+ *  Bitmap definition of the destination type at the nextRoute command
+ */ 
+#ifdef NSS_GEN2
+#define PASAHO_NR_DEST_PKTDMA      PASAHO_NR_DEST_PKTDMA_GEN2   /**< NextRoute Destination: PKTDMA */
+#define PASAHO_NR_DEST_ETH         PASAHO_NR_DEST_ETH_GEN2      /**< NextRoute Destination: Ethernet Port */
+#define PASAHO_NR_DEST_SRIO        PASAHO_NR_DEST_SRIO_GEN2     /**< NextRoute Destination: SRIO */
+#else
+#define PASAHO_NR_DEST_PKTDMA      PASAHO_NR_DEST_PKTDMA_GEN1   /**< NextRoute Destination: PKTDMA */
+#define PASAHO_NR_DEST_ETH         PASAHO_NR_DEST_ETH_GEN1      /**< NextRoute Destination: Ethernet Port */
+#define PASAHO_NR_DEST_SRIO        PASAHO_NR_DEST_SRIO_GEN1     /**< NextRoute Destination: SRIO */
+#endif
+
+/*@}*/
+/** @} */
+
+/**
+ *  @ingroup pasaho_if_structures
+ *  @brief  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.
+ *
+ *  @details 
+ */
+
+typedef struct pasahoNextRoute_s  {
+    uint32_t  word0;          /**< Contains the next route command information. @ref PASAHO_next_route_command_macros */
+    uint32_t  swInfo0;        /**< Information placed into returned descriptor. Used if next destination is the host */
+    uint32_t  swInfo1;        /**< Information placed into returned descriptor. Used if next destination is the host */
+    uint32_t  word1;          /**< Contains the optional information such as pktType for SRIO. @ref PASAHO_next_route_command_macros */
+} pasahoNextRoute_t;
+
+/** 
+ *  @defgroup PASAHO_next_route_command_macros  PASAHO Next Route Command Macros
+ *  @ingroup pasaho_if_macros
+ *  @{
+ *  @name PASAHO Next Route Command Macros
+ *  Macros used by the PASAHO Next Route Command
+ *  
+ */
+/*@{*/
+
+#define PASAHO_SET_N(x,v)       PASAHO_SET_BITFIELD((x)->word0, (v), 28, 1)    /**< Sets the N bit which indicates the next command should be executed prior to the route command */
+#define PASAHO_SET_E(x,v)       PASAHO_SET_BITFIELD((x)->word0, (v), 27, 1)    /**< Sets the E bit which indicates the extened parameters (packet type and/or control flags) are present for SRIO */
+#define PASAHO_SET_DEST(x,v)    PASAHO_SET_BITFIELD((x)->word0, (v), 24, 3)    /**< Sets the destination of the route defined at @ref pktDest */
+#define PASAHO_SET_FLOW(x,v)    PASAHO_SET_BITFIELD((x)->word0, (v), 16, 8)    /**< Specifies the flow to use for packets sent to the host */
+#define PASAHO_SET_QUEUE(x,v)   PASAHO_SET_BITFIELD((x)->word0, (v), 0,  16)   /**< Specifies the queue to use for packets send to the host */
+#define PASAHO_SET_PKTTYPE(x,v) PASAHO_SET_BITFIELD((x)->word1, (v), 24, 8)    /**< Specifies the packet type to use for packets send to the SRIO */
+#define PASAHO_SET_TX_PADDING(x,v) PASAHO_SET_BITFIELD((x)->word1, (v), 0, 1)  /**< Sets the tx padding bit which indicates PASS should check padding condition and provide L2 zero padding if required */
+#define PASAHO_SET_TX_STATS(x,v) PASAHO_SET_BITFIELD((x)->word1, (v), 1, 1)    /**< Sets the tx stats bit which indicates PASS should increment the user statistics chain pointed by the user statistics index */
+#define PASAHO_SET_RPT_TX_TIMESTAMP(x,v) PASAHO_SET_BITFIELD((x)->word1, (v), 2, 1)  /**< Sets the report tx timestamp bit which indicates swInfo0 is required to configure CPTS Tx timestamp report */
+#define PASAHO_SET_USR_STATS_INDEX(x,v) PASAHO_SET_BITFIELD((x)->word1, (v), 8, 16) /**< Specifies index of the first user-defined statistics to be updated */
+
+/*@}*/ /* PASAHO_next_route_command_macros */
+/** @}*/ /* @name PASAHO Next Route Command Macros */
+
+
+/* Compute checksum command */
+/**
+ *  @ingroup pasaho_if_structures
+ *  @brief  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.
+ *
+ *  @details 
+ */
+
+typedef struct pasahoComChkCrc_s  {
+    uint32_t  word0;        /**<  @ref PASAHO_chksum_command_macros */
+    uint32_t  word1;        /**<  @ref PASAHO_chksum_command_macros */
+    uint32_t  word2;        /**<  @ref PASAHO_chksum_command_macros */
+
+} pasahoComChkCrc_t;
+
+/** 
+ *  @defgroup PASAHO_chksum_command_macros  PASAHO Checksum/CRC Command Macros
+ *  @ingroup pasaho_if_macros
+ *  @{
+ *  @name PASAHO Checksum/CRC Command Macros
+ *  Macros used by the ASAHO Checksum/CRC Command 
+ */
+/*@{*/
+
+#define PASAHO_CHKCRC_SET_NEG0(x,v)        PASAHO_SET_BITFIELD((x)->word0, (v), 23, 1)           /**< Sets the negative 0 flag - if set a checksum computed as 0 will be sent as 0xffff */
+#define PASAHO_CHKCRC_SET_CTRL(x,v)        PASAHO_SET_BITFIELD((x)->word0, (v), 16, 4)           /**< Sets the optional flags of the CRC/Checksum command */
+#define PASAHO_CHKCRC_SET_CRCSIZE(x,v)     PASAHO_SET_BITFIELD((x)->word0, (v), 8,  8)           /**< Sets the size of the crc in bytes (PASS Gen2 only) */
+#define PASAHO_CHKCRC_SET_START(x,v)       PASAHO_SET_BITFIELD((x)->word0, (v), 0,  8)           /**< Sets the start offset of the checksum/crc */
+#define PASAHO_CHKCRC_SET_LEN(x,v)         PASAHO_SET_BITFIELD((x)->word1, (v), 16, 16)          /**< Sets the length of the checksum/crc */
+#define PASAHO_CHKCRC_SET_RESULT_OFF(x,v)  PASAHO_SET_BITFIELD((x)->word1, (v), 0,  16)          /**< Sets the offset to where to paste the checksum/crc into the packet */
+#define PASAHO_CHKCRC_SET_INITVAL(x,v)     PASAHO_SET_BITFIELD((x)->word2, (v), 16, 16)          /**< Sets the initial value of the 16-bit checksum */
+#define PASAHO_CHKCRC_SET_INITVAL32(x,v)   (x)->word2 = (v)                                      /**< Sets the initial value of the 32-bit crc (PASS Gen2 only)*/
+
+/*@}*/ /* @name PASAHO Checksum/CRC Command Macros */
+/** @}*/ /* PASAHO_chksum_command_macros */
+
+
+/* Blind patch command */
+/**
+ *  @ingroup pasaho_if_structures
+ *  @brief  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.
+ *
+ *  @details 
+ */
+
+#define PASAHO_BPATCH_MAX_PATCH_WORDS   4
+typedef struct pasahoComBlindPatch_s  {
+    uint32_t   word0;                                   /**<  @ref PASAHO_blind_patch_command_macros */
+    uint32_t   patch[PASAHO_BPATCH_MAX_PATCH_WORDS];    /**<  @ref PASAHO_blind_patch_command_macros */
+    
+} pasahoComBlindPatch_t;
+
+/** 
+ *  @defgroup PASAHO_blind_patch_command_macros  PASAHO Blind Patch Command Macros
+ *  @ingroup pasaho_if_macros
+ *  @{
+ *  @name PASAHO Blind Patch Command Macros
+ *  Macros used by the PASAHO Blind Patch Command
+ */
+
+#define PASAHO_BPATCH_SET_PATCH_NBYTES(x,v)    \
+                          PASAHO_SET_BITFIELD((x)->word0, v, 24,  5)
+/**< Sets the number of bytes to patch */
+                          
+#define PASAHO_BPATCH_SET_PATCH_CMDSIZE(x,v)   \
+                          PASAHO_SET_BITFIELD((x)->word0, v, 20, 4)
+/**< Sets the size of the command in 32 bit word units */
+                          
+#define PASAHO_BPATCH_SET_OVERWRITE(x,v)       \
+                          PASAHO_SET_BITFIELD((x)->word0, v, 19, 1)
+/**< Sets the overwrite flag. If set the patch will overwrite existing packet data, 
+     otherwise data may be inserted */  
+     
+#define PASAHO_BPATCH_SET_DELETE(x,v)         \
+                          PASAHO_SET_BITFIELD((x)->word0, v, 18, 1)
+/**< Sets the delete flag. If set, no data will be inserted */                          
+                             
+                          
+#define PASAHO_BPATCH_SET_OFFSET(x,v)         \
+                          PASAHO_SET_BITFIELD((x)->word0, v, 0,  16)
+/**< Sets the offset to the start of the patch */                          
+                          
+#define PASAHO_BPATCH_SET_PATCH_BYTE(x, byteNum, byte)  \
+                                PASAHO_SET_BITFIELD((x)->patch[(byteNum) >> 2], byte, ((3 - (byteNum & 0x3)) << 3), 8)
+/**< Sets the data to patch */                                                   
+                                
+/*@}*/ /* @name PASAHO Blind Patch Command Macros */
+/** @}*/ /* PASAHO_blind_patch_command_macros */        
+
+/* Report Timestamp command */
+/**
+ *  @ingroup pasaho_if_structures
+ *  @brief  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.
+ *
+ *  @details 
+ */
+
+typedef struct pasahoReportTimestamp_s  {
+    uint32_t  word0;          /**< Contains the report timestamp command information. @ref PASAHO_report_timestamp_command_macros */
+    uint32_t  swInfo0;        /**< Information placed into returned descriptor of the reporting packet.  */
+} pasahoReportTimestamp_t;
+
+/** 
+ *  @defgroup PASAHO_report_timestamp_command_macros PASAHO Report Timestamp Command Macros
+ *  @ingroup pasaho_if_macros
+ *  @{
+ *  @name PASAHO Report Timestamp Command Macros
+ *  Macros used by the PASAHO Report Timestamp Command
+ *  
+ */
+/*@{*/
+#define PASAHO_SET_REPORT_FLOW(x,v)    PASAHO_SET_BITFIELD((x)->word0, (v), 16, 8)    /**< Specifies the flow to use for report packets sent to the host */
+#define PASAHO_SET_REPORT_QUEUE(x,v)   PASAHO_SET_BITFIELD((x)->word0, (v), 0,  16)   /**< Specifies the queue to use for report packets send to the host */
+
+/*@}*/ /* @name PASAHO Report Timestamp Command Macros */
+/** @}*/ /* PASAHO_report_timestamp_command_macros */        
+
+/* IP Fragmentation command */
+/**
+ *  @ingroup pasaho_if_structures
+ *  @brief  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.
+ *
+ *  @details 
+ */
+
+typedef struct pasahoIpFrag_s  {
+    uint32_t  word0;          /**< Contains the ip fragmentation command information. @ref PASAHO_ip_frag_command_macros */
+} pasahoIpFrag_t;
+
+/** 
+ *  @defgroup PASAHO_ip_frag_command_macros  PASAHO IP Fragmentation Command Macros
+ *  @ingroup pasaho_if_macros
+ *  @{
+ *  @name PASAHO IP Fragmentation Command Macros
+ *  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)    /**< Set sub-command code to indicate IP Fragmentation command */
+#define PASAHO_SET_SUB_CODE(x,v)  PASAHO_SET_BITFIELD((x)->word0, (v), 24, 5)  /**< Specifies the sub-command code */
+#define PASAHO_SET_IP_OFFSET(x,v) PASAHO_SET_BITFIELD((x)->word0, (v), 16, 8)  /**< Specifies the offset to the IP header to be fragmented */
+#define PASAHO_SET_MTU_SIZE(x,v)  PASAHO_SET_BITFIELD((x)->word0, (v), 0,  16) /**< Specifies the MTU size */
+
+/*@}*/ /* @name PASAHO IP Fragmentation Command Macros */
+/** @}*/ /* PASAHO_ip_frag_command_macros */
+
+
+/* Patch Message Length command */
+/**
+ *  @ingroup pasaho_if_structures
+ *  @brief  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.
+ *
+ *  @details 
+ */
+
+typedef struct pasahoPatchMsgLen_s  {
+    uint32_t  word0;          /**< Contains the message length patching command information. @ref PASAHO_patch_msg_len_command_macros */
+} pasahoPatchMsgLen_t;
+
+/** 
+ *  @defgroup PASAHO_patch_msg_len_command_macros  PASAHO Message Length Patching Command Macros
+ *  @ingroup pasaho_if_macros
+ *  @{
+ *  @name PASAHO Message Length Patching Command Macros
+ *  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)    /**< Set sub-command code to indicate Message Length Patching command */
+#define PASAHO_SET_MSGLEN_OFFSET(x,v) PASAHO_SET_BITFIELD((x)->word0, (v), 16, 8)  /**< Specifies the offset to the message length field to be patched */
+#define PASAHO_SET_MSGLEN_SIZE(x,v) PASAHO_SET_BITFIELD((x)->word0, (v), 15,  1)   /**< Specifies the size of the length field (0: 16-bit; 1: 32-bit) */
+#define PASAHO_SET_MSGLEN(x,v)  PASAHO_SET_BITFIELD((x)->word0, (v), 0,  15)       /**< Specifies the message length excluding the IP header and payload length */
+
+/*@}*/ /* @name PASAHO Message Length Patching Command Macros */
+/** @}*/ /* PASAHO_patch_msg_len_command_macros */
+
+/* Compute checksum command */
+/**
+ *  @ingroup pasaho_if_structures
+ *  @brief  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.
+ *
+ *  @details 
+ */
+
+typedef struct pasahoEfOp_s  {
+    uint32_t  word0;        /**<  @ref PASAHO_ef_op_command_macros */
+    uint32_t  word1;        /**<  @ref PASAHO_ef_op_command_macros */
+    uint32_t  word2;        /**<  @ref PASAHO_ef_op_command_macros */
+    uint32_t  word3;        /**<  @ref PASAHO_ef_op_command_macros */
+    uint32_t  word4;        /**<  @ref PASAHO_ef_op_command_macros */
+    uint32_t  word5;        /**<  @ref PASAHO_ef_op_command_macros */
+
+} pasahoComEfOp_t;
+
+/**
+ *  @defgroup pasahoEfOpCtrlBitmap  PA/SA/HO Egress Flow Opertaion Control Bitmap Bit Definitions
+ *  @ingroup pasaho_if_constants
+ *  @{
+ *
+ *  @name PA/SA/HO Egress Flow Opertaion Control Bitmap Bit Definitions
+ *  Bitmap definition of the control bitmap at the Egress Flow operation info. 
+ */ 
+/*@{*/
+
+#define PASAHO_HDR_EF_OP_CTRL_FC           (1 << 15)    /**< Enable Flow Cache lookup */
+#define PASAHO_HDR_EF_OP_CTRL_LVL4_REC     (1 << 7)     /**< Level 4 record prespent */
+#define PASAHO_HDR_EF_OP_CTRL_LVL3_REC     (1 << 6)     /**< Level 3 record prespent */
+#define PASAHO_HDR_EF_OP_CTRL_LVL2_REC     (1 << 5)     /**< Level 2 record prespent */
+#define PASAHO_HDR_EF_OP_CTRL_LVL1_REC     (1 << 4)     /**< Level 1 record prespent */
+
+/*@}*/
+/** @} */
+
+
+/** 
+ *  @defgroup PASAHO_ef_op_command_macros  PASAHO Egress Flow Operation Command Macros
+ *  @ingroup pasaho_if_macros
+ *  @{
+ *  @name PASAHO Egress Flow Operation Command Macros
+ *  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)           /**< Sets the control flags of the Flow Cache operation command */
+#define PASAHO_EF_OP_SET_CTRL_FC(x,v)       PASAHO_SET_BITFIELD((x)->word0,(v), 23, 1)           /**< Enable/Disable Flow Cache lookup */
+#define PASAHO_EF_OP_SET_CTRL_LVL4(x,v)     PASAHO_SET_BITFIELD((x)->word0,(v), 15, 1)           /**< Enable/Disable Level 4 Egress Flow record */
+#define PASAHO_EF_OP_SET_CTRL_LVL3(x,v)     PASAHO_SET_BITFIELD((x)->word0,(v), 14, 1)           /**< Enable/Disable Level 3 Egress Flow record */
+#define PASAHO_EF_OP_SET_CTRL_LVL2(x,v)     PASAHO_SET_BITFIELD((x)->word0,(v), 13, 1)           /**< Enable/Disable Level 2 Egress Flow record */
+#define PASAHO_EF_OP_SET_CTRL_LVL1(x,v)     PASAHO_SET_BITFIELD((x)->word0,(v), 12, 1)           /**< Enable/Disable Level 1 Egress Flow record */
+
+#define PASAHO_EF_OP_SET_L2_OFFSET(x, v)    PASAHO_SET_BITFIELD((x)->word1,(v),8,8)              /**< Set the l2 offset */
+#define PASAHO_EF_OP_SET_L3_OFFSET2(x, v)   PASAHO_SET_BITFIELD((x)->word1,(v),0,8)              /**< Set the l3 offset for inner or fisrt IP */
+#define PASAHO_EF_OP_SET_L3_OFFSET(x, v)    PASAHO_SET_BITFIELD((x)->word2,(v),24,8)             /**< Set the l3 offset for outer or fisrt IP */
+#define PASAHO_EF_OP_SET_IPSEC_OFFSET(x, v) PASAHO_SET_BITFIELD((x)->word2,(v),0, 8)             /**< Set the IPSEC offset if the IPSEC header exists in the packet */
+#define PASAHO_EF_OP_SET_END_OFFSET(x, v)   PASAHO_SET_BITFIELD((x)->word1,(v),16,16)            /**< Set the end offset as end of L4 (UDP/UDPLite/TCP) payload */
+
+#define PASAHO_EF_OP_SET_LVL1_REC(x, v)     PASAHO_SET_BITFIELD((x)->word3,(v),24, 8)            /**< Set the index of Egress Flow level 1 record */
+#define PASAHO_EF_OP_SET_LVL2_REC(x, v)     PASAHO_SET_BITFIELD((x)->word3,(v),16, 8)            /**< Set the index of Egress Flow level 2 record */
+#define PASAHO_EF_OP_SET_LVL3_REC(x, v)     PASAHO_SET_BITFIELD((x)->word3,(v), 8, 8)            /**< Set the index of Egress Flow level 3 record */
+#define PASAHO_EF_OP_SET_LVL4_REC(x, v)     PASAHO_SET_BITFIELD((x)->word3,(v), 0, 8)            /**< Set the index of Egress Flow level 4 record */
+
+/*@}*/
+/** @} */
+
+
+/* EMAC CRC Verify command */
+/**
+ *  @ingroup pasaho_if_structures
+ *  @brief  pasahoEmacCrcVerify_t defines the Ethernet CRC Verify command. The command structure is defined as 32 bit
+ *          values to work with the hardware regardless of the device endianness.
+ *
+ *  @details 
+ */
+
+typedef struct pasahoEmacCrcVerify_s  {
+    uint32_t  word0;          /**< Contains the Ethernet CRC Verify command information. @ref PASAHO_emac_crc_verify_command_macros */
+} pasahoEmacCrcVerify_t;
+
+/** 
+ *  @defgroup PASAHO_emac_crc_verify_command_macros  PASAHO EMAC CRC Verify Command Macros
+ *  @ingroup pasaho_if_macros
+ *  @{
+ *  @name PASAHO EMAC CRC Verify Command Macros
+ *  Macros used by the PASAHO EMAC CRC Verify Command
+ *  
+ */
+/*@{*/
+
+#define PASAHO_SET_SUB_CODE_EMAC_CRC_VERIFY(x) PASAHO_SET_BITFIELD((x)->word0, PASAHO_SUB_CMD_EMAC_CRC_VERIFY, 24, 5)    /**< Set sub-command code to indicate EMAC CRC Verify command */
+#define PASAHO_SET_EMACPORT(x,v) PASAHO_SET_BITFIELD((x)->word0, (v), 20, 4)    /**< Specifies the one-based destination EMAC port number 
+                                                                                     where 0 indicates standard ethernet switch forwarding */
+
+/*@}*/ /* @name PASAHO EMAC CRC Verify Command Macros */
+/** @}*/ /* PASAHO_emac_crc_verify_command_macros */
+
+/* Insert Message time command */
+/**
+ *  @ingroup pasaho_if_structures
+ *  @brief  pasahoInsMsgTime_t defines the message time insert command. The command structure is defined as 32 bit
+ *          values to work with the hardware regardless of the device endianness.
+ *
+ *  @details 
+ */
+
+typedef struct pasahoInsMsgTime_s  {
+    uint32_t  word0;          /**< Contains the message time patching command information. @ref PASAHO_insert_msg_time_command_macros */
+} pasahoInsMsgTime_t;
+
+/** 
+ *  @defgroup PASAHO_insert_msg_time_command_macros  PASAHO Message Time Insert Command Macros
+ *  @ingroup pasaho_if_macros
+ *  @{
+ *  @name PASAHO Message Time Insert Command Macros
+ *  Macros used by the PASAHO Message Time Insert Command
+ *  
+ */
+/*@{*/
+
+#define PASAHO_SET_SUB_CODE_INS_MSG_TIME(x) PASAHO_SET_BITFIELD((x)->word0, PASAHO_SUB_CMD_INS_TIME, 24, 5)    /**< Set sub-command code to indicate Message Time Insert command */
+#define PASAHO_SET_INS_OFFSET_MSG_TIME(x,offset)   PASAHO_SET_BITFIELD((x)->word0, offset, 0, 16)             /**< Set the offset from start of packet to insert the 8 byte time */
+
+/*@}*/ /* @name PASAHO Message Time Insert Command Macros */
+/** @}*/ /* PASAHO_insert_msg_time_command_macros */
+
+/* Insert Message Count command */
+/**
+ *  @ingroup pasaho_if_structures
+ *  @brief  pasahoInsMsgCount_t defines the message count insert command. The command structure is defined as 32 bit
+ *          values to work with the hardware regardless of the device endianness.
+ *
+ *  @details 
+ */
+
+typedef struct pasahoInsMsgCount_s  {
+    uint32_t  word0;          /**< Contains the message count patching command information. @ref PASAHO_insert_msg_count_command_macros */
+    uint32_t  word1;          /**< Contains the message count patching command information. @ref PASAHO_insert_msg_count_command_macros */
+} pasahoInsMsgCount_t;
+
+/** 
+ *  @defgroup PASAHO_insert_msg_count_command_macros  PASAHO Message Count Insert Command Macros
+ *  @ingroup pasaho_if_macros
+ *  @{
+ *  @name PASAHO Message Count Insert Command Macros
+ *  Macros used by the PASAHO Message Count Insert Command
+ *  
+ */
+/*@{*/
+
+#define PASAHO_SET_SUB_CODE_INS_MSG_COUNT(x)        PASAHO_SET_BITFIELD((x)->word0, PASAHO_SUB_CMD_INS_COUNT, 24, 5)    /**< Set sub-command code to indicate Message Count Insert command */
+#define PASAHO_SET_INS_OFFSET_MSG_COUNT(x,offset)   PASAHO_SET_BITFIELD((x)->word0, offset, 0, 16)                      /**< Set the offset from start of packet to insert the 4 byte count */
+#define PASAHO_SET_COUNTER_INDEX_FOR_MSG_COUNT(x,offset)   PASAHO_SET_BITFIELD((x)->word1, offset, 16, 16)              /**< Set the counter index to read from, to insert the 4 byte count */
+
+/*@}*/ /* @name PASAHO Message Count Insert Command Macros */
+/** @}*/ /* PASAHO_insert_msg_count_command_macros */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* _PASAHO_H */