Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/66531/?format=api
http://patches.dpdk.org/api/patches/66531/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/patch/87c0dcb4774b9b6dd2004c968dedcd3fbac62942.1583906144.git.kaara.satwik@chelsio.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": "<87c0dcb4774b9b6dd2004c968dedcd3fbac62942.1583906144.git.kaara.satwik@chelsio.com>", "list_archive_url": "https://inbox.dpdk.org/dev/87c0dcb4774b9b6dd2004c968dedcd3fbac62942.1583906144.git.kaara.satwik@chelsio.com", "date": "2020-03-11T09:05:44", "name": "[2/9] net/cxgbe: add rte_flow support for matching IP TOS", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": true, "hash": "035a261ae62b6fe03658234a5798986e08202034", "submitter": { "id": 241, "url": "http://patches.dpdk.org/api/people/241/?format=api", "name": "Rahul Lakkireddy", "email": "rahul.lakkireddy@chelsio.com" }, "delegate": { "id": 319, "url": "http://patches.dpdk.org/api/users/319/?format=api", "username": "fyigit", "first_name": "Ferruh", "last_name": "Yigit", "email": "ferruh.yigit@amd.com" }, "mbox": "http://patches.dpdk.org/project/dpdk/patch/87c0dcb4774b9b6dd2004c968dedcd3fbac62942.1583906144.git.kaara.satwik@chelsio.com/mbox/", "series": [ { "id": 8880, "url": "http://patches.dpdk.org/api/series/8880/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=8880", "date": "2020-03-11T09:05:42", "name": "net/cxgbe: updates for rte_flow support", "version": 1, "mbox": "http://patches.dpdk.org/series/8880/mbox/" } ], "comments": "http://patches.dpdk.org/api/patches/66531/comments/", "check": "fail", "checks": "http://patches.dpdk.org/api/patches/66531/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 9303EA0567;\n\tWed, 11 Mar 2020 10:16:56 +0100 (CET)", "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 4DCCF1C012;\n\tWed, 11 Mar 2020 10:16:45 +0100 (CET)", "from stargate.chelsio.com (stargate.chelsio.com [12.32.117.8])\n by dpdk.org (Postfix) with ESMTP id C05411C011\n for <dev@dpdk.org>; Wed, 11 Mar 2020 10:16:43 +0100 (CET)", "from localhost (scalar.blr.asicdesigners.com [10.193.185.94])\n by stargate.chelsio.com (8.13.8/8.13.8) with ESMTP id 02B9GfRW014327;\n Wed, 11 Mar 2020 02:16:42 -0700" ], "From": "Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>", "To": "dev@dpdk.org", "Cc": "nirranjan@chelsio.com, kaara.satwik@chelsio.com", "Date": "Wed, 11 Mar 2020 14:35:44 +0530", "Message-Id": "\n <87c0dcb4774b9b6dd2004c968dedcd3fbac62942.1583906144.git.kaara.satwik@chelsio.com>", "X-Mailer": "git-send-email 2.5.3", "In-Reply-To": [ "<cover.1583906144.git.kaara.satwik@chelsio.com>", "<cover.1583906144.git.kaara.satwik@chelsio.com>" ], "References": [ "<cover.1583906144.git.kaara.satwik@chelsio.com>", "<cover.1583906144.git.kaara.satwik@chelsio.com>" ], "Subject": "[dpdk-dev] [PATCH 2/9] net/cxgbe: add rte_flow support for matching\n\tIP TOS", "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": "From: Karra Satwik <kaara.satwik@chelsio.com>\n\nAdd support to match Type of Service (TOS) field in\nIPv4/IPv6 header\n\nSigned-off-by: Karra Satwik <kaara.satwik@chelsio.com>\nSigned-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>\n---\n drivers/net/cxgbe/base/common.h | 1 +\n drivers/net/cxgbe/base/t4_hw.c | 1 +\n drivers/net/cxgbe/cxgbe_filter.c | 7 +++++-\n drivers/net/cxgbe/cxgbe_flow.c | 42 +++++++++++++++++++++++++++-----\n 4 files changed, 44 insertions(+), 7 deletions(-)", "diff": "diff --git a/drivers/net/cxgbe/base/common.h b/drivers/net/cxgbe/base/common.h\nindex 6047642c5..793cad11d 100644\n--- a/drivers/net/cxgbe/base/common.h\n+++ b/drivers/net/cxgbe/base/common.h\n@@ -158,6 +158,7 @@ struct tp_params {\n \tint protocol_shift;\n \tint ethertype_shift;\n \tint macmatch_shift;\n+\tint tos_shift;\n \n \tu64 hash_filter_mask;\n };\ndiff --git a/drivers/net/cxgbe/base/t4_hw.c b/drivers/net/cxgbe/base/t4_hw.c\nindex f6bf57c75..cd4da0b9f 100644\n--- a/drivers/net/cxgbe/base/t4_hw.c\n+++ b/drivers/net/cxgbe/base/t4_hw.c\n@@ -5253,6 +5253,7 @@ int t4_init_tp_params(struct adapter *adap)\n \t\t\t\t\t\t\t\tF_ETHERTYPE);\n \tadap->params.tp.macmatch_shift = t4_filter_field_shift(adap,\n \t\t\t\t\t\t\t F_MACMATCH);\n+\tadap->params.tp.tos_shift = t4_filter_field_shift(adap, F_TOS);\n \n \tv = t4_read_reg(adap, LE_3_DB_HASH_MASK_GEN_IPV4_T6_A);\n \tadap->params.tp.hash_filter_mask = v;\ndiff --git a/drivers/net/cxgbe/cxgbe_filter.c b/drivers/net/cxgbe/cxgbe_filter.c\nindex d26be3cd7..193738f93 100644\n--- a/drivers/net/cxgbe/cxgbe_filter.c\n+++ b/drivers/net/cxgbe/cxgbe_filter.c\n@@ -72,7 +72,8 @@ int cxgbe_validate_filter(struct adapter *adapter,\n \n \tif (U(F_PORT, iport) || U(F_ETHERTYPE, ethtype) ||\n \t U(F_PROTOCOL, proto) || U(F_MACMATCH, macidx) ||\n-\t U(F_VLAN, ivlan_vld) || U(F_VNIC_ID, ovlan_vld))\n+\t U(F_VLAN, ivlan_vld) || U(F_VNIC_ID, ovlan_vld) ||\n+\t U(F_TOS, tos))\n \t\treturn -EOPNOTSUPP;\n \n \t/* Ensure OVLAN match is enabled in hardware */\n@@ -312,6 +313,8 @@ static u64 hash_filter_ntuple(const struct filter_entry *f)\n \t\t\tntuple |= (u64)(f->fs.val.ovlan_vld << 16 |\n \t\t\t\t\tf->fs.val.ovlan) << tp->vnic_shift;\n \t}\n+\tif (tp->tos_shift >= 0 && f->fs.mask.tos)\n+\t\tntuple |= (u64)f->fs.val.tos << tp->tos_shift;\n \n \treturn ntuple;\n }\n@@ -806,6 +809,8 @@ static int set_filter_wr(struct rte_eth_dev *dev, unsigned int fidx)\n \t\t\t V_FW_FILTER_WR_PORTM(f->fs.mask.iport));\n \tfwr->ptcl = f->fs.val.proto;\n \tfwr->ptclm = f->fs.mask.proto;\n+\tfwr->ttyp = f->fs.val.tos;\n+\tfwr->ttypm = f->fs.mask.tos;\n \tfwr->ivlan = cpu_to_be16(f->fs.val.ivlan);\n \tfwr->ivlanm = cpu_to_be16(f->fs.mask.ivlan);\n \tfwr->ovlan = cpu_to_be16(f->fs.val.ovlan);\ndiff --git a/drivers/net/cxgbe/cxgbe_flow.c b/drivers/net/cxgbe/cxgbe_flow.c\nindex cd833d095..c860b7886 100644\n--- a/drivers/net/cxgbe/cxgbe_flow.c\n+++ b/drivers/net/cxgbe/cxgbe_flow.c\n@@ -157,6 +157,8 @@ cxgbe_fill_filter_region(struct adapter *adap,\n \tif (tp->vnic_shift >= 0 && fs->mask.ovlan_vld)\n \t\tntuple_mask |= (u64)(F_FT_VLAN_VLD | fs->mask.ovlan) <<\n \t\t\t tp->vnic_shift;\n+\tif (tp->tos_shift >= 0)\n+\t\tntuple_mask |= (u64)fs->mask.tos << tp->tos_shift;\n \n \tif (ntuple_mask != hash_filter_mask)\n \t\treturn;\n@@ -354,9 +356,9 @@ ch_rte_parsetype_ipv4(const void *dmask, const struct rte_flow_item *item,\n \n \tmask = umask ? umask : (const struct rte_flow_item_ipv4 *)dmask;\n \n-\tif (mask->hdr.time_to_live || mask->hdr.type_of_service)\n+\tif (mask->hdr.time_to_live)\n \t\treturn rte_flow_error_set(e, ENOTSUP, RTE_FLOW_ERROR_TYPE_ITEM,\n-\t\t\t\t\t item, \"ttl/tos are not supported\");\n+\t\t\t\t\t item, \"ttl is not supported\");\n \n \tif (fs->mask.ethtype &&\n \t (fs->val.ethtype != RTE_ETHER_TYPE_IPV4))\n@@ -370,6 +372,7 @@ ch_rte_parsetype_ipv4(const void *dmask, const struct rte_flow_item *item,\n \tCXGBE_FILL_FS(val->hdr.next_proto_id, mask->hdr.next_proto_id, proto);\n \tCXGBE_FILL_FS_MEMCPY(val->hdr.dst_addr, mask->hdr.dst_addr, lip);\n \tCXGBE_FILL_FS_MEMCPY(val->hdr.src_addr, mask->hdr.src_addr, fip);\n+\tCXGBE_FILL_FS(val->hdr.type_of_service, mask->hdr.type_of_service, tos);\n \n \treturn 0;\n }\n@@ -382,14 +385,17 @@ ch_rte_parsetype_ipv6(const void *dmask, const struct rte_flow_item *item,\n \tconst struct rte_flow_item_ipv6 *val = item->spec;\n \tconst struct rte_flow_item_ipv6 *umask = item->mask;\n \tconst struct rte_flow_item_ipv6 *mask;\n+\tu32 vtc_flow, vtc_flow_mask;\n \n \tmask = umask ? umask : (const struct rte_flow_item_ipv6 *)dmask;\n \n-\tif (mask->hdr.vtc_flow ||\n+\tvtc_flow_mask = be32_to_cpu(mask->hdr.vtc_flow);\n+\n+\tif (vtc_flow_mask & RTE_IPV6_HDR_FL_MASK ||\n \t mask->hdr.payload_len || mask->hdr.hop_limits)\n \t\treturn rte_flow_error_set(e, ENOTSUP, RTE_FLOW_ERROR_TYPE_ITEM,\n \t\t\t\t\t item,\n-\t\t\t\t\t \"tc/flow/hop are not supported\");\n+\t\t\t\t\t \"flow/hop are not supported\");\n \n \tif (fs->mask.ethtype &&\n \t (fs->val.ethtype != RTE_ETHER_TYPE_IPV6))\n@@ -401,6 +407,14 @@ ch_rte_parsetype_ipv6(const void *dmask, const struct rte_flow_item *item,\n \t\treturn 0; /* ipv6 wild card */\n \n \tCXGBE_FILL_FS(val->hdr.proto, mask->hdr.proto, proto);\n+\n+\tvtc_flow = be32_to_cpu(val->hdr.vtc_flow);\n+\tCXGBE_FILL_FS((vtc_flow & RTE_IPV6_HDR_TC_MASK) >>\n+\t\t RTE_IPV6_HDR_TC_SHIFT,\n+\t\t (vtc_flow_mask & RTE_IPV6_HDR_TC_MASK) >>\n+\t\t RTE_IPV6_HDR_TC_SHIFT,\n+\t\t tos);\n+\n \tCXGBE_FILL_FS_MEMCPY(val->hdr.dst_addr, mask->hdr.dst_addr, lip);\n \tCXGBE_FILL_FS_MEMCPY(val->hdr.src_addr, mask->hdr.src_addr, fip);\n \n@@ -871,12 +885,28 @@ static struct chrte_fparse parseitem[] = {\n \n \t[RTE_FLOW_ITEM_TYPE_IPV4] = {\n \t\t.fptr = ch_rte_parsetype_ipv4,\n-\t\t.dmask = &rte_flow_item_ipv4_mask,\n+\t\t.dmask = &(const struct rte_flow_item_ipv4) {\n+\t\t\t.hdr = {\n+\t\t\t\t.src_addr = RTE_BE32(0xffffffff),\n+\t\t\t\t.dst_addr = RTE_BE32(0xffffffff),\n+\t\t\t\t.type_of_service = 0xff,\n+\t\t\t},\n+\t\t},\n \t},\n \n \t[RTE_FLOW_ITEM_TYPE_IPV6] = {\n \t\t.fptr = ch_rte_parsetype_ipv6,\n-\t\t.dmask = &rte_flow_item_ipv6_mask,\n+\t\t.dmask = &(const struct rte_flow_item_ipv6) {\n+\t\t\t.hdr = {\n+\t\t\t\t.src_addr =\n+\t\t\t\t\t\"\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\"\n+\t\t\t\t\t\"\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\",\n+\t\t\t\t.dst_addr =\n+\t\t\t\t\t\"\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\"\n+\t\t\t\t\t\"\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\",\n+\t\t\t\t.vtc_flow = RTE_BE32(0xff000000),\n+\t\t\t},\n+\t\t},\n \t},\n \n \t[RTE_FLOW_ITEM_TYPE_UDP] = {\n", "prefixes": [ "2/9" ] }{ "id": 66531, "url": "