Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/676704/?format=api
{ "id": 676704, "url": "http://patchwork.ozlabs.org/api/patches/676704/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/1475169095-20873-6-git-send-email-bimmy.pujari@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": "<1475169095-20873-6-git-send-email-bimmy.pujari@intel.com>", "list_archive_url": null, "date": "2016-09-29T17:11:25", "name": "[next,S49,05/15] i40e: When searching all MAC/VLAN filters, ignore removed filters", "commit_ref": null, "pull_url": null, "state": "changes-requested", "archived": false, "hash": "5699683a4210939ac5b5d69f3e5632f96f44d8ae", "submitter": { "id": 68919, "url": "http://patchwork.ozlabs.org/api/people/68919/?format=api", "name": "Pujari, Bimmy", "email": "bimmy.pujari@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/1475169095-20873-6-git-send-email-bimmy.pujari@intel.com/mbox/", "series": [], "comments": "http://patchwork.ozlabs.org/api/patches/676704/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/676704/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 3slLlS4n2Hz9sBR\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri, 30 Sep 2016 03:14:12 +1000 (AEST)", "from localhost (localhost [127.0.0.1])\n\tby silver.osuosl.org (Postfix) with ESMTP id 353D73300A;\n\tThu, 29 Sep 2016 17:14:11 +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 szNK2vgVI0j2; Thu, 29 Sep 2016 17:14:02 +0000 (UTC)", "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby silver.osuosl.org (Postfix) with ESMTP id 0DE9033043;\n\tThu, 29 Sep 2016 17:13:13 +0000 (UTC)", "from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133])\n\tby ash.osuosl.org (Postfix) with ESMTP id A2B3F1C1ECC\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu, 29 Sep 2016 17:13:05 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id 9F8F6952B9\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu, 29 Sep 2016 17:13:05 +0000 (UTC)", "from hemlock.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id zemQxrgjDFq5 for <intel-wired-lan@lists.osuosl.org>;\n\tThu, 29 Sep 2016 17:12:59 +0000 (UTC)", "from mga01.intel.com (mga01.intel.com [192.55.52.88])\n\tby hemlock.osuosl.org (Postfix) with ESMTPS id 497AB952B7\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu, 29 Sep 2016 17:12:59 +0000 (UTC)", "from fmsmga004.fm.intel.com ([10.253.24.48])\n\tby fmsmga101.fm.intel.com with ESMTP; 29 Sep 2016 10:12:57 -0700", "from bimmy.jf.intel.com (HELO bimmy.linux1.jf.intel.com)\n\t([134.134.2.167])\n\tby fmsmga004.fm.intel.com with ESMTP; 29 Sep 2016 10:12:59 -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.31,268,1473145200\"; d=\"scan'208\";a=\"174642295\"", "From": "Bimmy Pujari <bimmy.pujari@intel.com>", "To": "intel-wired-lan@lists.osuosl.org", "Date": "Thu, 29 Sep 2016 10:11:25 -0700", "Message-Id": "<1475169095-20873-6-git-send-email-bimmy.pujari@intel.com>", "X-Mailer": "git-send-email 2.4.11", "In-Reply-To": "<1475169095-20873-1-git-send-email-bimmy.pujari@intel.com>", "References": "<1475169095-20873-1-git-send-email-bimmy.pujari@intel.com>", "Subject": "[Intel-wired-lan] [next PATCH S49 05/15] i40e: When searching all\n\tMAC/VLAN filters, ignore removed filters", "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": "From: Jacob Keller <jacob.e.keller@intel.com>\n\nWhen adding new MAC address filters, the driver determines if it should\nbehave in VLAN mode (where all MAC addresses get assigned to every\nexisting VLAN) or in non-VLAN mode where MAC addresses get assigned the\nVLAN_ANY identifier. Under some circumstances it is possible that a VLAN\nhas been marked for removal (such that all filters of that VLAN are set\nto I40E_FILTER_REMOVE), and a subsequent call to i40e_put_mac_in_vlan\nmay occur prior to the driver subtask that syncs filters to the\nhardware.\n\nIn this case, we may add filters to the new removed VLAN, even though it\nshould have been removed. This is most obvious when first adding a new\nVLAN. We will delete all filters which are in I40E_VLAN_ANY (-1) and\nthen re-add them as in VLAN 0 (untagged). Then before we sync filters,\nwe will add new MAC address filter, which will be added to every VLAN\nthat exists. Unfortunately, this will include I40E_VLAN_ANY, so we will\nend up incorrectly adding filters to the -1 VLAN. This can be fixed by\nsimply skipping all filters which are marked for removal.\n\nA similar check is not necessary in i40e_del_mac_all_vlan, since we are\ndeleting, and any filter which we find already marked for removal would\nsimply be deleted again, which doesn't cause any issues.\n\nSigned-off-by: Jacob Keller <jacob.e.keller@intel.com>\nChange-Id: I7962154013ce02fe950584690aeeb3ed853d0086\n---\nTesting-hints:\n 1. Load driver and bring link up\n modprobe i40e\n ip link set enp130s0 up\n 2. Add a VLAN\n ip link add link enp130s0 enp130s0.4000 type vlan id 4000\n ip link set enp130s0.4000 up\n 3. Dump filters:\n echo \"dump filters\" > /sys/kernel/debug/i40e/0000:82:00.0/command\n dmesg | tail -n40\n\n Note that without this patch you should see some filters repeated with\n both VLAN 0 and VLAN -1, when we expect only seeing filters on VLAN 0.\n It may take multiple steps to reproduce as it might be a race\n condition, though I did not have trouble reproducing the issue.\n\n drivers/net/ethernet/intel/i40e/i40e_main.c | 6 ++++++\n 1 file changed, 6 insertions(+)", "diff": "diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c\nindex 1519b46..3d7bdf2 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_main.c\n+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c\n@@ -1328,6 +1328,8 @@ struct i40e_mac_filter *i40e_put_mac_in_vlan(struct i40e_vsi *vsi,\n \t\t\t\t le16_to_cpu(vsi->info.pvid));\n \n \tlist_for_each_entry(f, &vsi->mac_filter_list, list) {\n+\t\tif (f->state == I40E_FILTER_REMOVE)\n+\t\t\tcontinue;\n \t\tadd = i40e_add_filter(vsi, macaddr, f->vlan);\n \t\tif (!add)\n \t\t\treturn NULL;\n@@ -2264,6 +2266,8 @@ int i40e_vsi_add_vlan(struct i40e_vsi *vsi, s16 vid)\n \t}\n \n \tlist_for_each_entry_safe(f, ftmp, &vsi->mac_filter_list, list) {\n+\t\tif (f->state == I40E_FILTER_REMOVE)\n+\t\t\tcontinue;\n \t\tadd_f = i40e_add_filter(vsi, f->macaddr, vid);\n \t\tif (!add_f) {\n \t\t\tdev_info(&vsi->back->pdev->dev,\n@@ -2298,6 +2302,8 @@ int i40e_vsi_add_vlan(struct i40e_vsi *vsi, s16 vid)\n \t/* Do not assume that I40E_VLAN_ANY should be reset to VLAN 0 */\n \tif (vid > 0 && !vsi->info.pvid) {\n \t\tlist_for_each_entry_safe(f, ftmp, &vsi->mac_filter_list, list) {\n+\t\t\tif (f->state == I40E_FILTER_REMOVE)\n+\t\t\t\tcontinue;\n \t\t\tif (!i40e_find_filter(vsi, f->macaddr, I40E_VLAN_ANY))\n \t\t\t\tcontinue;\n \t\t\ti40e_del_filter(vsi, f->macaddr, I40E_VLAN_ANY);\n", "prefixes": [ "next", "S49", "05/15" ] }