get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 58799,
    "url": "https://patches.dpdk.org/api/patches/58799/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20190906073217.13873-6-shshaikh@marvell.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": "<20190906073217.13873-6-shshaikh@marvell.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20190906073217.13873-6-shshaikh@marvell.com",
    "date": "2019-09-06T07:32:17",
    "name": "[v1,5/5] net/qede: implement rte_flow drop action",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "7bc13d750b18bc1c6f3b5e0b60cb2c7267ddf62b",
    "submitter": {
        "id": 1210,
        "url": "https://patches.dpdk.org/api/people/1210/?format=api",
        "name": "Shahed Shaikh",
        "email": "shshaikh@marvell.com"
    },
    "delegate": {
        "id": 310,
        "url": "https://patches.dpdk.org/api/users/310/?format=api",
        "username": "jerin",
        "first_name": "Jerin",
        "last_name": "Jacob",
        "email": "jerinj@marvell.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20190906073217.13873-6-shshaikh@marvell.com/mbox/",
    "series": [
        {
            "id": 6280,
            "url": "https://patches.dpdk.org/api/series/6280/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=6280",
            "date": "2019-09-06T07:32:13",
            "name": "net/qede: fixes and enhancement",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/6280/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/58799/comments/",
    "check": "fail",
    "checks": "https://patches.dpdk.org/api/patches/58799/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 0B18A1F1C8;\n\tFri,  6 Sep 2019 09:34:12 +0200 (CEST)",
            "from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com\n\t[67.231.156.173]) by dpdk.org (Postfix) with ESMTP id 5DA781F234\n\tfor <dev@dpdk.org>; Fri,  6 Sep 2019 09:33:04 +0200 (CEST)",
            "from pps.filterd (m0045851.ppops.net [127.0.0.1])\n\tby mx0b-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id\n\tx867KSDO031857 for <dev@dpdk.org>; Fri, 6 Sep 2019 00:33:03 -0700",
            "from sc-exch04.marvell.com ([199.233.58.184])\n\tby mx0b-0016f401.pphosted.com with ESMTP id 2uqrdmp3h8-1\n\t(version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT)\n\tfor <dev@dpdk.org>; Fri, 06 Sep 2019 00:33:03 -0700",
            "from SC-EXCH01.marvell.com (10.93.176.81) by SC-EXCH04.marvell.com\n\t(10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1367.3;\n\tFri, 6 Sep 2019 00:33:00 -0700",
            "from maili.marvell.com (10.93.176.43) by SC-EXCH01.marvell.com\n\t(10.93.176.81) with Microsoft SMTP Server id 15.0.1367.3 via Frontend\n\tTransport; Fri, 6 Sep 2019 00:33:00 -0700",
            "from dut1171.mv.qlogic.com (unknown [10.112.88.18])\n\tby maili.marvell.com (Postfix) with ESMTP id 59F3A3F7040;\n\tFri,  6 Sep 2019 00:33:00 -0700 (PDT)",
            "from dut1171.mv.qlogic.com (localhost [127.0.0.1])\n\tby dut1171.mv.qlogic.com (8.14.7/8.14.7) with ESMTP id x867X0u1013938;\n\tFri, 6 Sep 2019 00:33:00 -0700",
            "(from root@localhost)\n\tby dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id x867X0aw013937;\n\tFri, 6 Sep 2019 00:33:00 -0700"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com;\n\th=from : to : cc :\n\tsubject : date : message-id : in-reply-to : references : mime-version\n\t: content-type; s=pfpt0818;\n\tbh=Lst8Hm3hMuXJr+JkF4T6bp5gDb8nD9mzUBUQB/GtDvM=; \n\tb=ub6FwGmOJqpXuUBV4Ayr+LJ9mNN2NxLVI5KHQXGDQwS35+M3u38S+7yuMHUOglD/EKpm\n\t88oFOph33kOIH0SDVjKPpnL4N04SDH6dM4NtZhtWzcqXKF9ltqlH2ayBp2xzHx1h+/Bg\n\tb6wplFFtTZP8KFJ7SHL5zmfdBVf3hnSXcjLthF47DwDcye9UOSsAOC4SgfmDJAzQ/v3L\n\tNrhjXat/cIgquddW4mpBS9FSiAb3Hw6UNHDJ2ufxl6oXzUGFJPti+aaA0ofoSl0YRV7X\n\trNqci4pzRM1Hip9Iko6GwuKGPQcDTT5V47xE0BEZW715JMYkqfZ9PUfmEvehBq3U2Mhf\n\tUg== ",
        "From": "Shahed Shaikh <shshaikh@marvell.com>",
        "To": "<dev@dpdk.org>",
        "CC": "<rmody@marvell.com>, <jerinj@marvell.com>,\n\t<GR-Everest-DPDK-Dev@marvell.com>",
        "Date": "Fri, 6 Sep 2019 00:32:17 -0700",
        "Message-ID": "<20190906073217.13873-6-shshaikh@marvell.com>",
        "X-Mailer": "git-send-email 2.12.0",
        "In-Reply-To": "<20190906073217.13873-1-shshaikh@marvell.com>",
        "References": "<20190906073217.13873-1-shshaikh@marvell.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Proofpoint-Virus-Version": "vendor=fsecure engine=2.50.10434:6.0.70,1.0.8\n\tdefinitions=2019-09-06_03:2019-09-04,2019-09-06 signatures=0",
        "Subject": "[dpdk-dev] [PATCH v1 5/5] net/qede: implement rte_flow drop action",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Add support to configure drop action in rte_flow\ninfrastructure and add counter for dropped\npackets due to this filter action \"rx_gft_filter_drop\".\n\nAlso, update supported flows and actions in qede guide.\n\nSigned-off-by: Shahed Shaikh <shshaikh@marvell.com>\n---\n doc/guides/nics/qede.rst              | 39 +++++++++++++++++++++\n drivers/net/qede/base/ecore_dev_api.h |  1 +\n drivers/net/qede/base/ecore_l2.c      | 50 +++++++++++++++------------\n drivers/net/qede/base/ecore_l2_api.h  | 39 ++++++++++++++-------\n drivers/net/qede/qede_ethdev.c        |  2 ++\n drivers/net/qede/qede_ethdev.h        |  1 +\n drivers/net/qede/qede_filter.c        | 22 ++++++++----\n 7 files changed, 114 insertions(+), 40 deletions(-)",
    "diff": "diff --git a/doc/guides/nics/qede.rst b/doc/guides/nics/qede.rst\nindex 05a6aef57..471d98014 100644\n--- a/doc/guides/nics/qede.rst\n+++ b/doc/guides/nics/qede.rst\n@@ -39,6 +39,7 @@ Supported Features\n - GENEVE Tunneling offload\n - VXLAN Tunneling offload\n - MPLSoUDP Tx Tunneling offload\n+- Generic flow API\n \n Non-supported Features\n ----------------------\n@@ -137,6 +138,44 @@ Driver compilation and testing\n Refer to the document :ref:`compiling and testing a PMD for a NIC <pmd_build_and_test>`\n for details.\n \n+RTE Flow Support\n+----------------\n+\n+QLogic FastLinQ QL4xxxx NICs has support for the following patterns and\n+actions.\n+\n+Patterns:\n+\n+.. _table_qede_supported_flow_item_types:\n+\n+.. table:: Item types\n+\n+   +----+--------------------------------+\n+   | #  | Pattern Type                   |\n+   +====+================================+\n+   | 1  | RTE_FLOW_ITEM_TYPE_IPV4        |\n+   +----+--------------------------------+\n+   | 2  | RTE_FLOW_ITEM_TYPE_IPV6        |\n+   +----+--------------------------------+\n+   | 3  | RTE_FLOW_ITEM_TYPE_UDP         |\n+   +----+--------------------------------+\n+   | 4  | RTE_FLOW_ITEM_TYPE_TCP         |\n+   +----+--------------------------------+\n+\n+Actions:\n+\n+.. _table_qede_supported_ingress_action_types:\n+\n+.. table:: Ingress action types\n+\n+   +----+--------------------------------+\n+   | #  | Action Type                    |\n+   +====+================================+\n+   | 1  | RTE_FLOW_ACTION_TYPE_QUEUE     |\n+   +----+--------------------------------+\n+   | 2  | RTE_FLOW_ACTION_TYPE_DROP      |\n+   +----+--------------------------------+\n+\n SR-IOV: Prerequisites and Sample Application Notes\n --------------------------------------------------\n \ndiff --git a/drivers/net/qede/base/ecore_dev_api.h b/drivers/net/qede/base/ecore_dev_api.h\nindex 730806321..a99888097 100644\n--- a/drivers/net/qede/base/ecore_dev_api.h\n+++ b/drivers/net/qede/base/ecore_dev_api.h\n@@ -334,6 +334,7 @@ struct ecore_eth_stats_common {\n \tu64 rx_bcast_pkts;\n \tu64 mftag_filter_discards;\n \tu64 mac_filter_discards;\n+\tu64 gft_filter_drop;\n \tu64 tx_ucast_bytes;\n \tu64 tx_mcast_bytes;\n \tu64 tx_bcast_bytes;\ndiff --git a/drivers/net/qede/base/ecore_l2.c b/drivers/net/qede/base/ecore_l2.c\nindex 8b9817eb2..5dcdc84fc 100644\n--- a/drivers/net/qede/base/ecore_l2.c\n+++ b/drivers/net/qede/base/ecore_l2.c\n@@ -1782,6 +1782,8 @@ static void __ecore_get_vport_tstats(struct ecore_hwfn *p_hwfn,\n \t\tHILO_64_REGPAIR(tstats.mftag_filter_discard);\n \tp_stats->common.mac_filter_discards +=\n \t\tHILO_64_REGPAIR(tstats.eth_mac_filter_discard);\n+\tp_stats->common.gft_filter_drop +=\n+\t\tHILO_64_REGPAIR(tstats.eth_gft_drop_pkt);\n }\n \n static void __ecore_get_vport_ustats_addrlen(struct ecore_hwfn *p_hwfn,\n@@ -2140,9 +2142,7 @@ void ecore_arfs_mode_configure(struct ecore_hwfn *p_hwfn,\n enum _ecore_status_t\n ecore_configure_rfs_ntuple_filter(struct ecore_hwfn *p_hwfn,\n \t\t\t\t  struct ecore_spq_comp_cb *p_cb,\n-\t\t\t\t  dma_addr_t p_addr, u16 length,\n-\t\t\t\t  u16 qid, u8 vport_id,\n-\t\t\t\t  bool b_is_add)\n+\t\t\t\t  struct ecore_ntuple_filter_params *p_params)\n {\n \tstruct rx_update_gft_filter_data *p_ramrod = OSAL_NULL;\n \tstruct ecore_spq_entry *p_ent = OSAL_NULL;\n@@ -2151,14 +2151,6 @@ ecore_configure_rfs_ntuple_filter(struct ecore_hwfn *p_hwfn,\n \tu8 abs_vport_id = 0;\n \tenum _ecore_status_t rc = ECORE_NOTIMPL;\n \n-\trc = ecore_fw_vport(p_hwfn, vport_id, &abs_vport_id);\n-\tif (rc != ECORE_SUCCESS)\n-\t\treturn rc;\n-\n-\trc = ecore_fw_l2_queue(p_hwfn, qid, &abs_rx_q_id);\n-\tif (rc != ECORE_SUCCESS)\n-\t\treturn rc;\n-\n \t/* Get SPQ entry */\n \tOSAL_MEMSET(&init_data, 0, sizeof(init_data));\n \tinit_data.cid = ecore_spq_get_cid(p_hwfn);\n@@ -2180,27 +2172,41 @@ ecore_configure_rfs_ntuple_filter(struct ecore_hwfn *p_hwfn,\n \n \tp_ramrod = &p_ent->ramrod.rx_update_gft;\n \n-\tDMA_REGPAIR_LE(p_ramrod->pkt_hdr_addr, p_addr);\n-\tp_ramrod->pkt_hdr_length = OSAL_CPU_TO_LE16(length);\n+\tDMA_REGPAIR_LE(p_ramrod->pkt_hdr_addr, p_params->addr);\n+\tp_ramrod->pkt_hdr_length = OSAL_CPU_TO_LE16(p_params->length);\n \n-\tp_ramrod->action_icid_valid = 0;\n-\tp_ramrod->action_icid = 0;\n+\tif (p_params->b_is_drop) {\n+\t\tp_ramrod->vport_id = OSAL_CPU_TO_LE16(ETH_GFT_TRASHCAN_VPORT);\n+\t} else {\n+\t\trc = ecore_fw_vport(p_hwfn, p_params->vport_id,\n+\t\t\t\t    &abs_vport_id);\n+\t\tif (rc)\n+\t\t\treturn rc;\n+\n+\t\tif (p_params->qid != ECORE_RFS_NTUPLE_QID_RSS) {\n+\t\t\trc = ecore_fw_l2_queue(p_hwfn, p_params->qid,\n+\t\t\t\t\t       &abs_rx_q_id);\n+\t\t\tif (rc)\n+\t\t\t\treturn rc;\n \n-\tp_ramrod->rx_qid_valid = 1;\n-\tp_ramrod->rx_qid = OSAL_CPU_TO_LE16(abs_rx_q_id);\n+\t\t\tp_ramrod->rx_qid_valid = 1;\n+\t\t\tp_ramrod->rx_qid = OSAL_CPU_TO_LE16(abs_rx_q_id);\n+\t\t}\n+\n+\t\tp_ramrod->vport_id = OSAL_CPU_TO_LE16((u16)abs_vport_id);\n+\t}\n \n \tp_ramrod->flow_id_valid = 0;\n \tp_ramrod->flow_id = 0;\n \n-\tp_ramrod->vport_id = OSAL_CPU_TO_LE16((u16)abs_vport_id);\n-\tp_ramrod->filter_action = b_is_add ? GFT_ADD_FILTER\n-\t\t\t\t\t   : GFT_DELETE_FILTER;\n+\tp_ramrod->filter_action = p_params->b_is_add ? GFT_ADD_FILTER\n+\t\t\t\t\t\t     : GFT_DELETE_FILTER;\n \n \tDP_VERBOSE(p_hwfn, ECORE_MSG_SP,\n \t\t   \"V[%0x], Q[%04x] - %s filter from 0x%lx [length %04xb]\\n\",\n \t\t   abs_vport_id, abs_rx_q_id,\n-\t\t   b_is_add ? \"Adding\" : \"Removing\",\n-\t\t   (unsigned long)p_addr, length);\n+\t\t   p_params->b_is_add ? \"Adding\" : \"Removing\",\n+\t\t   (unsigned long)p_params->addr, p_params->length);\n \n \treturn ecore_spq_post(p_hwfn, p_ent, OSAL_NULL);\n }\ndiff --git a/drivers/net/qede/base/ecore_l2_api.h b/drivers/net/qede/base/ecore_l2_api.h\nindex 004fb61ba..acde81fad 100644\n--- a/drivers/net/qede/base/ecore_l2_api.h\n+++ b/drivers/net/qede/base/ecore_l2_api.h\n@@ -448,6 +448,31 @@ void ecore_arfs_mode_configure(struct ecore_hwfn *p_hwfn,\n \t\t\t       struct ecore_ptt *p_ptt,\n \t\t\t       struct ecore_arfs_config_params *p_cfg_params);\n \n+struct ecore_ntuple_filter_params {\n+\t/* Physically mapped address containing header of buffer to be used\n+\t * as filter.\n+\t */\n+\tdma_addr_t addr;\n+\n+\t/* Length of header in bytes */\n+\tu16 length;\n+\n+\t/* Relative queue-id to receive classified packet */\n+\t#define ECORE_RFS_NTUPLE_QID_RSS ((u16)-1)\n+\tu16 qid;\n+\n+\t/* Identifier can either be according to vport-id or vfid */\n+\tbool b_is_vf;\n+\tu8 vport_id;\n+\tu8 vf_id;\n+\n+\t/* true if this filter is to be added. Else to be removed */\n+\tbool b_is_add;\n+\n+\t/* If packet needs to be dropped */\n+\tbool b_is_drop;\n+};\n+\n /**\n  * @brief - ecore_configure_rfs_ntuple_filter\n  *\n@@ -457,22 +482,12 @@ void ecore_arfs_mode_configure(struct ecore_hwfn *p_hwfn,\n  * @params p_cb\t\tUsed for ECORE_SPQ_MODE_CB,where client would initialize\n  *\t\t\tit with cookie and callback function address, if not\n  *\t\t\tusing this mode then client must pass NULL.\n- * @params p_addr\tp_addr is an actual packet header that needs to be\n- *\t\t\tfilter. It has to mapped with IO to read prior to\n- *\t\t\tcalling this, [contains 4 tuples- src ip, dest ip,\n- *\t\t\tsrc port, dest port].\n- * @params length\tlength of p_addr header up to past the transport header.\n- * @params qid\t\treceive packet will be directed to this queue.\n- * @params vport_id\n- * @params b_is_add\tflag to add or remove filter.\n- *\n+ * @params p_params\n  */\n enum _ecore_status_t\n ecore_configure_rfs_ntuple_filter(struct ecore_hwfn *p_hwfn,\n \t\t\t\t  struct ecore_spq_comp_cb *p_cb,\n-\t\t\t\t  dma_addr_t p_addr, u16 length,\n-\t\t\t\t  u16 qid, u8 vport_id,\n-\t\t\t\t  bool b_is_add);\n+\t\t\t\t  struct ecore_ntuple_filter_params *p_params);\n \n /**\n  * @brief - ecore_update_eth_rss_ind_table_entry\ndiff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c\nindex 98290fdc7..8064735db 100644\n--- a/drivers/net/qede/qede_ethdev.c\n+++ b/drivers/net/qede/qede_ethdev.c\n@@ -125,6 +125,8 @@ static const struct rte_qede_xstats_name_off qede_xstats_strings[] = {\n \t\toffsetof(struct ecore_eth_stats_common, mftag_filter_discards)},\n \t{\"rx_mac_filter_discards\",\n \t\toffsetof(struct ecore_eth_stats_common, mac_filter_discards)},\n+\t{\"rx_gft_filter_drop\",\n+\t\toffsetof(struct ecore_eth_stats_common, gft_filter_drop)},\n \t{\"rx_hw_buffer_truncates\",\n \t\toffsetof(struct ecore_eth_stats_common, brb_truncates)},\n \t{\"rx_hw_buffer_discards\",\ndiff --git a/drivers/net/qede/qede_ethdev.h b/drivers/net/qede/qede_ethdev.h\nindex 5549d0bf3..b5f93e9fa 100644\n--- a/drivers/net/qede/qede_ethdev.h\n+++ b/drivers/net/qede/qede_ethdev.h\n@@ -179,6 +179,7 @@ struct qede_arfs_entry {\n \tuint32_t soft_id; /* unused for now */\n \tuint16_t pkt_len; /* actual packet length to match */\n \tuint16_t rx_queue; /* queue to be steered to */\n+\tbool is_drop; /* drop action */\n \tconst struct rte_memzone *mz; /* mz used to hold L2 frame */\n \tstruct qede_arfs_tuple tuple;\n \tSLIST_ENTRY(qede_arfs_entry) list;\ndiff --git a/drivers/net/qede/qede_filter.c b/drivers/net/qede/qede_filter.c\nindex 81509f04b..b7ad59ad6 100644\n--- a/drivers/net/qede/qede_filter.c\n+++ b/drivers/net/qede/qede_filter.c\n@@ -272,6 +272,7 @@ qede_config_arfs_filter(struct rte_eth_dev *eth_dev,\n {\n \tstruct qede_dev *qdev = QEDE_INIT_QDEV(eth_dev);\n \tstruct ecore_dev *edev = QEDE_INIT_EDEV(qdev);\n+\tstruct ecore_ntuple_filter_params params;\n \tchar mz_name[RTE_MEMZONE_NAMESIZE] = {0};\n \tstruct qede_arfs_entry *tmp = NULL;\n \tconst struct rte_memzone *mz;\n@@ -344,12 +345,18 @@ qede_config_arfs_filter(struct rte_eth_dev *eth_dev,\n \t\tecore_arfs_mode_configure(p_hwfn, p_hwfn->p_arfs_ptt,\n \t\t\t\t\t  &qdev->arfs_info.arfs);\n \t}\n+\n+\tmemset(&params, 0, sizeof(params));\n+\tparams.addr = (dma_addr_t)mz->iova;\n+\tparams.length = pkt_len;\n+\tparams.qid = arfs->rx_queue;\n+\tparams.vport_id = 0;\n+\tparams.b_is_add = add;\n+\tparams.b_is_drop = arfs->is_drop;\n+\n \t/* configure filter with ECORE_SPQ_MODE_EBLOCK */\n \trc = ecore_configure_rfs_ntuple_filter(p_hwfn, NULL,\n-\t\t\t\t\t       (dma_addr_t)mz->iova,\n-\t\t\t\t\t       pkt_len,\n-\t\t\t\t\t       arfs->rx_queue,\n-\t\t\t\t\t       0, add);\n+\t\t\t\t\t       &params);\n \tif (rc == ECORE_SUCCESS) {\n \t\tif (add) {\n \t\t\tarfs->pkt_len = pkt_len;\n@@ -1371,12 +1378,15 @@ qede_flow_parse_actions(struct rte_eth_dev *dev,\n \t\t\t\tflow->entry.rx_queue = queue->index;\n \n \t\t\tbreak;\n-\n+\t\tcase RTE_FLOW_ACTION_TYPE_DROP:\n+\t\t\tif (flow)\n+\t\t\t\tflow->entry.is_drop = true;\n+\t\t\tbreak;\n \t\tdefault:\n \t\t\trte_flow_error_set(error, ENOTSUP,\n \t\t\t\t\t   RTE_FLOW_ERROR_TYPE_ACTION,\n \t\t\t\t\t   actions,\n-\t\t\t\t\t   \"Action is not supported - only ACTION_TYPE_QUEUE supported\");\n+\t\t\t\t\t   \"Action is not supported - only ACTION_TYPE_QUEUE and ACTION_TYPE_DROP supported\");\n \t\t\treturn -rte_errno;\n \t\t}\n \t}\n",
    "prefixes": [
        "v1",
        "5/5"
    ]
}