get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/2193057/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2193057,
    "url": "http://patchwork.ozlabs.org/api/patches/2193057/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20260204154418.1285309-8-jakub.slepecki@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": "<20260204154418.1285309-8-jakub.slepecki@intel.com>",
    "list_archive_url": null,
    "date": "2026-02-04T15:44:18",
    "name": "[iwl-next,v4,7/7] ice: in VEB, prevent \"cross-vlan\" traffic from hitting loopback",
    "commit_ref": null,
    "pull_url": null,
    "state": "under-review",
    "archived": false,
    "hash": "95f72f03c5ac3de9b00398daf77e9e5c2725a36f",
    "submitter": {
        "id": 92132,
        "url": "http://patchwork.ozlabs.org/api/people/92132/?format=api",
        "name": "Jakub Slepecki",
        "email": "jakub.slepecki@intel.com"
    },
    "delegate": {
        "id": 109701,
        "url": "http://patchwork.ozlabs.org/api/users/109701/?format=api",
        "username": "anguy11",
        "first_name": "Anthony",
        "last_name": "Nguyen",
        "email": "anthony.l.nguyen@intel.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20260204154418.1285309-8-jakub.slepecki@intel.com/mbox/",
    "series": [
        {
            "id": 490998,
            "url": "http://patchwork.ozlabs.org/api/series/490998/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=490998",
            "date": "2026-02-04T15:44:12",
            "name": "ice: in VEB, prevent \"cross-vlan\" traffic",
            "version": 4,
            "mbox": "http://patchwork.ozlabs.org/series/490998/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2193057/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2193057/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<intel-wired-lan-bounces@osuosl.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "intel-wired-lan@lists.osuosl.org"
        ],
        "Delivered-To": [
            "patchwork-incoming@legolas.ozlabs.org",
            "intel-wired-lan@lists.osuosl.org"
        ],
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=osuosl.org header.i=@osuosl.org header.a=rsa-sha256\n header.s=default header.b=xjT0uY8m;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=osuosl.org\n (client-ip=2605:bc80:3010::136; helo=smtp3.osuosl.org;\n envelope-from=intel-wired-lan-bounces@osuosl.org;\n receiver=patchwork.ozlabs.org)"
        ],
        "Received": [
            "from smtp3.osuosl.org (smtp3.osuosl.org [IPv6:2605:bc80:3010::136])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4f5l6H2Nw5z1xpg\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 05 Feb 2026 02:44:55 +1100 (AEDT)",
            "from localhost (localhost [127.0.0.1])\n\tby smtp3.osuosl.org (Postfix) with ESMTP id E399361054;\n\tWed,  4 Feb 2026 15:44:41 +0000 (UTC)",
            "from smtp3.osuosl.org ([127.0.0.1])\n by localhost (smtp3.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id HczJggumIhc1; Wed,  4 Feb 2026 15:44:41 +0000 (UTC)",
            "from lists1.osuosl.org (lists1.osuosl.org [140.211.166.142])\n\tby smtp3.osuosl.org (Postfix) with ESMTP id DD12D610B7;\n\tWed,  4 Feb 2026 15:44:40 +0000 (UTC)",
            "from smtp1.osuosl.org (smtp1.osuosl.org [IPv6:2605:bc80:3010::138])\n by lists1.osuosl.org (Postfix) with ESMTP id E68EDF4\n for <intel-wired-lan@lists.osuosl.org>; Wed,  4 Feb 2026 15:44:38 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n by smtp1.osuosl.org (Postfix) with ESMTP id C808D80F9E\n for <intel-wired-lan@lists.osuosl.org>; Wed,  4 Feb 2026 15:44:38 +0000 (UTC)",
            "from smtp1.osuosl.org ([127.0.0.1])\n by localhost (smtp1.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id gV1ugm-XlnOW for <intel-wired-lan@lists.osuosl.org>;\n Wed,  4 Feb 2026 15:44:37 +0000 (UTC)",
            "from mgamail.intel.com (mgamail.intel.com [192.198.163.8])\n by smtp1.osuosl.org (Postfix) with ESMTPS id 6B74D80EAB\n for <intel-wired-lan@lists.osuosl.org>; Wed,  4 Feb 2026 15:44:37 +0000 (UTC)",
            "from orviesa010.jf.intel.com ([10.64.159.150])\n by fmvoesa102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 04 Feb 2026 07:44:37 -0800",
            "from hpe-dl385gen10.igk.intel.com ([10.91.240.117])\n by orviesa010.jf.intel.com with ESMTP; 04 Feb 2026 07:44:35 -0800"
        ],
        "X-Virus-Scanned": [
            "amavis at osuosl.org",
            "amavis at osuosl.org"
        ],
        "X-Comment": "SPF check N/A for local connections - client-ip=140.211.166.142;\n helo=lists1.osuosl.org; envelope-from=intel-wired-lan-bounces@osuosl.org;\n receiver=<UNKNOWN> ",
        "DKIM-Filter": [
            "OpenDKIM Filter v2.11.0 smtp3.osuosl.org DD12D610B7",
            "OpenDKIM Filter v2.11.0 smtp1.osuosl.org 6B74D80EAB"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org;\n\ts=default; t=1770219880;\n\tbh=+91DrlpujevDnrl1CdRDW34p13is/6pm1oMCd0UEwoo=;\n\th=From:To:Cc:Date:In-Reply-To:References:Subject:List-Id:\n\t List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe:\n\t From;\n\tb=xjT0uY8mGULOVK9LCCc8IiH6pZdbOcw7D8L/6L7kyhUAV2BTtOhqqYKiQG/WuAEsk\n\t 6hKpaSCkn3E1Vn1A1jJVmq6cWedIixndpo7T/fqP0o6DTCPDUl3OHX/jrw6zFmBUzq\n\t ooFJHUpn5mQHMmkToTOquE7Jcco34CAI0OJA6b3f02Me6V9Le0EA7ejBCuGrTxuC5p\n\t idEOZH2jg634jbUmlv+foUNWtcJGC+sgbHeJr3sUTW9ZoVdYPg9znkmeT9NpKXsk5C\n\t rBWZcyea2DP5BasiuZRvmjBXn/F0ClaekKfntTWqooDnVM2aontSFaUGrfewYvCmZI\n\t 5ZraMh1KJuuWQ==",
        "Received-SPF": "Pass (mailfrom) identity=mailfrom; client-ip=192.198.163.8;\n helo=mgamail.intel.com; envelope-from=jakub.slepecki@intel.com;\n receiver=<UNKNOWN>",
        "DMARC-Filter": "OpenDMARC Filter v1.4.2 smtp1.osuosl.org 6B74D80EAB",
        "X-CSE-ConnectionGUID": [
            "oSnQUOitTF6fNwuc0tBF9A==",
            "qCR+cfYxTIezkzzbHzI5gw=="
        ],
        "X-CSE-MsgGUID": [
            "4A94CRy2Rkm+YKZzc/JJzA==",
            "DE2VbgKGToqCRUb1ZvS2vQ=="
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6800,10657,11691\"; a=\"88987119\"",
            "E=Sophos;i=\"6.21,272,1763452800\"; d=\"scan'208\";a=\"88987119\"",
            "E=Sophos;i=\"6.21,272,1763452800\"; d=\"scan'208\";a=\"209494139\""
        ],
        "X-ExtLoop1": "1",
        "From": "Jakub Slepecki <jakub.slepecki@intel.com>",
        "To": "intel-wired-lan@lists.osuosl.org",
        "Cc": "linux-kernel@vger.kernel.org, netdev@vger.kernel.org,\n przemyslaw.kitszel@intel.com, anthony.l.nguyen@intel.com,\n michal.swiatkowski@linux.intel.com, jakub.slepecki@intel.com,\n aleksandr.loktionov@intel.com",
        "Date": "Wed,  4 Feb 2026 16:44:18 +0100",
        "Message-ID": "<20260204154418.1285309-8-jakub.slepecki@intel.com>",
        "X-Mailer": "git-send-email 2.43.0",
        "In-Reply-To": "<20260204154418.1285309-1-jakub.slepecki@intel.com>",
        "References": "<20260204154418.1285309-1-jakub.slepecki@intel.com>",
        "MIME-Version": "1.0",
        "Organization": "Intel Technology Poland sp. z o.o. - ul. Slowackiego 173,\n 80-298 Gdansk - KRS 101882 - NIP 957-07-52-316",
        "Content-Transfer-Encoding": "8bit",
        "X-Mailman-Original-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1770219877; x=1801755877;\n h=from:to:cc:subject:date:message-id:in-reply-to:\n references:mime-version:content-transfer-encoding;\n bh=OA7YBST+ChqQeXkJf5U12UWy57MshL8mMIrA8YW0jwA=;\n b=UqT3ljVQ0lArQddvcXNBNhtdhB3G3Vb7PLjik/WI0Ic8lvQUmJXDhWr3\n GGB5x7EU4GdhzErbg7PqxWafzOrpTyYuxx7Rcfc+8CsdN6ZSyeZsoLFsh\n X/8phonWXyb6csnJlfcZHCucK9iRiegaAyPSlYGEtFk0anD8d8oiKRrx9\n Z9JWMzmP3AHo3F9PHKFGvBE6uaq4Q0NwMscdYw+TOWNUBR3GMD7TMX9sZ\n kkn7VzaAUn99BaYNS4bFnMqCyFkHHEGzDJkJv051ihOqKnrlDvgq5LdiM\n y4iknEgZ5wtYlyVkS2Av0iufsNPhoR5ZGoUJiH2U1hd/uS1iU6P3bfY81\n Q==;",
        "X-Mailman-Original-Authentication-Results": [
            "smtp1.osuosl.org;\n dmarc=pass (p=none dis=none)\n header.from=intel.com",
            "smtp1.osuosl.org;\n dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com\n header.a=rsa-sha256 header.s=Intel header.b=UqT3ljVQ"
        ],
        "Subject": "[Intel-wired-lan] [PATCH iwl-next v4 7/7] ice: in VEB,\n prevent \"cross-vlan\" traffic from hitting loopback",
        "X-BeenThere": "intel-wired-lan@osuosl.org",
        "X-Mailman-Version": "2.1.30",
        "Precedence": "list",
        "List-Id": "Intel Wired Ethernet Linux Kernel Driver Development\n <intel-wired-lan.osuosl.org>",
        "List-Unsubscribe": "<https://lists.osuosl.org/mailman/options/intel-wired-lan>,\n <mailto:intel-wired-lan-request@osuosl.org?subject=unsubscribe>",
        "List-Archive": "<http://lists.osuosl.org/pipermail/intel-wired-lan/>",
        "List-Post": "<mailto:intel-wired-lan@osuosl.org>",
        "List-Help": "<mailto:intel-wired-lan-request@osuosl.org?subject=help>",
        "List-Subscribe": "<https://lists.osuosl.org/mailman/listinfo/intel-wired-lan>,\n <mailto:intel-wired-lan-request@osuosl.org?subject=subscribe>",
        "Errors-To": "intel-wired-lan-bounces@osuosl.org",
        "Sender": "\"Intel-wired-lan\" <intel-wired-lan-bounces@osuosl.org>"
    },
    "content": "In Virtual Ethernet Bridge (VEB) mode, we use MAC filters to forward\ntraffic between two VFs.  We also use VLAN filters to prune potential\ndestinations, so that they don't cross VLANs.  In case a VF in VLAN X\nsends a packet to a MAC address matching another VF but in VLAN Y, both\nthese filters will be hit.  Packet will be sent to loopback-only to VF\nin VLAN Y, but VLAN filter will prune its VSI from the destination list\nleaving the packet stranded in the internal switch and thus dropped.\n\nSince there is no destination for the packet in the VLAN X, it should\ninstead be sent to the wire.\n\nTo fix this, we introduce MAC,VLAN filters in place of MAC-only filters\nif VSI is part of any VLAN.  We consider VSI part of a VLAN if it has a\nPVID set, or if it has a specific VLAN filter and does not have a VLAN\n0 filter.\n\nThis approach does not attempt to fix interactions with upper devices.\nIf an upper vlan device requests a separate MAC address filter resulting\nin a call to __dev_uc_sync, the VSI will start receiving all packets\ndestined for this MAC and not just within the VLAN.  I don't see a\nstraight-forward way to resolve this: information about MAC and VLAN\nfilters coming from kernel to driver is disconnected from one another\nand from the device that requests it.  It could be worked around by,\nfor example, tracking all upper devices with netdev notifications and\nadjusting the filters there.  Hence, the scope is limited to VF traffic.\n\nFollowing situations were considered for VLAN filters additions, removal,\nor changes:\n\n1. ice changes VF's vlan\n2. VF is reset and rebuilt\n3. vlan device attaches above a PF or a VF\n\nAnd same for MAC filters:\n\n4. PF's MAC is changed\n5. PF changes MAC of a VF\n6. VF's MAC is changed\n7. ndo_set_rx_mode et al\n\nWhen VLAN is assigned to a VF in (1), the affected VF is reset and\nrebuild.  This makes (1) the same as (2).  We end up with two cases\nwhere VLAN filters are added: (2) and (3).\n\nTo correctly handle (1-2), we move the VLAN filters initialization\nbefore the MAC filters initialization, since MAC filters now depend\non VLAN filters presence.  These two handle PVID (or lack of thereof)\nand because they are always associated with a reset, we don't need to\nconsider updating MAC and MAC,VLAN filters afterwards.\n\nIn (3), we will always have a lower device that is expected to receive\nall packets for its MAC regardless of VLAN tag.  Because of the caveat\ndescribed above, we will do the same for each MAC address associated with\nthe interface regardless of VLANs.  The result is we only have MAC-only\nfilters in this case.\n\nWhen we create MAC filters in (4-7) we now check for existing VLAN\nfilters and depending on PVID and VLAN 0 presence we decide to create,\nrespectively, a MAC and MAC,VLAN filter pair, or a MAC filter.  This is\ndone implicitly when requesting to remove old MAC and add new MAC,\nso no change is required to this flow.\n\nReviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>\nReviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>\nSigned-off-by: Jakub Slepecki <jakub.slepecki@intel.com>\n\n---\nNote the /a.s. dead/ branch in ice_fltr.c.  I decided to make it explicit,\nbut it can be merged into VLAN 0 branch as well (with or without a\ncomment), because their final effect is exactly the same.\n\nNo changes in v4.\nNo changes in v3.\nNo changes in v2.\n---\n drivers/net/ethernet/intel/ice/ice_fltr.c   | 71 +++++++++++++++++++--\n drivers/net/ethernet/intel/ice/ice_fltr.h   |  6 +-\n drivers/net/ethernet/intel/ice/ice_main.c   |  8 +--\n drivers/net/ethernet/intel/ice/ice_switch.c |  2 +-\n drivers/net/ethernet/intel/ice/ice_switch.h |  2 +\n drivers/net/ethernet/intel/ice/ice_vf_lib.c |  8 +--\n 6 files changed, 83 insertions(+), 14 deletions(-)",
    "diff": "diff --git a/drivers/net/ethernet/intel/ice/ice_fltr.c b/drivers/net/ethernet/intel/ice/ice_fltr.c\nindex 96a4e4b1b3fc..c0fc1bced167 100644\n--- a/drivers/net/ethernet/intel/ice/ice_fltr.c\n+++ b/drivers/net/ethernet/intel/ice/ice_fltr.c\n@@ -3,6 +3,7 @@\n \n #include \"ice.h\"\n #include \"ice_fltr.h\"\n+#include \"ice_lib.h\"\n \n /**\n  * ice_fltr_free_list - free filter lists helper\n@@ -221,10 +222,12 @@ void ice_fltr_remove_all(struct ice_vsi *vsi)\n  * @list: list to add filter info to\n  * @mac: MAC address to add\n  * @action: filter action\n+ * @external: force the filter to enable lan destination\n  */\n int\n ice_fltr_add_mac_to_list(struct ice_vsi *vsi, struct list_head *list,\n-\t\t\t const u8 *mac, enum ice_sw_fwd_act_type action)\n+\t\t\t const u8 *mac, enum ice_sw_fwd_act_type action,\n+\t\t\t bool external)\n {\n \tstruct ice_fltr_info info = { 0 };\n \n@@ -233,6 +236,10 @@ ice_fltr_add_mac_to_list(struct ice_vsi *vsi, struct list_head *list,\n \tinfo.lkup_type = ICE_SW_LKUP_MAC;\n \tinfo.fltr_act = action;\n \tinfo.vsi_handle = vsi->idx;\n+\tif (external) {\n+\t\tinfo.lb_en = ICE_FLTR_INFO_LB_LAN_FORCE_ENABLED;\n+\t\tinfo.lan_en = ICE_FLTR_INFO_LB_LAN_FORCE_ENABLED;\n+\t}\n \n \tether_addr_copy(info.l_data.mac.mac_addr, mac);\n \n@@ -273,6 +280,62 @@ ice_fltr_add_mac_vlan_to_list(struct ice_vsi *vsi, struct list_head *list,\n \t\t\t\t\t  list);\n }\n \n+/**\n+ * ice_fltr_add_macs_to_list - add MAC and MAC,VLAN filters info to an existing\n+ * list\n+ * @vsi: pointer to VSI struct\n+ * @list: list to add filter info to\n+ * @mac: MAC address to add\n+ * @action: filter action\n+ *\n+ * Return:\n+ * * 0 on success, or\n+ * * %-ENOMEM if entry for filter could not be allocated.\n+ */\n+int\n+ice_fltr_add_macs_to_list(struct ice_vsi *vsi, struct list_head *list,\n+\t\t\t  const u8 *mac, enum ice_sw_fwd_act_type action)\n+{\n+\tif (is_multicast_ether_addr(mac)) {\n+\t\t/* There is no point in doing the same gymnastics as below\n+\t\t * because multicast addresses are sent to both lan and lb then\n+\t\t * pruned as necessary.\n+\t\t */\n+\t\treturn ice_fltr_add_mac_to_list(vsi, list, mac, action, false);\n+\t} else if (ice_vsi_has_pvid(vsi)) {\n+\t\tu16 pvid = ice_vsi_pvid(vsi);\n+\t\tint ret;\n+\n+\t\tret = ice_fltr_add_mac_to_list(vsi, list, mac, action, true);\n+\t\tif (ret)\n+\t\t\treturn ret;\n+\n+\t\treturn ice_fltr_add_mac_vlan_to_list(vsi, list, mac, pvid,\n+\t\t\t\t\t\t     action);\n+\t} else if (vsi->num_vlan != ice_vsi_num_non_zero_vlans(vsi)) {\n+\t\t/* If VSI has VLAN 0 filters, then the interface is prepared to\n+\t\t * receive untagged packets. As of now, we simply don't have\n+\t\t * heuristics to decide which MAC is and is not part of which\n+\t\t * VLAN so we put them all in the same bucket.\n+\t\t */\n+\t\treturn ice_fltr_add_mac_to_list(vsi, list, mac, action, false);\n+\t}\n+\n+\t/* This branch is a.s. dead. There are three cases that may happen:\n+\t *\n+\t * - no vlans in sight; this is the VLAN 0 branch,\n+\t * - VF is assigned PVID; this is ice_vsi_has_pvid branch,\n+\t * - PF or VF is under vlan device; this is the VLAN 0 branch.\n+\t *\n+\t * This is where you would implement support for multiple VLANs but\n+\t * without the VLAN 0. This could happen if vlan upper device is\n+\t * assigned a MAC that is unique compared to lower ice device that is\n+\t * forced to accept any VLAN. This would imply MAC-only filter for one\n+\t * MAC address (PF) and MAC,VLAN+MAC filters for another (vlan).\n+\t */\n+\treturn ice_fltr_add_mac_to_list(vsi, list, mac, action, false);\n+}\n+\n /**\n  * ice_fltr_add_vlan_to_list - add VLAN filter info to exsisting list\n  * @vsi: pointer to VSI struct\n@@ -343,7 +406,7 @@ ice_fltr_prepare_mac(struct ice_vsi *vsi, const u8 *mac,\n \tLIST_HEAD(tmp_list);\n \tint result;\n \n-\tif (ice_fltr_add_mac_to_list(vsi, &tmp_list, mac, action)) {\n+\tif (ice_fltr_add_macs_to_list(vsi, &tmp_list, mac, action)) {\n \t\tice_fltr_free_list(ice_pf_to_dev(vsi->back), &tmp_list);\n \t\treturn -ENOMEM;\n \t}\n@@ -371,8 +434,8 @@ ice_fltr_prepare_mac_and_broadcast(struct ice_vsi *vsi, const u8 *mac,\n \tint result;\n \n \teth_broadcast_addr(broadcast);\n-\tif (ice_fltr_add_mac_to_list(vsi, &tmp_list, mac, action) ||\n-\t    ice_fltr_add_mac_to_list(vsi, &tmp_list, broadcast, action)) {\n+\tif (ice_fltr_add_macs_to_list(vsi, &tmp_list, mac, action) ||\n+\t    ice_fltr_add_macs_to_list(vsi, &tmp_list, broadcast, action)) {\n \t\tice_fltr_free_list(ice_pf_to_dev(vsi->back), &tmp_list);\n \t\treturn -ENOMEM;\n \t}\ndiff --git a/drivers/net/ethernet/intel/ice/ice_fltr.h b/drivers/net/ethernet/intel/ice/ice_fltr.h\nindex fb9ffb39be50..ed3371b0a71f 100644\n--- a/drivers/net/ethernet/intel/ice/ice_fltr.h\n+++ b/drivers/net/ethernet/intel/ice/ice_fltr.h\n@@ -21,12 +21,16 @@ ice_fltr_set_vsi_promisc(struct ice_hw *hw, u16 vsi_handle, u8 promisc_mask,\n \t\t\t u16 vid);\n int\n ice_fltr_add_mac_to_list(struct ice_vsi *vsi, struct list_head *list,\n-\t\t\t const u8 *mac, enum ice_sw_fwd_act_type action);\n+\t\t\t const u8 *mac, enum ice_sw_fwd_act_type action,\n+\t\t\t bool external);\n int\n ice_fltr_add_mac_vlan_to_list(struct ice_vsi *vsi, struct list_head *list,\n \t\t\t      const u8 *mac, u16 vlan_id,\n \t\t\t      enum ice_sw_fwd_act_type action);\n int\n+ice_fltr_add_macs_to_list(struct ice_vsi *vsi, struct list_head *list,\n+\t\t\t  const u8 *mac, enum ice_sw_fwd_act_type action);\n+int\n ice_fltr_add_mac(struct ice_vsi *vsi, const u8 *mac,\n \t\t enum ice_sw_fwd_act_type action);\n int\ndiff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c\nindex 7b3ab69b8300..b712e0c29fc2 100644\n--- a/drivers/net/ethernet/intel/ice/ice_main.c\n+++ b/drivers/net/ethernet/intel/ice/ice_main.c\n@@ -212,8 +212,8 @@ static int ice_add_mac_to_sync_list(struct net_device *netdev, const u8 *addr)\n \tstruct ice_netdev_priv *np = netdev_priv(netdev);\n \tstruct ice_vsi *vsi = np->vsi;\n \n-\tif (ice_fltr_add_mac_to_list(vsi, &vsi->tmp_sync_list, addr,\n-\t\t\t\t     ICE_FWD_TO_VSI))\n+\tif (ice_fltr_add_macs_to_list(vsi, &vsi->tmp_sync_list, addr,\n+\t\t\t\t      ICE_FWD_TO_VSI))\n \t\treturn -EINVAL;\n \n \treturn 0;\n@@ -242,8 +242,8 @@ static int ice_add_mac_to_unsync_list(struct net_device *netdev, const u8 *addr)\n \tif (ether_addr_equal(addr, netdev->dev_addr))\n \t\treturn 0;\n \n-\tif (ice_fltr_add_mac_to_list(vsi, &vsi->tmp_unsync_list, addr,\n-\t\t\t\t     ICE_FWD_TO_VSI))\n+\tif (ice_fltr_add_macs_to_list(vsi, &vsi->tmp_unsync_list, addr,\n+\t\t\t\t      ICE_FWD_TO_VSI))\n \t\treturn -EINVAL;\n \n \treturn 0;\ndiff --git a/drivers/net/ethernet/intel/ice/ice_switch.c b/drivers/net/ethernet/intel/ice/ice_switch.c\nindex 3b526383b8ed..13dd3448aec6 100644\n--- a/drivers/net/ethernet/intel/ice/ice_switch.c\n+++ b/drivers/net/ethernet/intel/ice/ice_switch.c\n@@ -4018,7 +4018,7 @@ ice_cfg_dflt_vsi(struct ice_port_info *pi, u16 vsi_handle, bool set,\n  * @fm_entry: filter entry to inspect\n  * @vsi_handle: VSI handle to compare with filter info\n  */\n-static bool\n+bool\n ice_vsi_uses_fltr(struct ice_fltr_mgmt_list_entry *fm_entry, u16 vsi_handle)\n {\n \treturn ((fm_entry->fltr_info.fltr_act == ICE_FWD_TO_VSI &&\ndiff --git a/drivers/net/ethernet/intel/ice/ice_switch.h b/drivers/net/ethernet/intel/ice/ice_switch.h\nindex b442db4a2ce5..a295130e96f3 100644\n--- a/drivers/net/ethernet/intel/ice/ice_switch.h\n+++ b/drivers/net/ethernet/intel/ice/ice_switch.h\n@@ -346,6 +346,8 @@ ice_update_vsi(struct ice_hw *hw, u16 vsi_handle, struct ice_vsi_ctx *vsi_ctx,\n bool ice_is_vsi_valid(struct ice_hw *hw, u16 vsi_handle);\n struct ice_vsi_ctx *ice_get_vsi_ctx(struct ice_hw *hw, u16 vsi_handle);\n void ice_clear_all_vsi_ctx(struct ice_hw *hw);\n+bool ice_vsi_uses_fltr(struct ice_fltr_mgmt_list_entry *fm_entry,\n+\t\t       u16 vsi_handle);\n /* Switch config */\n int ice_get_initial_sw_cfg(struct ice_hw *hw);\n \ndiff --git a/drivers/net/ethernet/intel/ice/ice_vf_lib.c b/drivers/net/ethernet/intel/ice/ice_vf_lib.c\nindex de9e81ccee66..1031ce20bb60 100644\n--- a/drivers/net/ethernet/intel/ice/ice_vf_lib.c\n+++ b/drivers/net/ethernet/intel/ice/ice_vf_lib.c\n@@ -501,14 +501,14 @@ static void ice_vf_rebuild_host_cfg(struct ice_vf *vf)\n \n \tice_vf_set_host_trust_cfg(vf);\n \n-\tif (ice_vf_rebuild_host_mac_cfg(vf))\n-\t\tdev_err(dev, \"failed to rebuild default MAC configuration for VF %d\\n\",\n-\t\t\tvf->vf_id);\n-\n \tif (ice_vf_rebuild_host_vlan_cfg(vf, vsi))\n \t\tdev_err(dev, \"failed to rebuild VLAN configuration for VF %u\\n\",\n \t\t\tvf->vf_id);\n \n+\tif (ice_vf_rebuild_host_mac_cfg(vf))\n+\t\tdev_err(dev, \"failed to rebuild default MAC configuration for VF %d\\n\",\n+\t\t\tvf->vf_id);\n+\n \tif (ice_vf_rebuild_host_tx_rate_cfg(vf))\n \t\tdev_err(dev, \"failed to rebuild Tx rate limiting configuration for VF %u\\n\",\n \t\t\tvf->vf_id);\n",
    "prefixes": [
        "iwl-next",
        "v4",
        "7/7"
    ]
}