Commit 0ec3c7e856319b600311750d784262caa8ed94b9

Authored by Duncan Sands
Committed by Greg Kroah-Hartman
1 parent 7ce08c93e3

[PATCH] USBATM: trivial modifications

Formatting, changes to variable names, comments, log level changes,
printk rate limiting.

Signed-off-by:	Duncan Sands <baldrick@free.fr>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

Showing 5 changed files with 153 additions and 118 deletions Side-by-side Diff

drivers/usb/atm/cxacru.c
... ... @@ -352,7 +352,6 @@
352 352 struct atm_dev *atm_dev)
353 353 {
354 354 struct cxacru_data *instance = usbatm_instance->driver_data;
355   - struct device *dev = &usbatm_instance->usb_intf->dev;
356 355 /*
357 356 struct atm_dev *atm_dev = usbatm_instance->atm_dev;
358 357 */
359 358  
... ... @@ -364,14 +363,14 @@
364 363 ret = cxacru_cm(instance, CM_REQUEST_CARD_GET_MAC_ADDRESS, NULL, 0,
365 364 atm_dev->esi, sizeof(atm_dev->esi));
366 365 if (ret < 0) {
367   - dev_err(dev, "cxacru_atm_start: CARD_GET_MAC_ADDRESS returned %d\n", ret);
  366 + atm_err(usbatm_instance, "cxacru_atm_start: CARD_GET_MAC_ADDRESS returned %d\n", ret);
368 367 return ret;
369 368 }
370 369  
371 370 /* start ADSL */
372 371 ret = cxacru_cm(instance, CM_REQUEST_CHIP_ADSL_LINE_START, NULL, 0, NULL, 0);
373 372 if (ret < 0) {
374   - dev_err(dev, "cxacru_atm_start: CHIP_ADSL_LINE_START returned %d\n", ret);
  373 + atm_err(usbatm_instance, "cxacru_atm_start: CHIP_ADSL_LINE_START returned %d\n", ret);
375 374 return ret;
376 375 }
377 376  
378 377  
... ... @@ -383,13 +382,13 @@
383 382 static void cxacru_poll_status(struct cxacru_data *instance)
384 383 {
385 384 u32 buf[CXINF_MAX] = {};
386   - struct device *dev = &instance->usbatm->usb_intf->dev;
387   - struct atm_dev *atm_dev = instance->usbatm->atm_dev;
  385 + struct usbatm_data *usbatm = instance->usbatm;
  386 + struct atm_dev *atm_dev = usbatm->atm_dev;
388 387 int ret;
389 388  
390 389 ret = cxacru_cm_get_array(instance, CM_REQUEST_CARD_INFO_GET, buf, CXINF_MAX);
391 390 if (ret < 0) {
392   - dev_warn(dev, "poll status: error %d\n", ret);
  391 + atm_warn(usbatm, "poll status: error %d\n", ret);
393 392 goto reschedule;
394 393 }
395 394  
396 395  
397 396  
398 397  
399 398  
400 399  
401 400  
402 401  
403 402  
... ... @@ -400,50 +399,50 @@
400 399 switch (instance->line_status) {
401 400 case 0:
402 401 atm_dev->signal = ATM_PHY_SIG_LOST;
403   - dev_info(dev, "ADSL line: down\n");
  402 + atm_info(usbatm, "ADSL line: down\n");
404 403 break;
405 404  
406 405 case 1:
407 406 atm_dev->signal = ATM_PHY_SIG_LOST;
408   - dev_info(dev, "ADSL line: attemtping to activate\n");
  407 + atm_info(usbatm, "ADSL line: attempting to activate\n");
409 408 break;
410 409  
411 410 case 2:
412 411 atm_dev->signal = ATM_PHY_SIG_LOST;
413   - dev_info(dev, "ADSL line: training\n");
  412 + atm_info(usbatm, "ADSL line: training\n");
414 413 break;
415 414  
416 415 case 3:
417 416 atm_dev->signal = ATM_PHY_SIG_LOST;
418   - dev_info(dev, "ADSL line: channel analysis\n");
  417 + atm_info(usbatm, "ADSL line: channel analysis\n");
419 418 break;
420 419  
421 420 case 4:
422 421 atm_dev->signal = ATM_PHY_SIG_LOST;
423   - dev_info(dev, "ADSL line: exchange\n");
  422 + atm_info(usbatm, "ADSL line: exchange\n");
424 423 break;
425 424  
426 425 case 5:
427 426 atm_dev->link_rate = buf[CXINF_DOWNSTREAM_RATE] * 1000 / 424;
428 427 atm_dev->signal = ATM_PHY_SIG_FOUND;
429 428  
430   - dev_info(dev, "ADSL line: up (%d kb/s down | %d kb/s up)\n",
  429 + atm_info(usbatm, "ADSL line: up (%d kb/s down | %d kb/s up)\n",
431 430 buf[CXINF_DOWNSTREAM_RATE], buf[CXINF_UPSTREAM_RATE]);
432 431 break;
433 432  
434 433 case 6:
435 434 atm_dev->signal = ATM_PHY_SIG_LOST;
436   - dev_info(dev, "ADSL line: waiting\n");
  435 + atm_info(usbatm, "ADSL line: waiting\n");
437 436 break;
438 437  
439 438 case 7:
440 439 atm_dev->signal = ATM_PHY_SIG_LOST;
441   - dev_info(dev, "ADSL line: initializing\n");
  440 + atm_info(usbatm, "ADSL line: initializing\n");
442 441 break;
443 442  
444 443 default:
445 444 atm_dev->signal = ATM_PHY_SIG_UNKNOWN;
446   - dev_info(dev, "Unknown line state %02x\n", instance->line_status);
  445 + atm_info(usbatm, "Unknown line state %02x\n", instance->line_status);
447 446 break;
448 447 }
449 448 reschedule:
... ... @@ -504,8 +503,8 @@
504 503 {
505 504 int ret;
506 505 int off;
507   - struct usb_device *usb_dev = instance->usbatm->usb_dev;
508   - struct device *dev = &instance->usbatm->usb_intf->dev;
  506 + struct usbatm_data *usbatm = instance->usbatm;
  507 + struct usb_device *usb_dev = usbatm->usb_dev;
509 508 u16 signature[] = { usb_dev->descriptor.idVendor, usb_dev->descriptor.idProduct };
510 509 u32 val;
511 510  
... ... @@ -515,7 +514,7 @@
515 514 val = cpu_to_le32(instance->modem_type->pll_f_clk);
516 515 ret = cxacru_fw(usb_dev, FW_WRITE_MEM, 0x2, 0x0, PLLFCLK_ADDR, (u8 *) &val, 4);
517 516 if (ret) {
518   - dev_err(dev, "FirmwarePllFClkValue failed: %d\n", ret);
  517 + usb_err(usbatm, "FirmwarePllFClkValue failed: %d\n", ret);
519 518 return;
520 519 }
521 520  
... ... @@ -523,7 +522,7 @@
523 522 val = cpu_to_le32(instance->modem_type->pll_b_clk);
524 523 ret = cxacru_fw(usb_dev, FW_WRITE_MEM, 0x2, 0x0, PLLBCLK_ADDR, (u8 *) &val, 4);
525 524 if (ret) {
526   - dev_err(dev, "FirmwarePllBClkValue failed: %d\n", ret);
  525 + usb_err(usbatm, "FirmwarePllBClkValue failed: %d\n", ret);
527 526 return;
528 527 }
529 528  
530 529  
... ... @@ -531,14 +530,14 @@
531 530 val = cpu_to_le32(SDRAM_ENA);
532 531 ret = cxacru_fw(usb_dev, FW_WRITE_MEM, 0x2, 0x0, SDRAMEN_ADDR, (u8 *) &val, 4);
533 532 if (ret) {
534   - dev_err(dev, "Enable SDRAM failed: %d\n", ret);
  533 + usb_err(usbatm, "Enable SDRAM failed: %d\n", ret);
535 534 return;
536 535 }
537 536  
538 537 /* Firmware */
539 538 ret = cxacru_fw(usb_dev, FW_WRITE_MEM, 0x2, 0x0, FW_ADDR, fw->data, fw->size);
540 539 if (ret) {
541   - dev_err(dev, "Firmware upload failed: %d\n", ret);
  540 + usb_err(usbatm, "Firmware upload failed: %d\n", ret);
542 541 return;
543 542 }
544 543  
... ... @@ -546,7 +545,7 @@
546 545 if (instance->modem_type->boot_rom_patch) {
547 546 ret = cxacru_fw(usb_dev, FW_WRITE_MEM, 0x2, 0x0, BR_ADDR, bp->data, bp->size);
548 547 if (ret) {
549   - dev_err(dev, "Boot ROM patching failed: %d\n", ret);
  548 + usb_err(usbatm, "Boot ROM patching failed: %d\n", ret);
550 549 return;
551 550 }
552 551 }
... ... @@ -554,7 +553,7 @@
554 553 /* Signature */
555 554 ret = cxacru_fw(usb_dev, FW_WRITE_MEM, 0x2, 0x0, SIG_ADDR, (u8 *) signature, 4);
556 555 if (ret) {
557   - dev_err(dev, "Signature storing failed: %d\n", ret);
  556 + usb_err(usbatm, "Signature storing failed: %d\n", ret);
558 557 return;
559 558 }
560 559  
... ... @@ -566,7 +565,7 @@
566 565 ret = cxacru_fw(usb_dev, FW_GOTO_MEM, 0x0, 0x0, FW_ADDR, NULL, 0);
567 566 }
568 567 if (ret) {
569   - dev_err(dev, "Passing control to firmware failed: %d\n", ret);
  568 + usb_err(usbatm, "Passing control to firmware failed: %d\n", ret);
570 569 return;
571 570 }
572 571  
... ... @@ -580,7 +579,7 @@
580 579  
581 580 ret = cxacru_cm(instance, CM_REQUEST_CARD_GET_STATUS, NULL, 0, NULL, 0);
582 581 if (ret < 0) {
583   - dev_err(dev, "modem failed to initialize: %d\n", ret);
  582 + usb_err(usbatm, "modem failed to initialize: %d\n", ret);
584 583 return;
585 584 }
586 585  
... ... @@ -597,7 +596,7 @@
597 596 ret = cxacru_cm(instance, CM_REQUEST_CARD_DATA_SET,
598 597 (u8 *) buf, len, NULL, 0);
599 598 if (ret < 0) {
600   - dev_err(dev, "load config data failed: %d\n", ret);
  599 + usb_err(usbatm, "load config data failed: %d\n", ret);
601 600 return;
602 601 }
603 602 }
604 603  
605 604  
... ... @@ -608,18 +607,19 @@
608 607 static int cxacru_find_firmware(struct cxacru_data *instance,
609 608 char* phase, const struct firmware **fw_p)
610 609 {
611   - struct device *dev = &instance->usbatm->usb_intf->dev;
  610 + struct usbatm_data *usbatm = instance->usbatm;
  611 + struct device *dev = &usbatm->usb_intf->dev;
612 612 char buf[16];
613 613  
614 614 sprintf(buf, "cxacru-%s.bin", phase);
615 615 dbg("cxacru_find_firmware: looking for %s", buf);
616 616  
617 617 if (request_firmware(fw_p, buf, dev)) {
618   - dev_dbg(dev, "no stage %s firmware found\n", phase);
  618 + usb_dbg(usbatm, "no stage %s firmware found\n", phase);
619 619 return -ENOENT;
620 620 }
621 621  
622   - dev_info(dev, "found firmware %s\n", buf);
  622 + usb_info(usbatm, "found firmware %s\n", buf);
623 623  
624 624 return 0;
625 625 }
626 626  
627 627  
... ... @@ -627,20 +627,19 @@
627 627 static int cxacru_heavy_init(struct usbatm_data *usbatm_instance,
628 628 struct usb_interface *usb_intf)
629 629 {
630   - struct device *dev = &usbatm_instance->usb_intf->dev;
631 630 const struct firmware *fw, *bp, *cf;
632 631 struct cxacru_data *instance = usbatm_instance->driver_data;
633 632  
634 633 int ret = cxacru_find_firmware(instance, "fw", &fw);
635 634 if (ret) {
636   - dev_warn(dev, "firmware (cxacru-fw.bin) unavailable (hotplug misconfiguration?)\n");
  635 + usb_warn(usbatm_instance, "firmware (cxacru-fw.bin) unavailable (system misconfigured?)\n");
637 636 return ret;
638 637 }
639 638  
640 639 if (instance->modem_type->boot_rom_patch) {
641 640 ret = cxacru_find_firmware(instance, "bp", &bp);
642 641 if (ret) {
643   - dev_warn(dev, "boot ROM patch (cxacru-bp.bin) unavailable (hotplug misconfiguration?)\n");
  642 + usb_warn(usbatm_instance, "boot ROM patch (cxacru-bp.bin) unavailable (system misconfigured?)\n");
644 643 release_firmware(fw);
645 644 return ret;
646 645 }
647 646  
... ... @@ -787,11 +786,11 @@
787 786 { /* V = Conexant P = ADSL modem (Hasbani project) */
788 787 USB_DEVICE(0x0572, 0xcb00), .driver_info = (unsigned long) &cxacru_cb00
789 788 },
790   - { /* V = Conexant P = ADSL modem (Well PTI-800 */
791   - USB_DEVICE(0x0572, 0xcb02), .driver_info = (unsigned long) &cxacru_cb00
792   - },
793 789 { /* V = Conexant P = ADSL modem */
794 790 USB_DEVICE(0x0572, 0xcb01), .driver_info = (unsigned long) &cxacru_cb00
  791 + },
  792 + { /* V = Conexant P = ADSL modem (Well PTI-800) */
  793 + USB_DEVICE(0x0572, 0xcb02), .driver_info = (unsigned long) &cxacru_cb00
795 794 },
796 795 { /* V = Conexant P = ADSL modem */
797 796 USB_DEVICE(0x0572, 0xcb06), .driver_info = (unsigned long) &cxacru_cb00
drivers/usb/atm/speedtch.c
... ... @@ -205,7 +205,7 @@
205 205 buffer, 0x200, &actual_length, 2000);
206 206  
207 207 if (ret < 0 && ret != -ETIMEDOUT)
208   - usb_dbg(usbatm, "%s: read BLOCK0 from modem failed (%d)!\n", __func__, ret);
  208 + usb_warn(usbatm, "%s: read BLOCK0 from modem failed (%d)!\n", __func__, ret);
209 209 else
210 210 usb_dbg(usbatm, "%s: BLOCK0 downloaded (%d bytes)\n", __func__, ret);
211 211 }
... ... @@ -219,7 +219,7 @@
219 219 buffer, thislen, &actual_length, DATA_TIMEOUT);
220 220  
221 221 if (ret < 0) {
222   - usb_dbg(usbatm, "%s: write BLOCK1 to modem failed (%d)!\n", __func__, ret);
  222 + usb_err(usbatm, "%s: write BLOCK1 to modem failed (%d)!\n", __func__, ret);
223 223 goto out_free;
224 224 }
225 225 usb_dbg(usbatm, "%s: BLOCK1 uploaded (%zu bytes)\n", __func__, fw1->size);
... ... @@ -232,7 +232,7 @@
232 232 buffer, 0x200, &actual_length, DATA_TIMEOUT);
233 233  
234 234 if (ret < 0) {
235   - usb_dbg(usbatm, "%s: read BLOCK2 from modem failed (%d)!\n", __func__, ret);
  235 + usb_err(usbatm, "%s: read BLOCK2 from modem failed (%d)!\n", __func__, ret);
236 236 goto out_free;
237 237 }
238 238 usb_dbg(usbatm, "%s: BLOCK2 downloaded (%d bytes)\n", __func__, actual_length);
... ... @@ -246,7 +246,7 @@
246 246 buffer, thislen, &actual_length, DATA_TIMEOUT);
247 247  
248 248 if (ret < 0) {
249   - usb_dbg(usbatm, "%s: write BLOCK3 to modem failed (%d)!\n", __func__, ret);
  249 + usb_err(usbatm, "%s: write BLOCK3 to modem failed (%d)!\n", __func__, ret);
250 250 goto out_free;
251 251 }
252 252 }
... ... @@ -259,7 +259,7 @@
259 259 buffer, 0x200, &actual_length, DATA_TIMEOUT);
260 260  
261 261 if (ret < 0) {
262   - usb_dbg(usbatm, "%s: read BLOCK4 from modem failed (%d)!\n", __func__, ret);
  262 + usb_err(usbatm, "%s: read BLOCK4 from modem failed (%d)!\n", __func__, ret);
263 263 goto out_free;
264 264 }
265 265  
... ... @@ -285,8 +285,8 @@
285 285 return ret;
286 286 }
287 287  
288   -static int speedtch_find_firmware(struct usb_interface *intf, int phase,
289   - const struct firmware **fw_p)
  288 +static int speedtch_find_firmware(struct usbatm_data *usbatm, struct usb_interface *intf,
  289 + int phase, const struct firmware **fw_p)
