get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/29363/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 29363,
    "url": "https://patches.dpdk.org/api/patches/29363/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20170928141329.73874-18-ajit.khaparde@broadcom.com/",
    "project": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20170928141329.73874-18-ajit.khaparde@broadcom.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20170928141329.73874-18-ajit.khaparde@broadcom.com",
    "date": "2017-09-28T14:13:22",
    "name": "[dpdk-dev,v3,17/24] net/bnxt: add new HWRM structs to support flow filtering",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "361ff56ac789e2cb7d6e4be34466b7aa86d404dd",
    "submitter": {
        "id": 501,
        "url": "https://patches.dpdk.org/api/people/501/?format=api",
        "name": "Ajit Khaparde",
        "email": "ajit.khaparde@broadcom.com"
    },
    "delegate": {
        "id": 319,
        "url": "https://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20170928141329.73874-18-ajit.khaparde@broadcom.com/mbox/",
    "series": [],
    "comments": "https://patches.dpdk.org/api/patches/29363/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/29363/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 08C9C1B286;\n\tThu, 28 Sep 2017 16:14:27 +0200 (CEST)",
            "from rnd-relay.smtp.broadcom.com (lpdvrndsmtp01.broadcom.com\n\t[192.19.229.170]) by dpdk.org (Postfix) with ESMTP id 0B0EA1B248\n\tfor <dev@dpdk.org>; Thu, 28 Sep 2017 16:14:06 +0200 (CEST)",
            "from mail-irv-17.broadcom.com (mail-irv-17.lvn.broadcom.net\n\t[10.75.224.233])\n\tby rnd-relay.smtp.broadcom.com (Postfix) with ESMTP id 1198930C019;\n\tThu, 28 Sep 2017 07:14:05 -0700 (PDT)",
            "from C02PT1RBG8WP.vpn.broadcom.net (unknown [10.10.116.190])\n\tby mail-irv-17.broadcom.com (Postfix) with ESMTP id 75A0981EB1;\n\tThu, 28 Sep 2017 07:13:49 -0700 (PDT)"
        ],
        "From": "Ajit Khaparde <ajit.khaparde@broadcom.com>",
        "To": "dev@dpdk.org",
        "Cc": "ferruh.yigit@intel.com",
        "Date": "Thu, 28 Sep 2017 09:13:22 -0500",
        "Message-Id": "<20170928141329.73874-18-ajit.khaparde@broadcom.com>",
        "X-Mailer": "git-send-email 2.13.5 (Apple Git-94)",
        "In-Reply-To": "<20170928141329.73874-1-ajit.khaparde@broadcom.com>",
        "References": "<20170928141329.73874-1-ajit.khaparde@broadcom.com>",
        "Subject": "[dpdk-dev] [PATCH v3 17/24] net/bnxt: add new HWRM structs to\n\tsupport flow filtering",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "HWRM structs added:\nhwrm_cfa_ntuple_filter_alloc, hwrm_cfa_ntuple_filter_free,\nhwrm_cfa_ntuple_filter_cfg, hwrm_cfa_em_flow_alloc,\nhwrm_cfa_em_flow_free, hwrm_cfa_em_flow_cfg\n\nSigned-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>\n---\n drivers/net/bnxt/hsi_struct_def_dpdk.h | 984 +++++++++++++++++++++++++++++++++\n 1 file changed, 984 insertions(+)",
    "diff": "diff --git a/drivers/net/bnxt/hsi_struct_def_dpdk.h b/drivers/net/bnxt/hsi_struct_def_dpdk.h\nindex cb8660af5..a5f871b8d 100644\n--- a/drivers/net/bnxt/hsi_struct_def_dpdk.h\n+++ b/drivers/net/bnxt/hsi_struct_def_dpdk.h\n@@ -129,6 +129,9 @@\n #define HWRM_CFA_NTUPLE_FILTER_ALLOC\t(UINT32_C(0x99))\n #define HWRM_CFA_NTUPLE_FILTER_FREE\t(UINT32_C(0x9a))\n #define HWRM_CFA_NTUPLE_FILTER_CFG\t(UINT32_C(0x9b))\n+#define HWRM_CFA_EM_FLOW_ALLOC\t\t(UINT32_C(0x9c))\n+#define HWRM_CFA_EM_FLOW_FREE\t\t(UINT32_C(0x9d))\n+#define HWRM_CFA_EM_FLOW_CFG\t\t(UINT32_C(0x9e))\n #define HWRM_TUNNEL_DST_PORT_QUERY\t(UINT32_C(0xa0))\n #define HWRM_TUNNEL_DST_PORT_ALLOC\t(UINT32_C(0xa1))\n #define HWRM_TUNNEL_DST_PORT_FREE\t(UINT32_C(0xa2))\n@@ -9471,6 +9474,987 @@ struct hwrm_cfa_l2_set_rx_mask_output {\n \t */\n } __attribute__((packed));\n \n+/* hwrm_cfa_ntuple_filter_alloc */\n+/*\n+ * Description: This is a ntuple filter that uses fields from L4/L3 header and\n+ * optionally fields from L2. The ntuple filters apply to receive traffic only.\n+ * All L2/L3/L4 header fields are specified in network byte order. These filters\n+ * can be used for Receive Flow Steering (RFS). # For ethertype value, only\n+ * 0x0800 (IPv4) and 0x86dd (IPv6) shall be supported for ntuple filters. # If a\n+ * field specified in this command is not enabled as a valid field, then that\n+ * field shall not be used in matching packet header fields against this filter.\n+ */\n+/* Input\t(128 bytes) */\n+struct hwrm_cfa_ntuple_filter_alloc_input {\n+\tuint16_t req_type;\n+\t/*\n+\t * This value indicates what type of request this is. The format\n+\t * for the rest of the command is determined by this field.\n+\t */\n+\tuint16_t cmpl_ring;\n+\t/*\n+\t * This value indicates the what completion ring the request\n+\t * will be optionally completed on. If the value is -1, then no\n+\t * CR completion will be generated. Any other value must be a\n+\t * valid CR ring_id value for this function.\n+\t */\n+\tuint16_t seq_id;\n+\t/* This value indicates the command sequence number. */\n+\tuint16_t target_id;\n+\t/*\n+\t * Target ID of this command. 0x0 - 0xFFF8 - Used for function\n+\t * ids 0xFFF8 - 0xFFFE - Reserved for internal processors 0xFFFF\n+\t * - HWRM\n+\t */\n+\tuint64_t resp_addr;\n+\t/*\n+\t * This is the host address where the response will be written\n+\t * when the request is complete. This area must be 16B aligned\n+\t * and must be cleared to zero before the request is made.\n+\t */\n+\tuint32_t flags;\n+\t/*\n+\t * Setting of this flag indicates the applicability to the\n+\t * loopback path.\n+\t */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_FLAGS_LOOPBACK\t\\\n+\t\tUINT32_C(0x1)\n+\t/*\n+\t * Setting of this flag indicates drop action. If this flag is\n+\t * not set, then it should be considered accept action.\n+\t */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_FLAGS_DROP\tUINT32_C(0x2)\n+\t/*\n+\t * Setting of this flag indicates that a meter is expected to be\n+\t * attached to this flow. This hint can be used when choosing\n+\t * the action record format required for the flow.\n+\t */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_FLAGS_METER UINT32_C(0x4)\n+\tuint32_t enables;\n+\t/* This bit must be '1' for the l2_filter_id field to be configured. */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_ENABLES_L2_FILTER_ID   \\\n+\t\tUINT32_C(0x1)\n+\t/* This bit must be '1' for the ethertype field to be configured. */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_ENABLES_ETHERTYPE\t \\\n+\t\tUINT32_C(0x2)\n+\t/* This bit must be '1' for the tunnel_type field to be configured. */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_ENABLES_TUNNEL_TYPE\t\\\n+\t\tUINT32_C(0x4)\n+\t/* This bit must be '1' for the src_macaddr field to be configured. */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_ENABLES_SRC_MACADDR\t\\\n+\t\tUINT32_C(0x8)\n+\t/* This bit must be '1' for the ipaddr_type field to be configured. */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_ENABLES_IPADDR_TYPE\t\\\n+\t\tUINT32_C(0x10)\n+\t/* This bit must be '1' for the src_ipaddr field to be configured. */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_ENABLES_SRC_IPADDR\t\\\n+\t\tUINT32_C(0x20)\n+\t/*\n+\t * This bit must be '1' for the src_ipaddr_mask field to be\n+\t * configured.\n+\t */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_ENABLES_SRC_IPADDR_MASK \\\n+\t\tUINT32_C(0x40)\n+\t/* This bit must be '1' for the dst_ipaddr field to be configured. */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_ENABLES_DST_IPADDR\t\\\n+\t\tUINT32_C(0x80)\n+\t/*\n+\t * This bit must be '1' for the dst_ipaddr_mask field to be\n+\t * configured.\n+\t */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_ENABLES_DST_IPADDR_MASK \\\n+\t\tUINT32_C(0x100)\n+\t/* This bit must be '1' for the ip_protocol field to be configured. */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_ENABLES_IP_PROTOCOL\t\\\n+\t\tUINT32_C(0x200)\n+\t/* This bit must be '1' for the src_port field to be configured. */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_ENABLES_SRC_PORT\t\\\n+\t\tUINT32_C(0x400)\n+\t/*\n+\t * This bit must be '1' for the src_port_mask field to be\n+\t * configured.\n+\t */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_ENABLES_SRC_PORT_MASK  \\\n+\t\tUINT32_C(0x800)\n+\t/* This bit must be '1' for the dst_port field to be configured. */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_ENABLES_DST_PORT\t\\\n+\t\tUINT32_C(0x1000)\n+\t/*\n+\t * This bit must be '1' for the dst_port_mask field to be\n+\t * configured.\n+\t */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_ENABLES_DST_PORT_MASK  \\\n+\t\tUINT32_C(0x2000)\n+\t/* This bit must be '1' for the pri_hint field to be configured. */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_ENABLES_PRI_HINT\t\\\n+\t\tUINT32_C(0x4000)\n+\t/*\n+\t * This bit must be '1' for the ntuple_filter_id field to be\n+\t * configured.\n+\t */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_ENABLES_NTUPLE_FILTER_ID \\\n+\t\tUINT32_C(0x8000)\n+\t/* This bit must be '1' for the dst_id field to be configured. */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_ENABLES_DST_ID\t\\\n+\t\tUINT32_C(0x10000)\n+\t/*\n+\t * This bit must be '1' for the mirror_vnic_id field to be\n+\t * configured.\n+\t */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_ENABLES_MIRROR_VNIC_ID \\\n+\t\tUINT32_C(0x20000)\n+\t/* This bit must be '1' for the dst_macaddr field to be configured. */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_ENABLES_DST_MACADDR\t\\\n+\t\tUINT32_C(0x40000)\n+\tuint64_t l2_filter_id;\n+\t/*\n+\t * This value identifies a set of CFA data structures used for\n+\t * an L2 context.\n+\t */\n+\tuint8_t src_macaddr[6];\n+\t/*\n+\t * This value indicates the source MAC address in the Ethernet\n+\t * header.\n+\t */\n+\tuint16_t ethertype;\n+\t/* This value indicates the ethertype in the Ethernet header. */\n+\tuint8_t ip_addr_type;\n+\t/*\n+\t * This value indicates the type of IP address. 4 - IPv4 6 -\n+\t * IPv6 All others are invalid.\n+\t */\n+\t/* invalid */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_IP_ADDR_TYPE_UNKNOWN \\\n+\t\tUINT32_C(0x0)\n+\t/* IPv4 */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_IP_ADDR_TYPE_IPV4 \\\n+\t\tUINT32_C(0x4)\n+\t/* IPv6 */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_IP_ADDR_TYPE_IPV6 \\\n+\t\tUINT32_C(0x6)\n+\tuint8_t ip_protocol;\n+\t/*\n+\t * The value of protocol filed in IP header. Applies to UDP and\n+\t * TCP traffic. 6 - UDP 17 - TCP\n+\t */\n+\t/* invalid */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_IP_PROTOCOL_UNKNOWN \\\n+\t\tUINT32_C(0x0)\n+\t/* UDP */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_IP_PROTOCOL_UDP \\\n+\t\tUINT32_C(0x6)\n+\t/* TCP */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_IP_PROTOCOL_TCP \\\n+\t\tUINT32_C(0x11)\n+\tuint16_t dst_id;\n+\t/*\n+\t * If set, this value shall represent the Logical VNIC ID of the\n+\t * destination VNIC for the RX path and network port id of the\n+\t * destination port for the TX path.\n+\t */\n+\tuint16_t mirror_vnic_id;\n+\t/* Logical VNIC ID of the VNIC where traffic is mirrored. */\n+\tuint8_t tunnel_type;\n+\t/*\n+\t * This value indicates the tunnel type for this filter. If this\n+\t * field is not specified, then the filter shall apply to both\n+\t * non-tunneled and tunneled packets. If this field conflicts\n+\t * with the tunnel_type specified in the l2_filter_id, then the\n+\t * HWRM shall return an error for this command.\n+\t */\n+\t/* Non-tunnel */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_TUNNEL_TYPE_NONTUNNEL \\\n+\t\tUINT32_C(0x0)\n+\t/* Virtual eXtensible Local Area Network\t(VXLAN) */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_TUNNEL_TYPE_VXLAN \\\n+\t\tUINT32_C(0x1)\n+\t/*\n+\t * Network Virtualization Generic Routing\n+\t * Encapsulation\t(NVGRE)\n+\t */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_TUNNEL_TYPE_NVGRE \\\n+\t\tUINT32_C(0x2)\n+\t/*\n+\t * Generic Routing Encapsulation\t(GRE) inside\n+\t * Ethernet payload\n+\t */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_TUNNEL_TYPE_L2GRE \\\n+\t\tUINT32_C(0x3)\n+\t/* IP in IP */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_TUNNEL_TYPE_IPIP \\\n+\t\tUINT32_C(0x4)\n+\t/* Generic Network Virtualization Encapsulation\t(Geneve) */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_TUNNEL_TYPE_GENEVE \\\n+\t\tUINT32_C(0x5)\n+\t/* Multi-Protocol Lable Switching\t(MPLS) */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_TUNNEL_TYPE_MPLS \\\n+\t\tUINT32_C(0x6)\n+\t/* Stateless Transport Tunnel\t(STT) */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_TUNNEL_TYPE_STT UINT32_C(0x7)\n+\t/*\n+\t * Generic Routing Encapsulation\t(GRE) inside IP\n+\t * datagram payload\n+\t */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_TUNNEL_TYPE_IPGRE \\\n+\t\tUINT32_C(0x8)\n+\t/* Any tunneled traffic */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_TUNNEL_TYPE_ANYTUNNEL \\\n+\t\tUINT32_C(0xff)\n+\tuint8_t pri_hint;\n+\t/*\n+\t * This hint is provided to help in placing the filter in the\n+\t * filter table.\n+\t */\n+\t/* No preference */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_PRI_HINT_NO_PREFER \\\n+\t\tUINT32_C(0x0)\n+\t/* Above the given filter */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_PRI_HINT_ABOVE UINT32_C(0x1)\n+\t/* Below the given filter */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_PRI_HINT_BELOW UINT32_C(0x2)\n+\t/* As high as possible */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_PRI_HINT_HIGHEST \\\n+\t\tUINT32_C(0x3)\n+\t/* As low as possible */\n+\t#define HWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_PRI_HINT_LOWEST UINT32_C(0x4)\n+\tuint32_t src_ipaddr[4];\n+\t/*\n+\t * The value of source IP address to be used in filtering. For\n+\t * IPv4, first four bytes represent the IP address.\n+\t */\n+\tuint32_t src_ipaddr_mask[4];\n+\t/*\n+\t * The value of source IP address mask to be used in filtering.\n+\t * For IPv4, first four bytes represent the IP address mask.\n+\t */\n+\tuint32_t dst_ipaddr[4];\n+\t/*\n+\t * The value of destination IP address to be used in filtering.\n+\t * For IPv4, first four bytes represent the IP address.\n+\t */\n+\tuint32_t dst_ipaddr_mask[4];\n+\t/*\n+\t * The value of destination IP address mask to be used in\n+\t * filtering. For IPv4, first four bytes represent the IP\n+\t * address mask.\n+\t */\n+\tuint16_t src_port;\n+\t/*\n+\t * The value of source port to be used in filtering. Applies to\n+\t * UDP and TCP traffic.\n+\t */\n+\tuint16_t src_port_mask;\n+\t/*\n+\t * The value of source port mask to be used in filtering.\n+\t * Applies to UDP and TCP traffic.\n+\t */\n+\tuint16_t dst_port;\n+\t/*\n+\t * The value of destination port to be used in filtering.\n+\t * Applies to UDP and TCP traffic.\n+\t */\n+\tuint16_t dst_port_mask;\n+\t/*\n+\t * The value of destination port mask to be used in filtering.\n+\t * Applies to UDP and TCP traffic.\n+\t */\n+\tuint64_t ntuple_filter_id_hint;\n+\t/* This is the ID of the filter that goes along with the pri_hint. */\n+} __attribute__((packed));\n+\n+/* Output\t(24 bytes) */\n+struct hwrm_cfa_ntuple_filter_alloc_output {\n+\tuint16_t error_code;\n+\t/*\n+\t * Pass/Fail or error type Note: receiver to verify the in\n+\t * parameters, and fail the call with an error when appropriate\n+\t */\n+\tuint16_t req_type;\n+\t/* This field returns the type of original request. */\n+\tuint16_t seq_id;\n+\t/* This field provides original sequence number of the command. */\n+\tuint16_t resp_len;\n+\t/*\n+\t * This field is the length of the response in bytes. The last\n+\t * byte of the response is a valid flag that will read as '1'\n+\t * when the command has been completely written to memory.\n+\t */\n+\tuint64_t ntuple_filter_id;\n+\t/* This value is an opaque id into CFA data structures. */\n+\tuint32_t flow_id;\n+\t/*\n+\t * This is the ID of the flow associated with this filter. This\n+\t * value shall be used to match and associate the flow\n+\t * identifier returned in completion records. A value of\n+\t * 0xFFFFFFFF shall indicate no flow id.\n+\t */\n+\tuint8_t unused_0;\n+\tuint8_t unused_1;\n+\tuint8_t unused_2;\n+\tuint8_t valid;\n+\t/*\n+\t * This field is used in Output records to indicate that the\n+\t * output is completely written to RAM. This field should be\n+\t * read as '1' to indicate that the output has been completely\n+\t * written. When writing a command completion or response to an\n+\t * internal processor, the order of writes has to be such that\n+\t * this field is written last.\n+\t */\n+} __attribute__((packed));\n+\n+/* hwrm_cfa_ntuple_filter_free */\n+/* Description: Free an ntuple filter */\n+/* Input\t(24 bytes) */\n+struct hwrm_cfa_ntuple_filter_free_input {\n+\tuint16_t req_type;\n+\t/*\n+\t * This value indicates what type of request this is. The format\n+\t * for the rest of the command is determined by this field.\n+\t */\n+\tuint16_t cmpl_ring;\n+\t/*\n+\t * This value indicates the what completion ring the request\n+\t * will be optionally completed on. If the value is -1, then no\n+\t * CR completion will be generated. Any other value must be a\n+\t * valid CR ring_id value for this function.\n+\t */\n+\tuint16_t seq_id;\n+\t/* This value indicates the command sequence number. */\n+\tuint16_t target_id;\n+\t/*\n+\t * Target ID of this command. 0x0 - 0xFFF8 - Used for function\n+\t * ids 0xFFF8 - 0xFFFE - Reserved for internal processors 0xFFFF\n+\t * - HWRM\n+\t */\n+\tuint64_t resp_addr;\n+\t/*\n+\t * This is the host address where the response will be written\n+\t * when the request is complete. This area must be 16B aligned\n+\t * and must be cleared to zero before the request is made.\n+\t */\n+\tuint64_t ntuple_filter_id;\n+\t/* This value is an opaque id into CFA data structures. */\n+} __attribute__((packed));\n+\n+/* Output\t(16 bytes) */\n+struct hwrm_cfa_ntuple_filter_free_output {\n+\tuint16_t error_code;\n+\t/*\n+\t * Pass/Fail or error type Note: receiver to verify the in\n+\t * parameters, and fail the call with an error when appropriate\n+\t */\n+\tuint16_t req_type;\n+\t/* This field returns the type of original request. */\n+\tuint16_t seq_id;\n+\t/* This field provides original sequence number of the command. */\n+\tuint16_t resp_len;\n+\t/*\n+\t * This field is the length of the response in bytes. The last\n+\t * byte of the response is a valid flag that will read as '1'\n+\t * when the command has been completely written to memory.\n+\t */\n+\tuint32_t unused_0;\n+\tuint8_t unused_1;\n+\tuint8_t unused_2;\n+\tuint8_t unused_3;\n+\tuint8_t valid;\n+\t/*\n+\t * This field is used in Output records to indicate that the\n+\t * output is completely written to RAM. This field should be\n+\t * read as '1' to indicate that the output has been completely\n+\t * written. When writing a command completion or response to an\n+\t * internal processor, the order of writes has to be such that\n+\t * this field is written last.\n+\t */\n+} __attribute__((packed));\n+\n+/* hwrm_cfa_ntuple_filter_cfg */\n+/*\n+ * Description: Configure an ntuple filter with a new destination VNIC and/or\n+ * meter.\n+ */\n+/* Input\t(48 bytes) */\n+struct hwrm_cfa_ntuple_filter_cfg_input {\n+\tuint16_t req_type;\n+\t/*\n+\t * This value indicates what type of request this is. The format\n+\t * for the rest of the command is determined by this field.\n+\t */\n+\tuint16_t cmpl_ring;\n+\t/*\n+\t * This value indicates the what completion ring the request\n+\t * will be optionally completed on. If the value is -1, then no\n+\t * CR completion will be generated. Any other value must be a\n+\t * valid CR ring_id value for this function.\n+\t */\n+\tuint16_t seq_id;\n+\t/* This value indicates the command sequence number. */\n+\tuint16_t target_id;\n+\t/*\n+\t * Target ID of this command. 0x0 - 0xFFF8 - Used for function\n+\t * ids 0xFFF8 - 0xFFFE - Reserved for internal processors 0xFFFF\n+\t * - HWRM\n+\t */\n+\tuint64_t resp_addr;\n+\t/*\n+\t * This is the host address where the response will be written\n+\t * when the request is complete. This area must be 16B aligned\n+\t * and must be cleared to zero before the request is made.\n+\t */\n+\tuint32_t enables;\n+\t/* This bit must be '1' for the new_dst_id field to be configured. */\n+\t#define HWRM_CFA_NTUPLE_FILTER_CFG_INPUT_ENABLES_NEW_DST_ID\t\\\n+\t\tUINT32_C(0x1)\n+\t/*\n+\t * This bit must be '1' for the new_mirror_vnic_id field to be\n+\t * configured.\n+\t */\n+\t#define HWRM_CFA_NTUPLE_FILTER_CFG_INPUT_ENABLES_NEW_MIRROR_VNIC_ID \\\n+\t\tUINT32_C(0x2)\n+\t/*\n+\t * This bit must be '1' for the new_meter_instance_id field to\n+\t * be configured.\n+\t */\n+\t#define HWRM_CFA_NTUPLE_FILTER_CFG_INPUT_ENABLES_NEW_METER_INSTANCE_ID \\\n+\t\tUINT32_C(0x4)\n+\tuint32_t unused_0;\n+\tuint64_t ntuple_filter_id;\n+\t/* This value is an opaque id into CFA data structures. */\n+\tuint32_t new_dst_id;\n+\t/*\n+\t * If set, this value shall represent the new Logical VNIC ID of\n+\t * the destination VNIC for the RX path and new network port id\n+\t * of the destination port for the TX path.\n+\t */\n+\tuint32_t new_mirror_vnic_id;\n+\t/* New Logical VNIC ID of the VNIC where traffic is mirrored. */\n+\tuint16_t new_meter_instance_id;\n+\t/*\n+\t * New meter to attach to the flow. Specifying the invalid\n+\t * instance ID is used to remove any existing meter from the\n+\t * flow.\n+\t */\n+\t/*\n+\t * A value of 0xfff is considered invalid and\n+\t * implies the instance is not configured.\n+\t */\n+\t#define HWRM_CFA_NTUPLE_FILTER_CFG_INPUT_NEW_METER_INSTANCE_ID_INVALID \\\n+\t\tUINT32_C(0xffff)\n+\tuint16_t unused_1[3];\n+} __attribute__((packed));\n+\n+/* Output\t(16 bytes) */\n+struct hwrm_cfa_ntuple_filter_cfg_output {\n+\tuint16_t error_code;\n+\t/*\n+\t * Pass/Fail or error type Note: receiver to verify the in\n+\t * parameters, and fail the call with an error when appropriate\n+\t */\n+\tuint16_t req_type;\n+\t/* This field returns the type of original request. */\n+\tuint16_t seq_id;\n+\t/* This field provides original sequence number of the command. */\n+\tuint16_t resp_len;\n+\t/*\n+\t * This field is the length of the response in bytes. The last\n+\t * byte of the response is a valid flag that will read as '1'\n+\t * when the command has been completely written to memory.\n+\t */\n+\tuint32_t unused_0;\n+\tuint8_t unused_1;\n+\tuint8_t unused_2;\n+\tuint8_t unused_3;\n+\tuint8_t valid;\n+\t/*\n+\t * This field is used in Output records to indicate that the\n+\t * output is completely written to RAM. This field should be\n+\t * read as '1' to indicate that the output has been completely\n+\t * written. When writing a command completion or response to an\n+\t * internal processor, the order of writes has to be such that\n+\t * this field is written last.\n+\t */\n+} __attribute__((packed));\n+\n+/* hwrm_cfa_em_flow_alloc */\n+/*\n+ * Description: This is a generic Exact Match\t(EM) flow that uses fields from\n+ * L4/L3/L2 headers. The EM flows apply to transmit and receive traffic. All\n+ * L2/L3/L4 header fields are specified in network byte order. For each EM flow,\n+ * there is an associated set of actions specified. For tunneled packets, all\n+ * L2/L3/L4 fields specified are fields of inner headers unless otherwise\n+ * specified. # If a field specified in this command is not enabled as a valid\n+ * field, then that field shall not be used in matching packet header fields\n+ * against this EM flow entry.\n+ */\n+/* Input\t(112 bytes) */\n+struct hwrm_cfa_em_flow_alloc_input {\n+\tuint16_t req_type;\n+\t/*\n+\t * This value indicates what type of request this is. The format\n+\t * for the rest of the command is determined by this field.\n+\t */\n+\tuint16_t cmpl_ring;\n+\t/*\n+\t * This value indicates the what completion ring the request\n+\t * will be optionally completed on. If the value is -1, then no\n+\t * CR completion will be generated. Any other value must be a\n+\t * valid CR ring_id value for this function.\n+\t */\n+\tuint16_t seq_id;\n+\t/* This value indicates the command sequence number. */\n+\tuint16_t target_id;\n+\t/*\n+\t * Target ID of this command. 0x0 - 0xFFF8 - Used for function\n+\t * ids 0xFFF8 - 0xFFFE - Reserved for internal processors 0xFFFF\n+\t * - HWRM\n+\t */\n+\tuint64_t resp_addr;\n+\t/*\n+\t * This is the host address where the response will be written\n+\t * when the request is complete. This area must be 16B aligned\n+\t * and must be cleared to zero before the request is made.\n+\t */\n+\tuint32_t flags;\n+\t/*\n+\t * Enumeration denoting the RX, TX type of the resource. This\n+\t * enumeration is used for resources that are similar for both\n+\t * TX and RX paths of the chip.\n+\t */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_FLAGS_PATH\tUINT32_C(0x1)\n+\t/* tx path */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_FLAGS_PATH_TX\t\\\n+\t\t(UINT32_C(0x0) << 0)\n+\t/* rx path */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_FLAGS_PATH_RX\t\\\n+\t\t(UINT32_C(0x1) << 0)\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_FLAGS_PATH_LAST \\\n+\t\tCFA_EM_FLOW_ALLOC_INPUT_FLAGS_PATH_RX\n+\t/*\n+\t * Setting of this flag indicates enabling of a byte counter for\n+\t * a given flow.\n+\t */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_FLAGS_BYTE_CTR\tUINT32_C(0x2)\n+\t/*\n+\t * Setting of this flag indicates enabling of a packet counter\n+\t * for a given flow.\n+\t */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_FLAGS_PKT_CTR\tUINT32_C(0x4)\n+\t/*\n+\t * Setting of this flag indicates de-capsulation action for the\n+\t * given flow.\n+\t */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_FLAGS_DECAP\tUINT32_C(0x8)\n+\t/*\n+\t * Setting of this flag indicates encapsulation action for the\n+\t * given flow.\n+\t */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_FLAGS_ENCAP\tUINT32_C(0x10)\n+\t/*\n+\t * Setting of this flag indicates drop action. If this flag is\n+\t * not set, then it should be considered accept action.\n+\t */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_FLAGS_DROP\tUINT32_C(0x20)\n+\t/*\n+\t * Setting of this flag indicates that a meter is expected to be\n+\t * attached to this flow. This hint can be used when choosing\n+\t * the action record format required for the flow.\n+\t */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_FLAGS_METER\tUINT32_C(0x40)\n+\tuint32_t enables;\n+\t/* This bit must be '1' for the l2_filter_id field to be configured. */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_ENABLES_L2_FILTER_ID UINT32_C(0x1)\n+\t/* This bit must be '1' for the tunnel_type field to be configured. */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_ENABLES_TUNNEL_TYPE UINT32_C(0x2)\n+\t/* This bit must be '1' for the tunnel_id field to be configured. */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_ENABLES_TUNNEL_ID UINT32_C(0x4)\n+\t/* This bit must be '1' for the src_macaddr field to be configured. */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_ENABLES_SRC_MACADDR UINT32_C(0x8)\n+\t/* This bit must be '1' for the dst_macaddr field to be configured. */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_ENABLES_DST_MACADDR UINT32_C(0x10)\n+\t/* This bit must be '1' for the ovlan_vid field to be configured. */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_ENABLES_OVLAN_VID UINT32_C(0x20)\n+\t/* This bit must be '1' for the ivlan_vid field to be configured. */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_ENABLES_IVLAN_VID UINT32_C(0x40)\n+\t/* This bit must be '1' for the ethertype field to be configured. */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_ENABLES_ETHERTYPE UINT32_C(0x80)\n+\t/* This bit must be '1' for the src_ipaddr field to be configured. */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_ENABLES_SRC_IPADDR\tUINT32_C(0x100)\n+\t/* This bit must be '1' for the dst_ipaddr field to be configured. */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_ENABLES_DST_IPADDR\tUINT32_C(0x200)\n+\t/* This bit must be '1' for the ipaddr_type field to be configured. */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_ENABLES_IPADDR_TYPE UINT32_C(0x400)\n+\t/* This bit must be '1' for the ip_protocol field to be configured. */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_ENABLES_IP_PROTOCOL UINT32_C(0x800)\n+\t/* This bit must be '1' for the src_port field to be configured. */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_ENABLES_SRC_PORT UINT32_C(0x1000)\n+\t/* This bit must be '1' for the dst_port field to be configured. */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_ENABLES_DST_PORT UINT32_C(0x2000)\n+\t/* This bit must be '1' for the dst_id field to be configured. */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_ENABLES_DST_ID\tUINT32_C(0x4000)\n+\t/*\n+\t * This bit must be '1' for the mirror_vnic_id field to be\n+\t * configured.\n+\t */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_ENABLES_MIRROR_VNIC_ID\t\\\n+\t\tUINT32_C(0x8000)\n+\t/*\n+\t * This bit must be '1' for the encap_record_id field to be\n+\t * configured.\n+\t */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_ENABLES_ENCAP_RECORD_ID\t \\\n+\t\tUINT32_C(0x10000)\n+\t/*\n+\t * This bit must be '1' for the meter_instance_id field to be\n+\t * configured.\n+\t */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_ENABLES_METER_INSTANCE_ID\t\\\n+\t\tUINT32_C(0x20000)\n+\tuint64_t l2_filter_id;\n+\t/*\n+\t * This value identifies a set of CFA data structures used for\n+\t * an L2 context.\n+\t */\n+\tuint8_t tunnel_type;\n+\t/* Tunnel Type. */\n+\t/* Non-tunnel */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_TUNNEL_TYPE_NONTUNNEL \\\n+\t\tUINT32_C(0x0)\n+\t/* Virtual eXtensible Local Area Network\t(VXLAN) */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_TUNNEL_TYPE_VXLAN\tUINT32_C(0x1)\n+\t/*\n+\t * Network Virtualization Generic Routing\n+\t * Encapsulation\t(NVGRE)\n+\t */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_TUNNEL_TYPE_NVGRE\tUINT32_C(0x2)\n+\t/*\n+\t * Generic Routing Encapsulation\t(GRE) inside\n+\t * Ethernet payload\n+\t */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_TUNNEL_TYPE_L2GRE\tUINT32_C(0x3)\n+\t/* IP in IP */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_TUNNEL_TYPE_IPIP\tUINT32_C(0x4)\n+\t/* Generic Network Virtualization Encapsulation\t(Geneve) */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_TUNNEL_TYPE_GENEVE\tUINT32_C(0x5)\n+\t/* Multi-Protocol Lable Switching\t(MPLS) */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_TUNNEL_TYPE_MPLS\tUINT32_C(0x6)\n+\t/* Stateless Transport Tunnel\t(STT) */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_TUNNEL_TYPE_STT\tUINT32_C(0x7)\n+\t/*\n+\t * Generic Routing Encapsulation\t(GRE) inside IP\n+\t * datagram payload\n+\t */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_TUNNEL_TYPE_IPGRE\tUINT32_C(0x8)\n+\t/* Any tunneled traffic */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_TUNNEL_TYPE_ANYTUNNEL \\\n+\t\tUINT32_C(0xff)\n+\tuint8_t unused_0;\n+\tuint16_t unused_1;\n+\tuint32_t tunnel_id;\n+\t/*\n+\t * Tunnel identifier. Virtual Network Identifier\t(VNI). Only\n+\t * valid with tunnel_types VXLAN, NVGRE, and Geneve. Only lower\n+\t * 24-bits of VNI field are used in setting up the filter.\n+\t */\n+\tuint8_t src_macaddr[6];\n+\t/*\n+\t * This value indicates the source MAC address in the Ethernet\n+\t * header.\n+\t */\n+\tuint16_t meter_instance_id;\n+\t/* The meter instance to attach to the flow. */\n+\t/*\n+\t * A value of 0xfff is considered invalid and\n+\t * implies the instance is not configured.\n+\t */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_METER_INSTANCE_ID_INVALID   \\\n+\t\tUINT32_C(0xffff)\n+\tuint8_t dst_macaddr[6];\n+\t/*\n+\t * This value indicates the destination MAC address in the\n+\t * Ethernet header.\n+\t */\n+\tuint16_t ovlan_vid;\n+\t/*\n+\t * This value indicates the VLAN ID of the outer VLAN tag in the\n+\t * Ethernet header.\n+\t */\n+\tuint16_t ivlan_vid;\n+\t/*\n+\t * This value indicates the VLAN ID of the inner VLAN tag in the\n+\t * Ethernet header.\n+\t */\n+\tuint16_t ethertype;\n+\t/* This value indicates the ethertype in the Ethernet header. */\n+\tuint8_t ip_addr_type;\n+\t/*\n+\t * This value indicates the type of IP address. 4 - IPv4 6 -\n+\t * IPv6 All others are invalid.\n+\t */\n+\t/* invalid */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_IP_ADDR_TYPE_UNKNOWN UINT32_C(0x0)\n+\t/* IPv4 */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_IP_ADDR_TYPE_IPV4\tUINT32_C(0x4)\n+\t/* IPv6 */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_IP_ADDR_TYPE_IPV6\tUINT32_C(0x6)\n+\tuint8_t ip_protocol;\n+\t/*\n+\t * The value of protocol filed in IP header. Applies to UDP and\n+\t * TCP traffic. 6 - UDP 17 - TCP\n+\t */\n+\t/* invalid */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_IP_PROTOCOL_UNKNOWN UINT32_C(0x0)\n+\t/* UDP */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_IP_PROTOCOL_UDP\tUINT32_C(0x6)\n+\t/* TCP */\n+\t#define HWRM_CFA_EM_FLOW_ALLOC_INPUT_IP_PROTOCOL_TCP\tUINT32_C(0x11)\n+\tuint8_t unused_2;\n+\tuint8_t unused_3;\n+\tuint32_t src_ipaddr[4];\n+\t/*\n+\t * The value of source IP address to be used in filtering. For\n+\t * IPv4, first four bytes represent the IP address.\n+\t */\n+\tuint32_t dst_ipaddr[4];\n+\t/*\n+\t * big_endian = True The value of destination IP address to be\n+\t * used in filtering. For IPv4, first four bytes represent the\n+\t * IP address.\n+\t */\n+\tuint16_t src_port;\n+\t/*\n+\t * The value of source port to be used in filtering. Applies to\n+\t * UDP and TCP traffic.\n+\t */\n+\tuint16_t dst_port;\n+\t/*\n+\t * The value of destination port to be used in filtering.\n+\t * Applies to UDP and TCP traffic.\n+\t */\n+\tuint16_t dst_id;\n+\t/*\n+\t * If set, this value shall represent the Logical VNIC ID of the\n+\t * destination VNIC for the RX path and network port id of the\n+\t * destination port for the TX path.\n+\t */\n+\tuint16_t mirror_vnic_id;\n+\t/* Logical VNIC ID of the VNIC where traffic is mirrored. */\n+\tuint32_t encap_record_id;\n+\t/* Logical ID of the encapsulation record. */\n+\tuint32_t unused_4;\n+} __attribute__((packed));\n+\n+/* Output\t(24 bytes) */\n+struct hwrm_cfa_em_flow_alloc_output {\n+\tuint16_t error_code;\n+\t/*\n+\t * Pass/Fail or error type Note: receiver to verify the in\n+\t * parameters, and fail the call with an error when appropriate\n+\t */\n+\tuint16_t req_type;\n+\t/* This field returns the type of original request. */\n+\tuint16_t seq_id;\n+\t/* This field provides original sequence number of the command. */\n+\tuint16_t resp_len;\n+\t/*\n+\t * This field is the length of the response in bytes. The last\n+\t * byte of the response is a valid flag that will read as '1'\n+\t * when the command has been completely written to memory.\n+\t */\n+\tuint64_t em_filter_id;\n+\t/* This value is an opaque id into CFA data structures. */\n+\tuint32_t flow_id;\n+\t/*\n+\t * This is the ID of the flow associated with this filter. This\n+\t * value shall be used to match and associate the flow\n+\t * identifier returned in completion records. A value of\n+\t * 0xFFFFFFFF shall indicate no flow id.\n+\t */\n+\tuint8_t unused_0;\n+\tuint8_t unused_1;\n+\tuint8_t unused_2;\n+\tuint8_t valid;\n+\t/*\n+\t * This field is used in Output records to indicate that the\n+\t * output is completely written to RAM. This field should be\n+\t * read as '1' to indicate that the output has been completely\n+\t * written. When writing a command completion or response to an\n+\t * internal processor, the order of writes has to be such that\n+\t * this field is written last.\n+\t */\n+} __attribute__((packed));\n+\n+/* hwrm_cfa_em_flow_free */\n+/* Description: Free an EM flow table entry */\n+/* Input\t(24 bytes) */\n+struct hwrm_cfa_em_flow_free_input {\n+\tuint16_t req_type;\n+\t/*\n+\t * This value indicates what type of request this is. The format\n+\t * for the rest of the command is determined by this field.\n+\t */\n+\tuint16_t cmpl_ring;\n+\t/*\n+\t * This value indicates the what completion ring the request\n+\t * will be optionally completed on. If the value is -1, then no\n+\t * CR completion will be generated. Any other value must be a\n+\t * valid CR ring_id value for this function.\n+\t */\n+\tuint16_t seq_id;\n+\t/* This value indicates the command sequence number. */\n+\tuint16_t target_id;\n+\t/*\n+\t * Target ID of this command. 0x0 - 0xFFF8 - Used for function\n+\t * ids 0xFFF8 - 0xFFFE - Reserved for internal processors 0xFFFF\n+\t * - HWRM\n+\t */\n+\tuint64_t resp_addr;\n+\t/*\n+\t * This is the host address where the response will be written\n+\t * when the request is complete. This area must be 16B aligned\n+\t * and must be cleared to zero before the request is made.\n+\t */\n+\tuint64_t em_filter_id;\n+\t/* This value is an opaque id into CFA data structures. */\n+} __attribute__((packed));\n+\n+/* Output\t(16 bytes) */\n+struct hwrm_cfa_em_flow_free_output {\n+\tuint16_t error_code;\n+\t/*\n+\t * Pass/Fail or error type Note: receiver to verify the in\n+\t * parameters, and fail the call with an error when appropriate\n+\t */\n+\tuint16_t req_type;\n+\t/* This field returns the type of original request. */\n+\tuint16_t seq_id;\n+\t/* This field provides original sequence number of the command. */\n+\tuint16_t resp_len;\n+\t/*\n+\t * This field is the length of the response in bytes. The last\n+\t * byte of the response is a valid flag that will read as '1'\n+\t * when the command has been completely written to memory.\n+\t */\n+\tuint32_t unused_0;\n+\tuint8_t unused_1;\n+\tuint8_t unused_2;\n+\tuint8_t unused_3;\n+\tuint8_t valid;\n+\t/*\n+\t * This field is used in Output records to indicate that the\n+\t * output is completely written to RAM. This field should be\n+\t * read as '1' to indicate that the output has been completely\n+\t * written. When writing a command completion or response to an\n+\t * internal processor, the order of writes has to be such that\n+\t * this field is written last.\n+\t */\n+} __attribute__((packed));\n+\n+/* hwrm_cfa_em_flow_cfg */\n+/*\n+ * Description: Configure an EM flow with a new destination VNIC and/or meter.\n+ */\n+/* Input\t(48 bytes) */\n+struct hwrm_cfa_em_flow_cfg_input {\n+\tuint16_t req_type;\n+\t/*\n+\t * This value indicates what type of request this is. The format\n+\t * for the rest of the command is determined by this field.\n+\t */\n+\tuint16_t cmpl_ring;\n+\t/*\n+\t * This value indicates the what completion ring the request\n+\t * will be optionally completed on. If the value is -1, then no\n+\t * CR completion will be generated. Any other value must be a\n+\t * valid CR ring_id value for this function.\n+\t */\n+\tuint16_t seq_id;\n+\t/* This value indicates the command sequence number. */\n+\tuint16_t target_id;\n+\t/*\n+\t * Target ID of this command. 0x0 - 0xFFF8 - Used for function\n+\t * ids 0xFFF8 - 0xFFFE - Reserved for internal processors 0xFFFF\n+\t * - HWRM\n+\t */\n+\tuint64_t resp_addr;\n+\t/*\n+\t * This is the host address where the response will be written\n+\t * when the request is complete. This area must be 16B aligned\n+\t * and must be cleared to zero before the request is made.\n+\t */\n+\tuint32_t enables;\n+\t/* This bit must be '1' for the new_dst_id field to be configured. */\n+\t#define HWRM_CFA_EM_FLOW_CFG_INPUT_ENABLES_NEW_DST_ID\tUINT32_C(0x1)\n+\t/*\n+\t * This bit must be '1' for the new_mirror_vnic_id field to be\n+\t * configured.\n+\t */\n+\t#define HWRM_CFA_EM_FLOW_CFG_INPUT_ENABLES_NEW_MIRROR_VNIC_ID\t\\\n+\t\tUINT32_C(0x2)\n+\t/*\n+\t * This bit must be '1' for the new_meter_instance_id field to\n+\t * be configured.\n+\t */\n+\t#define HWRM_CFA_EM_FLOW_CFG_INPUT_ENABLES_NEW_METER_INSTANCE_ID  \\\n+\t\tUINT32_C(0x4)\n+\tuint32_t unused_0;\n+\tuint64_t em_filter_id;\n+\t/* This value is an opaque id into CFA data structures. */\n+\tuint32_t new_dst_id;\n+\t/*\n+\t * If set, this value shall represent the new Logical VNIC ID of\n+\t * the destination VNIC for the RX path and network port id of\n+\t * the destination port for the TX path.\n+\t */\n+\tuint32_t new_mirror_vnic_id;\n+\t/* New Logical VNIC ID of the VNIC where traffic is mirrored. */\n+\tuint16_t new_meter_instance_id;\n+\t/*\n+\t * New meter to attach to the flow. Specifying the invalid\n+\t * instance ID is used to remove any existing meter from the\n+\t * flow.\n+\t */\n+\t/*\n+\t * A value of 0xfff is considered invalid and\n+\t * implies the instance is not configured.\n+\t */\n+\t#define HWRM_CFA_EM_FLOW_CFG_INPUT_NEW_METER_INSTANCE_ID_INVALID \\\n+\t\tUINT32_C(0xffff)\n+\tuint16_t unused_1[3];\n+} __attribute__((packed));\n+\n+/* Output\t(16 bytes) */\n+struct hwrm_cfa_em_flow_cfg_output {\n+\tuint16_t error_code;\n+\t/*\n+\t * Pass/Fail or error type Note: receiver to verify the in\n+\t * parameters, and fail the call with an error when appropriate\n+\t */\n+\tuint16_t req_type;\n+\t/* This field returns the type of original request. */\n+\tuint16_t seq_id;\n+\t/* This field provides original sequence number of the command. */\n+\tuint16_t resp_len;\n+\t/*\n+\t * This field is the length of the response in bytes. The last\n+\t * byte of the response is a valid flag that will read as '1'\n+\t * when the command has been completely written to memory.\n+\t */\n+\tuint32_t unused_0;\n+\tuint8_t unused_1;\n+\tuint8_t unused_2;\n+\tuint8_t unused_3;\n+\tuint8_t valid;\n+\t/*\n+\t * This field is used in Output records to indicate that the\n+\t * output is completely written to RAM. This field should be\n+\t * read as '1' to indicate that the output has been completely\n+\t * written. When writing a command completion or response to an\n+\t * internal processor, the order of writes has to be such that\n+\t * this field is written last.\n+\t */\n+} __attribute__((packed));\n+\n+\n /* hwrm_cfa_vlan_antispoof_cfg */\n /* Description: Configures vlan anti-spoof filters for VF. */\n /* Input (32 bytes) */\n",
    "prefixes": [
        "dpdk-dev",
        "v3",
        "17/24"
    ]
}