Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/65188/?format=api
http://patches.dpdk.org/api/patches/65188/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/patch/20200128062357.9316-9-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": "<20200128062357.9316-9-somnath.kotur@broadcom.com>", "list_archive_url": "https://inbox.dpdk.org/dev/20200128062357.9316-9-somnath.kotur@broadcom.com", "date": "2020-01-28T06:23:57", "name": "[8/8] net/bnxt: fix to support zero mark id along with RSS action", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": true, "hash": "d990df73f66fc396ab716e8d1d576148f349ffa0", "submitter": { "id": 908, "url": "http://patches.dpdk.org/api/people/908/?format=api", "name": "Somnath Kotur", "email": "somnath.kotur@broadcom.com" }, "delegate": { "id": 1766, "url": "http://patches.dpdk.org/api/users/1766/?format=api", "username": "ajitkhaparde", "first_name": "Ajit", "last_name": "Khaparde", "email": "ajit.khaparde@broadcom.com" }, "mbox": "http://patches.dpdk.org/project/dpdk/patch/20200128062357.9316-9-somnath.kotur@broadcom.com/mbox/", "series": [ { "id": 8313, "url": "http://patches.dpdk.org/api/series/8313/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=8313", "date": "2020-01-28T06:23:50", "name": "bnxt patch set", "version": 1, "mbox": "http://patches.dpdk.org/series/8313/mbox/" } ], "comments": "http://patches.dpdk.org/api/patches/65188/comments/", "check": "fail", "checks": "http://patches.dpdk.org/api/patches/65188/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dev-bounces@dpdk.org>", "X-Original-To": "patchwork@inbox.dpdk.org", "Delivered-To": "patchwork@inbox.dpdk.org", "Received": [ "from dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 4BF5BA04B3;\n\tTue, 28 Jan 2020 07:26:36 +0100 (CET)", "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id EEE531C122;\n\tTue, 28 Jan 2020 07:25:34 +0100 (CET)", "from relay.smtp.broadcom.com (relay.smtp.broadcom.com\n [192.19.211.62]) by dpdk.org (Postfix) with ESMTP id 365F61BFB6\n for <dev@dpdk.org>; Tue, 28 Jan 2020 07:25:23 +0100 (CET)", "from dhcp-10-123-153-55.dhcp.broadcom.net\n (dhcp-10-123-153-55.dhcp.broadcom.net [10.123.153.55])\n by relay.smtp.broadcom.com (Postfix) with ESMTP id CBDBF2904F7;\n Mon, 27 Jan 2020 22:25:22 -0800 (PST)" ], "DKIM-Filter": "OpenDKIM Filter v2.10.3 relay.smtp.broadcom.com CBDBF2904F7", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com;\n s=dkimrelay; t=1580192723;\n bh=fsw7i0O4ump2FBT1XWNfn8eu/iRGEScstp2xyVOOmJ8=;\n h=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n b=VLofQ79q5/kmF0M6zECwxWOaxLMdJZtKhQSo00MVXWQldPVKts/RLo2VmuFy262i7\n D7GmM/nXaeSTLOTrRzsEyyFRsMGQkog+Oa8Gazi5NiG5DAwJjNymPQ5qjij1kSqLBy\n mwQJe3Te2KxnIgvVWNSPExI87/zUKBjWm6aBo0ok=", "From": "Somnath Kotur <somnath.kotur@broadcom.com>", "To": "dev@dpdk.org", "Cc": "ferruh.yigit@intel.com", "Date": "Tue, 28 Jan 2020 11:53:57 +0530", "Message-Id": "<20200128062357.9316-9-somnath.kotur@broadcom.com>", "X-Mailer": "git-send-email 2.10.1.613.g2cc2e70", "In-Reply-To": "<20200128062357.9316-1-somnath.kotur@broadcom.com>", "References": "<20200128062357.9316-1-somnath.kotur@broadcom.com>", "Subject": "[dpdk-dev] [PATCH 8/8] net/bnxt: fix to support zero mark id along\n\twith RSS 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 <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 <mailto:dev-request@dpdk.org?subject=subscribe>", "Errors-To": "dev-bounces@dpdk.org", "Sender": "\"dev\" <dev-bounces@dpdk.org>" }, "content": "Certain applications(Ex: OVS-DPDK) can issue rte_flow_create with mark id\nset to 0. The mark table entry creation in the driver was assuming\nnon-zero mark ids. Fix it to have a valid flag for each entry.\nAlso, it is possible that both RSS flags and cfa_code/ mark id are\nset as part of the Rx packet completion descriptor if the 'action'\nfor a flow is MARK + RSS.\nFix Rx completion processing to look for both fields as opposed to\nonly either.\n\nFixes: 94eb699bc82e (\"net/bnxt: support flow mark action\")\n\nSigned-off-by: Somnath Kotur <somnath.kotur@broadcom.com>\n---\n drivers/net/bnxt/bnxt.h | 9 +++++++--\n drivers/net/bnxt/bnxt_flow.c | 20 +++++++++++++++-----\n drivers/net/bnxt/bnxt_rxr.c | 25 +++++++++++++++----------\n drivers/net/bnxt/bnxt_rxr.h | 6 ++++--\n 4 files changed, 41 insertions(+), 19 deletions(-)", "diff": "diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h\nindex 1a5d542..68786a8 100644\n--- a/drivers/net/bnxt/bnxt.h\n+++ b/drivers/net/bnxt/bnxt.h\n@@ -470,6 +470,11 @@ struct bnxt_error_recovery_info {\n \tuint32_t last_reset_counter;\n };\n \n+struct bnxt_mark_info {\n+\tuint32_t\tmark_id;\n+\tbool\t\tvalid;\n+};\n+\n /* address space location of register */\n #define BNXT_FW_STATUS_REG_TYPE_MASK\t3\n /* register is located in PCIe config space */\n@@ -668,10 +673,10 @@ struct bnxt {\n \n \t/* Struct to hold adapter error recovery related info */\n \tstruct bnxt_error_recovery_info *recovery_info;\n-#define BNXT_MARK_TABLE_SZ\t(sizeof(uint32_t) * 64 * 1024)\n+#define BNXT_MARK_TABLE_SZ\t(sizeof(struct bnxt_mark_info) * 64 * 1024)\n /* TCAM and EM should be 16-bit only. Other modes not supported. */\n #define BNXT_FLOW_ID_MASK\t0x0000ffff\n-\tuint32_t\t\t*mark_table;\n+\tstruct bnxt_mark_info\t*mark_table;\n };\n \n int bnxt_mtu_set_op(struct rte_eth_dev *eth_dev, uint16_t new_mtu);\ndiff --git a/drivers/net/bnxt/bnxt_flow.c b/drivers/net/bnxt/bnxt_flow.c\nindex bd6c726..9fb6dbd 100644\n--- a/drivers/net/bnxt/bnxt_flow.c\n+++ b/drivers/net/bnxt/bnxt_flow.c\n@@ -1263,7 +1263,6 @@ static int match_vnic_rss_cfg(struct bnxt *bp,\n \t\tvnic_id = attr->group;\n \n \t\tBNXT_VALID_VNIC_OR_RET(bp, vnic_id);\n-\n \t\tvnic = &bp->vnic_info[vnic_id];\n \n \t\t/* Check if requested RSS config matches RSS config of VNIC\n@@ -1641,7 +1640,7 @@ struct bnxt_vnic_info *find_matching_vnic(struct bnxt *bp,\n \tbool update_flow = false;\n \tstruct rte_flow *flow;\n \tint ret = 0;\n-\tuint32_t tun_type;\n+\tuint32_t tun_type, flow_id;\n \n \tif (BNXT_VF(bp) && !BNXT_VF_IS_TRUSTED(bp)) {\n \t\trte_flow_error_set(error, EINVAL,\n@@ -1773,8 +1772,16 @@ struct bnxt_vnic_info *find_matching_vnic(struct bnxt *bp,\n \t\t\t/* TCAM and EM should be 16-bit only.\n \t\t\t * Other modes not supported.\n \t\t\t */\n-\t\t\tbp->mark_table[filter->flow_id & BNXT_FLOW_ID_MASK] =\n-\t\t\t\tfilter->mark;\n+\t\t\tflow_id = filter->flow_id & BNXT_FLOW_ID_MASK;\n+\t\t\tif (bp->mark_table[flow_id].valid) {\n+\t\t\t\tPMD_DRV_LOG(ERR,\n+\t\t\t\t\t \"Entry for Mark id 0x%x occupied\"\n+\t\t\t\t\t \" flow id 0x%x\\n\",\n+\t\t\t\t\t filter->mark, filter->flow_id);\n+\t\t\t\tgoto free_filter;\n+\t\t\t}\n+\t\t\tbp->mark_table[flow_id].valid = true;\n+\t\t\tbp->mark_table[flow_id].mark_id = filter->mark;\n \t\t}\n \t\tbnxt_release_flow_lock(bp);\n \t\treturn flow;\n@@ -1850,6 +1857,7 @@ static int bnxt_handle_tunnel_redirect_destroy(struct bnxt *bp,\n \tstruct bnxt_filter_info *filter;\n \tstruct bnxt_vnic_info *vnic;\n \tint ret = 0;\n+\tuint32_t flow_id;\n \n \tfilter = flow->filter;\n \tvnic = flow->vnic;\n@@ -1868,7 +1876,9 @@ static int bnxt_handle_tunnel_redirect_destroy(struct bnxt *bp,\n \t\tPMD_DRV_LOG(ERR, \"Could not find matching flow\\n\");\n \n \tif (filter->valid_flags & BNXT_FLOW_MARK_FLAG) {\n-\t\tbp->mark_table[filter->flow_id & BNXT_FLOW_ID_MASK] = 0;\n+\t\tflow_id = filter->flow_id & BNXT_FLOW_ID_MASK;\n+\t\tmemset(&bp->mark_table[flow_id], 0,\n+\t\t sizeof(bp->mark_table[flow_id]));\n \t\tfilter->flow_id = 0;\n \t}\n \ndiff --git a/drivers/net/bnxt/bnxt_rxr.c b/drivers/net/bnxt/bnxt_rxr.c\nindex 1ae0c3c..1960b05 100644\n--- a/drivers/net/bnxt/bnxt_rxr.c\n+++ b/drivers/net/bnxt/bnxt_rxr.c\n@@ -488,11 +488,10 @@ static int bnxt_rx_pkt(struct rte_mbuf **rx_pkt,\n \tif (flags_type & RX_PKT_CMPL_FLAGS_RSS_VALID) {\n \t\tmbuf->hash.rss = rxcmp->rss_hash;\n \t\tmbuf->ol_flags |= PKT_RX_RSS_HASH;\n-\t} else {\n-\t\tmbuf->hash.fdir.id = bnxt_get_cfa_code_or_mark_id(rxq->bp,\n-\t\t\t\t\t\t\t\t rxcmp1);\n-\t\tmbuf->ol_flags |= PKT_RX_FDIR | PKT_RX_FDIR_ID;\n \t}\n+\n+\tbnxt_set_mark_in_mbuf(rxq->bp, rxcmp1, mbuf);\n+\n #ifdef RTE_LIBRTE_IEEE1588\n \tif (unlikely((flags_type & RX_PKT_CMPL_FLAGS_MASK) ==\n \t\t RX_PKT_CMPL_FLAGS_ITYPE_PTP_W_TIMESTAMP)) {\n@@ -897,8 +896,9 @@ int bnxt_init_one_rx_ring(struct bnxt_rx_queue *rxq)\n \treturn 0;\n }\n \n-uint32_t bnxt_get_cfa_code_or_mark_id(struct bnxt *bp,\n-\t\t\t\t struct rx_pkt_cmpl_hi *rxcmp1)\n+void bnxt_set_mark_in_mbuf(struct bnxt *bp,\n+\t\t\t struct rx_pkt_cmpl_hi *rxcmp1,\n+\t\t\t struct rte_mbuf *mbuf)\n {\n \tuint32_t cfa_code = 0;\n \tuint8_t meta_fmt = 0;\n@@ -907,10 +907,13 @@ uint32_t bnxt_get_cfa_code_or_mark_id(struct bnxt *bp,\n \n \tcfa_code = rte_le_to_cpu_16(rxcmp1->cfa_code);\n \tif (!cfa_code)\n-\t\treturn 0;\n+\t\treturn;\n \n-\tif (cfa_code && !bp->mark_table[cfa_code])\n-\t\treturn cfa_code;\n+\tif (cfa_code && !bp->mark_table[cfa_code].valid) {\n+\t\tPMD_DRV_LOG(WARNING, \"Invalid mark_tbl entry! cfa_code: 0x%x\\n\",\n+\t\t\t cfa_code);\n+\t\treturn;\n+\t}\n \n \tflags2 = rte_le_to_cpu_16(rxcmp1->flags2);\n \tmeta = rte_le_to_cpu_32(rxcmp1->metadata);\n@@ -932,5 +935,7 @@ uint32_t bnxt_get_cfa_code_or_mark_id(struct bnxt *bp,\n \t\t */\n \t\tmeta_fmt >>= BNXT_CFA_META_FMT_EM_EEM_SHFT;\n \t}\n-\treturn bp->mark_table[cfa_code];\n+\n+\tmbuf->hash.fdir.hi = bp->mark_table[cfa_code].mark_id;\n+\tmbuf->ol_flags |= PKT_RX_FDIR | PKT_RX_FDIR_ID;\n }\ndiff --git a/drivers/net/bnxt/bnxt_rxr.h b/drivers/net/bnxt/bnxt_rxr.h\nindex bf86002..d10dae2 100644\n--- a/drivers/net/bnxt/bnxt_rxr.h\n+++ b/drivers/net/bnxt/bnxt_rxr.h\n@@ -226,8 +226,10 @@ uint16_t bnxt_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,\n int bnxt_rxq_vec_setup(struct bnxt_rx_queue *rxq);\n #endif\n \n-uint32_t bnxt_get_cfa_code_or_mark_id(struct bnxt *bp,\n-\t\t\t\t struct rx_pkt_cmpl_hi *rxcmp1);\n+void bnxt_set_mark_in_mbuf(struct bnxt *bp,\n+\t\t\t struct rx_pkt_cmpl_hi *rxcmp1,\n+\t\t\t struct rte_mbuf *mbuf);\n+\n #define BNXT_RX_META_CFA_CODE_SHIFT\t\t19\n #define BNXT_CFA_CODE_META_SHIFT\t\t16\n #define BNXT_RX_META_CFA_CODE_INT_ACT_REC_BIT\t0x8000000\n", "prefixes": [ "8/8" ] }{ "id": 65188, "url": "