diff options
Diffstat (limited to 'drivers/net/usb/int51x1.c')
-rw-r--r-- | drivers/net/usb/int51x1.c | 52 |
1 files changed, 3 insertions, 49 deletions
diff --git a/drivers/net/usb/int51x1.c b/drivers/net/usb/int51x1.c index 8de641713d5f..ace9e74ffbdd 100644 --- a/drivers/net/usb/int51x1.c +++ b/drivers/net/usb/int51x1.c | |||
@@ -116,23 +116,8 @@ static struct sk_buff *int51x1_tx_fixup(struct usbnet *dev, | |||
116 | return skb; | 116 | return skb; |
117 | } | 117 | } |
118 | 118 | ||
119 | static void int51x1_async_cmd_callback(struct urb *urb) | ||
120 | { | ||
121 | struct usb_ctrlrequest *req = (struct usb_ctrlrequest *)urb->context; | ||
122 | int status = urb->status; | ||
123 | |||
124 | if (status < 0) | ||
125 | dev_warn(&urb->dev->dev, "async callback failed with %d\n", status); | ||
126 | |||
127 | kfree(req); | ||
128 | usb_free_urb(urb); | ||
129 | } | ||
130 | |||
131 | static void int51x1_set_multicast(struct net_device *netdev) | 119 | static void int51x1_set_multicast(struct net_device *netdev) |
132 | { | 120 | { |
133 | struct usb_ctrlrequest *req; | ||
134 | int status; | ||
135 | struct urb *urb; | ||
136 | struct usbnet *dev = netdev_priv(netdev); | 121 | struct usbnet *dev = netdev_priv(netdev); |
137 | u16 filter = PACKET_TYPE_DIRECTED | PACKET_TYPE_BROADCAST; | 122 | u16 filter = PACKET_TYPE_DIRECTED | PACKET_TYPE_BROADCAST; |
138 | 123 | ||
@@ -149,40 +134,9 @@ static void int51x1_set_multicast(struct net_device *netdev) | |||
149 | netdev_dbg(dev->net, "receive own packets only\n"); | 134 | netdev_dbg(dev->net, "receive own packets only\n"); |
150 | } | 135 | } |
151 | 136 | ||
152 | urb = usb_alloc_urb(0, GFP_ATOMIC); | 137 | usbnet_write_cmd_async(dev, SET_ETHERNET_PACKET_FILTER, |
153 | if (!urb) { | 138 | USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE, |
154 | netdev_warn(dev->net, "Error allocating URB\n"); | 139 | filter, 0, NULL, 0); |
155 | return; | ||
156 | } | ||
157 | |||
158 | req = kmalloc(sizeof(*req), GFP_ATOMIC); | ||
159 | if (!req) { | ||
160 | netdev_warn(dev->net, "Error allocating control msg\n"); | ||
161 | goto out; | ||
162 | } | ||
163 | |||
164 | req->bRequestType = USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE; | ||
165 | req->bRequest = SET_ETHERNET_PACKET_FILTER; | ||
166 | req->wValue = cpu_to_le16(filter); | ||
167 | req->wIndex = 0; | ||
168 | req->wLength = 0; | ||
169 | |||
170 | usb_fill_control_urb(urb, dev->udev, usb_sndctrlpipe(dev->udev, 0), | ||
171 | (void *)req, NULL, 0, | ||
172 | int51x1_async_cmd_callback, | ||
173 | (void *)req); | ||
174 | |||
175 | status = usb_submit_urb(urb, GFP_ATOMIC); | ||
176 | if (status < 0) { | ||
177 | netdev_warn(dev->net, "Error submitting control msg, sts=%d\n", | ||
178 | status); | ||
179 | goto out1; | ||
180 | } | ||
181 | return; | ||
182 | out1: | ||
183 | kfree(req); | ||
184 | out: | ||
185 | usb_free_urb(urb); | ||
186 | } | 140 | } |
187 | 141 | ||
188 | static const struct net_device_ops int51x1_netdev_ops = { | 142 | static const struct net_device_ops int51x1_netdev_ops = { |