From nobody Fri Dec 19 14:38:15 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 245C8258CF9; Tue, 20 May 2025 10:24:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747736647; cv=none; b=QqV74z2hmZETXrFI7uatOi/XIVtBJOZl6ZRqHXBuY1FdhooA2uWMqQVdUvCW8+yh7MIoNkO15M0r1NsYaaq0Q8lrkqsSOZIY4E08NJEn7UBbQnpYsYqWpM4JTKNF9FE35W9lENoTK8VoRb3ROA8z44PAk15dL7jU/0cR4r6LQDc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747736647; c=relaxed/simple; bh=nIrx+rQmiCnbtUaUn/P6Ik6giA5OLb1b5pJBQ3z/y3I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rllJwH1ieGOWUQDQHNBngwBT+dc9AXBike+Nik89JeI1iqxXp472Zkz6U9fUPaf0dcvv8GR5F0Ylqf21Rj83RTt7Ww3Ip1IAHUYB94FcC3e7FdSO5g0Gy/boPfV4bbvwHq34GawWt66Pj/1uc4Meuq+Eqbb62i+RtiL7UFIfrIc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=iEgzGjSC; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="iEgzGjSC" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 67282C4CEEB; Tue, 20 May 2025 10:24:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1747736646; bh=nIrx+rQmiCnbtUaUn/P6Ik6giA5OLb1b5pJBQ3z/y3I=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=iEgzGjSCDNAreycfZfel/PDOPVl55vnX6//v3eJsVsLBymctEvM8+599Av2rZecEY mU1ndS+eeGnYbfFkYCo9yXW8Q7ASX5YYMYB8SyWfRf/Sfp+MkWcPq2eg/ZjQ2O7Ykk ZFgQ4rqcfVO1LfStwsqp43V03fEZTt3bGzFnWvaReDDq/uVq16TwdEuqBiQGnFcpSN o6g7yrhRkgJRRs4GxYHjxMfJkde2ERegaP4IaUblnmBrGtgD/YfSQ3ITjT8PRywm4A q78zKdZG1Q6tI7nQLFKJWw1gozq7rNAoWMdBub6E2Fm5W/zeircPNovOoMUYgVoqEk jbF1rQDqEL7VQ== From: Roger Quadros Date: Tue, 20 May 2025 13:23:50 +0300 Subject: [PATCH RFC net-next 1/5] net: ethernet: ti: am65-cpsw: fix BPF Program change on multi-port CPSW Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250520-am65-cpsw-xdp-zc-v1-1-45558024f566@kernel.org> References: <20250520-am65-cpsw-xdp-zc-v1-0-45558024f566@kernel.org> In-Reply-To: <20250520-am65-cpsw-xdp-zc-v1-0-45558024f566@kernel.org> To: Siddharth Vadapalli , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , Sumit Semwal , =?utf-8?q?Christian_K=C3=B6nig?= Cc: srk@ti.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, Roger Quadros X-Mailer: b4 0.14.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=1633; i=rogerq@kernel.org; h=from:subject:message-id; bh=nIrx+rQmiCnbtUaUn/P6Ik6giA5OLb1b5pJBQ3z/y3I=; b=owEBbQKS/ZANAwAIAdJaa9O+djCTAcsmYgBoLFg8vD0nQfmi6PcyMBmwmgeg6lxVKRdAM6c8O 6WY76gS5dqJAjMEAAEIAB0WIQRBIWXUTJ9SeA+rEFjSWmvTvnYwkwUCaCxYPAAKCRDSWmvTvnYw k2L6D/4/z+FNWgxJwjERqYfSg+GnzlJJh4byuBEYjsYtx4BDFFicW8b7f6QIgKUkuOPA6c76eL7 WO8HaxevvwV3oshGZYMJxoDFbsWYD69235tfLfa+j41GCM8i12M0P4iTWS5FDxSwm3Hoa+teUfW sR+5Fs72wLimc9XtV8U9Et9j6tOa+hHibTIvCn30XFf5EINzWtJ5mtf7iW2RjZ3Zj2XzBjowBWQ HYHceGJA0pn7tj/lRa/QCQFef4frkfSrDYd9VQoU52fMagHyR5NhTXOMPEVcsPcyYkvjA8d5D2F j/J3K6e49UrAnL6PxBdJgWmsf0JXEIU3yCkQogpy1nMbeEs+grSewLC660Czx5NeupmhT71CiLl wZqp0dr5X4hhkcuXrE8UuxaGS4UnudFn7EBu2i/mI3iVx0Fl6ei4CGKc2viBHftSOKbiVwQIflx hQ78Pk+JM7U/L+lJcknOQA8WH8QSD591uVTJesgLCEOVdCq8RtQ4jZVncxD58jAVXlDOvOegThx 79p7dGeqwAAQbpttV0rZOxHX3UMPistIXcuZ9IFpk62hkI8dOwWXN6isF+t25dLxa0+uBSivv0W l1gUI7VFbe9Kx2+nUhYNTVcAKmoLAp6nB3A8Ge3Ubnz+VNL2ZxAz5isQ3dKO7zpfQW4rJlkBw32 GyireYbsB+UxwjA== X-Developer-Key: i=rogerq@kernel.org; a=openpgp; fpr=412165D44C9F52780FAB1058D25A6BD3BE763093 On a multi-port CPSW system, stopping and starting just one port (ndev) will not restart the queues if other ports (ndevs) are open. Instead, check the usage_count variable to know if CPSW is running and if so restart all the queues. Signed-off-by: Roger Quadros --- drivers/net/ethernet/ti/am65-cpsw-nuss.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/drivers/net/ethernet/ti/am65-cpsw-nuss.c b/drivers/net/etherne= t/ti/am65-cpsw-nuss.c index 988ce9119306..cd713bb57b91 100644 --- a/drivers/net/ethernet/ti/am65-cpsw-nuss.c +++ b/drivers/net/ethernet/ti/am65-cpsw-nuss.c @@ -1924,18 +1924,33 @@ static int am65_cpsw_xdp_prog_setup(struct net_devi= ce *ndev, struct bpf_prog *prog) { struct am65_cpsw_port *port =3D am65_ndev_to_port(ndev); - bool running =3D netif_running(ndev); + struct am65_cpsw_common *common =3D port->common; + bool running =3D !!port->common->usage_count; struct bpf_prog *old_prog; + int ret; =20 - if (running) - am65_cpsw_nuss_ndo_slave_stop(ndev); + if (running) { + /* stop all queues */ + am65_cpsw_destroy_txqs(common); + am65_cpsw_destroy_rxqs(common); + } =20 old_prog =3D xchg(&port->xdp_prog, prog); if (old_prog) bpf_prog_put(old_prog); =20 - if (running) - return am65_cpsw_nuss_ndo_slave_open(ndev); + if (running) { + /* start all queues */ + ret =3D am65_cpsw_create_rxqs(common); + if (ret) + return ret; + + ret =3D am65_cpsw_create_txqs(common); + if (ret) { + am65_cpsw_destroy_rxqs(common); + return ret; + } + } =20 return 0; } --=20 2.34.1