Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/678513/?format=api
{ "id": 678513, "url": "http://patchwork.ozlabs.org/api/patches/678513/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/1475685046-16900-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": "<1475685046-16900-6-git-send-email-bimmy.pujari@intel.com>", "list_archive_url": null, "date": "2016-10-05T16:30:35", "name": "[next,S49-V2,05/15] i40e: When searching all MAC/VLAN filters, ignore removed filters", "commit_ref": null, "pull_url": null, "state": "accepted", "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/1475685046-16900-6-git-send-email-bimmy.pujari@intel.com/mbox/", "series": [], "comments": "http://patchwork.ozlabs.org/api/patches/678513/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/678513/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 fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137])\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 3sq1XJ3R3cz9sD5\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu, 6 Oct 2016 03:32:15 +1100 (AEDT)", "from localhost (localhost [127.0.0.1])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id 6F3E4C237C;\n\tWed, 5 Oct 2016 16:32:14 +0000 (UTC)", "from fraxinus.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id 2y3YfEbKOrlJ; Wed, 5 Oct 2016 16:32:13 +0000 (UTC)", "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id 72976C234E;\n\tWed, 5 Oct 2016 16:32:12 +0000 (UTC)", "from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133])\n\tby ash.osuosl.org (Postfix) with ESMTP id 00B3D1CE508\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tWed, 5 Oct 2016 16:32:11 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id F101A917F6\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tWed, 5 Oct 2016 16:32:10 +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 IPhB+WL-d2Q2 for <intel-wired-lan@lists.osuosl.org>;\n\tWed, 5 Oct 2016 16:32:10 +0000 (UTC)", "from mga05.intel.com (mga05.intel.com [192.55.52.43])\n\tby hemlock.osuosl.org (Postfix) with ESMTPS id 54F738AE52\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tWed, 5 Oct 2016 16:32:10 +0000 (UTC)", "from fmsmga005.fm.intel.com ([10.253.24.32])\n\tby fmsmga105.fm.intel.com with ESMTP; 05 Oct 2016 09:32:09 -0700", "from bimmy.jf.intel.com (HELO bimmy.linux1.jf.intel.com)\n\t([134.134.2.167])\n\tby fmsmga005.fm.intel.com with ESMTP; 05 Oct 2016 09:32:09 -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,449,1473145200\"; d=\"scan'208\";a=\"16526370\"", "From": "Bimmy Pujari <bimmy.pujari@intel.com>", "To": "intel-wired-lan@lists.osuosl.org", "Date": "Wed, 5 Oct 2016 09:30:35 -0700", "Message-Id": "<1475685046-16900-6-git-send-email-bimmy.pujari@intel.com>", "X-Mailer": "git-send-email 2.4.11", "In-Reply-To": "<1475685046-16900-1-git-send-email-bimmy.pujari@intel.com>", "References": "<1475685046-16900-1-git-send-email-bimmy.pujari@intel.com>", "Subject": "[Intel-wired-lan] [next PATCH S49-V2 05/15] i40e: When searching\n\tall MAC/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 9a18c67..d365652 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-V2", "05/15" ] }