{"id":2235028,"url":"http://patchwork.ozlabs.org/api/1.2/patches/2235028/?format=json","web_url":"http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20260508124208.11622-9-przemyslaw.kitszel@intel.com/","project":{"id":46,"url":"http://patchwork.ozlabs.org/api/1.2/projects/46/?format=json","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":"<20260508124208.11622-9-przemyslaw.kitszel@intel.com>","list_archive_url":null,"date":"2026-05-08T12:42:01","name":"[iwl-next,v1,08/15] iavf: extend iavf_configure_queues() to support more queues","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"31bc80a776dabfe6460934a8084e16a4e6e065d9","submitter":{"id":85252,"url":"http://patchwork.ozlabs.org/api/1.2/people/85252/?format=json","name":"Przemek Kitszel","email":"przemyslaw.kitszel@intel.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20260508124208.11622-9-przemyslaw.kitszel@intel.com/mbox/","series":[{"id":503388,"url":"http://patchwork.ozlabs.org/api/1.2/series/503388/?format=json","web_url":"http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=503388","date":"2026-05-08T12:41:53","name":"devlink, mlx5, iavf, ice: XLVF for iavf","version":1,"mbox":"http://patchwork.ozlabs.org/series/503388/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2235028/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2235028/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=CwbTnYmR;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=osuosl.org\n (client-ip=140.211.166.137; helo=smtp4.osuosl.org;\n envelope-from=intel-wired-lan-bounces@osuosl.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137])\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 4gBq385dxbz1yCg\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 08 May 2026 23:00:04 +1000 (AEST)","from localhost (localhost [127.0.0.1])\n\tby smtp4.osuosl.org (Postfix) with ESMTP id F3AD240E67;\n\tFri,  8 May 2026 12:59:57 +0000 (UTC)","from smtp4.osuosl.org ([127.0.0.1])\n by localhost (smtp4.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id crjFYIsFzHkX; Fri,  8 May 2026 12:59:57 +0000 (UTC)","from lists1.osuosl.org (lists1.osuosl.org [140.211.166.142])\n\tby smtp4.osuosl.org (Postfix) with ESMTP id 602B74100A;\n\tFri,  8 May 2026 12:59:57 +0000 (UTC)","from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137])\n by lists1.osuosl.org (Postfix) with ESMTP id 04998317\n for <intel-wired-lan@lists.osuosl.org>; Fri,  8 May 2026 12:59:56 +0000 (UTC)","from localhost (localhost [127.0.0.1])\n by smtp4.osuosl.org (Postfix) with ESMTP id 01DA940F62\n for <intel-wired-lan@lists.osuosl.org>; Fri,  8 May 2026 12:59:56 +0000 (UTC)","from smtp4.osuosl.org ([127.0.0.1])\n by localhost (smtp4.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id c-U0S3UUaH4k for <intel-wired-lan@lists.osuosl.org>;\n Fri,  8 May 2026 12:59:55 +0000 (UTC)","from mgamail.intel.com (mgamail.intel.com [198.175.65.17])\n by smtp4.osuosl.org (Postfix) with ESMTPS id 2D89841053\n for <intel-wired-lan@lists.osuosl.org>; Fri,  8 May 2026 12:59:55 +0000 (UTC)","from fmviesa005.fm.intel.com ([10.60.135.145])\n by orvoesa109.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 08 May 2026 05:59:55 -0700","from irvmail002.ir.intel.com ([10.43.11.120])\n by fmviesa005.fm.intel.com with ESMTP; 08 May 2026 05:59:49 -0700","from vecna.igk.intel.com (vecna.igk.intel.com [10.123.220.17])\n by irvmail002.ir.intel.com (Postfix) with ESMTP id 7C8272FC44;\n Fri,  8 May 2026 13:59:47 +0100 (IST)"],"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 smtp4.osuosl.org 602B74100A","OpenDKIM Filter v2.11.0 smtp4.osuosl.org 2D89841053"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org;\n\ts=default; t=1778245197;\n\tbh=vbQw2y7v23UaXpxycIQfCM4aoDdmvIwGc+GKDcKE2YI=;\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=CwbTnYmRIFDaq3UMFE6+b5yEfLYfzR94of4M7YPqlpoNggFqCSGLpzUJr0WNz1MUp\n\t b9EnCdD0BFIdnxzQ91oFQ3hb+Ud5m2jo97RtDre7lWj5yhR6hh+O74DLRWji+1aAvy\n\t TO+Jz+GLHvEXXOQShuTM3Ryi/3ZVEXv7kHDyGnQPBxwu30blzwSvkEEHQat0T2Epjq\n\t ko6zOeAFsfakmEIH6Ji4Ab4zNHgOAp8rR5lWdA1NiP1TzPdROVQiEUBj5PecB7HBnL\n\t rOqRbY+291w+1mhWfgko/R7GtiqkjsBKx/0XChmQtQcK7opfK1CYa1WN5psSmwdBqY\n\t oSap3ruDF+sqg==","Received-SPF":"Pass (mailfrom) identity=mailfrom; client-ip=198.175.65.17;\n helo=mgamail.intel.com; envelope-from=przemyslaw.kitszel@intel.com;\n receiver=<UNKNOWN>","DMARC-Filter":"OpenDMARC Filter v1.4.2 smtp4.osuosl.org 2D89841053","X-CSE-ConnectionGUID":["UHMCuz7cSgesJFTuXRoZCA==","swZOTk4ZQf2P85VUdshBQQ=="],"X-CSE-MsgGUID":["NmEqXQpMQZOFgM8eFzzKpw==","wubMeUzcSOiZStO1K992YA=="],"X-IronPort-AV":["E=McAfee;i=\"6800,10657,11779\"; a=\"79199931\"","E=Sophos;i=\"6.23,223,1770624000\"; d=\"scan'208\";a=\"79199931\"","E=Sophos;i=\"6.23,223,1770624000\"; d=\"scan'208\";a=\"241730132\""],"X-ExtLoop1":"1","From":"Przemek Kitszel <przemyslaw.kitszel@intel.com>","To":"intel-wired-lan@lists.osuosl.org, Michal Schmidt <mschmidt@redhat.com>,\n Jakub Kicinski <kuba@kernel.org>, Jiri Pirko <jiri@resnulli.us>","Cc":"netdev@vger.kernel.org, Simon Horman <horms@kernel.org>,\n Tony Nguyen <anthony.l.nguyen@intel.com>,\n Michal Swiatkowski <michal.swiatkowski@linux.intel.com>,\n bruce.richardson@intel.com,\n Vladimir Medvedkin <vladimir.medvedkin@intel.com>,\n padraig.j.connolly@intel.com, ananth.s@intel.com,\n timothy.miskell@intel.com, Jacob Keller <jacob.e.keller@intel.com>,\n Lukasz Czapnik <lukasz.czapnik@intel.com>,\n Aleksandr Loktionov <aleksandr.loktionov@intel.com>,\n Andrew Lunn <andrew+netdev@lunn.ch>,\n \"David S. Miller\" <davem@davemloft.net>,\n Eric Dumazet <edumazet@google.com>, Paolo Abeni <pabeni@redhat.com>,\n Saeed Mahameed <saeedm@nvidia.com>, Leon Romanovsky <leon@kernel.org>,\n Tariq Toukan <tariqt@nvidia.com>, Mark Bloch <mbloch@nvidia.com>,\n Przemek Kitszel <przemyslaw.kitszel@intel.com>","Date":"Fri,  8 May 2026 14:42:01 +0200","Message-Id":"<20260508124208.11622-9-przemyslaw.kitszel@intel.com>","X-Mailer":"git-send-email 2.39.3","In-Reply-To":"<20260508124208.11622-1-przemyslaw.kitszel@intel.com>","References":"<20260508124208.11622-1-przemyslaw.kitszel@intel.com>","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=1778245196; x=1809781196;\n h=from:to:cc:subject:date:message-id:in-reply-to:\n references:mime-version:content-transfer-encoding;\n bh=MHtnV2d7on0QOsG7JkOnFzWyzfm4So4mltVlVNW1uq0=;\n b=a+xtx97B0IBzfliOEfHlRQ/jsAQSCEfFIY3vh8e2rzFhY16VFz+dpgmk\n CRCVzXfsBkCJi0edQbe03ocQ9IA2V7zt0iKQaSABfRo8r2AM6Equmrb3X\n BwxX0NmqmXhWE9Al+WYXCgH2f2Ru3x3FXKIhJWLBmWCdnkulY5LIfInGj\n bh2P+lvlgGOo6oLIL2QJt1/YVqQEVUkJdlL7xTHyZjlimVLHuZnkcwU1x\n Sv/MhVxN/ZmyxcUZ4FidpzkGsTVRQiYM1z8zLN5d4Zd7imWmFG4HhbcOZ\n dVTfpGhwfQ8+3/Hu0Nr+DfK8qjGnkwMZml+ROsdUrFSHXy7ExD4q2yvmh\n A==;","X-Mailman-Original-Authentication-Results":["smtp4.osuosl.org;\n dmarc=pass (p=none dis=none)\n header.from=intel.com","smtp4.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=a+xtx97B"],"Subject":"[Intel-wired-lan] [PATCH iwl-next v1 08/15] iavf: extend\n iavf_configure_queues() to support more queues","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":"Extend iavf_configure_queues() to support more than 31 queues.\nVirtchnl opcode used was already generic, but we have just not needed\nmore than one message before.\n\nAdd helper, iavf_max_vc_entries(), that determines how many entries we\ncould fit into virtchnl message (ending by flex array member). Will be\nalso used on another op later in this series.\n\nSigned-off-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>\n---\n .../net/ethernet/intel/iavf/iavf_virtchnl.c   | 55 +++++++++++++++----\n 1 file changed, 45 insertions(+), 10 deletions(-)","diff":"diff --git a/drivers/net/ethernet/intel/iavf/iavf_virtchnl.c b/drivers/net/ethernet/intel/iavf/iavf_virtchnl.c\nindex a2f75bb4a74e..7a97fc76420f 100644\n--- a/drivers/net/ethernet/intel/iavf/iavf_virtchnl.c\n+++ b/drivers/net/ethernet/intel/iavf/iavf_virtchnl.c\n@@ -8,6 +8,11 @@\n #include \"iavf_ptp.h\"\n #include \"iavf_prototype.h\"\n \n+/* how many Flex Array Member entires do fit into VC message of type *ptr */\n+#define iavf_max_vc_entries(ptr, flex_member) \\\n+\t((IAVF_MAX_AQ_BUF_SIZE - virtchnl_struct_size(ptr, flex_member, 1)) / \\\n+\t sizeof(ptr->flex_member[0]) + 1)\n+\n /**\n  * iavf_send_pf_msg\n  * @adapter: adapter structure\n@@ -366,6 +371,14 @@ int iavf_get_vf_ptp_caps(struct iavf_adapter *adapter)\n \treturn err;\n }\n \n+static bool iavf_match_vc_op_cb(struct iavf_adapter *adapter, const void *data,\n+\t\t\t\tenum virtchnl_ops recv_op)\n+{\n+\tenum virtchnl_ops wanted_op = (enum virtchnl_ops)data;\n+\n+\treturn recv_op == wanted_op;\n+}\n+\n /**\n  * iavf_configure_queues\n  * @adapter: adapter structure\n@@ -377,8 +390,9 @@ void iavf_configure_queues(struct iavf_adapter *adapter)\n \tstruct virtchnl_vsi_queue_config_info *vqci;\n \tint pairs = adapter->num_active_queues;\n \tstruct virtchnl_queue_pair_info *vqpi;\n-\tu32 i, max_frame;\n \tu8 rx_flags = 0;\n+\tu32 max_frame;\n+\tint max_pairs;\n \tsize_t len;\n \n \tmax_frame = LIBIE_MAX_RX_FRM_LEN(adapter->rx_rings->pp->p.offset);\n@@ -390,22 +404,22 @@ void iavf_configure_queues(struct iavf_adapter *adapter)\n \t\t\tadapter->current_op);\n \t\treturn;\n \t}\n-\tadapter->current_op = VIRTCHNL_OP_CONFIG_VSI_QUEUES;\n-\tlen = virtchnl_struct_size(vqci, qpair, pairs);\n+\n+\tmax_pairs = iavf_max_vc_entries(vqci, qpair);\n+\tlen = virtchnl_struct_size(vqci, qpair, min(pairs, max_pairs));\n \tvqci = kzalloc(len, GFP_KERNEL);\n \tif (!vqci)\n \t\treturn;\n \n \tif (iavf_ptp_cap_supported(adapter, VIRTCHNL_1588_PTP_CAP_RX_TSTAMP))\n \t\trx_flags |= VIRTCHNL_PTP_RX_TSTAMP;\n \n \tvqci->vsi_id = adapter->vsi_res->vsi_id;\n-\tvqci->num_queue_pairs = pairs;\n \tvqpi = vqci->qpair;\n-\t/* Size check is not needed here - HW max is 16 queue pairs, and we\n-\t * can fit info for 31 of them into the AQ buffer before it overflows.\n-\t */\n-\tfor (i = 0; i < pairs; i++) {\n+\n+\tfor (int i = 0, in_msg = 0; i < pairs; i++) {\n+\t\tconst bool last = i + 1 == pairs;\n+\n \t\tvqpi->txq.vsi_id = vqci->vsi_id;\n \t\tvqpi->txq.queue_id = i;\n \t\tvqpi->txq.ring_len = adapter->tx_rings[i].count;\n@@ -423,11 +437,32 @@ void iavf_configure_queues(struct iavf_adapter *adapter)\n \t\t\t\t\t\t   NETIF_F_RXFCS);\n \t\tvqpi->rxq.flags = rx_flags;\n \t\tvqpi++;\n+\t\tin_msg++;\n+\t\tif (last || in_msg == max_pairs) {\n+\t\t\tint err;\n+\n+\t\t\tadapter->current_op = VIRTCHNL_OP_CONFIG_VSI_QUEUES;\n+\t\t\tvqci->num_queue_pairs = in_msg;\n+\n+\t\t\tiavf_send_pf_msg(adapter,\n+\t\t\t\t\t VIRTCHNL_OP_CONFIG_VSI_QUEUES,\n+\t\t\t\t\t (u8 *)vqci,\n+\t\t\t\t\t virtchnl_struct_size(vqci, qpair, in_msg));\n+\t\t\terr = iavf_poll_virtchnl_response(adapter,\n+\t\t\t\t\t\t\t  iavf_match_vc_op_cb,\n+\t\t\t\t\t\t\t  (void *)VIRTCHNL_OP_CONFIG_VSI_QUEUES,\n+\t\t\t\t\t\t\t  1000);\n+\t\t\tif (err)\n+\t\t\t\tdev_warn(&adapter->pdev->dev,\n+\t\t\t\t\t \"config queues poll failed, err: %d\\n\",\n+\t\t\t\t\t err);\n+\n+\t\t\tvqpi = vqci->qpair;\n+\t\t\tin_msg = 0;\n+\t\t}\n \t}\n \n \tadapter->aq_required &= ~IAVF_FLAG_AQ_CONFIGURE_QUEUES;\n-\tiavf_send_pf_msg(adapter, VIRTCHNL_OP_CONFIG_VSI_QUEUES,\n-\t\t\t (u8 *)vqci, len);\n \tkfree(vqci);\n }\n \n","prefixes":["iwl-next","v1","08/15"]}