Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/658722/?format=api
{ "id": 658722, "url": "http://patchwork.ozlabs.org/api/patches/658722/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/1471020992-22402-1-git-send-email-david.m.ertman@intel.com/", "project": { "id": 46, "url": "http://patchwork.ozlabs.org/api/projects/46/?format=api", "name": "Intel Wired Ethernet development", "link_name": "intel-wired-lan", "list_id": "intel-wired-lan.osuosl.org", "list_email": "intel-wired-lan@osuosl.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<1471020992-22402-1-git-send-email-david.m.ertman@intel.com>", "list_archive_url": null, "date": "2016-08-12T16:56:32", "name": "i40e: check for and deal with non-contiguous TCs", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "68ddb844244d739b57304d99f7f50a0b3f986fd1", "submitter": { "id": 64529, "url": "http://patchwork.ozlabs.org/api/people/64529/?format=api", "name": "Dave Ertman", "email": "david.m.ertman@intel.com" }, "delegate": { "id": 68, "url": "http://patchwork.ozlabs.org/api/users/68/?format=api", "username": "jtkirshe", "first_name": "Jeff", "last_name": "Kirsher", "email": "jeffrey.t.kirsher@intel.com" }, "mbox": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/1471020992-22402-1-git-send-email-david.m.ertman@intel.com/mbox/", "series": [], "comments": "http://patchwork.ozlabs.org/api/patches/658722/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/658722/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<intel-wired-lan-bounces@lists.osuosl.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "intel-wired-lan@lists.osuosl.org" ], "Delivered-To": [ "patchwork-incoming@bilbo.ozlabs.org", "intel-wired-lan@lists.osuosl.org" ], "Received": [ "from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3s9rfX5sl1z9t0J\n\tfor <incoming@patchwork.ozlabs.org>;\n\tSat, 13 Aug 2016 02:57:40 +1000 (AEST)", "from localhost (localhost [127.0.0.1])\n\tby silver.osuosl.org (Postfix) with ESMTP id 260AB31654;\n\tFri, 12 Aug 2016 16:57:39 +0000 (UTC)", "from silver.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id ILX44LsluMiY; Fri, 12 Aug 2016 16:57:37 +0000 (UTC)", "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby silver.osuosl.org (Postfix) with ESMTP id 9FF7E31648;\n\tFri, 12 Aug 2016 16:57:37 +0000 (UTC)", "from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136])\n\tby ash.osuosl.org (Postfix) with ESMTP id 715B71C1E74\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tFri, 12 Aug 2016 16:57:36 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n\tby silver.osuosl.org (Postfix) with ESMTP id 6959B25F50\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tFri, 12 Aug 2016 16:57:36 +0000 (UTC)", "from silver.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id krdStpbjrcIA for <intel-wired-lan@lists.osuosl.org>;\n\tFri, 12 Aug 2016 16:57:35 +0000 (UTC)", "from mga01.intel.com (mga01.intel.com [192.55.52.88])\n\tby silver.osuosl.org (Postfix) with ESMTP id 9981F25F3F\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tFri, 12 Aug 2016 16:57:35 +0000 (UTC)", "from orsmga003.jf.intel.com ([10.7.209.27])\n\tby fmsmga101.fm.intel.com with ESMTP; 12 Aug 2016 09:57:35 -0700", "from dmertma-desk2.jf.intel.com (HELO dmertam-desk2.jf.intel.com)\n\t([10.166.36.155])\n\tby orsmga003.jf.intel.com with ESMTP; 12 Aug 2016 09:57:35 -0700" ], "X-Virus-Scanned": [ "amavisd-new at osuosl.org", "amavisd-new at osuosl.org" ], "X-Greylist": "domain auto-whitelisted by SQLgrey-1.7.6", "X-ExtLoop1": "1", "X-IronPort-AV": "E=Sophos;i=\"5.28,511,1464678000\"; d=\"scan'208\";a=\"864441889\"", "From": "Dave Ertman <david.m.ertman@intel.com>", "To": "intel-wired-lan@lists.osuosl.org", "Date": "Fri, 12 Aug 2016 09:56:32 -0700", "Message-Id": "<1471020992-22402-1-git-send-email-david.m.ertman@intel.com>", "X-Mailer": "git-send-email 2.7.4", "Subject": "[Intel-wired-lan] [PATCH] i40e: check for and deal with\n\tnon-contiguous TCs", "X-BeenThere": "intel-wired-lan@lists.osuosl.org", "X-Mailman-Version": "2.1.18-1", "Precedence": "list", "List-Id": "Intel Wired Ethernet Linux Kernel Driver Development\n\t<intel-wired-lan.lists.osuosl.org>", "List-Unsubscribe": "<http://lists.osuosl.org/mailman/options/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@lists.osuosl.org?subject=unsubscribe>", "List-Archive": "<http://lists.osuosl.org/pipermail/intel-wired-lan/>", "List-Post": "<mailto:intel-wired-lan@lists.osuosl.org>", "List-Help": "<mailto:intel-wired-lan-request@lists.osuosl.org?subject=help>", "List-Subscribe": "<http://lists.osuosl.org/mailman/listinfo/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@lists.osuosl.org?subject=subscribe>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=\"us-ascii\"", "Content-Transfer-Encoding": "7bit", "Errors-To": "intel-wired-lan-bounces@lists.osuosl.org", "Sender": "\"Intel-wired-lan\" <intel-wired-lan-bounces@lists.osuosl.org>" }, "content": "The i40e driver was causing a kernel panic when\nnon-contiguous Traffic Classes, or Traffic Classes not\nstarting with TC0, were configured on a link partner switch.\ni40e does not support non-contiguous TCs.\n\nTo fix this, the patch changes the logic when determining\nthe total number of TCs enabled. Before, this would use the\nhighest TC number enabled and assume that all TCs below it were\nalso enabled. Now, we create a bitmask of enabled TCs and scan\nit to determine not only the number of TCs, but also if the set\nof enabled TCs starts at zero and is contiguous. If not, then\nDCB is disabled by only returning one TC.\n\nSigned-off-by: Dave Ertman <david.m.ertman@intel.com>\n---\n drivers/net/ethernet/intel/i40e/i40e_main.c | 35 ++++++++++++++++++++---------\n 1 file changed, 25 insertions(+), 10 deletions(-)", "diff": "diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c\nindex 81c99e1..c6ac7a6 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_main.c\n+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c\n@@ -4554,23 +4554,38 @@ static u8 i40e_get_iscsi_tc_map(struct i40e_pf *pf)\n **/\n static u8 i40e_dcb_get_num_tc(struct i40e_dcbx_config *dcbcfg)\n {\n+\tint i, tc_unused = 0;\n \tu8 num_tc = 0;\n-\tint i;\n+\tu8 ret = 0;\n \n \t/* Scan the ETS Config Priority Table to find\n \t * traffic class enabled for a given priority\n-\t * and use the traffic class index to get the\n-\t * number of traffic classes enabled\n+\t * and create a bitmask of enabled TCs\n \t */\n-\tfor (i = 0; i < I40E_MAX_USER_PRIORITY; i++) {\n-\t\tif (dcbcfg->etscfg.prioritytable[i] > num_tc)\n-\t\t\tnum_tc = dcbcfg->etscfg.prioritytable[i];\n-\t}\n+\tfor (i = 0; i < I40E_MAX_USER_PRIORITY; i++)\n+\t\tnum_tc |= BIT(dcbcfg->etscfg.prioritytable[i]);\n \n-\t/* Traffic class index starts from zero so\n-\t * increment to return the actual count\n+\t/* Now scan the bitmask to check for\n+\t * contiguous TCs starting with TC0\n \t */\n-\treturn num_tc + 1;\n+\tfor (i = 0; i < I40E_MAX_TRAFFIC_CLASS; i++) {\n+\t\tif (num_tc & BIT(i)) {\n+\t\t\tif (!tc_unused) {\n+\t\t\t\tret++;\n+\t\t\t} else {\n+\t\t\t\tpr_err(\"Non-contiguous TC - Disabling DCB\\n\");\n+\t\t\t\treturn 1;\n+\t\t\t}\n+\t\t} else {\n+\t\t\ttc_unused = 1;\n+\t\t}\n+\t}\n+\n+\t/* There is always at least TC0 */\n+\tif (!ret)\n+\t\tret = 1;\n+\n+\treturn ret;\n }\n \n /**\n", "prefixes": [] }