get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2229257,
    "url": "http://patchwork.ozlabs.org/api/1.1/patches/2229257/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20260427224426.3933839-1-joshua.a.hay@intel.com/",
    "project": {
        "id": 46,
        "url": "http://patchwork.ozlabs.org/api/1.1/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": ""
    },
    "msgid": "<20260427224426.3933839-1-joshua.a.hay@intel.com>",
    "date": "2026-04-27T22:44:26",
    "name": "[net,v3] idpf: fix xdp crash in soft reset error path",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "ea2c2f7a86c0404a7b1422fde660ebe552ed0f84",
    "submitter": {
        "id": 19461,
        "url": "http://patchwork.ozlabs.org/api/1.1/people/19461/?format=api",
        "name": "Joshua Hay",
        "email": "joshua.a.hay@intel.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20260427224426.3933839-1-joshua.a.hay@intel.com/mbox/",
    "series": [
        {
            "id": 501738,
            "url": "http://patchwork.ozlabs.org/api/1.1/series/501738/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=501738",
            "date": "2026-04-27T22:44:26",
            "name": "[net,v3] idpf: fix xdp crash in soft reset error path",
            "version": 3,
            "mbox": "http://patchwork.ozlabs.org/series/501738/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2229257/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2229257/checks/",
    "tags": {},
    "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=XrgEy0Na;\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 4g4JJ86x0Jz1xvV\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 28 Apr 2026 08:33:44 +1000 (AEST)",
            "from localhost (localhost [127.0.0.1])\n\tby smtp3.osuosl.org (Postfix) with ESMTP id 89BD060887;\n\tMon, 27 Apr 2026 22:33:42 +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 WtK2504dsglY; Mon, 27 Apr 2026 22:33:40 +0000 (UTC)",
            "from lists1.osuosl.org (lists1.osuosl.org [140.211.166.142])\n\tby smtp3.osuosl.org (Postfix) with ESMTP id D32336087E;\n\tMon, 27 Apr 2026 22:33:40 +0000 (UTC)",
            "from smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.133])\n by lists1.osuosl.org (Postfix) with ESMTP id 644F41B8\n for <intel-wired-lan@lists.osuosl.org>; Mon, 27 Apr 2026 22:33:39 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n by smtp2.osuosl.org (Postfix) with ESMTP id 4270C4023E\n for <intel-wired-lan@lists.osuosl.org>; Mon, 27 Apr 2026 22:33:39 +0000 (UTC)",
            "from smtp2.osuosl.org ([127.0.0.1])\n by localhost (smtp2.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id s3aUnbjgaSrl for <intel-wired-lan@lists.osuosl.org>;\n Mon, 27 Apr 2026 22:33:38 +0000 (UTC)",
            "from mgamail.intel.com (mgamail.intel.com [192.198.163.8])\n by smtp2.osuosl.org (Postfix) with ESMTPS id 384FA40224\n for <intel-wired-lan@lists.osuosl.org>; Mon, 27 Apr 2026 22:33:37 +0000 (UTC)",
            "from fmviesa002.fm.intel.com ([10.60.135.142])\n by fmvoesa102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 27 Apr 2026 15:33:37 -0700",
            "from dcskidmo-m40.jf.intel.com ([10.166.241.14])\n by fmviesa002.fm.intel.com with ESMTP; 27 Apr 2026 15:33:36 -0700"
        ],
        "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 D32336087E",
            "OpenDKIM Filter v2.11.0 smtp2.osuosl.org 384FA40224"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org;\n\ts=default; t=1777329220;\n\tbh=zOMuizjCel+FNshUjyMI9iY1N7hryCEjTtm4srkgjTA=;\n\th=From:To:Cc:Date:Subject:List-Id:List-Unsubscribe:List-Archive:\n\t List-Post:List-Help:List-Subscribe:From;\n\tb=XrgEy0NaniosFJDGKsbozG3wQjS2+BqkP8jd7iIidFibvjoluW205Grg81T16WzIE\n\t f1bB3QUPD36not0MkeLnzOkY1Wf/AyqseiKEpORFkzZ1LQARkyXNL/k8BuOsF4XrBi\n\t nP1SJCeCLh9jj1XB3jihCfbdsSUc/KGRN2wuvC9LdBjL1HPv9l/wv/HSbiCzeHYnCF\n\t SASRGzz6bR1gY4HhN2Uv8Bh83be+yExfKJDt9+9hmOZj+WL1UGGeVhHu+tDtuFImr6\n\t elyKIZJJyH98IGPZwP/9XxHW3DhYuOPdZ3KnLrCXH1w5n/4azeMzsRgWneHRE72GUI\n\t MtEPVmjRhUWHA==",
        "Received-SPF": "Pass (mailfrom) identity=mailfrom; client-ip=192.198.163.8;\n helo=mgamail.intel.com; envelope-from=joshua.a.hay@intel.com;\n receiver=<UNKNOWN>",
        "DMARC-Filter": "OpenDMARC Filter v1.4.2 smtp2.osuosl.org 384FA40224",
        "X-CSE-ConnectionGUID": [
            "J0LkSv6qSR2tgcEx/dfVGw==",
            "XSmbS6lARpKP1U1bYtOGTg=="
        ],
        "X-CSE-MsgGUID": [
            "8it+gQX2QnuV4HNUKy5FlQ==",
            "uMrMv8oLQqONyKqB4fVMVw=="
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6800,10657,11769\"; a=\"95796868\"",
            "E=Sophos;i=\"6.23,202,1770624000\"; d=\"scan'208\";a=\"95796868\"",
            "E=Sophos;i=\"6.23,202,1770624000\"; d=\"scan'208\";a=\"257079940\""
        ],
        "X-ExtLoop1": "1",
        "From": "Joshua Hay <joshua.a.hay@intel.com>",
        "To": "intel-wired-lan@lists.osuosl.org",
        "Cc": "emil.s.tantilov@intel.com, willemb@google.com, decot@google.com,\n anthony.l.nguyen@intel.com, przemyslaw.kitszel@intel.com,\n aleksander.lobakin@intel.com, netdev@vger.kernel.org, kuba@kernel.org,\n stable@vger.kernel.org, Joshua Hay <joshua.a.hay@intel.com>,\n Aleksandr Loktionov <aleksandr.loktionov@intel.com>",
        "Date": "Mon, 27 Apr 2026 15:44:26 -0700",
        "Message-Id": "<20260427224426.3933839-1-joshua.a.hay@intel.com>",
        "X-Mailer": "git-send-email 2.39.2",
        "MIME-Version": "1.0",
        "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=1777329218; x=1808865218;\n h=from:to:cc:subject:date:message-id:mime-version:\n content-transfer-encoding;\n bh=uuG6m9JJzzDuJXg4Q5er1swNxzGNOCZ6GcUTfaZUSNU=;\n b=TsMb9PCmDZuwMimTL5ZHX/UqVjoco47TIsR9qTcFLfYzSQ3V34gIU/Of\n LcHhWqduU4j7JuqO0YGhC1wAEJAqk5BSuh4qbYvJLtHcSlINIRjh7bvrL\n O3YX5NQ+MN8+mBXZHsUGpZ14b2XwfVze/xvHGHPLxT0/IboxxwG1UXSL+\n TBW023CCwE5oEjwtk1x31x7gOyHFk3WOpqVtuWBIwoOcpEe7sEOHdk/W4\n pZ3DbWGbJnh8OUWBHYEN+TQxLCejnrQ61ok4bnPDl6cCmWxfpkBzs49MK\n MaYxjEsiL6oVYwl9wGClmieDDNp16c78h+ZUDZCgetSjQm7jwBOPXkEXW\n w==;",
        "X-Mailman-Original-Authentication-Results": [
            "smtp2.osuosl.org;\n dmarc=pass (p=none dis=none)\n header.from=intel.com",
            "smtp2.osuosl.org;\n dkim=pass (2048-bit key,\n unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256\n header.s=Intel header.b=TsMb9PCm"
        ],
        "Subject": "[Intel-wired-lan] [PATCH net v3] idpf: fix xdp crash in soft reset\n error path",
        "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": "From: Emil Tantilov <emil.s.tantilov@intel.com>\n\nNULL pointer dereference is reported in cases where idpf_vport_open()\nfails during soft reset:\n\n./xdpsock -i <inf> -q -r -N\n\n[ 3179.186687] idpf 0000:83:00.0: Failed to initialize queue ids for vport 0: -12\n[ 3179.276739] BUG: kernel NULL pointer dereference, address: 0000000000000010\n[ 3179.277636] #PF: supervisor read access in kernel mode\n[ 3179.278470] #PF: error_code(0x0000) - not-present page\n[ 3179.279285] PGD 0\n[ 3179.280083] Oops: Oops: 0000 [#1] SMP NOPTI\n...\n[ 3179.283997] Workqueue: events xp_release_deferred\n[ 3179.284770] RIP: 0010:idpf_find_rxq_vec+0x17/0x30 [idpf]\n...\n[ 3179.291937] Call Trace:\n[ 3179.292392]  <TASK>\n[ 3179.292843]  idpf_qp_switch+0x25/0x820 [idpf]\n[ 3179.293325]  idpf_xsk_pool_setup+0x7c/0x520 [idpf]\n[ 3179.293803]  idpf_xdp+0x59/0x240 [idpf]\n[ 3179.294275]  xp_disable_drv_zc+0x62/0xb0\n[ 3179.294743]  xp_clear_dev+0x40/0xb0\n[ 3179.295198]  xp_release_deferred+0x1f/0xa0\n[ 3179.295648]  process_one_work+0x226/0x730\n[ 3179.296106]  worker_thread+0x19e/0x340\n[ 3179.296557]  ? __pfx_worker_thread+0x10/0x10\n[ 3179.297009]  kthread+0xf4/0x130\n[ 3179.297459]  ? __pfx_kthread+0x10/0x10\n[ 3179.297910]  ret_from_fork+0x32c/0x410\n[ 3179.298361]  ? __pfx_kthread+0x10/0x10\n[ 3179.298702]  ret_from_fork_asm+0x1a/0x30\n\nFix the error handling of the soft reset in idpf_xdp_setup_prog() by\nrestoring the vport->xdp_prog to the old value. This avoids referencing\nthe orphaned prog that was copied to vport->xdp_prog in the soft reset\nand prevents subsequent false positive by idpf_xdp_enabled(). Roll back\nthe number of queues as well. Also only call put on the program if the\nsoft reset was successful. Returning an error will trigger the core XDP\nstack to handle the put otherwise.\n\nUpdate the restart check in idpf_xsk_pool_setup() to use IDPF_VPORT_UP bit\ninstead of netif_running(). The idpf_vport_stop/start() calls will not\nupdate the __LINK_STATE_START bit, making this test a false positive\nshould the soft reset fail.\n\nFixes: 3d57b2c00f09 (\"idpf: add XSk pool initialization\")\nCc: stable@vger.kernel.org\nSigned-off-by: Emil Tantilov <emil.s.tantilov@intel.com>\nSigned-off-by: Joshua Hay <joshua.a.hay@intel.com>\nReviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>\n---\nv3:\n- call idpf_vport_adjust_qs in case of XDP soft reset failure to restore\n  previous queue configuration, including data queue config\n- change idpf_vport_adjust_qs and idpf_vport_calc_total_qs return types\n  to void since they cannot fail\n- only call bpf_prog_put if soft reset succeeds\n---\n drivers/net/ethernet/intel/idpf/idpf_lib.c    |  4 +---\n drivers/net/ethernet/intel/idpf/idpf_txrx.c   | 12 ++++--------\n drivers/net/ethernet/intel/idpf/idpf_txrx.h   |  6 +++---\n .../net/ethernet/intel/idpf/idpf_virtchnl.c   | 19 ++++---------------\n .../net/ethernet/intel/idpf/idpf_virtchnl.h   |  4 ++--\n drivers/net/ethernet/intel/idpf/xdp.c         |  8 +++++---\n drivers/net/ethernet/intel/idpf/xsk.c         |  4 +++-\n 7 files changed, 22 insertions(+), 35 deletions(-)",
    "diff": "diff --git a/drivers/net/ethernet/intel/idpf/idpf_lib.c b/drivers/net/ethernet/intel/idpf/idpf_lib.c\nindex cf966fe6c759..56198b417c97 100644\n--- a/drivers/net/ethernet/intel/idpf/idpf_lib.c\n+++ b/drivers/net/ethernet/intel/idpf/idpf_lib.c\n@@ -2042,9 +2042,7 @@ int idpf_initiate_soft_reset(struct idpf_vport *vport,\n \t/* Adjust resource parameters prior to reallocating resources */\n \tswitch (reset_cause) {\n \tcase IDPF_SR_Q_CHANGE:\n-\t\terr = idpf_vport_adjust_qs(new_vport, new_rsrc);\n-\t\tif (err)\n-\t\t\tgoto free_vport;\n+\t\tidpf_vport_adjust_qs(new_vport, new_rsrc);\n \t\tbreak;\n \tcase IDPF_SR_Q_DESC_CHANGE:\n \t\t/* Update queue parameters before allocating resources */\ndiff --git a/drivers/net/ethernet/intel/idpf/idpf_txrx.c b/drivers/net/ethernet/intel/idpf/idpf_txrx.c\nindex 4fc0bb14c5b1..4e0d31023123 100644\n--- a/drivers/net/ethernet/intel/idpf/idpf_txrx.c\n+++ b/drivers/net/ethernet/intel/idpf/idpf_txrx.c\n@@ -1568,12 +1568,10 @@ void idpf_vport_calc_num_q_desc(struct idpf_vport *vport,\n  * @vport_idx: vport idx to retrieve vport pointer\n  * @vport_msg: message to fill with data\n  * @max_q: vport max queue info\n- *\n- * Return: 0 on success, error value on failure.\n  */\n-int idpf_vport_calc_total_qs(struct idpf_adapter *adapter, u16 vport_idx,\n-\t\t\t     struct virtchnl2_create_vport *vport_msg,\n-\t\t\t     struct idpf_vport_max_q *max_q)\n+void idpf_vport_calc_total_qs(struct idpf_adapter *adapter, u16 vport_idx,\n+\t\t\t      struct virtchnl2_create_vport *vport_msg,\n+\t\t\t      struct idpf_vport_max_q *max_q)\n {\n \tint dflt_splitq_txq_grps = 0, dflt_singleq_txqs = 0;\n \tint dflt_splitq_rxq_grps = 0, dflt_singleq_rxqs = 0;\n@@ -1624,7 +1622,7 @@ int idpf_vport_calc_total_qs(struct idpf_adapter *adapter, u16 vport_idx,\n \t}\n \n \tif (!vport_config)\n-\t\treturn 0;\n+\t\treturn;\n \n \tuser = &vport_config->user_config;\n \tuser->num_req_rx_qs = le16_to_cpu(vport_msg->num_rx_q);\n@@ -1640,8 +1638,6 @@ int idpf_vport_calc_total_qs(struct idpf_adapter *adapter, u16 vport_idx,\n \tvport_msg->num_tx_q = cpu_to_le16(user->num_req_tx_qs + num_xdpsq);\n \tif (idpf_is_queue_model_split(le16_to_cpu(vport_msg->txq_model)))\n \t\tvport_msg->num_tx_complq = vport_msg->num_tx_q;\n-\n-\treturn 0;\n }\n \n /**\ndiff --git a/drivers/net/ethernet/intel/idpf/idpf_txrx.h b/drivers/net/ethernet/intel/idpf/idpf_txrx.h\nindex b6836e38f449..22c647d6dd5c 100644\n--- a/drivers/net/ethernet/intel/idpf/idpf_txrx.h\n+++ b/drivers/net/ethernet/intel/idpf/idpf_txrx.h\n@@ -1084,9 +1084,9 @@ void idpf_vport_init_num_qs(struct idpf_vport *vport,\n \t\t\t    struct idpf_q_vec_rsrc *rsrc);\n void idpf_vport_calc_num_q_desc(struct idpf_vport *vport,\n \t\t\t\tstruct idpf_q_vec_rsrc *rsrc);\n-int idpf_vport_calc_total_qs(struct idpf_adapter *adapter, u16 vport_index,\n-\t\t\t     struct virtchnl2_create_vport *vport_msg,\n-\t\t\t     struct idpf_vport_max_q *max_q);\n+void idpf_vport_calc_total_qs(struct idpf_adapter *adapter, u16 vport_index,\n+\t\t\t      struct virtchnl2_create_vport *vport_msg,\n+\t\t\t      struct idpf_vport_max_q *max_q);\n void idpf_vport_calc_num_q_groups(struct idpf_q_vec_rsrc *rsrc);\n int idpf_vport_queues_alloc(struct idpf_vport *vport,\n \t\t\t    struct idpf_q_vec_rsrc *rsrc);\ndiff --git a/drivers/net/ethernet/intel/idpf/idpf_virtchnl.c b/drivers/net/ethernet/intel/idpf/idpf_virtchnl.c\nindex be66f9b2e101..91af4f298475 100644\n--- a/drivers/net/ethernet/intel/idpf/idpf_virtchnl.c\n+++ b/drivers/net/ethernet/intel/idpf/idpf_virtchnl.c\n@@ -1578,12 +1578,7 @@ int idpf_send_create_vport_msg(struct idpf_adapter *adapter,\n \telse\n \t\tvport_msg->rxq_model = cpu_to_le16(VIRTCHNL2_QUEUE_MODEL_SINGLE);\n \n-\terr = idpf_vport_calc_total_qs(adapter, idx, vport_msg, max_q);\n-\tif (err) {\n-\t\tdev_err(&adapter->pdev->dev, \"Enough queues are not available\");\n-\n-\t\treturn err;\n-\t}\n+\tidpf_vport_calc_total_qs(adapter, idx, vport_msg, max_q);\n \n \tif (!adapter->vport_params_recvd[idx]) {\n \t\tadapter->vport_params_recvd[idx] = kzalloc(IDPF_CTLQ_MAX_BUF_LEN,\n@@ -4065,24 +4060,18 @@ int idpf_vport_queue_ids_init(struct idpf_vport *vport,\n  * @vport: virtual port data struct\n  * @rsrc: pointer to queue and vector resources\n  *\n- * Renegotiate queues.  Returns 0 on success, negative on failure.\n+ * Renegotiate queues.\n  */\n-int idpf_vport_adjust_qs(struct idpf_vport *vport, struct idpf_q_vec_rsrc *rsrc)\n+void idpf_vport_adjust_qs(struct idpf_vport *vport, struct idpf_q_vec_rsrc *rsrc)\n {\n \tstruct virtchnl2_create_vport vport_msg;\n-\tint err;\n \n \tvport_msg.txq_model = cpu_to_le16(rsrc->txq_model);\n \tvport_msg.rxq_model = cpu_to_le16(rsrc->rxq_model);\n-\terr = idpf_vport_calc_total_qs(vport->adapter, vport->idx, &vport_msg,\n-\t\t\t\t       NULL);\n-\tif (err)\n-\t\treturn err;\n+\tidpf_vport_calc_total_qs(vport->adapter, vport->idx, &vport_msg, NULL);\n \n \tidpf_vport_init_num_qs(vport, &vport_msg, rsrc);\n \tidpf_vport_calc_num_q_groups(rsrc);\n-\n-\treturn 0;\n }\n \n /**\ndiff --git a/drivers/net/ethernet/intel/idpf/idpf_virtchnl.h b/drivers/net/ethernet/intel/idpf/idpf_virtchnl.h\nindex 6876e3ed9d1b..76d238fc660c 100644\n--- a/drivers/net/ethernet/intel/idpf/idpf_virtchnl.h\n+++ b/drivers/net/ethernet/intel/idpf/idpf_virtchnl.h\n@@ -169,8 +169,8 @@ int idpf_send_destroy_vport_msg(struct idpf_adapter *adapter, u32 vport_id);\n int idpf_send_enable_vport_msg(struct idpf_adapter *adapter, u32 vport_id);\n int idpf_send_disable_vport_msg(struct idpf_adapter *adapter, u32 vport_id);\n \n-int idpf_vport_adjust_qs(struct idpf_vport *vport,\n-\t\t\t struct idpf_q_vec_rsrc *rsrc);\n+void idpf_vport_adjust_qs(struct idpf_vport *vport,\n+\t\t\t  struct idpf_q_vec_rsrc *rsrc);\n int idpf_vport_alloc_max_qs(struct idpf_adapter *adapter,\n \t\t\t    struct idpf_vport_max_q *max_q);\n void idpf_vport_dealloc_max_qs(struct idpf_adapter *adapter,\ndiff --git a/drivers/net/ethernet/intel/idpf/xdp.c b/drivers/net/ethernet/intel/idpf/xdp.c\nindex dcd867517a5f..f6e6b72169fd 100644\n--- a/drivers/net/ethernet/intel/idpf/xdp.c\n+++ b/drivers/net/ethernet/intel/idpf/xdp.c\n@@ -488,11 +488,13 @@ static int idpf_xdp_setup_prog(struct idpf_vport *vport,\n \t\t\t\t   \"Could not reopen the vport after XDP setup\");\n \n \t\tcfg->user_config.xdp_prog = old;\n-\t\told = prog;\n-\t}\n+\t\tvport->xdp_prog = old;\n \n-\tif (old)\n+\t\t/* Restore previous queue config */\n+\t\tidpf_vport_adjust_qs(vport, &vport->dflt_qv_rsrc);\n+\t} else if (old) {\n \t\tbpf_prog_put(old);\n+\t}\n \n \tlibeth_xdp_set_redirect(vport->netdev, vport->xdp_prog);\n \ndiff --git a/drivers/net/ethernet/intel/idpf/xsk.c b/drivers/net/ethernet/intel/idpf/xsk.c\nindex d95d3efdfd36..3d8c430efd2b 100644\n--- a/drivers/net/ethernet/intel/idpf/xsk.c\n+++ b/drivers/net/ethernet/intel/idpf/xsk.c\n@@ -553,6 +553,7 @@ int idpf_xskrq_poll(struct idpf_rx_queue *rxq, u32 budget)\n \n int idpf_xsk_pool_setup(struct idpf_vport *vport, struct netdev_bpf *bpf)\n {\n+\tconst struct idpf_netdev_priv *np = netdev_priv(vport->netdev);\n \tstruct xsk_buff_pool *pool = bpf->xsk.pool;\n \tu32 qid = bpf->xsk.queue_id;\n \tbool restart;\n@@ -568,7 +569,8 @@ int idpf_xsk_pool_setup(struct idpf_vport *vport, struct netdev_bpf *bpf)\n \t\treturn -EINVAL;\n \t}\n \n-\trestart = idpf_xdp_enabled(vport) && netif_running(vport->netdev);\n+\trestart = idpf_xdp_enabled(vport) &&\n+\t\t  test_bit(IDPF_VPORT_UP, np->state);\n \tif (!restart)\n \t\tgoto pool;\n \n",
    "prefixes": [
        "net",
        "v3"
    ]
}