Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

usbnet: net1080: apply introduced usb command APIs

Acked-by: Oliver Neukum <oneukum@suse.de>
Signed-off-by: Ming Lei <ming.lei@canonical.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Ming Lei and committed by
David S. Miller
5ffbe4da 9c06a2b5

+30 -80
+30 -80
drivers/net/usb/net1080.c
··· 109 109 static int 110 110 nc_vendor_read(struct usbnet *dev, u8 req, u8 regnum, u16 *retval_ptr) 111 111 { 112 - int status = usb_control_msg(dev->udev, 113 - usb_rcvctrlpipe(dev->udev, 0), 114 - req, 115 - USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE, 116 - 0, regnum, 117 - retval_ptr, sizeof *retval_ptr, 118 - USB_CTRL_GET_TIMEOUT); 112 + int status = usbnet_read_cmd(dev, req, 113 + USB_DIR_IN | USB_TYPE_VENDOR | 114 + USB_RECIP_DEVICE, 115 + 0, regnum, retval_ptr, 116 + sizeof *retval_ptr); 119 117 if (status > 0) 120 118 status = 0; 121 119 if (!status) ··· 131 133 static void 132 134 nc_vendor_write(struct usbnet *dev, u8 req, u8 regnum, u16 value) 133 135 { 134 - usb_control_msg(dev->udev, 135 - usb_sndctrlpipe(dev->udev, 0), 136 - req, 137 - USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE, 138 - value, regnum, 139 - NULL, 0, // data is in setup packet 140 - USB_CTRL_SET_TIMEOUT); 136 + usbnet_write_cmd(dev, req, 137 + USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE, 138 + value, regnum, NULL, 0); 141 139 } 142 140 143 141 static inline void ··· 282 288 static int net1080_reset(struct usbnet *dev) 283 289 { 284 290 u16 usbctl, status, ttl; 285 - u16 *vp = kmalloc(sizeof (u16), GFP_KERNEL); 291 + u16 vp; 286 292 int retval; 287 - 288 - if (!vp) 289 - return -ENOMEM; 290 293 291 294 // nc_dump_registers(dev); 292 295 293 - if ((retval = nc_register_read(dev, REG_STATUS, vp)) < 0) { 296 + if ((retval = nc_register_read(dev, REG_STATUS, &vp)) < 0) { 294 297 netdev_dbg(dev->net, "can't read %s-%s status: %d\n", 295 298 dev->udev->bus->bus_name, dev->udev->devpath, retval); 296 299 goto done; 297 300 } 298 - status = *vp; 301 + status = vp; 299 302 nc_dump_status(dev, status); 300 303 301 - if ((retval = nc_register_read(dev, REG_USBCTL, vp)) < 0) { 304 + if ((retval = nc_register_read(dev, REG_USBCTL, &vp)) < 0) { 302 305 netdev_dbg(dev->net, "can't read USBCTL, %d\n", retval); 303 306 goto done; 304 307 } 305 - usbctl = *vp; 308 + usbctl = vp; 306 309 nc_dump_usbctl(dev, usbctl); 307 310 308 311 nc_register_write(dev, REG_USBCTL, 309 312 USBCTL_FLUSH_THIS | USBCTL_FLUSH_OTHER); 310 313 311 - if ((retval = nc_register_read(dev, REG_TTL, vp)) < 0) { 314 + if ((retval = nc_register_read(dev, REG_TTL, &vp)) < 0) { 312 315 netdev_dbg(dev->net, "can't read TTL, %d\n", retval); 313 316 goto done; 314 317 } 315 - ttl = *vp; 318 + ttl = vp; 316 319 // nc_dump_ttl(dev, ttl); 317 320 318 321 nc_register_write(dev, REG_TTL, ··· 322 331 retval = 0; 323 332 324 333 done: 325 - kfree(vp); 326 334 return retval; 327 335 } 328 336 ··· 329 339 { 330 340 int retval; 331 341 u16 status; 332 - u16 *vp = kmalloc(sizeof (u16), GFP_KERNEL); 342 + u16 vp; 333 343 334 - if (!vp) 335 - return -ENOMEM; 336 - retval = nc_register_read(dev, REG_STATUS, vp); 337 - status = *vp; 338 - kfree(vp); 344 + retval = nc_register_read(dev, REG_STATUS, &vp); 345 + status = vp; 339 346 if (retval != 0) { 340 347 netdev_dbg(dev->net, "net1080_check_conn read - %d\n", retval); 341 348 return retval; ··· 342 355 return 0; 343 356 } 344 357 345 - static void nc_flush_complete(struct urb *urb) 346 - { 347 - kfree(urb->context); 348 - usb_free_urb(urb); 349 - } 350 - 351 358 static void nc_ensure_sync(struct usbnet *dev) 352 359 { 353 - dev->frame_errors++; 354 - if (dev->frame_errors > 5) { 355 - struct urb *urb; 356 - struct usb_ctrlrequest *req; 357 - int status; 360 + if (++dev->frame_errors <= 5) 361 + return; 358 362 359 - /* Send a flush */ 360 - urb = usb_alloc_urb(0, GFP_ATOMIC); 361 - if (!urb) 362 - return; 363 + if (usbnet_write_cmd_async(dev, REQUEST_REGISTER, 364 + USB_DIR_OUT | USB_TYPE_VENDOR | 365 + USB_RECIP_DEVICE, 366 + USBCTL_FLUSH_THIS | 367 + USBCTL_FLUSH_OTHER, 368 + REG_USBCTL, NULL, 0)) 369 + return; 363 370 364 - req = kmalloc(sizeof *req, GFP_ATOMIC); 365 - if (!req) { 366 - usb_free_urb(urb); 367 - return; 368 - } 369 - 370 - req->bRequestType = USB_DIR_OUT 371 - | USB_TYPE_VENDOR 372 - | USB_RECIP_DEVICE; 373 - req->bRequest = REQUEST_REGISTER; 374 - req->wValue = cpu_to_le16(USBCTL_FLUSH_THIS 375 - | USBCTL_FLUSH_OTHER); 376 - req->wIndex = cpu_to_le16(REG_USBCTL); 377 - req->wLength = cpu_to_le16(0); 378 - 379 - /* queue an async control request, we don't need 380 - * to do anything when it finishes except clean up. 381 - */ 382 - usb_fill_control_urb(urb, dev->udev, 383 - usb_sndctrlpipe(dev->udev, 0), 384 - (unsigned char *) req, 385 - NULL, 0, 386 - nc_flush_complete, req); 387 - status = usb_submit_urb(urb, GFP_ATOMIC); 388 - if (status) { 389 - kfree(req); 390 - usb_free_urb(urb); 391 - return; 392 - } 393 - 394 - netif_dbg(dev, rx_err, dev->net, 395 - "flush net1080; too many framing errors\n"); 396 - dev->frame_errors = 0; 397 - } 371 + netif_dbg(dev, rx_err, dev->net, 372 + "flush net1080; too many framing errors\n"); 373 + dev->frame_errors = 0; 398 374 } 399 375 400 376 static int net1080_rx_fixup(struct usbnet *dev, struct sk_buff *skb)