wifi: refactor USB endpoint lookups
Subsystems (3)
cover wifi: refactor USB endpoint lookups
Use the common USB helper for looking up bulk and interrupt endpoints instead of open coding.
Johan
Johan Hovold (3):
wifi: at76c50x: refactor endpoint lookup
wifi: libertas: refactor endpoint lookup
wifi: libertas_tf: refactor endpoint lookup
drivers/net/wireless/atmel/at76c50x-usb.c | 22 ++------- .../net/wireless/marvell/libertas/if_usb.c | 33 +++++++------ .../net/wireless/marvell/libertas_tf/if_usb.c | 46 +++++++++---------- 3 files changed, 41 insertions(+), 60 deletions(-)
Signature · 1 line
2.52.0
PATCH 1/3 wifi: at76c50x: refactor endpoint lookup
Use the common USB helper for looking up bulk and interrupt endpoints instead of open coding.
--- drivers/net/wireless/atmel/at76c50x-usb.c | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-)
drivers/net/wireless/atmel/at76c50x-usb.c +4 -18
@@ -2226,34 +2226,20 @@ static struct at76_priv *at76_alloc_new_device(struct 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;at76_dbg (DBG_PROC_ENTRY ,"%s: ENTER" , __func__);at76_dbg (DBG_URB ,"%s: NumEndpoints %d " , __func__, interface->cur_altsetting->desc.bNumEndpoints); - ep_in =NULL ; - ep_out =NULL ; iface_desc = interface->cur_altsetting; -for (i =0 ; i < iface_desc->desc.bNumEndpoints; i++) { - endpoint = &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 = endpoint; -if (!ep_out &&usb_endpoint_is_bulk_out (endpoint)) - ep_out = endpoint; - } - -if (!ep_in || !ep_out) { + ret =usb_find_common_endpoints (iface_desc, &ep_in, &ep_out,NULL ,NULL ); +if (ret) {dev_err (&interface->dev,"bulk endpoints missing\n" );return -ENXIO ; }
Signature · 1 line
2.52.0
PATCH 2/3 wifi: libertas: refactor endpoint lookup
In reply to Johan HovoldUse 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.
--- .../net/wireless/marvell/libertas/if_usb.c | 33 +++++++++---------- 1 file changed, 16 insertions(+), 17 deletions(-)
drivers/net/wireless/marvell/libertas/if_usb.c +16 -17
@@ -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 = -ENOMEM ; -int i; udev =interface_to_usbdev (intf);
@@ -221,25 +220,25 @@ static int if_usb_probe(struct usb_interface *intf, udev->descriptor.bDeviceSubClass, udev->descriptor.bDeviceProtocol); -for (i =0 ; i < iface_desc->desc.bNumEndpoints; ++i) { - endpoint = &iface_desc->endpoint[i].desc; -if (usb_endpoint_is_bulk_in (endpoint)) { - cardp->ep_in_size =le16_to_cpu (endpoint->wMaxPacketSize); - cardp->ep_in =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; + } -lbs_deb_usbd (&udev->dev,"in_endpoint = %d\n" , cardp->ep_in); -lbs_deb_usbd (&udev->dev,"Bulk in size is %d\n" , cardp->ep_in_size); + cardp->ep_in_size =usb_endpoint_maxp (ep_in); + cardp->ep_in =usb_endpoint_num (ep_in); - }else if (usb_endpoint_is_bulk_out (endpoint)) { - cardp->ep_out_size =le16_to_cpu (endpoint->wMaxPacketSize); - cardp->ep_out =usb_endpoint_num (endpoint); +lbs_deb_usbd (&udev->dev,"in_endpoint = %d\n" , cardp->ep_in); +lbs_deb_usbd (&udev->dev,"Bulk in size is %d\n" , cardp->ep_in_size); + + cardp->ep_out_size =usb_endpoint_maxp (ep_out); + cardp->ep_out =usb_endpoint_num (ep_out); + +lbs_deb_usbd (&udev->dev,"out_endpoint = %d\n" , cardp->ep_out); +lbs_deb_usbd (&udev->dev,"Bulk out size is %d\n" , cardp->ep_out_size); -lbs_deb_usbd (&udev->dev,"out_endpoint = %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 =usb_alloc_urb (0 ,GFP_KERNEL ))) {
Signature · 1 line
2.52.0
PATCH 3/3 wifi: libertas_tf: refactor endpoint lookup
In reply to Johan HovoldUse 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.
--- .../net/wireless/marvell/libertas_tf/if_usb.c | 46 +++++++++---------- 1 file changed, 21 insertions(+), 25 deletions(-)
drivers/net/wireless/marvell/libertas_tf/if_usb.c +21 -25
@@ -144,12 +144,12 @@ static const struct lbtf_ops if_usb_ops = {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;lbtf_deb_enter (LBTF_DEB_USB ); udev =interface_to_usbdev (intf);
@@ -171,31 +171,27 @@ static int if_usb_probe(struct usb_interface *intf, udev->descriptor.bDeviceSubClass, udev->descriptor.bDeviceProtocol); -for (i =0 ; i < iface_desc->desc.bNumEndpoints; ++i) { - endpoint = &iface_desc->endpoint[i].desc; -if (usb_endpoint_is_bulk_in (endpoint)) { - cardp->ep_in_size = -le16_to_cpu (endpoint->wMaxPacketSize); - cardp->ep_in =usb_endpoint_num (endpoint); - -lbtf_deb_usbd (&udev->dev,"in_endpoint = %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 = -le16_to_cpu (endpoint->wMaxPacketSize); - cardp->ep_out =usb_endpoint_num (endpoint); - -lbtf_deb_usbd (&udev->dev,"out_endpoint = %d\n" , - cardp->ep_out); -lbtf_deb_usbd (&udev->dev,"Bulk out size is %d\n" , - cardp->ep_out_size); - } + ret =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 =usb_endpoint_maxp (ep_in); + cardp->ep_in =usb_endpoint_num (ep_in); + +lbtf_deb_usbd (&udev->dev,"in_endpoint = %d\n" , cardp->ep_in); +lbtf_deb_usbd (&udev->dev,"Bulk in size is %d\n" , cardp->ep_in_size); + + cardp->ep_out_size =usb_endpoint_maxp (ep_out); + cardp->ep_out =usb_endpoint_num (ep_out); + +lbtf_deb_usbd (&udev->dev,"out_endpoint = %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; }
Signature · 1 line
2.52.0
Johannes Berg
maintainerQuoted 10 lines · Johan Hovold
Use the common USB helper for looking up bulk and interrupt endpoints instead of open coding.
Johan
Johan Hovold (3):
wifi: at76c50x: refactor endpoint lookup
wifi: libertas: refactor endpoint lookup
wifi:libertas_tf: refactor endpoint lookup
These didn't apply on wireless-next, please fix and resend.
johannes