Skip to content

Commit

Permalink
net: cdc_ncm: remove redundant endpoint pointers
Browse files Browse the repository at this point in the history
No need to duplicate stuff already in the common usbnet
struct.  We still need to keep our special find_endpoints
function because we need explicit control over the selected
altsetting.

Cc: Alexey Orishko <alexey.orishko@gmail.com>
Signed-off-by: Bjørn Mork <bjorn@mork.no>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Bjørn Mork authored and David S. Miller committed Nov 2, 2013
1 parent 3e51566 commit ff1632a
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 22 deletions.
38 changes: 19 additions & 19 deletions drivers/net/usb/cdc_ncm.c
Original file line number Diff line number Diff line change
Expand Up @@ -292,9 +292,9 @@ static u8 cdc_ncm_setup(struct cdc_ncm_ctx *ctx)
}

static void
cdc_ncm_find_endpoints(struct cdc_ncm_ctx *ctx, struct usb_interface *intf)
cdc_ncm_find_endpoints(struct usbnet *dev, struct usb_interface *intf)
{
struct usb_host_endpoint *e;
struct usb_host_endpoint *e, *in = NULL, *out = NULL;
u8 ep;

for (ep = 0; ep < intf->cur_altsetting->desc.bNumEndpoints; ep++) {
Expand All @@ -303,25 +303,33 @@ cdc_ncm_find_endpoints(struct cdc_ncm_ctx *ctx, struct usb_interface *intf)
switch (e->desc.bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) {
case USB_ENDPOINT_XFER_INT:
if (usb_endpoint_dir_in(&e->desc)) {
if (ctx->status_ep == NULL)
ctx->status_ep = e;
if (!dev->status)
dev->status = e;
}
break;

case USB_ENDPOINT_XFER_BULK:
if (usb_endpoint_dir_in(&e->desc)) {
if (ctx->in_ep == NULL)
ctx->in_ep = e;
if (!in)
in = e;
} else {
if (ctx->out_ep == NULL)
ctx->out_ep = e;
if (!out)
out = e;
}
break;

default:
break;
}
}
if (in && !dev->in)
dev->in = usb_rcvbulkpipe(dev->udev,
in->desc.bEndpointAddress &
USB_ENDPOINT_NUMBER_MASK);
if (out && !dev->out)
dev->out = usb_sndbulkpipe(dev->udev,
out->desc.bEndpointAddress &
USB_ENDPOINT_NUMBER_MASK);
}

static void cdc_ncm_free(struct cdc_ncm_ctx *ctx)
Expand Down Expand Up @@ -477,11 +485,9 @@ int cdc_ncm_bind_common(struct usbnet *dev, struct usb_interface *intf, u8 data_
if (temp)
goto error2;

cdc_ncm_find_endpoints(ctx, ctx->data);
cdc_ncm_find_endpoints(ctx, ctx->control);

if ((ctx->in_ep == NULL) || (ctx->out_ep == NULL) ||
(ctx->status_ep == NULL))
cdc_ncm_find_endpoints(dev, ctx->data);
cdc_ncm_find_endpoints(dev, ctx->control);
if (!dev->in || !dev->out || !dev->status)
goto error2;

dev->net->ethtool_ops = &cdc_ncm_ethtool_ops;
Expand All @@ -496,12 +502,6 @@ int cdc_ncm_bind_common(struct usbnet *dev, struct usb_interface *intf, u8 data_
dev_info(&dev->udev->dev, "MAC-Address: %pM\n", dev->net->dev_addr);
}


dev->in = usb_rcvbulkpipe(dev->udev,
ctx->in_ep->desc.bEndpointAddress & USB_ENDPOINT_NUMBER_MASK);
dev->out = usb_sndbulkpipe(dev->udev,
ctx->out_ep->desc.bEndpointAddress & USB_ENDPOINT_NUMBER_MASK);
dev->status = ctx->status_ep;
dev->rx_urb_size = ctx->rx_max;

/* cdc_ncm_setup will override dwNtbOutMaxSize if it is
Expand Down
3 changes: 0 additions & 3 deletions include/linux/usb/cdc_ncm.h
Original file line number Diff line number Diff line change
Expand Up @@ -100,9 +100,6 @@ struct cdc_ncm_ctx {

struct net_device *netdev;
struct usb_device *udev;
struct usb_host_endpoint *in_ep;
struct usb_host_endpoint *out_ep;
struct usb_host_endpoint *status_ep;
struct usb_interface *control;
struct usb_interface *data;

Expand Down

0 comments on commit ff1632a

Please sign in to comment.