From nobody Wed Oct 8 22:34:50 2025 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E42A72E6D2A; Tue, 24 Jun 2025 16:45:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750783553; cv=none; b=cn5r4uizQldpM+vy0rNed0FmWx+SKGYmUkToJoD7N5AJIyzjP+Ki6/byHMQ3xFINWVbXQ+AVXvg5wJe9G+6cwrYHlrz0PpjlSrTwf+CODTnFDN/rxLv93SUAV9Yl5kfnQ70xqvPimJzjYAkAIGYRZ1FRQX6Yt1cm4rnndbY9mjg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750783553; c=relaxed/simple; bh=8GXRsL910im1YrzMgLV7ZO5gpu6dsmjOOmoyWXf79aY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lofkEPR0w9+kBOnIyFsruFxrKaywvBztHV9HWhYdcinu85dNtkbDlMWbGJI5VDqQbuWEn5v204OIpmVMAPaWa7Om7dn7X4ocst94E1e8ZSXET9hx418dI2q6dlbXWA1OqrStZG0dJuK/mTEB8wIsYp5yN6KsJQIRv2JxTaznhbg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=g9IV+bw7; arc=none smtp.client-ip=198.175.65.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="g9IV+bw7" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1750783552; x=1782319552; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=8GXRsL910im1YrzMgLV7ZO5gpu6dsmjOOmoyWXf79aY=; b=g9IV+bw7BwKv0AgzmFEDyjzzAYCUg4sXGiKkuZWbfagCItCiuGQgSAmo y8us6eYiIIL/KrWiE2+ykz/wy1gxwjWgrSk6/ioNGdxXhxYuoZW66R0Cl /IzXsfErm0Q98rDMflL1VfjjgHpdob7NlN493QLfF8CCOfJ7p+tWFysqe iyNZP37HEBTbA/+OFp2pvPuj9SNlNkO3xyDBj4Ca5WJEyRwcaDAcwKaKo ATaq21+uE0s2VPPHacrAwfHimP6JseiCO0lmv8Sb581r1yg8WtluBz0to p7AfcIfMBnxachMa62tnvcKY/CeUfw6U9ANGJGn15OLJXbJQXFLdfehAT Q==; X-CSE-ConnectionGUID: Fp/f1wsNROSYOQtGLQqSig== X-CSE-MsgGUID: vm9L6ei1T4iPQ9Dv+cHqsw== X-IronPort-AV: E=McAfee;i="6800,10657,11474"; a="64091168" X-IronPort-AV: E=Sophos;i="6.16,262,1744095600"; d="scan'208";a="64091168" Received: from fmviesa010.fm.intel.com ([10.60.135.150]) by orvoesa105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Jun 2025 09:45:51 -0700 X-CSE-ConnectionGUID: dBKYL44ORJecNuoa5Jk+aA== X-CSE-MsgGUID: o+A2FWd8RiKr6GPAv3Gveg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.16,262,1744095600"; d="scan'208";a="152669457" Received: from newjersey.igk.intel.com ([10.102.20.203]) by fmviesa010.fm.intel.com with ESMTP; 24 Jun 2025 09:45:48 -0700 From: Alexander Lobakin To: intel-wired-lan@lists.osuosl.org Cc: Alexander Lobakin , Michal Kubiak , Maciej Fijalkowski , Tony Nguyen , Przemek Kitszel , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Alexei Starovoitov , Daniel Borkmann , Simon Horman , nxne.cnse.osdt.itp.upstreaming@intel.com, bpf@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH iwl-next v2 03/12] idpf: link NAPIs to queues Date: Tue, 24 Jun 2025 18:45:06 +0200 Message-ID: <20250624164515.2663137-4-aleksander.lobakin@intel.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250624164515.2663137-1-aleksander.lobakin@intel.com> References: <20250624164515.2663137-1-aleksander.lobakin@intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add the missing linking of NAPIs to netdev queues when enabling interrupt vectors in order to support NAPI configuration and interfaces requiring get_rx_queue()->napi to be set (like XSk busy polling). This additional RTNL locking in idpf_vport_dealloc() is needed to avoid WARN splats on rmmod, which happens outside of RTNL context, but calls idpf_vport_stop() which assumes RTNL protection. Suggested-by: Maciej Fijalkowski # helper Signed-off-by: Alexander Lobakin --- drivers/net/ethernet/intel/idpf/idpf_lib.c | 2 ++ drivers/net/ethernet/intel/idpf/idpf_txrx.c | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/drivers/net/ethernet/intel/idpf/idpf_lib.c b/drivers/net/ether= net/intel/idpf/idpf_lib.c index 4eb20ec2accb..7cef59177c4b 100644 --- a/drivers/net/ethernet/intel/idpf/idpf_lib.c +++ b/drivers/net/ethernet/intel/idpf/idpf_lib.c @@ -972,8 +972,10 @@ static void idpf_vport_dealloc(struct idpf_vport *vpor= t) struct idpf_adapter *adapter =3D vport->adapter; unsigned int i =3D vport->idx; =20 + rtnl_lock(); idpf_deinit_mac_addr(vport); idpf_vport_stop(vport); + rtnl_unlock(); =20 if (!test_bit(IDPF_HR_RESET_IN_PROG, adapter->flags)) idpf_decfg_netdev(vport); diff --git a/drivers/net/ethernet/intel/idpf/idpf_txrx.c b/drivers/net/ethe= rnet/intel/idpf/idpf_txrx.c index 875ed4054268..8128bd33ef45 100644 --- a/drivers/net/ethernet/intel/idpf/idpf_txrx.c +++ b/drivers/net/ethernet/intel/idpf/idpf_txrx.c @@ -3698,6 +3698,20 @@ void idpf_vport_intr_rel(struct idpf_vport *vport) vport->q_vectors =3D NULL; } =20 +static void idpf_q_vector_set_napi(struct idpf_q_vector *q_vector, bool li= nk) +{ + struct napi_struct *napi =3D link ? &q_vector->napi : NULL; + struct net_device *dev =3D q_vector->vport->netdev; + + for (u32 i =3D 0; i < q_vector->num_rxq; i++) + netif_queue_set_napi(dev, q_vector->rx[i]->idx, + NETDEV_QUEUE_TYPE_RX, napi); + + for (u32 i =3D 0; i < q_vector->num_txq; i++) + netif_queue_set_napi(dev, q_vector->tx[i]->idx, + NETDEV_QUEUE_TYPE_TX, napi); +} + /** * idpf_vport_intr_rel_irq - Free the IRQ association with the OS * @vport: main vport structure @@ -3718,6 +3732,7 @@ static void idpf_vport_intr_rel_irq(struct idpf_vport= *vport) vidx =3D vport->q_vector_idxs[vector]; irq_num =3D adapter->msix_entries[vidx].vector; =20 + idpf_q_vector_set_napi(q_vector, false); kfree(free_irq(irq_num, q_vector)); } } @@ -3905,6 +3920,8 @@ static int idpf_vport_intr_req_irq(struct idpf_vport = *vport) "Request_irq failed, error: %d\n", err); goto free_q_irqs; } + + idpf_q_vector_set_napi(q_vector, true); } =20 return 0; --=20 2.49.0