From nobody Mon Jun 15 02:45:25 2026 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 8097E35DA67; Tue, 7 Apr 2026 15:11:35 +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=1775574695; cv=none; b=R71zVJ3mxxq+g1lyynvofdCxmEBFat2uN95kcWgCLpqOe6VkbReyd4ZGiVDTWBmDw6ue//tskNYLx/3dQfIsLSUcTSD6UsOPDZWh7nKgd03BH29V2rfa6Zb/mYkuySxpv0uhpo0RF8t0DF+osKzdkhzP39aC6zqjL6JgJVidb5g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775574695; c=relaxed/simple; bh=du9Hh4E2pPm0a3BhcAvyXy9zMrIAlKjJzHQCMlxwU1w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=HAVJRceSZmtQdgIPw1lxhAXbOWoJcYkA0hi/KJ825CrgQYQ9JR8wl836qU1yLD0k75KH6B3N4eP5wRPMXGJcaAQlikdKRvv34PrK68vZMukgzOwUAZNrr0GMKNt72nyktlkOBBn97ALlWdEtlrVNGPsK262j6VWsb64jpkzr2hg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=eef7/eyB; 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="eef7/eyB" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3A48CC116C6; Tue, 7 Apr 2026 15:11:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775574695; bh=du9Hh4E2pPm0a3BhcAvyXy9zMrIAlKjJzHQCMlxwU1w=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=eef7/eyB5Y7wIM08VLdCwL0vyXJ6NDAkAhDyo4R6TkSS5zf7FwS0QVZVoB8Noz+75 V+2UBY3bON6RFkr6D0qtcTL9W28iyxRCgnTnBalpa87iZbuMG8j9i58KUzmo+4Lo5b 45U3wYOXHhNgYVKvCIbWDZvOiYC4508ZN4lfXrwlcVYNtNMyaUe3wG7KXjZb+OqWiP 1zLPafdVdGrFeUQncoZD3G5d4gVchsLeU8qomYazyeSktwMETT36aILA4iD5pzG3c5 TDTh/LNMe3GNG+HNNHEcCeEgZUVIoxVkt5iHQIlRFExbbjOkWYMCCpyqWAaL+amm90 dN/UBhEMaMWFw== Received: from johan by xi.lan with local (Exim 4.98.2) (envelope-from ) id 1wA85V-0000000DNJ3-0T2f; Tue, 07 Apr 2026 17:11:33 +0200 From: Johan Hovold To: linux-wireless@vger.kernel.org Cc: Johannes Berg , libertas-dev@lists.infradead.org, linux-kernel@vger.kernel.org, Johan Hovold Subject: [PATCH v2 1/3] wifi: at76c50x: refactor endpoint lookup Date: Tue, 7 Apr 2026 17:11:09 +0200 Message-ID: <20260407151111.3187826-2-johan@kernel.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260407151111.3187826-1-johan@kernel.org> References: <20260407151111.3187826-1-johan@kernel.org> 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" Use the common USB helper for looking up bulk and interrupt endpoints instead of open coding. Signed-off-by: Johan Hovold --- drivers/net/wireless/atmel/at76c50x-usb.c | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/drivers/net/wireless/atmel/at76c50x-usb.c b/drivers/net/wirele= ss/atmel/at76c50x-usb.c index 44b04ea3cc8b..32e3e09e7680 100644 --- a/drivers/net/wireless/atmel/at76c50x-usb.c +++ b/drivers/net/wireless/atmel/at76c50x-usb.c @@ -2226,34 +2226,20 @@ static struct at76_priv *at76_alloc_new_device(stru= ct usb_device *udev) static int at76_alloc_urbs(struct at76_priv *priv, struct usb_interface *interface) { - struct usb_endpoint_descriptor *endpoint, *ep_in, *ep_out; - int i; + struct usb_endpoint_descriptor *ep_in, *ep_out; int buffer_size; struct usb_host_interface *iface_desc; + int ret; =20 at76_dbg(DBG_PROC_ENTRY, "%s: ENTER", __func__); =20 at76_dbg(DBG_URB, "%s: NumEndpoints %d ", __func__, interface->cur_altsetting->desc.bNumEndpoints); =20 - ep_in =3D NULL; - ep_out =3D NULL; iface_desc =3D interface->cur_altsetting; - for (i =3D 0; i < iface_desc->desc.bNumEndpoints; i++) { - endpoint =3D &iface_desc->endpoint[i].desc; - - at76_dbg(DBG_URB, "%s: %d. endpoint: addr 0x%x attr 0x%x", - __func__, i, endpoint->bEndpointAddress, - endpoint->bmAttributes); - - if (!ep_in && usb_endpoint_is_bulk_in(endpoint)) - ep_in =3D endpoint; =20 - if (!ep_out && usb_endpoint_is_bulk_out(endpoint)) - ep_out =3D endpoint; - } - - if (!ep_in || !ep_out) { + ret =3D usb_find_common_endpoints(iface_desc, &ep_in, &ep_out, NULL, NULL= ); + if (ret) { dev_err(&interface->dev, "bulk endpoints missing\n"); return -ENXIO; } --=20 2.52.0 From nobody Mon Jun 15 02:45:25 2026 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 808F633D503; Tue, 7 Apr 2026 15:11:35 +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=1775574695; cv=none; b=qDfoutANxyvhHEfd/EpFiY1ic4ZrZJDwemtRIDF5uLqaHJ+lxwDYY/Z/cBvcmOhlR6tLSFyGylWEdOSKDoMLCmyYBEBggTH+WCbebrNILiLO2Gsa9tPGERKMwqReiLvvLcdDyCsaFpCWMcW9kMR/FveLOvTjJLiRH2xrd97x8iU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775574695; c=relaxed/simple; bh=9odPQBSmgdpPjUeBiSqpa4Qt2b1+mW4C5Kv8ZsaYDps=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=u5MlEDxewKIYDoUYrK1YOZyYP2y0zBJU+TY0n7UiJKy5nwnMoNSyhqDMIuVwBPat9J+NRpiN6JBQsVfWDmd0KnGPEjGVrgTdXZQ7F0uug+uSobGWjsQ6X+DVNOcChMwkVJD9GHfJ9OaGGkgIZ2yl5KVIbIMVGdkmH9VG0KUcLaU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=gHjgLSeZ; 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="gHjgLSeZ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4389CC2BCAF; Tue, 7 Apr 2026 15:11:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775574695; bh=9odPQBSmgdpPjUeBiSqpa4Qt2b1+mW4C5Kv8ZsaYDps=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=gHjgLSeZ/HHP0SYGPxVfnS/CygggZOO4TJk7PV/5DtXyK+8ZrrgCYIlYru8QbDNge Tm50LUXKvBzZ8Up1M5G0yOAzm9jSya9EtOd63lezSlXuuShlsVuFf3ysBYbs2w2r5y B9UoI1fd+57Jy0xJ4ITKSa47Il4C3ulkCRDZcw72PQa+H5ANmz5LhutaY8ZEX9c2qz ConWxYxQquXKt02m7yhmHs9YpB8NFIO4ThqpvlTQuoOdUEUq5TX5De1i1Om055Sirt zOdwcVpx5yhExL3hU9suNBxVuZNfMECZ0ila9sovaKibFtX4CoOvr77fjtTYAST0KC TnRuoLWrvJfyg== Received: from johan by xi.lan with local (Exim 4.98.2) (envelope-from ) id 1wA85V-0000000DNJ5-0WFY; Tue, 07 Apr 2026 17:11:33 +0200 From: Johan Hovold To: linux-wireless@vger.kernel.org Cc: Johannes Berg , libertas-dev@lists.infradead.org, linux-kernel@vger.kernel.org, Johan Hovold Subject: [PATCH v2 2/3] wifi: libertas: refactor endpoint lookup Date: Tue, 7 Apr 2026 17:11:10 +0200 Message-ID: <20260407151111.3187826-3-johan@kernel.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260407151111.3187826-1-johan@kernel.org> References: <20260407151111.3187826-1-johan@kernel.org> 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" Use the common USB helpers for looking up bulk and interrupt endpoints (and determining max packet size) instead of open coding. Note that the driver has an implicit max packet size check which is kept. Signed-off-by: Johan Hovold --- .../net/wireless/marvell/libertas/if_usb.c | 33 +++++++++---------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/drivers/net/wireless/marvell/libertas/if_usb.c b/drivers/net/w= ireless/marvell/libertas/if_usb.c index 176f2106bab6..4fae0e335136 100644 --- a/drivers/net/wireless/marvell/libertas/if_usb.c +++ b/drivers/net/wireless/marvell/libertas/if_usb.c @@ -193,13 +193,12 @@ static void if_usb_reset_olpc_card(struct lbs_private= *priv) static int if_usb_probe(struct usb_interface *intf, const struct usb_device_id *id) { + struct usb_endpoint_descriptor *ep_in, *ep_out; struct usb_device *udev; struct usb_host_interface *iface_desc; - struct usb_endpoint_descriptor *endpoint; struct lbs_private *priv; struct if_usb_card *cardp; int r =3D -ENOMEM; - int i; =20 udev =3D interface_to_usbdev(intf); =20 @@ -224,25 +223,25 @@ static int if_usb_probe(struct usb_interface *intf, init_usb_anchor(&cardp->rx_submitted); init_usb_anchor(&cardp->tx_submitted); =20 - for (i =3D 0; i < iface_desc->desc.bNumEndpoints; ++i) { - endpoint =3D &iface_desc->endpoint[i].desc; - if (usb_endpoint_is_bulk_in(endpoint)) { - cardp->ep_in_size =3D le16_to_cpu(endpoint->wMaxPacketSize); - cardp->ep_in =3D usb_endpoint_num(endpoint); + if (usb_find_common_endpoints_reverse(iface_desc, &ep_in, &ep_out, NULL, = NULL)) { + lbs_deb_usbd(&udev->dev, "Endpoints not found\n"); + goto dealloc; + } =20 - lbs_deb_usbd(&udev->dev, "in_endpoint =3D %d\n", cardp->ep_in); - lbs_deb_usbd(&udev->dev, "Bulk in size is %d\n", cardp->ep_in_size); + cardp->ep_in_size =3D usb_endpoint_maxp(ep_in); + cardp->ep_in =3D usb_endpoint_num(ep_in); =20 - } else if (usb_endpoint_is_bulk_out(endpoint)) { - cardp->ep_out_size =3D le16_to_cpu(endpoint->wMaxPacketSize); - cardp->ep_out =3D usb_endpoint_num(endpoint); + lbs_deb_usbd(&udev->dev, "in_endpoint =3D %d\n", cardp->ep_in); + lbs_deb_usbd(&udev->dev, "Bulk in size is %d\n", cardp->ep_in_size); + + cardp->ep_out_size =3D usb_endpoint_maxp(ep_out); + cardp->ep_out =3D usb_endpoint_num(ep_out); + + lbs_deb_usbd(&udev->dev, "out_endpoint =3D %d\n", cardp->ep_out); + lbs_deb_usbd(&udev->dev, "Bulk out size is %d\n", cardp->ep_out_size); =20 - lbs_deb_usbd(&udev->dev, "out_endpoint =3D %d\n", cardp->ep_out); - lbs_deb_usbd(&udev->dev, "Bulk out size is %d\n", cardp->ep_out_size); - } - } if (!cardp->ep_out_size || !cardp->ep_in_size) { - lbs_deb_usbd(&udev->dev, "Endpoints not found\n"); + lbs_deb_usbd(&udev->dev, "Endpoints not valid\n"); goto dealloc; } if (!(cardp->rx_urb =3D usb_alloc_urb(0, GFP_KERNEL))) { --=20 2.52.0 From nobody Mon Jun 15 02:45:25 2026 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 90D0B355F22; Tue, 7 Apr 2026 15:11:35 +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=1775574695; cv=none; b=U4iHHIqt118uVhkY5zqXmhf13NBATbrew+X1SQZ2DrmOOjUHVVMBOGI7fxqvCf8wB9stZuk+eAC869TNUQEEF4FLR+pO/QhlX8hglrjI20BqXXa1rEXgwKfzdek6YIva9s7r7gdVRcuh1aWN/G+hlaYMogjadyMyioIp/l3fkf8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775574695; c=relaxed/simple; bh=PXNBDL1AbhlnXoC5WjArcc4E1Rh8rLvJpXZaOjjIcus=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=sY+Gh0ZOIkCnITZwKHH152qDvUObkzmgsBqYZ3H4jusuWS8GiXeY7IHFitwi3iincREBTTDBj/8TCe2A6wSkAj/KhgXMyGRcabmwiACV52+W1NMeeKnoqVIUT8lcrfO1nYYof2YLYyVDCkmAzSS5G7H0ooDs2Uim4NHz7E9zw8c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=cccAHbOi; 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="cccAHbOi" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6F8F1C2BCB1; Tue, 7 Apr 2026 15:11:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775574695; bh=PXNBDL1AbhlnXoC5WjArcc4E1Rh8rLvJpXZaOjjIcus=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=cccAHbOinslvkBryctPDBRexia7xyf68CgE9k3NfrJpKE45oGVuZ6id9WEIRklGpL C5zFRU63JW3hLTMuPChoA+1RTf8arIkoo2no4crcB7rPx9VMvz0Hacoq++e2vCOyj+ ntIBoc5etrt8gjOIR1XsYgi2yc0iYy2pZddHnyvEqG97S2YPJR2NqmKnQjlQUgXs87 7C8r9J+1NXS5PXwjoPKFNtYklhqhZr8vPoME3yKEAKKApRZjBZfWLiU4ukV0a/CDHH 7oTRPGAC5LvkvTY5HPTY36XvAchBn4b3cqU41z9PWlBnheLdPrbZ2pMoBDEj1iqytZ nRUjirMVfwVVQ== Received: from johan by xi.lan with local (Exim 4.98.2) (envelope-from ) id 1wA85V-0000000DNJ7-0ZbB; Tue, 07 Apr 2026 17:11:33 +0200 From: Johan Hovold To: linux-wireless@vger.kernel.org Cc: Johannes Berg , libertas-dev@lists.infradead.org, linux-kernel@vger.kernel.org, Johan Hovold Subject: [PATCH v2 3/3] wifi: libertas_tf: refactor endpoint lookup Date: Tue, 7 Apr 2026 17:11:11 +0200 Message-ID: <20260407151111.3187826-4-johan@kernel.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260407151111.3187826-1-johan@kernel.org> References: <20260407151111.3187826-1-johan@kernel.org> 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" Use the common USB helpers for looking up bulk and interrupt endpoints (and determining max packet size) instead of open coding. Note that the driver has an implicit max packet size check which is kept. Signed-off-by: Johan Hovold --- .../net/wireless/marvell/libertas_tf/if_usb.c | 46 +++++++++---------- 1 file changed, 21 insertions(+), 25 deletions(-) diff --git a/drivers/net/wireless/marvell/libertas_tf/if_usb.c b/drivers/ne= t/wireless/marvell/libertas_tf/if_usb.c index 07b38f2b8f58..b85c6d783bf7 100644 --- a/drivers/net/wireless/marvell/libertas_tf/if_usb.c +++ b/drivers/net/wireless/marvell/libertas_tf/if_usb.c @@ -144,12 +144,12 @@ static const struct lbtf_ops if_usb_ops =3D { static int if_usb_probe(struct usb_interface *intf, const struct usb_device_id *id) { + struct usb_endpoint_descriptor *ep_in, *ep_out; struct usb_device *udev; struct usb_host_interface *iface_desc; - struct usb_endpoint_descriptor *endpoint; struct lbtf_private *priv; struct if_usb_card *cardp; - int i; + int ret; =20 lbtf_deb_enter(LBTF_DEB_USB); udev =3D interface_to_usbdev(intf); @@ -171,31 +171,27 @@ static int if_usb_probe(struct usb_interface *intf, udev->descriptor.bDeviceSubClass, udev->descriptor.bDeviceProtocol); =20 - for (i =3D 0; i < iface_desc->desc.bNumEndpoints; ++i) { - endpoint =3D &iface_desc->endpoint[i].desc; - if (usb_endpoint_is_bulk_in(endpoint)) { - cardp->ep_in_size =3D - le16_to_cpu(endpoint->wMaxPacketSize); - cardp->ep_in =3D usb_endpoint_num(endpoint); - - lbtf_deb_usbd(&udev->dev, "in_endpoint =3D %d\n", - cardp->ep_in); - lbtf_deb_usbd(&udev->dev, "Bulk in size is %d\n", - cardp->ep_in_size); - } else if (usb_endpoint_is_bulk_out(endpoint)) { - cardp->ep_out_size =3D - le16_to_cpu(endpoint->wMaxPacketSize); - cardp->ep_out =3D usb_endpoint_num(endpoint); - - lbtf_deb_usbd(&udev->dev, "out_endpoint =3D %d\n", - cardp->ep_out); - lbtf_deb_usbd(&udev->dev, "Bulk out size is %d\n", - cardp->ep_out_size); - } + ret =3D usb_find_common_endpoints_reverse(iface_desc, &ep_in, &ep_out, + NULL, NULL); + if (ret) { + lbtf_deb_usbd(&udev->dev, "Endpoints not found\n"); + goto dealloc; } + + cardp->ep_in_size =3D usb_endpoint_maxp(ep_in); + cardp->ep_in =3D usb_endpoint_num(ep_in); + + lbtf_deb_usbd(&udev->dev, "in_endpoint =3D %d\n", cardp->ep_in); + lbtf_deb_usbd(&udev->dev, "Bulk in size is %d\n", cardp->ep_in_size); + + cardp->ep_out_size =3D usb_endpoint_maxp(ep_out); + cardp->ep_out =3D usb_endpoint_num(ep_out); + + lbtf_deb_usbd(&udev->dev, "out_endpoint =3D %d\n", cardp->ep_out); + lbtf_deb_usbd(&udev->dev, "Bulk out size is %d\n", cardp->ep_out_size); + if (!cardp->ep_out_size || !cardp->ep_in_size) { - lbtf_deb_usbd(&udev->dev, "Endpoints not found\n"); - /* Endpoints not found */ + lbtf_deb_usbd(&udev->dev, "Endpoints not valid\n"); goto dealloc; } =20 --=20 2.52.0