290 290 {
291 291 struct device *dev = &intf->dev;
292 292 const u16 bcdDevice = le16_to_cpu(interface_to_usbdev(intf)->descriptor.bcdDevice);
293 293  
294 294  
295 295  
296 296  
... ... @@ -295,24 +295,24 @@
295 295 char buf[24];
296 296  
297 297 sprintf(buf, "speedtch-%d.bin.%x.%02x", phase, major_revision, minor_revision);
298   - dev_dbg(dev, "%s: looking for %s\n", __func__, buf);
  298 + usb_dbg(usbatm, "%s: looking for %s\n", __func__, buf);
299 299  
300 300 if (request_firmware(fw_p, buf, dev)) {
301 301 sprintf(buf, "speedtch-%d.bin.%x", phase, major_revision);
302   - dev_dbg(dev, "%s: looking for %s\n", __func__, buf);
  302 + usb_dbg(usbatm, "%s: looking for %s\n", __func__, buf);
303 303  
304 304 if (request_firmware(fw_p, buf, dev)) {
305 305 sprintf(buf, "speedtch-%d.bin", phase);
306   - dev_dbg(dev, "%s: looking for %s\n", __func__, buf);
  306 + usb_dbg(usbatm, "%s: looking for %s\n", __func__, buf);
307 307  
308 308 if (request_firmware(fw_p, buf, dev)) {
309   - dev_warn(dev, "no stage %d firmware found!\n", phase);
  309 + usb_err(usbatm, "%s: no stage %d firmware found!\n", __func__, phase);
310 310 return -ENOENT;
311 311 }
312 312 }
313 313 }
314 314  
315   - dev_info(dev, "found stage %d firmware %s\n", phase, buf);
  315 + usb_info(usbatm, "found stage %d firmware %s\n", phase, buf);
316 316  
317 317 return 0;
318 318 }
319 319  
320 320  
... ... @@ -323,15 +323,16 @@
323 323 struct speedtch_instance_data *instance = usbatm->driver_data;
324 324 int ret;
325 325  
326   - if ((ret = speedtch_find_firmware(intf, 1, &fw1)) < 0)
327   - return ret;
  326 + if ((ret = speedtch_find_firmware(usbatm, intf, 1, &fw1)) < 0)
  327 + return ret;
