get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 55711,
    "url": "http://patches.dpdk.org/api/patches/55711/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20190630180609.36705-43-jerinj@marvell.com/",
    "project": {
        "id": 1,
        "url": "http://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": "<20190630180609.36705-43-jerinj@marvell.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20190630180609.36705-43-jerinj@marvell.com",
    "date": "2019-06-30T18:05:54",
    "name": "[v2,42/57] net/octeontx2: connect flow API to ethdev ops",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "d2dfcc53da418f94aaeccbf4bdd95aa70edade7c",
    "submitter": {
        "id": 1188,
        "url": "http://patches.dpdk.org/api/people/1188/?format=api",
        "name": "Jerin Jacob Kollanukkaran",
        "email": "jerinj@marvell.com"
    },
    "delegate": {
        "id": 310,
        "url": "http://patches.dpdk.org/api/users/310/?format=api",
        "username": "jerin",
        "first_name": "Jerin",
        "last_name": "Jacob",
        "email": "jerinj@marvell.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20190630180609.36705-43-jerinj@marvell.com/mbox/",
    "series": [
        {
            "id": 5236,
            "url": "http://patches.dpdk.org/api/series/5236/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=5236",
            "date": "2019-06-30T18:05:12",
            "name": "OCTEON TX2 Ethdev driver",
            "version": 2,
            "mbox": "http://patches.dpdk.org/series/5236/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/55711/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/55711/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 534531BB7F;\n\tSun, 30 Jun 2019 20:10:29 +0200 (CEST)",
            "from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com\n\t[67.231.148.174]) by dpdk.org (Postfix) with ESMTP id 359C81BAC5\n\tfor <dev@dpdk.org>; Sun, 30 Jun 2019 20:08:42 +0200 (CEST)",
            "from pps.filterd (m0045849.ppops.net [127.0.0.1])\n\tby mx0a-0016f401.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id\n\tx5UI5FMf027215; Sun, 30 Jun 2019 11:08:41 -0700",
            "from sc-exch04.marvell.com ([199.233.58.184])\n\tby mx0a-0016f401.pphosted.com with ESMTP id 2te5bn4gn2-1\n\t(version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); \n\tSun, 30 Jun 2019 11:08:41 -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\tSun, 30 Jun 2019 11:08:40 -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; Sun, 30 Jun 2019 11:08:40 -0700",
            "from jerin-lab.marvell.com (jerin-lab.marvell.com [10.28.34.14])\n\tby maili.marvell.com (Postfix) with ESMTP id 2FE903F703F;\n\tSun, 30 Jun 2019 11:08:37 -0700 (PDT)"
        ],
        "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-transfer-encoding : content-type; s=pfpt0818;\n\tbh=ZYZiXgs/x7ZfYuVI+IGw071WNcZq946F/D41V2xttx0=;\n\tb=aZgt0Ad4+wrO1UbqXcS3ZJq7C79tCs7kcZn4DFBnwgINYy0Yg8U0UV9rSW2AoFH2qxJs\n\tNEofKIVlLexQS5XqnLC6gh3DW6a5xeNGAdVyPY0DLPa8XMxHLhXPrtkKwVKywebPjCDi\n\tqQG81L7m2qYUcYNY4htxhHLDN94lBidB+0kA0Y16S0DQFw1uRPJOYSNT0cXzZaa07krP\n\twOLDEhNxRw5M81UPrXe4sxKlSY8Har0i8KwBcL9Cl3D+0yqXhaqAjY/Ort6kEu+DYy7V\n\tz4uQ+QOc2011YoDhJDsSytrB9ko0Dkovf26xABuExzHO8wjdv4ZvYSFFl0dI0kT/CUCa\n\taQ== ",
        "From": "<jerinj@marvell.com>",
        "To": "<dev@dpdk.org>, John McNamara <john.mcnamara@intel.com>, Marko Kovacevic\n\t<marko.kovacevic@intel.com>, Jerin Jacob <jerinj@marvell.com>, \"Nithin\n\tDabilpuram\" <ndabilpuram@marvell.com>, Kiran Kumar K\n\t<kirankumark@marvell.com>",
        "CC": "Vivek Sharma <viveksharma@marvell.com>",
        "Date": "Sun, 30 Jun 2019 23:35:54 +0530",
        "Message-ID": "<20190630180609.36705-43-jerinj@marvell.com>",
        "X-Mailer": "git-send-email 2.21.0",
        "In-Reply-To": "<20190630180609.36705-1-jerinj@marvell.com>",
        "References": "<20190602152434.23996-1-jerinj@marvell.com>\n\t<20190630180609.36705-1-jerinj@marvell.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-Proofpoint-Virus-Version": "vendor=fsecure engine=2.50.10434:, ,\n\tdefinitions=2019-06-30_08:, , signatures=0",
        "Subject": "[dpdk-dev] [PATCH v2 42/57] net/octeontx2: connect flow API to\n\tethdev ops",
        "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": "From: Vivek Sharma <viveksharma@marvell.com>\n\nConnect rte_flow driver ops to ethdev via .filter_ctrl op.\n\nSigned-off-by: Vivek Sharma <viveksharma@marvell.com>\nSigned-off-by: Kiran Kumar K <kirankumark@marvell.com>\n---\n doc/guides/nics/features/octeontx2.ini     |  1 +\n doc/guides/nics/features/octeontx2_vec.ini |  1 +\n doc/guides/nics/features/octeontx2_vf.ini  |  1 +\n doc/guides/nics/octeontx2.rst              | 93 ++++++++++++++++++++++\n drivers/net/octeontx2/otx2_ethdev.c        |  9 +++\n drivers/net/octeontx2/otx2_ethdev.h        |  3 +\n drivers/net/octeontx2/otx2_ethdev_ops.c    | 21 +++++\n 7 files changed, 129 insertions(+)",
    "diff": "diff --git a/doc/guides/nics/features/octeontx2.ini b/doc/guides/nics/features/octeontx2.ini\nindex 46fb00be6..33d2f2785 100644\n--- a/doc/guides/nics/features/octeontx2.ini\n+++ b/doc/guides/nics/features/octeontx2.ini\n@@ -22,6 +22,7 @@ RSS key update       = Y\n RSS reta update      = Y\n Inner RSS            = Y\n Flow control         = Y\n+Flow API             = Y\n Packet type parsing  = Y\n Timesync             = Y\n Timestamp offload    = Y\ndiff --git a/doc/guides/nics/features/octeontx2_vec.ini b/doc/guides/nics/features/octeontx2_vec.ini\nindex f3f812804..980a4daf9 100644\n--- a/doc/guides/nics/features/octeontx2_vec.ini\n+++ b/doc/guides/nics/features/octeontx2_vec.ini\n@@ -22,6 +22,7 @@ RSS key update       = Y\n RSS reta update      = Y\n Inner RSS            = Y\n Flow control         = Y\n+Flow API             = Y\n Packet type parsing  = Y\n Rx descriptor status = Y\n Basic stats          = Y\ndiff --git a/doc/guides/nics/features/octeontx2_vf.ini b/doc/guides/nics/features/octeontx2_vf.ini\nindex 7fba7e1d9..330534a90 100644\n--- a/doc/guides/nics/features/octeontx2_vf.ini\n+++ b/doc/guides/nics/features/octeontx2_vf.ini\n@@ -17,6 +17,7 @@ RSS hash             = Y\n RSS key update       = Y\n RSS reta update      = Y\n Inner RSS            = Y\n+Flow API             = Y\n Packet type parsing  = Y\n Rx descriptor status = Y\n Basic stats          = Y\ndiff --git a/doc/guides/nics/octeontx2.rst b/doc/guides/nics/octeontx2.rst\nindex 41eb3c7b9..0f1756932 100644\n--- a/doc/guides/nics/octeontx2.rst\n+++ b/doc/guides/nics/octeontx2.rst\n@@ -23,6 +23,7 @@ Features of the OCTEON TX2 Ethdev PMD are:\n - Multiple queues for TX and RX\n - Receiver Side Scaling (RSS)\n - MAC filtering\n+- Generic flow API\n - Port hardware statistics\n - Link state information\n - Link flow control\n@@ -109,3 +110,95 @@ Runtime Config Options\n    Above devarg parameters are configurable per device, user needs to pass the\n    parameters to all the PCIe devices if application requires to configure on\n    all the ethdev ports.\n+\n+RTE Flow Support\n+----------------\n+\n+The OCTEON TX2 SoC family NIC has support for the following patterns and\n+actions.\n+\n+Patterns:\n+\n+.. _table_octeontx2_supported_flow_item_types:\n+\n+.. table:: Item types\n+\n+   +----+--------------------------------+\n+   | #  | Pattern Type                   |\n+   +====+================================+\n+   | 1  | RTE_FLOW_ITEM_TYPE_ETH         |\n+   +----+--------------------------------+\n+   | 2  | RTE_FLOW_ITEM_TYPE_VLAN        |\n+   +----+--------------------------------+\n+   | 3  | RTE_FLOW_ITEM_TYPE_E_TAG       |\n+   +----+--------------------------------+\n+   | 4  | RTE_FLOW_ITEM_TYPE_IPV4        |\n+   +----+--------------------------------+\n+   | 5  | RTE_FLOW_ITEM_TYPE_IPV6        |\n+   +----+--------------------------------+\n+   | 6  | RTE_FLOW_ITEM_TYPE_ARP_ETH_IPV4|\n+   +----+--------------------------------+\n+   | 7  | RTE_FLOW_ITEM_TYPE_MPLS        |\n+   +----+--------------------------------+\n+   | 8  | RTE_FLOW_ITEM_TYPE_ICMP        |\n+   +----+--------------------------------+\n+   | 9  | RTE_FLOW_ITEM_TYPE_UDP         |\n+   +----+--------------------------------+\n+   | 10 | RTE_FLOW_ITEM_TYPE_TCP         |\n+   +----+--------------------------------+\n+   | 11 | RTE_FLOW_ITEM_TYPE_SCTP        |\n+   +----+--------------------------------+\n+   | 12 | RTE_FLOW_ITEM_TYPE_ESP         |\n+   +----+--------------------------------+\n+   | 13 | RTE_FLOW_ITEM_TYPE_GRE         |\n+   +----+--------------------------------+\n+   | 14 | RTE_FLOW_ITEM_TYPE_NVGRE       |\n+   +----+--------------------------------+\n+   | 15 | RTE_FLOW_ITEM_TYPE_VXLAN       |\n+   +----+--------------------------------+\n+   | 16 | RTE_FLOW_ITEM_TYPE_GTPC        |\n+   +----+--------------------------------+\n+   | 17 | RTE_FLOW_ITEM_TYPE_GTPU        |\n+   +----+--------------------------------+\n+   | 18 | RTE_FLOW_ITEM_TYPE_VOID        |\n+   +----+--------------------------------+\n+   | 19 | RTE_FLOW_ITEM_TYPE_ANY         |\n+   +----+--------------------------------+\n+\n+Actions:\n+\n+.. _table_octeontx2_supported_ingress_action_types:\n+\n+.. table:: Ingress action types\n+\n+   +----+--------------------------------+\n+   | #  | Action Type                    |\n+   +====+================================+\n+   | 1  | RTE_FLOW_ACTION_TYPE_VOID      |\n+   +----+--------------------------------+\n+   | 2  | RTE_FLOW_ACTION_TYPE_MARK      |\n+   +----+--------------------------------+\n+   | 3  | RTE_FLOW_ACTION_TYPE_FLAG      |\n+   +----+--------------------------------+\n+   | 4  | RTE_FLOW_ACTION_TYPE_COUNT     |\n+   +----+--------------------------------+\n+   | 5  | RTE_FLOW_ACTION_TYPE_DROP      |\n+   +----+--------------------------------+\n+   | 6  | RTE_FLOW_ACTION_TYPE_QUEUE     |\n+   +----+--------------------------------+\n+   | 7  | RTE_FLOW_ACTION_TYPE_RSS       |\n+   +----+--------------------------------+\n+   | 8  | RTE_FLOW_ACTION_TYPE_SECURITY  |\n+   +----+--------------------------------+\n+\n+.. _table_octeontx2_supported_egress_action_types:\n+\n+.. table:: Egress action types\n+\n+   +----+--------------------------------+\n+   | #  | Action Type                    |\n+   +====+================================+\n+   | 1  | RTE_FLOW_ACTION_TYPE_COUNT     |\n+   +----+--------------------------------+\n+   | 2  | RTE_FLOW_ACTION_TYPE_DROP      |\n+   +----+--------------------------------+\ndiff --git a/drivers/net/octeontx2/otx2_ethdev.c b/drivers/net/octeontx2/otx2_ethdev.c\nindex 7512aacb3..09201fd23 100644\n--- a/drivers/net/octeontx2/otx2_ethdev.c\n+++ b/drivers/net/octeontx2/otx2_ethdev.c\n@@ -1326,6 +1326,7 @@ static const struct eth_dev_ops otx2_eth_dev_ops = {\n \t.rx_descriptor_status     = otx2_nix_rx_descriptor_status,\n \t.tx_done_cleanup          = otx2_nix_tx_done_cleanup,\n \t.pool_ops_supported       = otx2_nix_pool_ops_supported,\n+\t.filter_ctrl              = otx2_nix_dev_filter_ctrl,\n \t.get_module_info          = otx2_nix_get_module_info,\n \t.get_module_eeprom        = otx2_nix_get_module_eeprom,\n \t.flow_ctrl_get            = otx2_nix_flow_ctrl_get,\n@@ -1505,6 +1506,11 @@ otx2_eth_dev_init(struct rte_eth_dev *eth_dev)\n \t\tdev->hwcap |= OTX2_FIXUP_F_LIMIT_CQ_FULL;\n \t}\n \n+\t/* Initialize rte-flow */\n+\trc = otx2_flow_init(dev);\n+\tif (rc)\n+\t\tgoto free_mac_addrs;\n+\n \totx2_nix_dbg(\"Port=%d pf=%d vf=%d ver=%s msix_off=%d hwcap=0x%\" PRIx64\n \t\t     \" rxoffload_capa=0x%\" PRIx64 \" txoffload_capa=0x%\" PRIx64,\n \t\t     eth_dev->data->port_id, dev->pf, dev->vf,\n@@ -1541,6 +1547,9 @@ otx2_eth_dev_uninit(struct rte_eth_dev *eth_dev, bool mbox_close)\n \t/* Disable nix bpid config */\n \totx2_nix_rxchan_bpid_cfg(eth_dev, false);\n \n+\t/* Disable other rte_flow entries */\n+\totx2_flow_fini(dev);\n+\n \t/* Disable PTP if already enabled */\n \tif (otx2_ethdev_is_ptp_en(dev))\n \t\totx2_nix_timesync_disable(eth_dev);\ndiff --git a/drivers/net/octeontx2/otx2_ethdev.h b/drivers/net/octeontx2/otx2_ethdev.h\nindex e8a22b6ec..ad12f2553 100644\n--- a/drivers/net/octeontx2/otx2_ethdev.h\n+++ b/drivers/net/octeontx2/otx2_ethdev.h\n@@ -294,6 +294,9 @@ otx2_eth_pmd_priv(struct rte_eth_dev *eth_dev)\n /* Ops */\n void otx2_nix_info_get(struct rte_eth_dev *eth_dev,\n \t\t       struct rte_eth_dev_info *dev_info);\n+int otx2_nix_dev_filter_ctrl(struct rte_eth_dev *eth_dev,\n+\t\t\t     enum rte_filter_type filter_type,\n+\t\t\t     enum rte_filter_op filter_op, void *arg);\n int otx2_nix_get_module_info(struct rte_eth_dev *eth_dev,\n \t\t\t     struct rte_eth_dev_module_info *modinfo);\n int otx2_nix_get_module_eeprom(struct rte_eth_dev *eth_dev,\ndiff --git a/drivers/net/octeontx2/otx2_ethdev_ops.c b/drivers/net/octeontx2/otx2_ethdev_ops.c\nindex 2a949439a..e55acd4e0 100644\n--- a/drivers/net/octeontx2/otx2_ethdev_ops.c\n+++ b/drivers/net/octeontx2/otx2_ethdev_ops.c\n@@ -220,6 +220,27 @@ otx2_nix_pool_ops_supported(struct rte_eth_dev *eth_dev, const char *pool)\n \treturn -ENOTSUP;\n }\n \n+int\n+otx2_nix_dev_filter_ctrl(struct rte_eth_dev *eth_dev,\n+\t\t\t enum rte_filter_type filter_type,\n+\t\t\t enum rte_filter_op filter_op, void *arg)\n+{\n+\tRTE_SET_USED(eth_dev);\n+\n+\tif (filter_type != RTE_ETH_FILTER_GENERIC) {\n+\t\totx2_err(\"Unsupported filter type %d\", filter_type);\n+\t\treturn -ENOTSUP;\n+\t}\n+\n+\tif (filter_op == RTE_ETH_FILTER_GET) {\n+\t\t*(const void **)arg = &otx2_flow_ops;\n+\t\treturn 0;\n+\t}\n+\n+\totx2_err(\"Invalid filter_op %d\", filter_op);\n+\treturn -EINVAL;\n+}\n+\n static struct cgx_fw_data *\n nix_get_fwdata(struct otx2_eth_dev *dev)\n {\n",
    "prefixes": [
        "v2",
        "42/57"
    ]
}