Staging: usbip: simplify get_ep_from_epnum

usb_device->ep_in/out includes the necessary endpoints, search is not needed.

Signed-off-by: Endre Kollar <taxy443@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
Endre Kollar 2010-07-27 12:39:45 +02:00 committed by Greg Kroah-Hartman
parent aa5873e962
commit ab30f12d4e
1 changed files with 4 additions and 42 deletions

View File

@ -362,54 +362,16 @@ static struct stub_priv *stub_priv_alloc(struct stub_device *sdev,
return priv;
}
static struct usb_host_endpoint *get_ep_from_epnum(struct usb_device *udev,
int epnum0)
{
struct usb_host_config *config;
int i = 0, j = 0;
struct usb_host_endpoint *ep = NULL;
int epnum;
int found = 0;
if (epnum0 == 0)
return &udev->ep0;
config = udev->actconfig;
if (!config)
return NULL;
for (i = 0; i < config->desc.bNumInterfaces; i++) {
struct usb_host_interface *setting;
setting = config->interface[i]->cur_altsetting;
for (j = 0; j < setting->desc.bNumEndpoints; j++) {
ep = &setting->endpoint[j];
epnum = (ep->desc.bEndpointAddress & 0x7f);
if (epnum == epnum0) {
/* usbip_uinfo("found epnum %d\n", epnum0);*/
found = 1;
break;
}
}
}
if (found)
return ep;
else
return NULL;
}
static int get_pipe(struct stub_device *sdev, int epnum, int dir)
{
struct usb_device *udev = interface_to_usbdev(sdev->interface);
struct usb_host_endpoint *ep;
struct usb_endpoint_descriptor *epd = NULL;
ep = get_ep_from_epnum(udev, epnum);
if (dir == USBIP_DIR_IN)
ep = udev->ep_in[epnum & 0x7f];
else
ep = udev->ep_out[epnum & 0x7f];
if (!ep) {
dev_err(&sdev->interface->dev, "no such endpoint?, %d\n",
epnum);