Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/72048/?format=api
http://patches.dpdk.org/api/patches/72048/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/patch/20200624020939.38262-1-junyux.jiang@intel.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": "<20200624020939.38262-1-junyux.jiang@intel.com>", "list_archive_url": "https://inbox.dpdk.org/dev/20200624020939.38262-1-junyux.jiang@intel.com", "date": "2020-06-24T02:09:39", "name": "[v4] net/ice: initialize and update RSS based on user request", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": true, "hash": "7a6c45d9825c51cf9ad7d85aedba3a4e35909fbc", "submitter": { "id": 1408, "url": "http://patches.dpdk.org/api/people/1408/?format=api", "name": "Junyu Jiang", "email": "junyux.jiang@intel.com" }, "delegate": { "id": 1540, "url": "http://patches.dpdk.org/api/users/1540/?format=api", "username": "qzhan15", "first_name": "Qi", "last_name": "Zhang", "email": "qi.z.zhang@intel.com" }, "mbox": "http://patches.dpdk.org/project/dpdk/patch/20200624020939.38262-1-junyux.jiang@intel.com/mbox/", "series": [ { "id": 10576, "url": "http://patches.dpdk.org/api/series/10576/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=10576", "date": "2020-06-24T02:09:39", "name": "[v4] net/ice: initialize and update RSS based on user request", "version": 4, "mbox": "http://patches.dpdk.org/series/10576/mbox/" } ], "comments": "http://patches.dpdk.org/api/patches/72048/comments/", "check": "success", "checks": "http://patches.dpdk.org/api/patches/72048/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 355E9A0350;\n\tWed, 24 Jun 2020 04:25:19 +0200 (CEST)", "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 754E41D6F8;\n\tWed, 24 Jun 2020 04:25:18 +0200 (CEST)", "from mga02.intel.com (mga02.intel.com [134.134.136.20])\n by dpdk.org (Postfix) with ESMTP id 7B6D51D6F6\n for <dev@dpdk.org>; Wed, 24 Jun 2020 04:25:16 +0200 (CEST)", "from orsmga002.jf.intel.com ([10.7.209.21])\n by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 23 Jun 2020 19:25:15 -0700", "from intel.sh.intel.com ([10.239.255.48])\n by orsmga002.jf.intel.com with ESMTP; 23 Jun 2020 19:25:10 -0700" ], "IronPort-SDR": [ "\n tWaQD3KNKyRrIm2Jh9QdB1fHTwnhY+mNypNtN58fJKwbnzSUFgtgOlOwCeOv+HvpqjYlKQkzOf\n 87beRu12tdrg==", "\n d9RbqAa2DbTizvKo2AKKBbCC9bRc71+HwDU78fvGZfs0K6my2ZiJKlQ0qGMGH4ncAoNRgpQUYX\n plXbpmRRic+w==" ], "X-IronPort-AV": [ "E=McAfee;i=\"6000,8403,9661\"; a=\"132714246\"", "E=Sophos;i=\"5.75,273,1589266800\"; d=\"scan'208\";a=\"132714246\"", "E=Sophos;i=\"5.75,273,1589266800\"; d=\"scan'208\";a=\"293398131\"" ], "X-Amp-Result": "SKIPPED(no attachment in message)", "X-Amp-File-Uploaded": "False", "X-ExtLoop1": "1", "From": "Junyu Jiang <junyux.jiang@intel.com>", "To": "dev@dpdk.org", "Cc": "Qi Zhang <qi.z.zhang@intel.com>, Qiming Yang <qiming.yang@intel.com>,\n simei.su@intel.com, Junyu Jiang <junyux.jiang@intel.com>", "Date": "Wed, 24 Jun 2020 02:09:39 +0000", "Message-Id": "<20200624020939.38262-1-junyux.jiang@intel.com>", "X-Mailer": "git-send-email 2.17.1", "In-Reply-To": "<20200610063355.35172-1-junyux.jiang@intel.com>", "References": "<20200610063355.35172-1-junyux.jiang@intel.com>", "Subject": "[dpdk-dev] [PATCH v4] net/ice: initialize and update RSS based on\n\tuser request", "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": "Initialize and update RSS configure based on user request\n(rte_eth_rss_conf) from dev_configure and .rss_hash_update ops.\nAll previous default configure has been removed.\n\nSigned-off-by: Junyu Jiang <junyux.jiang@intel.com>\n\n---\nv3->v4:\nchange the return value to success when rss_hf value update to 0.\n\nv2->v3:\nchange the commit log\nSeparate ipv4 and ipv6\nRemove the call of ice_rem_vsi_rss_cfg()\n\nv1->v2:\nremove gtpu and pppoe/pppod configuration from rss init\n---\n drivers/net/ice/ice_ethdev.c | 169 +++++++++++++++++++++--------------\n drivers/net/ice/ice_ethdev.h | 2 +\n 2 files changed, 104 insertions(+), 67 deletions(-)", "diff": "diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c\nindex 5a89a1955..7db8b35fd 100644\n--- a/drivers/net/ice/ice_ethdev.c\n+++ b/drivers/net/ice/ice_ethdev.c\n@@ -2441,6 +2441,100 @@ ice_dev_uninit(struct rte_eth_dev *dev)\n \treturn 0;\n }\n \n+static void\n+ice_rss_hash_set(struct ice_pf *pf, uint64_t rss_hf)\n+{\n+\tstruct ice_hw *hw = ICE_PF_TO_HW(pf);\n+\tstruct ice_vsi *vsi = pf->main_vsi;\n+\tint ret;\n+\n+\t/* Configure RSS for IPv4 with src/dst addr as input set */\n+\tif (rss_hf & ETH_RSS_IPV4) {\n+\t\tret = ice_add_rss_cfg(hw, vsi->idx, ICE_FLOW_HASH_IPV4,\n+\t\t\t\t ICE_FLOW_SEG_HDR_IPV4 |\n+\t\t\t\t ICE_FLOW_SEG_HDR_IPV_OTHER, 0);\n+\t\tif (ret)\n+\t\t\tPMD_DRV_LOG(ERR, \"%s IPV4 rss flow fail %d\",\n+\t\t\t\t __func__, ret);\n+\t}\n+\n+\t/* Configure RSS for IPv6 with src/dst addr as input set */\n+\tif (rss_hf & ETH_RSS_IPV6) {\n+\t\tret = ice_add_rss_cfg(hw, vsi->idx, ICE_FLOW_HASH_IPV6,\n+\t\t\t\t ICE_FLOW_SEG_HDR_IPV6 |\n+\t\t\t\t ICE_FLOW_SEG_HDR_IPV_OTHER, 0);\n+\t\tif (ret)\n+\t\t\tPMD_DRV_LOG(ERR, \"%s IPV6 rss flow fail %d\",\n+\t\t\t\t __func__, ret);\n+\t}\n+\n+\t/* Configure RSS for udp4 with src/dst addr and port as input set */\n+\tif (rss_hf & ETH_RSS_NONFRAG_IPV4_UDP) {\n+\t\tret = ice_add_rss_cfg(hw, vsi->idx, ICE_HASH_UDP_IPV4,\n+\t\t\t\t ICE_FLOW_SEG_HDR_UDP |\n+\t\t\t\t ICE_FLOW_SEG_HDR_IPV4 |\n+\t\t\t\t ICE_FLOW_SEG_HDR_IPV_OTHER, 0);\n+\t\tif (ret)\n+\t\t\tPMD_DRV_LOG(ERR, \"%s UDP_IPV4 rss flow fail %d\",\n+\t\t\t\t __func__, ret);\n+\t}\n+\n+\t/* Configure RSS for udp6 with src/dst addr and port as input set */\n+\tif (rss_hf & ETH_RSS_NONFRAG_IPV6_UDP) {\n+\t\tret = ice_add_rss_cfg(hw, vsi->idx, ICE_HASH_UDP_IPV6,\n+\t\t\t\t ICE_FLOW_SEG_HDR_UDP |\n+\t\t\t\t ICE_FLOW_SEG_HDR_IPV6 |\n+\t\t\t\t ICE_FLOW_SEG_HDR_IPV_OTHER, 0);\n+\t\tif (ret)\n+\t\t\tPMD_DRV_LOG(ERR, \"%s UDP_IPV6 rss flow fail %d\",\n+\t\t\t\t __func__, ret);\n+\t}\n+\n+\t/* Configure RSS for tcp4 with src/dst addr and port as input set */\n+\tif (rss_hf & ETH_RSS_NONFRAG_IPV4_TCP) {\n+\t\tret = ice_add_rss_cfg(hw, vsi->idx, ICE_HASH_TCP_IPV4,\n+\t\t\t\t ICE_FLOW_SEG_HDR_TCP |\n+\t\t\t\t ICE_FLOW_SEG_HDR_IPV4 |\n+\t\t\t\t ICE_FLOW_SEG_HDR_IPV_OTHER, 0);\n+\t\tif (ret)\n+\t\t\tPMD_DRV_LOG(ERR, \"%s TCP_IPV4 rss flow fail %d\",\n+\t\t\t\t __func__, ret);\n+\t}\n+\n+\t/* Configure RSS for tcp6 with src/dst addr and port as input set */\n+\tif (rss_hf & ETH_RSS_NONFRAG_IPV6_TCP) {\n+\t\tret = ice_add_rss_cfg(hw, vsi->idx, ICE_HASH_TCP_IPV6,\n+\t\t\t\t ICE_FLOW_SEG_HDR_TCP |\n+\t\t\t\t ICE_FLOW_SEG_HDR_IPV6 |\n+\t\t\t\t ICE_FLOW_SEG_HDR_IPV_OTHER, 0);\n+\t\tif (ret)\n+\t\t\tPMD_DRV_LOG(ERR, \"%s TCP_IPV6 rss flow fail %d\",\n+\t\t\t\t __func__, ret);\n+\t}\n+\n+\t/* Configure RSS for sctp4 with src/dst addr and port as input set */\n+\tif (rss_hf & ETH_RSS_NONFRAG_IPV4_SCTP) {\n+\t\tret = ice_add_rss_cfg(hw, vsi->idx, ICE_FLOW_HASH_IPV4,\n+\t\t\t\t ICE_FLOW_SEG_HDR_SCTP |\n+\t\t\t\t ICE_FLOW_SEG_HDR_IPV4 |\n+\t\t\t\t ICE_FLOW_SEG_HDR_IPV_OTHER, 0);\n+\t\tif (ret)\n+\t\t\tPMD_DRV_LOG(ERR, \"%s SCTP_IPV4 rss flow fail %d\",\n+\t\t\t\t __func__, ret);\n+\t}\n+\n+\t/* Configure RSS for sctp6 with src/dst addr and port as input set */\n+\tif (rss_hf & ETH_RSS_NONFRAG_IPV6_SCTP) {\n+\t\tret = ice_add_rss_cfg(hw, vsi->idx, ICE_FLOW_HASH_IPV6,\n+\t\t\t\t ICE_FLOW_SEG_HDR_SCTP |\n+\t\t\t\t ICE_FLOW_SEG_HDR_IPV6 |\n+\t\t\t\t ICE_FLOW_SEG_HDR_IPV_OTHER, 0);\n+\t\tif (ret)\n+\t\t\tPMD_DRV_LOG(ERR, \"%s SCTP_IPV6 rss flow fail %d\",\n+\t\t\t\t __func__, ret);\n+\t}\n+}\n+\n static int ice_init_rss(struct ice_pf *pf)\n {\n \tstruct ice_hw *hw = ICE_PF_TO_HW(pf);\n@@ -2501,72 +2595,8 @@ static int ice_init_rss(struct ice_pf *pf)\n \t\t(1 << VSIQF_HASH_CTL_HASH_SCHEME_S);\n \tICE_WRITE_REG(hw, VSIQF_HASH_CTL(vsi->vsi_id), reg);\n \n-\t/* configure RSS for IPv4 with input set IPv4 src/dst */\n-\tret = ice_add_rss_cfg(hw, vsi->idx, ICE_FLOW_HASH_IPV4,\n-\t\t\t ICE_FLOW_SEG_HDR_IPV4, 0);\n-\tif (ret)\n-\t\tPMD_DRV_LOG(ERR, \"%s IPV4 rss flow fail %d\", __func__, ret);\n-\n-\t/* configure RSS for IPv6 with input set IPv6 src/dst */\n-\tret = ice_add_rss_cfg(hw, vsi->idx, ICE_FLOW_HASH_IPV6,\n-\t\t\t ICE_FLOW_SEG_HDR_IPV6, 0);\n-\tif (ret)\n-\t\tPMD_DRV_LOG(ERR, \"%s IPV6 rss flow fail %d\", __func__, ret);\n-\n-\t/* configure RSS for tcp6 with input set IPv6 src/dst, TCP src/dst */\n-\tret = ice_add_rss_cfg(hw, vsi->idx, ICE_HASH_TCP_IPV6,\n-\t\t\t ICE_FLOW_SEG_HDR_TCP | ICE_FLOW_SEG_HDR_IPV6, 0);\n-\tif (ret)\n-\t\tPMD_DRV_LOG(ERR, \"%s TCP_IPV6 rss flow fail %d\", __func__, ret);\n-\n-\t/* configure RSS for udp6 with input set IPv6 src/dst, UDP src/dst */\n-\tret = ice_add_rss_cfg(hw, vsi->idx, ICE_HASH_UDP_IPV6,\n-\t\t\t ICE_FLOW_SEG_HDR_UDP | ICE_FLOW_SEG_HDR_IPV6, 0);\n-\tif (ret)\n-\t\tPMD_DRV_LOG(ERR, \"%s UDP_IPV6 rss flow fail %d\", __func__, ret);\n-\n-\t/* configure RSS for sctp6 with input set IPv6 src/dst */\n-\tret = ice_add_rss_cfg(hw, vsi->idx, ICE_FLOW_HASH_IPV6,\n-\t\t\t ICE_FLOW_SEG_HDR_SCTP | ICE_FLOW_SEG_HDR_IPV6, 0);\n-\tif (ret)\n-\t\tPMD_DRV_LOG(ERR, \"%s SCTP_IPV6 rss flow fail %d\",\n-\t\t\t\t__func__, ret);\n-\n-\t/* configure RSS for tcp4 with input set IP src/dst, TCP src/dst */\n-\tret = ice_add_rss_cfg(hw, vsi->idx, ICE_HASH_TCP_IPV4,\n-\t\t\t ICE_FLOW_SEG_HDR_TCP | ICE_FLOW_SEG_HDR_IPV4, 0);\n-\tif (ret)\n-\t\tPMD_DRV_LOG(ERR, \"%s TCP_IPV4 rss flow fail %d\", __func__, ret);\n-\n-\t/* configure RSS for udp4 with input set IP src/dst, UDP src/dst */\n-\tret = ice_add_rss_cfg(hw, vsi->idx, ICE_HASH_UDP_IPV4,\n-\t\t\t ICE_FLOW_SEG_HDR_UDP | ICE_FLOW_SEG_HDR_IPV4, 0);\n-\tif (ret)\n-\t\tPMD_DRV_LOG(ERR, \"%s UDP_IPV4 rss flow fail %d\", __func__, ret);\n-\n-\t/* configure RSS for sctp4 with input set IP src/dst */\n-\tret = ice_add_rss_cfg(hw, vsi->idx, ICE_FLOW_HASH_IPV4,\n-\t\t\t ICE_FLOW_SEG_HDR_SCTP | ICE_FLOW_SEG_HDR_IPV4, 0);\n-\tif (ret)\n-\t\tPMD_DRV_LOG(ERR, \"%s SCTP_IPV4 rss flow fail %d\",\n-\t\t\t\t__func__, ret);\n-\n-\t/* configure RSS for gtpu with input set TEID */\n-\tret = ice_add_rss_cfg(hw, vsi->idx, ICE_FLOW_HASH_GTP_U_IPV4_TEID,\n-\t\t\t\tICE_FLOW_SEG_HDR_GTPU_IP, 0);\n-\tif (ret)\n-\t\tPMD_DRV_LOG(ERR, \"%s GTPU_TEID rss flow fail %d\",\n-\t\t\t\t__func__, ret);\n-\n-\t/**\n-\t * configure RSS for pppoe/pppod with input set\n-\t * Source MAC and Session ID\n-\t */\n-\tret = ice_add_rss_cfg(hw, vsi->idx, ICE_FLOW_HASH_PPPOE_SESS_ID_ETH,\n-\t\t\t\tICE_FLOW_SEG_HDR_PPPOE, 0);\n-\tif (ret)\n-\t\tPMD_DRV_LOG(ERR, \"%s PPPoE/PPPoD_SessionID rss flow fail %d\",\n-\t\t\t\t__func__, ret);\n+\t/* RSS hash configuration */\n+\tice_rss_hash_set(pf, rss_conf->rss_hf);\n \n \treturn 0;\n }\n@@ -3687,7 +3717,12 @@ ice_rss_hash_update(struct rte_eth_dev *dev,\n \tif (status)\n \t\treturn status;\n \n-\t/* TODO: hash enable config, ice_add_rss_cfg */\n+\tif (rss_conf->rss_hf == 0)\n+\t\treturn 0;\n+\n+\t/* RSS hash configuration */\n+\tice_rss_hash_set(pf, rss_conf->rss_hf);\n+\n \treturn 0;\n }\n \ndiff --git a/drivers/net/ice/ice_ethdev.h b/drivers/net/ice/ice_ethdev.h\nindex f88f9dd9f..2bff735ca 100644\n--- a/drivers/net/ice/ice_ethdev.h\n+++ b/drivers/net/ice/ice_ethdev.h\n@@ -112,11 +112,13 @@\n \t\t ICE_FLAG_VF_MAC_BY_PF)\n \n #define ICE_RSS_OFFLOAD_ALL ( \\\n+\tETH_RSS_IPV4 | \\\n \tETH_RSS_FRAG_IPV4 | \\\n \tETH_RSS_NONFRAG_IPV4_TCP | \\\n \tETH_RSS_NONFRAG_IPV4_UDP | \\\n \tETH_RSS_NONFRAG_IPV4_SCTP | \\\n \tETH_RSS_NONFRAG_IPV4_OTHER | \\\n+\tETH_RSS_IPV6 | \\\n \tETH_RSS_FRAG_IPV6 | \\\n \tETH_RSS_NONFRAG_IPV6_TCP | \\\n \tETH_RSS_NONFRAG_IPV6_UDP | \\\n", "prefixes": [ "v4" ] }{ "id": 72048, "url": "