get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 35321,
    "url": "http://patches.dpdk.org/api/patches/35321/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20180221103924.10022-1-somnath.kotur@broadcom.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": "<20180221103924.10022-1-somnath.kotur@broadcom.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20180221103924.10022-1-somnath.kotur@broadcom.com",
    "date": "2018-02-21T10:39:24",
    "name": "[dpdk-dev] bnxt: Fix bug with duplicate pattern for 5tuple filter",
    "commit_ref": null,
    "pull_url": null,
    "state": "not-applicable",
    "archived": true,
    "hash": "e036f04a3f760cb61794e499d486507139c34b2f",
    "submitter": {
        "id": 908,
        "url": "http://patches.dpdk.org/api/people/908/?format=api",
        "name": "Somnath Kotur",
        "email": "somnath.kotur@broadcom.com"
    },
    "delegate": null,
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20180221103924.10022-1-somnath.kotur@broadcom.com/mbox/",
    "series": [],
    "comments": "http://patches.dpdk.org/api/patches/35321/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/35321/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 718D22BF4;\n\tWed, 21 Feb 2018 11:44:09 +0100 (CET)",
            "from relay.smtp.broadcom.com (relay.smtp.broadcom.com\n\t[192.19.211.62]) by dpdk.org (Postfix) with ESMTP id 09B591B03F\n\tfor <dev@dpdk.org>; Wed, 21 Feb 2018 11:44:08 +0100 (CET)",
            "from dhcp-10-123-153-55.dhcp.broadcom.net\n\t(bgccx-dev-host-lnx35.bec.broadcom.net [10.123.153.55])\n\tby relay.smtp.broadcom.com (Postfix) with ESMTP id E2206280028\n\tfor <dev@dpdk.org>; Wed, 21 Feb 2018 02:44:06 -0800 (PST)"
        ],
        "DKIM-Filter": "OpenDKIM Filter v2.10.3 relay.smtp.broadcom.com E2206280028",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com;\n\ts=dkimrelay; t=1519209847;\n\tbh=A4FSnnUlkx5oqVIzhpMp/5a783CeNSn0xdLpzt9uw5I=;\n\th=From:To:Subject:Date:From;\n\tb=tkK2H3GS0YYe645DaD2gtS5FtO++DrM6sWBf59cjwlnlJh5F2kpqxHAdQBjLbpj3l\n\tM+YNLEcAQE+mNXWWGT0KeubEy/C5YZ23VuJy07zu+K+Deuk4vTSGTr21B1HYwtg1Tj\n\t+j0IFFqkuHe4MK65RmMD0Yh4WgoDGOgZWABILnfc=",
        "From": "Somnath Kotur <somnath.kotur@broadcom.com>",
        "To": "dev@dpdk.org",
        "Date": "Wed, 21 Feb 2018 16:09:24 +0530",
        "Message-Id": "<20180221103924.10022-1-somnath.kotur@broadcom.com>",
        "X-Mailer": "git-send-email 2.10.1.613.g2cc2e70",
        "Subject": "[dpdk-dev] [PATCH] bnxt: Fix bug with duplicate pattern for 5tuple\n\tfilter",
        "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://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": "<https://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": "When user re-issues same 5 tuple filter pattern cmd with different\ndestination queue, it would flag it as an existing match.\nHowever, when deletion on this filter was attempted, it would crash as the\n'vnic' from which the filter was being removed from would be different.\nFix by updating the filter in the scenario where there is a pattern match\nand only the destination queue varies.\n\nSigned-off-by: Somnath Kotur <somnath.kotur@broadcom.com>\n---\n drivers/net/bnxt/bnxt_ethdev.c | 32 +++++++++++++++++++++++---------\n 1 file changed, 23 insertions(+), 9 deletions(-)",
    "diff": "diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c\nindex 6f8a633..6af1267 100644\n--- a/drivers/net/bnxt/bnxt_ethdev.c\n+++ b/drivers/net/bnxt/bnxt_ethdev.c\n@@ -1953,7 +1953,8 @@ static int bnxt_mtu_set_op(struct rte_eth_dev *eth_dev, uint16_t new_mtu)\n \n static struct bnxt_filter_info*\n bnxt_match_ntuple_filter(struct bnxt *bp,\n-\t\t\t struct bnxt_filter_info *bfilter)\n+\t\t\t struct bnxt_filter_info *bfilter,\n+\t\t\t struct bnxt_vnic_info **mvnic)\n {\n \tstruct bnxt_filter_info *mfilter = NULL;\n \tint i;\n@@ -1972,8 +1973,11 @@ static int bnxt_mtu_set_op(struct rte_eth_dev *eth_dev, uint16_t new_mtu)\n \t\t\t    bfilter->dst_port == mfilter->dst_port &&\n \t\t\t    bfilter->dst_port_mask == mfilter->dst_port_mask &&\n \t\t\t    bfilter->flags == mfilter->flags &&\n-\t\t\t    bfilter->enables == mfilter->enables)\n+\t\t\t    bfilter->enables == mfilter->enables) {\n+\t\t\t\tif (mvnic)\n+\t\t\t\t\t*mvnic = vnic;\n \t\t\t\treturn mfilter;\n+\t\t\t}\n \t\t}\n \t}\n \treturn NULL;\n@@ -1985,7 +1989,7 @@ static int bnxt_mtu_set_op(struct rte_eth_dev *eth_dev, uint16_t new_mtu)\n \t\t       enum rte_filter_op filter_op)\n {\n \tstruct bnxt_filter_info *bfilter, *mfilter, *filter1;\n-\tstruct bnxt_vnic_info *vnic, *vnic0;\n+\tstruct bnxt_vnic_info *vnic, *vnic0, *mvnic;\n \tint ret;\n \n \tif (nfilter->flags != RTE_5TUPLE_FLAGS) {\n@@ -2023,12 +2027,22 @@ static int bnxt_mtu_set_op(struct rte_eth_dev *eth_dev, uint16_t new_mtu)\n \tbfilter->ethertype = 0x800;\n \tbfilter->enables |= NTUPLE_FLTR_ALLOC_INPUT_EN_ETHERTYPE;\n \n-\tmfilter = bnxt_match_ntuple_filter(bp, bfilter);\n+\tmfilter = bnxt_match_ntuple_filter(bp, bfilter, &mvnic);\n \n-\tif (mfilter != NULL && filter_op == RTE_ETH_FILTER_ADD) {\n-\t\tRTE_LOG(ERR, PMD, \"filter exists.\");\n+\tif (mfilter != NULL && filter_op == RTE_ETH_FILTER_ADD &&\n+\t    bfilter->dst_id == mfilter->dst_id) {\n+\t\tRTE_LOG(ERR, PMD, \"filter exists.\\n\");\n \t\tret = -EEXIST;\n \t\tgoto free_filter;\n+\t} else if (mfilter != NULL && filter_op == RTE_ETH_FILTER_ADD &&\n+\t\t   bfilter->dst_id != mfilter->dst_id) {\n+\t\tmfilter->dst_id = vnic->fw_vnic_id;\n+\t\tret = bnxt_hwrm_set_ntuple_filter(bp, mfilter->dst_id, mfilter);\n+\t\tSTAILQ_REMOVE(&mvnic->filter, mfilter, bnxt_filter_info, next);\n+\t\tSTAILQ_INSERT_TAIL(&vnic->filter, mfilter, next);\n+\t\tRTE_LOG(ERR, PMD, \"filter with matching pattern exists.\\n\");\n+\t\tRTE_LOG(ERR, PMD, \" Updated it to the new destination queue\\n\");\n+\t\tgoto free_filter;\n \t}\n \tif (mfilter == NULL && filter_op == RTE_ETH_FILTER_DELETE) {\n \t\tRTE_LOG(ERR, PMD, \"filter doesn't exist.\");\n@@ -2050,11 +2064,11 @@ static int bnxt_mtu_set_op(struct rte_eth_dev *eth_dev, uint16_t new_mtu)\n \t\t}\n \t\tret = bnxt_hwrm_clear_ntuple_filter(bp, mfilter);\n \n-\t\tSTAILQ_REMOVE(&vnic->filter, mfilter, bnxt_filter_info,\n-\t\t\t      next);\n+\t\tSTAILQ_REMOVE(&vnic->filter, mfilter, bnxt_filter_info, next);\n \t\tbnxt_free_filter(bp, mfilter);\n-\t\tbfilter->fw_l2_filter_id = -1;\n+\t\tmfilter->fw_l2_filter_id = -1;\n \t\tbnxt_free_filter(bp, bfilter);\n+\t\tbfilter->fw_l2_filter_id = -1;\n \t}\n \n \treturn 0;\n",
    "prefixes": [
        "dpdk-dev"
    ]
}