328 328  
329   - if ((ret = speedtch_find_firmware(intf, 2, &fw2)) < 0) {
  329 + if ((ret = speedtch_find_firmware(usbatm, intf, 2, &fw2)) < 0) {
330 330 release_firmware(fw1);
331 331 return ret;
332 332 }
333 333  
334   - ret = speedtch_upload_firmware(instance, fw1, fw2);
  334 + if ((ret = speedtch_upload_firmware(instance, fw1, fw2)) < 0)
  335 + usb_err(usbatm, "%s: firmware upload failed (%d)!\n", __func__, ret);
335 336  
336 337 release_firmware(fw2);
337 338 release_firmware(fw1);
338 339  
... ... @@ -428,7 +429,9 @@
428 429 int down_speed, up_speed, ret;
429 430 unsigned char status;
430 431  
  432 +#ifdef VERBOSE_DEBUG
431 433 atm_dbg(usbatm, "%s entered\n", __func__);
  434 +#endif
432 435  
433 436 ret = speedtch_read_status(instance);
434 437 if (ret < 0) {
435 438  
... ... @@ -441,9 +444,9 @@
441 444  
442 445 status = buf[OFFSET_7];
443 446  
444   - atm_dbg(usbatm, "%s: line state %02x\n", __func__, status);
445   -
446 447 if ((status != instance->last_status) || !status) {
  448 + atm_dbg(usbatm, "%s: line state 0x%02x\n", __func__, status);
  449 +
447 450 switch (status) {
448 451 case 0:
449 452 atm_dev->signal = ATM_PHY_SIG_LOST;
... ... @@ -484,7 +487,7 @@
484 487  
485 488 default:
486 489 atm_dev->signal = ATM_PHY_SIG_UNKNOWN;
487   - atm_info(usbatm, "Unknown line state %02x\n", status);
  490 + atm_info(usbatm, "unknown line state %02x\n", status);
488 491 break;
489 492 }
490 493  
491 494  
... ... @@ -690,8 +693,10 @@
690 693  
691 694 usb_dbg(usbatm, "%s entered\n", __func__);
692 695  
  696 + /* sanity checks */
  697 +
693 698 if (usb_dev->descriptor.bDeviceClass != USB_CLASS_VENDOR_SPEC) {
694   - usb_dbg(usbatm, "%s: wrong device class %d\n", __func__, usb_dev->descriptor.bDeviceClass);
  699 + usb_err(usbatm, "%s: wrong device class %d\n", __func__, usb_dev->descriptor.bDeviceClass);
695 700 return -ENODEV;
696 701 }
697 702  
... ... @@ -704,7 +709,7 @@
704 709 ret = usb_driver_claim_interface(&speedtch_usb_driver, cur_intf, usbatm);
705 710  
706 711 if (ret < 0) {
707   - usb_dbg(usbatm, "%s: failed to claim interface %d (%d)\n", __func__, i, ret);
  712 + usb_err(usbatm, "%s: failed to claim interface %2d (%d)!\n", __func__, i, ret);
708 713 speedtch_release_interfaces(usb_dev, i);
709 714 return ret;
710 715 }
... ... @@ -714,7 +719,7 @@
714 719 instance = kmalloc(sizeof(*instance), GFP_KERNEL);
715 720  
716 721 if (!instance) {
717   - usb_dbg(usbatm, "%s: no memory for instance data!\n", __func__);
  722 + usb_err(usbatm, "%s: no memory for instance data!\n", __func__);
718 723 ret = -ENOMEM;
719 724 goto fail_release;
720 725 }
721 726  
... ... @@ -754,8 +759,10 @@
754 759 usb_dbg(usbatm, "%s: firmware %s loaded\n", __func__, need_heavy_init ? "not" : "already");
755 760  
756 761 if (*need_heavy_init)
757   - if ((ret = usb_reset_device(usb_dev)) < 0)
  762 + if ((ret = usb_reset_device(usb_dev)) < 0) {
  763 + usb_err(usbatm, "%s: device reset failed (%d)!\n", __func__, ret);
758 764 goto fail_free;
  765 + }
759 766  
760 767 usbatm->driver_data = instance;
761 768  
drivers/usb/atm/usbatm.c
... ... @@ -166,10 +166,10 @@
166 166  
167 167 /* ATM */
168 168  
169   -static void usbatm_atm_dev_close(struct atm_dev *dev);
  169 +static void usbatm_atm_dev_close(struct atm_dev *atm_dev);
170 170 static int usbatm_atm_open(struct atm_vcc *vcc);
171 171 static void usbatm_atm_close(struct atm_vcc *vcc);
172   -static int usbatm_atm_ioctl(struct atm_dev *dev, unsigned int cmd, void __user * arg);
  172 +static int usbatm_atm_ioctl(struct atm_dev *atm_dev, unsigned int cmd, void __user * arg);
173 173 static int usbatm_atm_send(struct atm_vcc *vcc, struct sk_buff *skb);
174 174 static int usbatm_atm_proc_read(struct atm_dev *atm_dev, loff_t * pos, char *page);
175 175  
... ... @@ -234,8 +234,9 @@
234 234  
235 235 ret = usb_submit_urb(urb, GFP_ATOMIC);
236 236 if (ret) {
237   - atm_dbg(channel->usbatm, "%s: urb 0x%p submission failed (%d)!\n",
238   - __func__, urb, ret);
  237 + if (printk_ratelimit())
  238 + atm_warn(channel->usbatm, "%s: urb 0x%p submission failed (%d)!\n",
  239 + __func__, urb, ret);
239 240  
240 241 /* consider all errors transient and return the buffer back to the queue */
241 242 urb->status = -EAGAIN;
242 243  
... ... @@ -269,10 +270,13 @@
269 270  
270 271 spin_unlock_irqrestore(&channel->lock, flags);
271 272  
272   - if (unlikely(urb->status))
  273 + if (unlikely(urb->status)) {
  274 + if (printk_ratelimit())
  275 + atm_warn(channel->usbatm, "%s: urb 0x%p failed (%d)!\n",
  276 + __func__, urb, urb->status);
273 277 /* throttle processing in case of an error */
274 278 mod_timer(&channel->delay, jiffies + msecs_to_jiffies(THROTTLE_MSECS));
275   - else
  279 + } else
276 280 tasklet_schedule(&channel->tasklet);
277 281 }
278 282  
279 283  
... ... @@ -284,11 +288,11 @@
284 288 static inline struct usbatm_vcc_data *usbatm_find_vcc(struct usbatm_data *instance,
285 289 short vpi, int vci)
286 290 {
287   - struct usbatm_vcc_data *vcc;
  291 + struct usbatm_vcc_data *vcc_data;
288 292  
289   - list_for_each_entry(vcc, &instance->vcc_list, list)
290   - if ((vcc->vci == vci) && (vcc->vpi == vpi))
291   - return vcc;
  293 + list_for_each_entry(vcc_data, &instance->vcc_list, list)
  294 + if ((vcc_data->vci == vci) && (vcc_data->vpi == vpi))
  295 + return vcc_data;
292 296 return NULL;
293 297 }
294 298  
... ... @@ -317,7 +321,7 @@
317 321 cached_vcc = usbatm_find_vcc(instance, vpi, vci);
318 322  
319 323 if (!cached_vcc)
320   - atm_dbg(instance, "%s: unknown vpi/vci (%hd/%d)!\n", __func__, vpi, vci);
  324 + atm_rldbg(instance, "%s: unknown vpi/vci (%hd/%d)!\n", __func__, vpi, vci);
321 325 }
322 326  
323 327 if (!cached_vcc)
... ... @@ -327,7 +331,9 @@
327 331  
328 332 /* OAM F5 end-to-end */
329 333 if (pti == ATM_PTI_E2EF5) {
330   - atm_warn(instance, "%s: OAM not supported (vpi %d, vci %d)!\n", __func__, vpi, vci);
  334 + if (printk_ratelimit())
  335 + atm_warn(instance, "%s: OAM not supported (vpi %d, vci %d)!\n",
  336 + __func__, vpi, vci);
331 337 atomic_inc(&vcc->stats->rx_err);
332 338 continue;
333 339 }
... ... @@ -335,7 +341,7 @@
335 341 sarb = cached_vcc->sarb;
336 342  
337 343 if (sarb->tail + ATM_CELL_PAYLOAD > sarb->end) {
338   - atm_dbg(instance, "%s: buffer overrun (sarb->len %u, vcc: 0x%p)!\n",
  344 + atm_rldbg(instance, "%s: buffer overrun (sarb->len %u, vcc: 0x%p)!\n",
339 345 __func__, sarb->len, vcc);
340 346 /* discard cells already received */
341 347 skb_trim(sarb, 0);
... ... @@ -354,7 +360,7 @@
354 360  
355 361 /* guard against overflow */
356 362 if (length > ATM_MAX_AAL5_PDU) {
357   - atm_dbg(instance, "%s: bogus length %u (vcc: 0x%p)!\n",
  363 + atm_rldbg(instance, "%s: bogus length %u (vcc: 0x%p)!\n",
358 364 __func__, length, vcc);
359 365 atomic_inc(&vcc->stats->rx_err);
360 366 goto out;
361 367  
... ... @@ -363,14 +369,14 @@
363 369 pdu_length = usbatm_pdu_length(length);
364 370  
365 371 if (sarb->len < pdu_length) {
366   - atm_dbg(instance, "%s: bogus pdu_length %u (sarb->len: %u, vcc: 0x%p)!\n",
  372 + atm_rldbg(instance, "%s: bogus pdu_length %u (sarb->len: %u, vcc: 0x%p)!\n",
367 373 __func__, pdu_length, sarb->len, vcc);
368 374 atomic_inc(&vcc->stats->rx_err);
369 375 goto out;
370 376 }
371 377  
372 378 if (crc32_be(~0, sarb->tail - pdu_length, pdu_length) != 0xc704dd7b) {
373   - atm_dbg(instance, "%s: packet failed crc check (vcc: 0x%p)!\n",
  379 + atm_rldbg(instance, "%s: packet failed crc check (vcc: 0x%p)!\n",
374 380 __func__, vcc);
375 381 atomic_inc(&vcc->stats->rx_err);
376 382 goto out;
... ... @@ -379,7 +385,9 @@
379 385 vdbg("%s: got packet (length: %u, pdu_length: %u, vcc: 0x%p)", __func__, length, pdu_length, vcc);
380 386  
381 387 if (!(skb = dev_alloc_skb(length))) {
382   - atm_dbg(instance, "%s: no memory for skb (length: %u)!\n", __func__, length);
  388 + if (printk_ratelimit())
  389 + atm_err(instance, "%s: no memory for skb (length: %u)!\n",
  390 + __func__, length);
383 391 atomic_inc(&vcc->stats->rx_drop);
384 392 goto out;
385 393 }
... ... @@ -387,7 +395,8 @@
387 395 vdbg("%s: allocated new sk_buff (skb: 0x%p, skb->truesize: %u)", __func__, skb, skb->truesize);
388 396  
389 397 if (!atm_charge(vcc, skb->truesize)) {
390   - atm_dbg(instance, "%s: failed atm_charge (skb->truesize: %u)!\n", __func__, skb->truesize);
  398 + atm_rldbg(instance, "%s: failed atm_charge (skb->truesize: %u)!\n",
  399 + __func__, skb->truesize);
391 400 dev_kfree_skb(skb);
392 401 goto out; /* atm_charge increments rx_drop */
393 402 }
394 403  
... ... @@ -600,13 +609,13 @@
600 609 }
601 610  
602 611 if (vcc->qos.aal != ATM_AAL5) {
603   - atm_dbg(instance, "%s: unsupported ATM type %d!\n", __func__, vcc->qos.aal);
  612 + atm_rldbg(instance, "%s: unsupported ATM type %d!\n", __func__, vcc->qos.aal);
604 613 err = -EINVAL;
605 614 goto fail;
606 615 }
607 616  
608 617 if (skb->len > ATM_MAX_AAL5_PDU) {
609   - atm_dbg(instance, "%s: packet too long (%d vs %d)!\n",
  618 + atm_rldbg(instance, "%s: packet too long (%d vs %d)!\n",
610 619 __func__, skb->len, ATM_MAX_AAL5_PDU);
611 620 err = -EINVAL;
612 621 goto fail;
613 622  
614 623  
... ... @@ -665,16 +674,16 @@
665 674 ** ATM **
666 675 **********/
667 676  
668   -static void usbatm_atm_dev_close(struct atm_dev *dev)
  677 +static void usbatm_atm_dev_close(struct atm_dev *atm_dev)
669 678 {
670   - struct usbatm_data *instance = dev->dev_data;
  679 + struct usbatm_data *instance = atm_dev->dev_data;
671 680  
672 681 dbg("%s", __func__);
673 682  
674 683 if (!instance)
675 684 return;
676 685  
677   - dev->dev_data = NULL;
  686 + atm_dev->dev_data = NULL; /* catch bugs */
678 687 usbatm_put_instance(instance); /* taken in usbatm_atm_init */
679 688 }
680 689  
681 690  
682 691  
... ... @@ -735,14 +744,19 @@
735 744 atm_dbg(instance, "%s: vpi %hd, vci %d\n", __func__, vpi, vci);
736 745  
737 746 /* only support AAL5 */
738   - if ((vcc->qos.aal != ATM_AAL5) || (vcc->qos.rxtp.max_sdu < 0)
739   - || (vcc->qos.rxtp.max_sdu > ATM_MAX_AAL5_PDU)) {
740   - atm_dbg(instance, "%s: unsupported ATM type %d!\n", __func__, vcc->qos.aal);
  747 + if ((vcc->qos.aal != ATM_AAL5)) {
  748 + atm_warn(instance, "%s: unsupported ATM type %d!\n", __func__, vcc->qos.aal);
741 749 return -EINVAL;
742 750 }
743 751  
744   - down(&instance->serialize); /* vs self, usbatm_atm_close */
  752 + /* sanity checks */
  753 + if ((vcc->qos.rxtp.max_sdu < 0) || (vcc->qos.rxtp.max_sdu > ATM_MAX_AAL5_PDU)) {
  754 + atm_dbg(instance, "%s: max_sdu %d out of range!\n", __func__, vcc->qos.rxtp.max_sdu);
  755 + return -EINVAL;
  756 + }
745 757  
  758 + down(&instance->serialize); /* vs self, usbatm_atm_close, usbatm_usb_disconnect */
  759 +
746 760 if (usbatm_find_vcc(instance, vpi, vci)) {
747 761 atm_dbg(instance, "%s: %hd/%d already in use!\n", __func__, vpi, vci);
748 762 ret = -EADDRINUSE;
... ... @@ -750,7 +764,7 @@
750 764 }
751 765  
752 766 if (!(new = kmalloc(sizeof(struct usbatm_vcc_data), GFP_KERNEL))) {
753   - atm_dbg(instance, "%s: no memory for vcc_data!\n", __func__);
  767 + atm_err(instance, "%s: no memory for vcc_data!\n", __func__);
754 768 ret = -ENOMEM;
755 769 goto fail;
756 770 }
... ... @@ -762,7 +776,7 @@
762 776  
763 777 new->sarb = alloc_skb(usbatm_pdu_length(vcc->qos.rxtp.max_sdu), GFP_KERNEL);
764 778 if (!new->sarb) {
765   - atm_dbg(instance, "%s: no memory for SAR buffer!\n", __func__);
  779 + atm_err(instance, "%s: no memory for SAR buffer!\n", __func__);
766 780 ret = -ENOMEM;
767 781 goto fail;
768 782 }
... ... @@ -806,7 +820,7 @@
806 820  
807 821 usbatm_cancel_send(instance, vcc);
808 822  
809   - down(&instance->serialize); /* vs self, usbatm_atm_open */
  823 + down(&instance->serialize); /* vs self, usbatm_atm_open, usbatm_usb_disconnect */
810 824  
811 825 tasklet_disable(&instance->rx_channel.tasklet);
812 826 list_del(&vcc_data->list);
... ... @@ -829,7 +843,7 @@
829 843 atm_dbg(instance, "%s successful\n", __func__);
830 844 }
831 845  
832   -static int usbatm_atm_ioctl(struct atm_dev *dev, unsigned int cmd,
  846 +static int usbatm_atm_ioctl(struct atm_dev *atm_dev, unsigned int cmd,
833 847 void __user * arg)
834 848 {
835 849 switch (cmd) {
836 850  
... ... @@ -845,10 +859,13 @@
845 859 struct atm_dev *atm_dev;
846 860 int ret, i;
847 861  
848   - /* ATM init */
  862 + /* ATM init. The ATM initialization scheme suffers from an intrinsic race
  863 + * condition: callbacks we register can be executed at once, before we have
  864 + * initialized the struct atm_dev. To protect against this, all callbacks
  865 + * abort if atm_dev->dev_data is NULL. */
849 866 atm_dev = atm_dev_register(instance->driver_name, &usbatm_atm_devops, -1, NULL);
850 867 if (!atm_dev) {
851   - usb_dbg(instance, "%s: failed to register ATM device!\n", __func__);
  868 + usb_err(instance, "%s: failed to register ATM device!\n", __func__);
852 869 return -1;
853 870 }
854 871  
855 872  
856 873  
... ... @@ -862,12 +879,13 @@
862 879 atm_dev->link_rate = 128 * 1000 / 424;
863 880  
864 881 if (instance->driver->atm_start && ((ret = instance->driver->atm_start(instance, atm_dev)) < 0)) {
865   - atm_dbg(instance, "%s: atm_start failed: %d!\n", __func__, ret);
  882 + atm_err(instance, "%s: atm_start failed: %d!\n", __func__, ret);
866 883 goto fail;
867 884 }
868 885  
869   - /* ready for ATM callbacks */
870 886 usbatm_get_instance(instance); /* dropped in usbatm_atm_dev_close */
  887 +
  888 + /* ready for ATM callbacks */
871 889 mb();
872 890 atm_dev->dev_data = instance;
873 891  
... ... @@ -915,7 +933,7 @@
915 933 int ret = kernel_thread(usbatm_do_heavy_init, instance, CLONE_KERNEL);
916 934  
917 935 if (ret < 0) {
918   - usb_dbg(instance, "%s: failed to create kernel_thread (%d)!\n", __func__, ret);
  936 + usb_err(instance, "%s: failed to create kernel_thread (%d)!\n", __func__, ret);
919 937 return ret;
920 938 }
921 939  
... ... @@ -953,7 +971,7 @@
953 971 int i, length;
954 972 int need_heavy;
955 973  
956   - dev_dbg(dev, "%s: trying driver %s with vendor=0x%x, product=0x%x, ifnum %d\n",
  974 + dev_dbg(dev, "%s: trying driver %s with vendor=%04x, product=%04x, ifnum %2d\n",
957 975 __func__, driver->driver_name,
958 976 le16_to_cpu(usb_dev->descriptor.idVendor),
959 977 le16_to_cpu(usb_dev->descriptor.idProduct),
... ... @@ -962,7 +980,7 @@
962 980 /* instance init */
963 981 instance = kzalloc(sizeof(*instance) + sizeof(struct urb *) * (num_rcv_urbs + num_snd_urbs), GFP_KERNEL);
964 982 if (!instance) {
965   - dev_dbg(dev, "%s: no memory for instance data!\n", __func__);
  983 + dev_err(dev, "%s: no memory for instance data!\n", __func__);
966 984 return -ENOMEM;
967 985 }
968 986  
... ... @@ -998,7 +1016,7 @@
998 1016 bind:
999 1017 need_heavy = 1;
1000 1018 if (driver->bind && (error = driver->bind(instance, intf, id, &need_heavy)) < 0) {
1001   - dev_dbg(dev, "%s: bind failed: %d!\n", __func__, error);
  1019 + dev_err(dev, "%s: bind failed: %d!\n", __func__, error);
1002 1020 goto fail_free;
1003 1021 }
1004 1022  
... ... @@ -1044,7 +1062,7 @@
1044 1062  
1045 1063 urb = usb_alloc_urb(iso_packets, GFP_KERNEL);
1046 1064 if (!urb) {
1047   - dev_dbg(dev, "%s: no memory for urb %d!\n", __func__, i);
  1065 + dev_err(dev, "%s: no memory for urb %d!\n", __func__, i);
1048 1066 goto fail_unbind;
1049 1067 }
1050 1068  
1051 1069  
... ... @@ -1052,9 +1070,10 @@
1052 1070  
1053 1071 buffer = kmalloc(channel->buf_size, GFP_KERNEL);
1054 1072 if (!buffer) {
1055   - dev_dbg(dev, "%s: no memory for buffer %d!\n", __func__, i);
  1073 + dev_err(dev, "%s: no memory for buffer %d!\n", __func__, i);
1056 1074 goto fail_unbind;
1057 1075 }
  1076 + /* zero the tx padding to avoid leaking information */
1058 1077 memset(buffer, 0, channel->buf_size);
1059 1078  
1060 1079 usb_fill_bulk_urb(urb, instance->usb_dev, channel->endpoint,
drivers/usb/atm/usbatm.h
... ... @@ -24,22 +24,21 @@
24 24 #ifndef _USBATM_H_
25 25 #define _USBATM_H_
26 26  
27   -#include <linux/config.h>
28   -
29   -/*
30   -#define VERBOSE_DEBUG
31   -*/
32   -
33 27 #include <asm/semaphore.h>
34 28 #include <linux/atm.h>
35 29 #include <linux/atmdev.h>
36 30 #include <linux/completion.h>
37 31 #include <linux/device.h>
  32 +#include <linux/kernel.h>
38 33 #include <linux/kref.h>
39 34 #include <linux/list.h>
40 35 #include <linux/stringify.h>
41 36 #include <linux/usb.h>
42 37  
  38 +/*
  39 +#define VERBOSE_DEBUG
  40 +*/
  41 +
43 42 #ifdef DEBUG
44 43 #define UDSL_ASSERT(x) BUG_ON(!(x))
45 44 #else
46 45  
... ... @@ -52,8 +51,13 @@
52 51 dev_info(&(instance)->usb_intf->dev , format , ## arg)
53 52 #define usb_warn(instance, format, arg...) \
54 53 dev_warn(&(instance)->usb_intf->dev , format , ## arg)
  54 +#ifdef DEBUG
55 55 #define usb_dbg(instance, format, arg...) \
56   - dev_dbg(&(instance)->usb_intf->dev , format , ## arg)
  56 + dev_printk(KERN_DEBUG , &(instance)->usb_intf->dev , format , ## arg)
  57 +#else
  58 +#define usb_dbg(instance, format, arg...) \
  59 + do {} while (0)
  60 +#endif
57 61  
58 62 /* FIXME: move to dev_* once ATM is driver model aware */
59 63 #define atm_printk(level, instance, format, arg...) \
60 64  
... ... @@ -69,9 +73,14 @@
69 73 #ifdef DEBUG
70 74 #define atm_dbg(instance, format, arg...) \
71 75 atm_printk(KERN_DEBUG, instance , format , ## arg)
  76 +#define atm_rldbg(instance, format, arg...) \
  77 + if (printk_ratelimit()) \
  78 + atm_printk(KERN_DEBUG, instance , format , ## arg)
72 79 #else
73 80 #define atm_dbg(instance, format, arg...) \
74 81 do {} while (0)
  82 +#define atm_rldbg(instance, format, arg...) \
  83 + do {} while (0)
75 84 #endif
76 85  
77 86  
... ... @@ -171,7 +180,7 @@
171 180 struct usbatm_channel tx_channel;
172 181  
173 182 struct sk_buff_head sndqueue;
174   - struct sk_buff *current_skb; /* being emptied */
  183 + struct sk_buff *current_skb; /* being emptied */
175 184  
176 185 struct urb *urbs[0];
177 186 };
drivers/usb/atm/xusbatm.c
... ... @@ -61,7 +61,7 @@
61 61 return 0;
62 62 }
63 63  
64   -static int xusbatm_bind(struct usbatm_data *usbatm_instance,
  64 +static int xusbatm_bind(struct usbatm_data *usbatm,
65 65 struct usb_interface *intf, const struct usb_device_id *id,
66 66 int *need_heavy_init)
67 67 {
68 68  
... ... @@ -72,14 +72,14 @@
72 72 u8 searched_ep = rx_ep_present ? tx_endpoint[drv_ix] : rx_endpoint[drv_ix];
73 73 int i, ret;
74 74  
75   - usb_dbg(usbatm_instance, "%s: binding driver %d: vendor %#x product %#x"
76   - " rx: ep %#x padd %d tx: ep %#x padd %d\n",
  75 + usb_dbg(usbatm, "%s: binding driver %d: vendor %04x product %04x"
  76 + " rx: ep %02x padd %d tx: ep %02x padd %d\n",
77 77 __func__, drv_ix, vendor[drv_ix], product[drv_ix],
78 78 rx_endpoint[drv_ix], rx_padding[drv_ix],
79 79 tx_endpoint[drv_ix], tx_padding[drv_ix]);
80 80  
81 81 if (!rx_ep_present && !tx_ep_present) {
82   - usb_dbg(usbatm_instance, "%s: intf #%d has neither rx (%#x) nor tx (%#x) endpoint\n",
  82 + usb_dbg(usbatm, "%s: intf #%d has neither rx (%#x) nor tx (%#x) endpoint\n",
83 83 __func__, intf->altsetting->desc.bInterfaceNumber,
84 84 rx_endpoint[drv_ix], tx_endpoint[drv_ix]);
85 85 return -ENODEV;
86 86  
87 87  
88 88  
89 89  
90 90  
... ... @@ -93,26 +93,27 @@
93 93  
94 94 if (cur_if != intf && usb_intf_has_ep(cur_if, searched_ep)) {
95 95 ret = usb_driver_claim_interface(&xusbatm_usb_driver,
96   - cur_if, usbatm_instance);
  96 + cur_if, usbatm);
97 97 if (!ret)
98   - usb_err(usbatm_instance, "%s: failed to claim interface #%d (%d)\n",
  98 + usb_err(usbatm, "%s: failed to claim interface #%d (%d)\n",
99 99 __func__, cur_if->altsetting->desc.bInterfaceNumber, ret);
100 100 return ret;
101 101 }
102 102 }
103 103  
104   - usb_err(usbatm_instance, "%s: no interface has endpoint %#x\n",
  104 + usb_err(usbatm, "%s: no interface has endpoint %#x\n",
105 105 __func__, searched_ep);
106 106 return -ENODEV;
107 107 }
108 108  
109   -static void xusbatm_unbind(struct usbatm_data *usbatm_instance,
  109 +static void xusbatm_unbind(struct usbatm_data *usbatm,
110 110 struct usb_interface *intf)
111 111 {
112 112 struct usb_device *usb_dev = interface_to_usbdev(intf);
113 113 int i;
114   - usb_dbg(usbatm_instance, "%s entered\n", __func__);
115 114  
  115 + usb_dbg(usbatm, "%s entered\n", __func__);
  116 +
116 117 for(i = 0; i < usb_dev->actconfig->desc.bNumInterfaces; i++) {
117 118 struct usb_interface *cur_if = usb_dev->actconfig->interface[i];
118 119 usb_set_intfdata(cur_if, NULL);
119 120  
... ... @@ -120,10 +121,10 @@
120 121 }
121 122 }
122 123  
123   -static int xusbatm_atm_start(struct usbatm_data *usbatm_instance,
  124 +static int xusbatm_atm_start(struct usbatm_data *usbatm,
124 125 struct atm_dev *atm_dev)
125 126 {
126   - atm_dbg(usbatm_instance, "%s entered\n", __func__);
  127 + atm_dbg(usbatm, "%s entered\n", __func__);
127 128  
128 129 /* use random MAC as we've no way to get it from the device */
129 130 random_ether_addr(atm_dev->esi);