Show a cover letter.

GET /api/covers/2211258/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2211258,
    "url": "http://patchwork.ozlabs.org/api/covers/2211258/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/cover/20260316104209.1285962-1-poros@redhat.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": "<20260316104209.1285962-1-poros@redhat.com>",
    "list_archive_url": null,
    "date": "2026-03-16T10:42:05",
    "name": "[iwl-next,0/4] iavf: fix VLAN filter state machine races",
    "submitter": {
        "id": 74657,
        "url": "http://patchwork.ozlabs.org/api/people/74657/?format=api",
        "name": "Petr Oros",
        "email": "poros@redhat.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/intel-wired-lan/cover/20260316104209.1285962-1-poros@redhat.com/mbox/",
    "series": [
        {
            "id": 496040,
            "url": "http://patchwork.ozlabs.org/api/series/496040/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=496040",
            "date": "2026-03-16T10:42:06",
            "name": "iavf: fix VLAN filter state machine races",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/496040/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/covers/2211258/comments/",
    "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=1BpOo8mA;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=osuosl.org\n (client-ip=2605:bc80:3010::138; helo=smtp1.osuosl.org;\n envelope-from=intel-wired-lan-bounces@osuosl.org;\n receiver=patchwork.ozlabs.org)"
        ],
        "Received": [
            "from smtp1.osuosl.org (smtp1.osuosl.org [IPv6:2605:bc80:3010::138])\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 4fZBVy29l0z1xwC\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 16 Mar 2026 21:42:34 +1100 (AEDT)",
            "from localhost (localhost [127.0.0.1])\n\tby smtp1.osuosl.org (Postfix) with ESMTP id C1A0682173;\n\tMon, 16 Mar 2026 10:42:27 +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 sp08Lynk7PFq; Mon, 16 Mar 2026 10:42:27 +0000 (UTC)",
            "from lists1.osuosl.org (lists1.osuosl.org [140.211.166.142])\n\tby smtp1.osuosl.org (Postfix) with ESMTP id 24F5682003;\n\tMon, 16 Mar 2026 10:42:27 +0000 (UTC)",
            "from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136])\n by lists1.osuosl.org (Postfix) with ESMTP id 39309D3\n for <intel-wired-lan@lists.osuosl.org>; Mon, 16 Mar 2026 10:42:26 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n by smtp3.osuosl.org (Postfix) with ESMTP id 2ABBB60DEA\n for <intel-wired-lan@lists.osuosl.org>; Mon, 16 Mar 2026 10:42:26 +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 CRYFjmaCxSEl for <intel-wired-lan@lists.osuosl.org>;\n Mon, 16 Mar 2026 10:42:25 +0000 (UTC)",
            "from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [170.10.133.124])\n by smtp3.osuosl.org (Postfix) with ESMTPS id C34AB60E3E\n for <intel-wired-lan@lists.osuosl.org>; Mon, 16 Mar 2026 10:42:23 +0000 (UTC)",
            "from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com\n (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by\n relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,\n cipher=TLS_AES_256_GCM_SHA384) id us-mta-438-bDlMZFYfOuW7prj0v2ZDtg-1; Mon,\n 16 Mar 2026 06:42:17 -0400",
            "from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com\n (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n (No client certificate requested)\n by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS\n id 0A148195609D; Mon, 16 Mar 2026 10:42:16 +0000 (UTC)",
            "from ShadowPeak.redhat.com (unknown [10.45.224.235])\n by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP\n id E6E57180035F; Mon, 16 Mar 2026 10:42:11 +0000 (UTC)"
        ],
        "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 smtp1.osuosl.org 24F5682003",
            "OpenDKIM Filter v2.11.0 smtp3.osuosl.org C34AB60E3E"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org;\n\ts=default; t=1773657747;\n\tbh=iwCjK/8BbuVWkdj/Kq+vjZgwo9eNY1olqWaI6BrfiNo=;\n\th=From:To:Date:Subject:List-Id:List-Unsubscribe:List-Archive:\n\t List-Post:List-Help:List-Subscribe:Cc:From;\n\tb=1BpOo8mAmk0u4BA142qCvVfUCFO6wqT19q85AZ5lGmXmYU9sEGNgxwAXGnO6Jwnan\n\t 2DkqF5Nv2I3IlD0Rj/EprJ3Tw6JTzb1TPFLm6Ih1GDCQQId8HGSUHLM/HV5k5umqkY\n\t DoNxauoqPqmryzfrH8WoLlgqDhMqL+TjtjstPo+WEvSFSFbyqnat0lh5o0t9lezXxt\n\t chk06U7iQJx6Uxv6oS9vTkOZmHtRatH5M5u2eiZvpmU6QYDyVFqczuPGDk0IkXzInY\n\t EeCgVCVfA1PWPfNLD+eOFmyf8oCuUbx4DoOUY3JKb7IDVATTgSCSjSMVixWauHccN1\n\t 1cEoZkAWWs9lQ==",
        "Received-SPF": "Pass (mailfrom) identity=mailfrom; client-ip=170.10.133.124;\n helo=us-smtp-delivery-124.mimecast.com; envelope-from=poros@redhat.com;\n receiver=<UNKNOWN>",
        "DMARC-Filter": "OpenDMARC Filter v1.4.2 smtp3.osuosl.org C34AB60E3E",
        "X-MC-Unique": "bDlMZFYfOuW7prj0v2ZDtg-1",
        "X-Mimecast-MFC-AGG-ID": "bDlMZFYfOuW7prj0v2ZDtg_1773657736",
        "From": "Petr Oros <poros@redhat.com>",
        "To": "netdev@vger.kernel.org",
        "Date": "Mon, 16 Mar 2026 11:42:05 +0100",
        "Message-ID": "<20260316104209.1285962-1-poros@redhat.com>",
        "MIME-Version": "1.0",
        "X-Scanned-By": "MIMEDefang 3.4.1 on 10.30.177.111",
        "X-Mimecast-MFC-PROC-ID": "oyBIhUHUVLORk1XeX9BQr2KQs7umv1e4vBsLty5s598_1773657736",
        "X-Mimecast-Originator": "redhat.com",
        "Content-Transfer-Encoding": "8bit",
        "content-type": "text/plain; charset=\"US-ASCII\"; x-default=true",
        "X-Mailman-Original-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=redhat.com;\n s=mimecast20190719; t=1773657742;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding;\n bh=iwCjK/8BbuVWkdj/Kq+vjZgwo9eNY1olqWaI6BrfiNo=;\n b=LEB2qqXgxV3bfHVmd4hzzasFV4urt14oOsC3L8GSBNPg2BhNmfVpg6ZKRQtaI+ud5rqOah\n kE+/M97wwFJ14xVfPzH5LUoKdUrLMVB11a/sCJj8VVfPifdqzbUINNUDp3I7M2bdZYglIC\n oWoMsq57IIZFZFM+cCnirSXNO8Mi2GM=",
        "X-Mailman-Original-Authentication-Results": [
            "smtp3.osuosl.org;\n dmarc=pass (p=quarantine dis=none)\n header.from=redhat.com",
            "smtp3.osuosl.org;\n dkim=pass (1024-bit key,\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=LEB2qqXg"
        ],
        "Subject": "[Intel-wired-lan] [PATCH iwl-next 0/4] iavf: fix VLAN filter state\n machine races",
        "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>",
        "Cc": "Przemek Kitszel <przemyslaw.kitszel@intel.com>,\n Eric Dumazet <edumazet@google.com>, linux-kernel@vger.kernel.org,\n Andrew Lunn <andrew+netdev@lunn.ch>,\n Tony Nguyen <anthony.l.nguyen@intel.com>,\n intel-wired-lan@lists.osuosl.org, jacob.e.keller@intel.com,\n Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,\n \"David S. Miller\" <davem@davemloft.net>",
        "Errors-To": "intel-wired-lan-bounces@osuosl.org",
        "Sender": "\"Intel-wired-lan\" <intel-wired-lan-bounces@osuosl.org>"
    },
    "content": "The iavf VLAN filter state machine has several design issues that lead\nto race conditions between userspace add/del calls and the watchdog\ntask's virtchnl processing.  Filters can get lost or leak HW resources,\nespecially during interface down/up cycles and namespace moves.\n\nThe root problems:\n\n1) On interface down, all VLAN filters are sent as DEL to PF and\n   re-added on interface up.  This is unnecessary and creates multiple\n   race windows (details below).\n\n2) The DELETE path immediately frees the filter struct after sending\n   the DEL message, without waiting for PF confirmation.  If the PF\n   rejects the DEL, the filter remains in HW but the driver lost its\n   tracking structure.  Race conditions between a pending DEL and\n   add/reset operations cannot be resolved because the struct is gone.\n\n3) VIRTCHNL_OP_ADD_VLAN (V1) had no success completion handler, so\n   filters stayed in IS_NEW state permanently.\n\n\nWhy removing VLAN filters on down/up is unnecessary:\n\nUnlike MAC filters, which need to be re-evaluated on up because the\nPF can administratively change the MAC address during down, VLAN\nfilters are purely user-controlled.  The PF cannot change them while\nthe VF is down.  When the VF goes down, VIRTCHNL_OP_DISABLE_QUEUES\nstops all traffic -- VLAN filters sitting in PF HW are harmless\nbecause no packets flow through the disabled queues.\n\nCompare with other filter types in iavf_down():\n- MAC filters: only the current MAC is removed (it gets re-read from\n  PF on up in case it was administratively changed)\n- Cloud filters: left as-is across down/up\n- FDIR filters: left as-is across down/up\n\nVLAN filters were the only type going through a full DEL+ADD cycle,\nand this caused real problems:\n\n- With spoofcheck enabled, the PF activates TX VLAN anti-spoof on\n  the first non-zero VLAN ADD.  During the re-add phase after up,\n  the filter list is transiently incomplete -- traffic for VLANs not\n  yet re-added gets dropped by anti-spoof.\n\n- Rapid down/up can overlap with pending DEL messages.  The old code\n  used DISABLE/INACTIVE states to track this, but the DISABLE state\n  could overwrite a concurrent REMOVE from userspace, causing the\n  filter to be restored instead of deleted.\n\n- Namespace moves trigger implicit ndo_vlan_rx_kill_vid() calls\n  concurrent with the down/up sequence.  The DEL from the namespace\n  teardown races with the DISABLE from iavf_down(), and the filter\n  can end up leaked in num_vlan_filters with no associated netdev.\n\nAfter reset, VF-configured VLAN filters are properly re-added via\nthe VIRTCHNL_OP_GET_VF_RESOURCES / GET_OFFLOAD_VLAN_V2_CAPS response\nhandlers, which unconditionally set all filters to ADD state.  This\npath is unaffected by these changes.\n\n\nThis series addresses all three issues:\n\nPatch 1 renames IS_NEW to ADDING for clarity.\n\nPatch 2 removes the DISABLE/INACTIVE state machinery so VLAN filters\nstay ACTIVE across down/up cycles.  This is the core behavioral\nchange -- VLAN filters are no longer sent as DEL to PF on interface\ndown, and iavf_restore_filters() is removed since there is nothing\nto restore.\n\nPatch 3 adds a REMOVING state to make the DELETE path symmetric with\nADD -- filters are only freed after PF confirms the deletion.  If the\nPF rejects the DEL, the filter reverts to ACTIVE instead of being\nlost.\n\nPatch 4 hardens the remaining race windows: adds V1 ADD success\nhandler and prevents redundant DEL on filters already in REMOVING\nstate.\n\nPetr Oros (4):\n  iavf: rename IAVF_VLAN_IS_NEW to IAVF_VLAN_ADDING\n  iavf: stop removing VLAN filters from PF on interface down\n  iavf: wait for PF confirmation before removing VLAN filters\n  iavf: harden VLAN filter state machine race handling\n\n drivers/net/ethernet/intel/iavf/iavf.h        |  9 +--\n drivers/net/ethernet/intel/iavf/iavf_main.c   | 53 ++++---------\n .../net/ethernet/intel/iavf/iavf_virtchnl.c   | 76 +++++++++----------\n 3 files changed, 54 insertions(+), 84 deletions(-)"
}