From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-BY2-obe.outbound.protection.outlook.com (mail-by2nam03on0050.outbound.protection.outlook.com [104.47.42.50]) by dpdk.org (Postfix) with ESMTP id ED6A71E34 for ; Mon, 8 May 2017 00:53:28 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=gk30LOhIcdPEfUVZHLRlnIwwu57+GQDIAB/XieMmMmQ=; b=YiNWdbY8vAmQizk0I9n0YE4I7Tb9I4Ndgj2fXcDeQGAb4NCkclHmt2YNpNgDI4rHDv12tZ9/vN7EJ98HuKcVSp/obwM1zdCG9HOQdwAv9SwKwXGUFt4G1e85OUNV/kp5vjL1qF526ocV5sPrOsaJOStyEWYeXbsvKcMwIpEinIA= Received: from DM2PR07CA0026.namprd07.prod.outlook.com (10.141.52.154) by CY1PR0701MB1419.namprd07.prod.outlook.com (10.160.150.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1075.11; Sun, 7 May 2017 22:53:26 +0000 Received: from BY2FFO11OLC016.protection.gbl (2a01:111:f400:7c0c::125) by DM2PR07CA0026.outlook.office365.com (2a01:111:e400:2414::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1075.11 via Frontend Transport; Sun, 7 May 2017 22:53:26 +0000 Authentication-Results: spf=none (sender IP is 50.232.66.26) smtp.mailfrom=cavium.com; dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=cavium.com; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) Received: from CAEXCH02.caveonetworks.com (50.232.66.26) by BY2FFO11OLC016.mail.protection.outlook.com (10.1.15.61) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.1047.9 via Frontend Transport; Sun, 7 May 2017 22:53:25 +0000 Received: from avsmtprelay01.qlc.com (10.1.112.194) by CAEXCH02.caveonetworks.com (10.17.4.29) with Microsoft SMTP Server id 14.2.347.0; Sun, 7 May 2017 15:53:19 -0700 Received: from avluser05.qlc.com (avluser05.qlc.com [10.1.113.115]) by avsmtprelay01.qlc.com (Postfix) with ESMTP id 4D5708BF70984; Sun, 7 May 2017 15:53:19 -0700 (PDT) Received: (from rmody@localhost) by avluser05.qlc.com (8.14.4/8.14.4/Submit) id v47MrJH0012316; Sun, 7 May 2017 15:53:19 -0700 X-Authentication-Warning: avluser05.qlc.com: rmody set sender to rasesh.mody@cavium.com using -f From: Rasesh Mody To: CC: Rasesh Mody , Date: Sun, 7 May 2017 15:53:12 -0700 Message-ID: <1494197592-12266-1-git-send-email-rasesh.mody@cavium.com> X-Mailer: git-send-email 1.7.10.3 MIME-Version: 1.0 Content-Type: text/plain X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:50.232.66.26; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(39400400002)(39450400003)(39850400002)(39410400002)(2980300002)(428002)(189002)(199003)(9170700003)(478600001)(50986999)(5003940100001)(81166006)(6916009)(8676002)(87636003)(8936002)(5660300001)(101416001)(47776003)(50226002)(4326008)(356003)(6666003)(305945005)(107886003)(38730400002)(110136004)(42186005)(54906002)(36756003)(2906002)(33646002)(189998001)(50466002)(48376002)(2351001)(86362001)(575784001)(105586002)(106466001); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0701MB1419; H:CAEXCH02.caveonetworks.com; FPR:; SPF:None; MLV:sfv; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11OLC016; 1:db1DE4N+86I/sRi1MmzB8QVcrtj7XYmRhCCdREkDBoNN+6xWhPpz+8033nkOw38BPu1xjpkP0d2IYPrQD7PsBZ/HdSrSZKLVfaFMQuZVrtI1E0Pq7PIciPOxnlInXcOZFYc8GGH1/YEUdHQmpg0TOk+NjNtvtVDkIpe97K4k5MPAbFWX8nGvR+cvl+uCDWNT2FbjOD1x+vCfhlxA5eJA1+MBeA/EvydrUKdN/LxBTbobcXcAv08OGSLAAPS8An8oC9FkeMqKv4y6FLVqVJicTHzno5uP9KTnPCjsSgI1DZR7SwqYi7oXMCgad/kTnLQQRpynwkJ5KXaeJ2dIr9tZBqSZHQrp/gTL8Z8EOIRfbcZ8gEp4p4kbPh4kN7Z9IBBhkJejdd3CQ1rjToTYYn8h/f/IQEkwv+XXG1hv0EgDcojFmr2q42Q5u2eG9iZJHW7P7uKTAUndIOOdREM0tVbly0y0xOvQRkr2Ye7TlFnDpAzwKvDs7JPs2OvCvcEqom9swH+Og0OuUYn2TdP45drAiA== X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b51c92c7-92b6-444b-357d-08d4959bdf19 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254075)(201703131423075)(201703031133081)(201702281549075); SRVR:CY1PR0701MB1419; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1419; 3:aqhNm82EiHQf6AlV8Hz8Voom21vwk+T6GTpBU4ZSJmnG6u5Pm/xZlFJgVrxakkdZDkFuw/wfr1TTqg4pkM2vVVcNsXSr/1uNjid88owYw4QU/qQnBKD3yKfe9OIejhTd/mLuJsKFtkUzuLv6Ulnbtp6Qr0FquA30aVaVN8+E4FAbtNH1XkWenVWw7FxKvLvdHu572fVF92lVc88Bf6OS6gGJxK5idgcBo6hrGJEo5ex5xk19573E6lDK2FijtnSkNXsPoy7kDSIJEwKjF4ocO03hfKiQkb+7da+aWgF0CXv7zuor8Roj6h7ypAvMce/W0Te368/6zBRMvwXhSsUG28K6SmOGzEQX6LHxHjyOspSKD6R12VfqfxW4q3EGNB/HIoxJaS26opqw6GEWaQ+Oge7kWQFHYkzfw7JKxDcooT0u8lLCLZrru7mhAFgdRTI4sef6CYEc0tMpmyIawbtZZD0tOdR/Z51PdYruGOfovcMFjnFGMz1f9sg0tmlZFXHo X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1419; 25:pZWPgk8tBfK0mlvJKGliT2fkOJNqpyzETT5mxl5/LvLZiXhhdGYrtb70ivwfPpMOT6LDD08HkpDWCFsh2Xoj6DsQDF7TrQNCgt4WltylLJfycgEkekMo+0wl1w1tFJSOMsmaJGKrZy3PQmifcccl0P95p2phX6hmS2wFi2XLnGTSbHuxsbpDigUSbeB6yEijEI308PQtiYDpalfMO6THP5Aji124YFXWJvAXwcXKVr2MYEEGYUyeWgBLDqiFHDV/T5C9Z5HbTLfxC8MmHUrOOgLkTwh/mTVlgR0x5vOgdkbIEWmaV1GYvobb1QSGauO8MAZ2d6cTFgVVAPZW/y3eMicyK0HZczuwrUR/0Mpn1sC40E3wHEltFhxNl2Z/4VFeWuuSXw4FnA6Y5Aa4J2Srww0m5qtlXWI5J6DHJpE/sr2PBsokGB3pyZ1KatkMvImJntnPAmX5P3+PZtXnSTc8ihXg+tQeQHQGg+n170kLuDM=; 31:wQANAPDnXlUFLwcpqTPNdCZEq/fCT1bBDzhgxz+pMt3Noda3JOsL//WI0wFkq7gG0Thpeamg/hJ3tGR35g51syAwj+ogkHFkPQQoiSKm8/rxCSh7Gq0meDMaZOyXFmspl0UUkVfB3JwbqJq7/AywGBjkvtY9SBhXVCzFBsgUTUdZZGq8hrK4JF5FPXddhUeGzPV58iWo8MR/z+kf8buzOVuuC+BmI5+fsTAhmppEjVXDz9+uMfQC9M3JSSCu3W0cB7nbnEOxJAbCZ9hrlVcF4tc2JrzFm1tTQGF8t0fZbvQ= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1419; 20:GHVqlgJmbgwDMbGTdju9zpi6V78nmDQM66fP9NOBXHlHDHfc+P413w0R55znS50+mhY1ywKzbgZciOGrnEeTXJmelrpmlYGqE1sh1TF05nDjFL9jUzua6vEpa+A0scqNCT1k3T2y07J4fRxWpRGFbBWan/GR37F1sJzrTJCvP17No/i7DkYstlAoloJaGKXMXc52W2eGowdAgUTCdrwxfnNPRKm5tswCLDu42fqLxYoVWgcqzBg5ek8KV1aSnHIvhCeelwls3UIMXoTs3Q/YH/0toKmebz+t2wOFCYOT7P277bCFGrzkQ+xUgehugAZfn4ahlgewaQjuT+7oTJ/CHIlwczTGE6kDudJSoTQ9lLJIWDK1UrvUHVIHnwRS7Ynsjgd0tzEd3fqJ+66+DHcL6E0PLmKTFpNrJW+CXOeiefH8OWlIfsL+FBDr5A8tBka5t0K5KCwT+U9GS88n1TqmVdiXFiydsX7LvFp3TeKT0Ee/Nvn19zS61DJ+P8sGomBt X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040450)(601004)(2401047)(13015025)(8121501046)(13017025)(5005006)(13018025)(13024025)(13023025)(3002001)(10201501046)(93006095)(93001095)(6041248)(20161123555025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123560025)(20161123558100)(6072148); SRVR:CY1PR0701MB1419; BCL:0; PCL:0; RULEID:; SRVR:CY1PR0701MB1419; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1419; 4:U/Qhp4JpzoNqHiwc2gcTDVV8K0S2umPjQ/GcobsznHSW9v8A/e81r2gs8Oh/GMmlJYioQ1hQzRntV6lDNi59wb6mx+GJWwHGEbF8NsD0kGysSeMNnLdCE61Jz5VFrhtiLrdNYfnJkHDVbLTkGqjTuPPru429yoKHurjdnrmObMz6f3N4ri0Jod6+ba5MFbqiQo5+C6VxEvO4r95Hk/WIfWuwrwYspyrmhTRYoc6HS+zFWtb4Rp6Rgt5mZwoN/pTeSUGYzzwkc1bIQWAuBASmjCEQpTeoxIgCVWTglzqhH2rJTpc24JUyo/WYSxsSkvZuVBQAZoOfl4GW9nSO7LEzp1/EJTCmKoDZH+Alanitb+9PiM5MI+RPRphJcBWmB18Bm1wxR4ekb+c8kLWJHw7rdPpj4wVwYxIO09gjHYCxgb4u+3KUO1dmOcoHD1PwyPOpIGThz3xb8NGR/nURcY7/MMSR04U8xGFK5s8yi+6ZT2IQq8SmwyaVX45nG+aX7ZbiqQ4RcDdMm57UPptFffWM5pOIThwCzc7zkWw7PN70FYwhTA80Q86Golxya+AYCDLgfyRb0SWm55kbctBcAu28AtpgcEyX7VW8yBY0aUyrdsnJVPAMV/JQsFR3wvVMoz3Ae+isQi5kh77GOFthRsAo6qemaOoZq3H3peMhk8ze8knjweEca6FBiJ05Lkb6abvQbBmXSCZVCVw9hn119VVkDWqmn2FdyYpMi1LJ05K4Muohzu7k0zijs97K/YAc1hUSzi+E7jB9xPLLv8Xbbcm+6LzrkGXgpXbegMSDHG3x7KbHOEQ8D3lttwCR5l3RNBhVbmWHQvNYc4J6DGZxLFwZXXFECOIQXMeup4OGgMeLUSme3Fig1aOHECB9jRPLsmwd X-Forefront-PRVS: 03008837BD X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0701MB1419; 23:U7W8/geQYirZ8B9Wp3dN+AntKMaH9z/gz+qqwUu?= =?us-ascii?Q?kggGbDl4HxYVFVCcrKzyrrYYjmWgt4yBD1VC3n/T6RYGhVu4EuoBTNmYr5Xw?= =?us-ascii?Q?MDxUswqy29/DNuohpjn9Ux877SrbK6f2BoBe6dmPJZ3j5LpUDRmQ4MKbdaCA?= =?us-ascii?Q?rkz8B/tsRwuecmz5kVAIyqZHUgGVd09klLLp4w/Xj7rTZX9uupy9n5kFgfAP?= =?us-ascii?Q?f8F+qjde1fwaA0ObSmaEhcW3OUqU+MG/8vM1uRrmLW8w57kuirllVE5vOseq?= =?us-ascii?Q?Z0JpMY9OIyu6oFKAUIbwh0kBR99NLiOexXOef6BWj4iwk2tmLKYNFnyn4MS/?= =?us-ascii?Q?VGDOrqvnjEVZcXbupo7BF+IKIHOuQjlOVdU8VAWQDHH9T7Fzql0wREErkHT3?= =?us-ascii?Q?wGzb9NNLvq5wb+y7ezjy7lJm8yqKfeBApHjZxUWsN+89n3jSjv0HKViL3cHd?= =?us-ascii?Q?4fofX+n+ChOomEz8yWrccx53bj1dNPjjylwv4fu1UBA/3W5w3Ga96L+JJ62k?= =?us-ascii?Q?PKUyt+5hAE+HbXGnOMH8Of/U2i9QEW5/NAAQ1kjYvhuKD1fRNufJ//67OwqY?= =?us-ascii?Q?UW6wX0QiQhuT4JZWA+GyEQZitFZKo4GwaGcjyQnaIa3Lb4AVaecHPmaG8vLv?= =?us-ascii?Q?phn97/Qofqljf7yKX4eKTq16C0xWv3glWOQle00wzH62I5OE4M5AoRO1kX1u?= =?us-ascii?Q?02TyHdJST3/o+5EG5QlaY4VcH0YIUQ3OpmbJrydjhYO3cWLynOGnzNjIfsqT?= =?us-ascii?Q?aoVG1titnH4aXogzkgA7VsGsyWPpUB4PXWZpXx2+wUvkPQI7ex3JcHMqHgCv?= =?us-ascii?Q?9s/kEepSCQAxHND9ptRVCAu+1YH8RgQ36xQOuXAsOkSe0UMnt9VY9RR1D2AA?= =?us-ascii?Q?fGhH6K6yV5WZt90wVrKYzjebzCxl9ebMJfSJ2Fqbydq3zTVv9icLTIRpYGS4?= =?us-ascii?Q?MF0ro+JUhNSG5BUsScrqf8skcBGOhDe/R1uFtSJ67Opz/y1xHWgVSL9alf3H?= =?us-ascii?Q?sxNc8uhFAmMGRffMpImhK77s6i5YsREf6I9GKejMGK6qK/y0p3xcpg6tz+JJ?= =?us-ascii?Q?Z3cKXQ+4=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1419; 6:g6YpeL/4lultvVG99TcF4+KT9Gh8ya+k1zSbMxKt7BdhQf7KJHHzKDXQf2yUZrpF2OlujhliOyIQpxSI4NPvvQR2v72BGEeovP2fNK8gCF6zK/wZwlNJdB+IscNqLAJvAbp275AK8wSjGdq/S0Aup9VktR2dw8ebz8B8wIbvwUAgU6OvB2RiK6lZfVjh23e3nyUA0AWrTkvBWfijFfy9e+kiWBEjCTxhvf5tzEEWHmtG6Z3gkibeHkVgmZLFZ+uR4J9Fxjg0dxpAMMNBcfuP8u4OmPednwlsNwW7uUbMHU5Hp6OMujQZ2f/JBWXn6/Rqqfu9CYmwD5Tw3JslgcfkZyzSRxr6HXI0erLgPPjYf5Yb+tNpDbnXHkkdqDcZDmjOBtZ+YpNgDCfb3oGZ+YfmOEQZbIGxsitwIsNw7ZX2uDPCDn8FZvlFG8CEhGAXvtCQao8eZhdms3pSjCMwfQAUTVo2/+Wwqbx0pUqfQkTJwYa4+EA6P7a2ilZEBkJIQgcz6Ln5NRYUwFk4w6FxWdNmjA==; 5:BH53qRoGfP5qbBOOWNb0rClnYpkz5ktO3aDa1MwVmj+64pP7dAVkpww6zfvd1uWYE7ibvjPLV+Rp2K/NXUWYyz6Woxu8rRJkadn/71p8GgSXpkx2AngM/u0WCBr4I+UeLlNASBTVCBEFFT0hoTo+rg==; 24:U8Q7eYnAQb262rJ5XAANO28qR5qneYC+KbQ8+6+d/JNJBRfU8Q7h/LEr5sNfkZUd/sbxorDIHTPYLLIi+0fTCZlZJABdTh3CIdCVIxWewpc= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1419; 7:nGcTmaALF2BP7vG9Rey3nWFtZp+OSkLjVqobUCHCtKdOi5GQCt/OSTZk4DsCW2R4U8eyEYdEuXe6Nvr3XrtPoR6uS10JIQx6lHmIyeGTlnNn38k8nWB4MvhbRVB2aG4OtEygXGJbQ6QpNy8s2clBPST1ESpwJCTvLnDQ+0Q9btrAGydGBY9/P3atsGqWTdiPN9fpk+M6jL8FshVLKMRN/yppBmBGKeDGbfN6UWfeHZhzk+a1PQGftwbv2yh4Y6fGMkmHNbgW/VgF5tbxl+ksbeoN1Eh2D+o+s/aJVAoQvrKH13aTSPMWBHHE9QCViLXADNeoa9anaG5GyBOQXw8KzA== X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 May 2017 22:53:25.9339 (UTC) X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=711e4ccf-2e9b-4bcf-a551-4094005b6194; Ip=[50.232.66.26]; Helo=[CAEXCH02.caveonetworks.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR0701MB1419 Subject: [dpdk-dev] [PATCH] net/qede: fix RSS table entries for 100G adapter X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 07 May 2017 22:53:29 -0000 With the change in base APIs the logic for 100G handling needs to be adjusted to pass cid values instead for queue ids. The current API works assuming its queue id. Fixes: 69d7ba88f1a1 ("net/qede/base: use L2-handles for RSS configuration") Signed-off-by: Rasesh Mody --- drivers/net/qede/qede_eth_if.c | 27 ------------- drivers/net/qede/qede_eth_if.h | 2 - drivers/net/qede/qede_ethdev.c | 85 ++++++++++++++++++++++++++++++++++------ drivers/net/qede/qede_ethdev.h | 1 + 4 files changed, 73 insertions(+), 42 deletions(-) diff --git a/drivers/net/qede/qede_eth_if.c b/drivers/net/qede/qede_eth_if.c index 86bb129..a3c0b13 100644 --- a/drivers/net/qede/qede_eth_if.c +++ b/drivers/net/qede/qede_eth_if.c @@ -67,33 +67,6 @@ static int qed_stop_vport(struct ecore_dev *edev, uint8_t vport_id) return 0; } -bool qed_update_rss_parm_cmt(struct ecore_dev *edev, uint16_t *p_tbl) -{ - uint16_t max = 0, k; - bool rss_mode = 0; /* disable */ - int divisor; - - /* Find largest entry, since it's possible RSS needs to - * be disabled [in case only 1 queue per-hwfn] - */ - for (k = 0; k < ECORE_RSS_IND_TABLE_SIZE; k++) - max = (max > p_tbl[k]) ? max : p_tbl[k]; - - /* Either fix RSS values or disable RSS */ - if (edev->num_hwfns < max + 1) { - divisor = (max + edev->num_hwfns - 1) / edev->num_hwfns; - DP_VERBOSE(edev, ECORE_MSG_SPQ, - "CMT - fixing RSS values (modulo %02x)\n", - divisor); - for (k = 0; k < ECORE_RSS_IND_TABLE_SIZE; k++) - p_tbl[k] = p_tbl[k] % divisor; - - rss_mode = 1; - } - - return rss_mode; -} - static int qed_update_vport(struct ecore_dev *edev, struct qed_update_vport_params *params) { diff --git a/drivers/net/qede/qede_eth_if.h b/drivers/net/qede/qede_eth_if.h index d845bac..097e025 100644 --- a/drivers/net/qede/qede_eth_if.h +++ b/drivers/net/qede/qede_eth_if.h @@ -129,6 +129,4 @@ struct qed_eth_ops { int qed_configure_filter_rx_mode(struct rte_eth_dev *eth_dev, enum qed_filter_rx_mode_type type); -bool qed_update_rss_parm_cmt(struct ecore_dev *edev, uint16_t *p_tbl); - #endif /* _QEDE_ETH_IF_H */ diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c index 4ef5765..7501eb2 100644 --- a/drivers/net/qede/qede_ethdev.c +++ b/drivers/net/qede/qede_ethdev.c @@ -1576,6 +1576,61 @@ static int qede_rss_hash_conf_get(struct rte_eth_dev *eth_dev, return 0; } +static bool qede_update_rss_parm_cmt(struct ecore_dev *edev, + struct ecore_rss_params *rss) +{ + int i, fn; + bool rss_mode = 1; /* enable */ + struct ecore_queue_cid *cid; + struct ecore_rss_params *t_rss; + + /* In regular scenario, we'd simply need to take input handlers. + * But in CMT, we'd have to split the handlers according to the + * engine they were configured on. We'd then have to understand + * whether RSS is really required, since 2-queues on CMT doesn't + * require RSS. + */ + + /* CMT should be round-robin */ + for (i = 0; i < ECORE_RSS_IND_TABLE_SIZE; i++) { + cid = rss->rss_ind_table[i]; + + if (cid->p_owner == ECORE_LEADING_HWFN(edev)) + t_rss = &rss[0]; + else + t_rss = &rss[1]; + + t_rss->rss_ind_table[i / edev->num_hwfns] = cid; + } + + t_rss = &rss[1]; + t_rss->update_rss_ind_table = 1; + t_rss->rss_table_size_log = 7; + t_rss->update_rss_config = 1; + + /* Make sure RSS is actually required */ + for_each_hwfn(edev, fn) { + for (i = 1; i < ECORE_RSS_IND_TABLE_SIZE / edev->num_hwfns; + i++) { + if (rss[fn].rss_ind_table[i] != + rss[fn].rss_ind_table[0]) + break; + } + + if (i == ECORE_RSS_IND_TABLE_SIZE / edev->num_hwfns) { + DP_INFO(edev, + "CMT - 1 queue per-hwfn; Disabling RSS\n"); + rss_mode = 0; + goto out; + } + } + +out: + t_rss->rss_enable = rss_mode; + + return rss_mode; +} + int qede_rss_reta_update(struct rte_eth_dev *eth_dev, struct rte_eth_rss_reta_entry64 *reta_conf, uint16_t reta_size) @@ -1583,11 +1638,11 @@ int qede_rss_reta_update(struct rte_eth_dev *eth_dev, struct qede_dev *qdev = QEDE_INIT_QDEV(eth_dev); struct ecore_dev *edev = QEDE_INIT_EDEV(qdev); struct ecore_sp_vport_update_params vport_update_params; - struct ecore_rss_params params; + struct ecore_rss_params *params; struct ecore_hwfn *p_hwfn; uint16_t i, idx, shift; uint8_t entry; - int rc; + int rc = 0; if (reta_size > ETH_RSS_RETA_SIZE_128) { DP_ERR(edev, "reta_size %d is not supported by hardware\n", @@ -1596,7 +1651,8 @@ int qede_rss_reta_update(struct rte_eth_dev *eth_dev, } memset(&vport_update_params, 0, sizeof(vport_update_params)); - memset(¶ms, 0, sizeof(params)); + params = rte_zmalloc("qede_rss", sizeof(*params) * edev->num_hwfns, + RTE_CACHE_LINE_SIZE); for (i = 0; i < reta_size; i++) { idx = i / RTE_RETA_GROUP_SIZE; @@ -1604,24 +1660,25 @@ int qede_rss_reta_update(struct rte_eth_dev *eth_dev, if (reta_conf[idx].mask & (1ULL << shift)) { entry = reta_conf[idx].reta[shift]; /* Pass rxq handles to ecore */ - params.rss_ind_table[i] = + params->rss_ind_table[i] = qdev->fp_array[entry].rxq->handle; /* Update the local copy for RETA query command */ qdev->rss_ind_table[i] = entry; } } + params->update_rss_ind_table = 1; + params->rss_table_size_log = 7; + params->update_rss_config = 1; + /* Fix up RETA for CMT mode device */ if (edev->num_hwfns > 1) - qdev->rss_enable = qed_update_rss_parm_cmt(edev, - params.rss_ind_table[0]); - params.update_rss_ind_table = 1; - params.rss_table_size_log = 7; - params.update_rss_config = 1; + qdev->rss_enable = qede_update_rss_parm_cmt(edev, + params); vport_update_params.vport_id = 0; /* Use the current value of rss_enable */ - params.rss_enable = qdev->rss_enable; - vport_update_params.rss_params = ¶ms; + params->rss_enable = qdev->rss_enable; + vport_update_params.rss_params = params; for_each_hwfn(edev, i) { p_hwfn = &edev->hwfns[i]; @@ -1630,11 +1687,13 @@ int qede_rss_reta_update(struct rte_eth_dev *eth_dev, ECORE_SPQ_MODE_EBLOCK, NULL); if (rc) { DP_ERR(edev, "vport-update for RSS failed\n"); - return rc; + goto out; } } - return 0; +out: + rte_free(params); + return rc; } static int qede_rss_reta_query(struct rte_eth_dev *eth_dev, diff --git a/drivers/net/qede/qede_ethdev.h b/drivers/net/qede/qede_ethdev.h index 26b6332..e4323a0 100644 --- a/drivers/net/qede/qede_ethdev.h +++ b/drivers/net/qede/qede_ethdev.h @@ -37,6 +37,7 @@ #include "base/ecore_sp_commands.h" #include "base/ecore_l2.h" #include "base/ecore_dev_api.h" +#include "base/ecore_l2.h" #include "qede_logs.h" #include "qede_if.h" -- 1.7.10.3