Hrm... interesting idea.  Probably a good one, too.  Tho it happens to
partially conflict with a change I'm working on to move the vendor/product
strings into the us_data structure.

I'll have a patch on monday which will incorporate part of this, my string
fixes, and some fixes to make ORB drives work.  I'm really starting to
hate ORB drives...

Matt Dharm

On Sun, 16 Apr 2000, Pavel Machek wrote:

> Hi!
> 
> This kills code duplication from usb-storage. At same time, it fixes
> printk logging levels for few messages.
> 
>                                                               Pavel
> 
> --- clean/drivers/usb/usb-storage.c   Sat Apr 15 13:11:36 2000
> +++ linux/drivers/usb/usb-storage.c   Sun Apr 16 20:04:16 2000
> @@ -84,8 +84,10 @@
>  
>       /* function pointers for this device */
>       trans_cmnd              transport;       /* transport function */
> +     char                    *transport_name;
>       trans_reset             transport_reset; /* transport device reset */
>       proto_cmnd              proto_handler;   /* protocol handler */
> +     char                    *proto_name;
>  
>       /* SCSI interfaces */
>       GUID(guid);                              /* unique dev id */
> @@ -1172,74 +1174,22 @@
>       /* print product and vendor strings */
>       tmp_ptr = kmalloc(256, GFP_KERNEL);
>       if (!us->pusb_dev || !tmp_ptr) {
> -             SPRINTF("    Vendor: Unknown Vendor\n");
> -             SPRINTF("   Product: Unknown Product\n");
> +             SPRINTF("     Error: Out of memory or device removed\n");
>       } else {
>               SPRINTF("    Vendor: ");
>               if (usb_string(us->pusb_dev, us->pusb_dev->descriptor.iManufacturer, 
>tmp_ptr, 256) > 0)
>                       SPRINTF("%s\n", tmp_ptr);
> -             else
> -                     SPRINTF("Unknown Vendor\n");
> +             else    SPRINTF("Unknown Vendor\n");
>      
>               SPRINTF("   Product: ");
>               if (usb_string(us->pusb_dev, us->pusb_dev->descriptor.iProduct, 
>tmp_ptr, 256) > 0)
>                       SPRINTF("%s\n", tmp_ptr);
> -             else
> -                     SPRINTF("Unknown Product\n");
> +             else    SPRINTF("Unknown Product\n");
>               kfree(tmp_ptr);
>       }
>  
> -     SPRINTF("  Protocol: ");
> -     switch (us->protocol) {
> -     case US_PR_CB:
> -             SPRINTF("Control/Bulk\n");
> -             break;
> -    
> -     case US_PR_CBI:
> -             SPRINTF("Control/Bulk/Interrupt\n");
> -             break;
> -    
> -     case US_PR_BULK:
> -             SPRINTF("Bulk only\n");
> -             break;
> -    
> -     default:
> -             SPRINTF("Unknown Protocol\n");
> -             break;
> -     }
> -
> -     SPRINTF(" Transport: ");
> -     switch (us->subclass) {
> -     case US_SC_RBC:
> -             SPRINTF("Reduced Block Commands\n");
> -             break;
> -
> -     case US_SC_8020:
> -             SPRINTF("8020i\n");
> -             break;
> -
> -     case US_SC_QIC:
> -             SPRINTF("QIC-157\n");
> -             break;
> -    
> -     case US_SC_8070:
> -             SPRINTF("8070i\n");
> -             break;
> -
> -     case US_SC_SCSI:
> -             SPRINTF("Transparent SCSI\n");
> -             break;
> -    
> -     case US_SC_UFI:
> -             SPRINTF("Uniform Floppy Interface\n");
> -             break;
> -    
> -     default:
> -             SPRINTF("Unknown Transport\n");
> -             break;
> -     }
> -
> -     /* show the GUID of the device */
> +     SPRINTF("  Protocol: %s\n", us->proto_name);
> +     SPRINTF(" Transport: %s\n", us->transport_name);
>       SPRINTF("      GUID: " GUID_FORMAT "\n", GUID_ARGS(us->guid));
>  
>       /* release our lock on the data structures */
> @@ -1622,7 +1572,7 @@
>       
>               if ((ss = (struct us_data *)kmalloc(sizeof(struct us_data), 
>                                                   GFP_KERNEL)) == NULL) {
> -                     printk(KERN_WARNING USB_STORAGE "Out of memory\n");
> +                     printk(KERN_ERR USB_STORAGE "Out of memory for new device\n");
>                       up(&us_list_semaphore);
>                       return NULL;
>               }
> @@ -1657,65 +1607,59 @@
>               US_DEBUGP("Transport: ");
>               switch (ss->protocol) {
>               case US_PR_CB:
> -                     US_DEBUGPX("Control/Bulk\n");
> +                     ss->transport_name = "Control/Bulk";
>                       ss->transport = CB_transport;
>                       ss->transport_reset = CB_reset;
>                       break;
>                       
>               case US_PR_CBI:
> -                     US_DEBUGPX("Control/Bulk/Interrupt\n");
> +                     ss->transport_name = "Control/Bulk/Interrupt";
>                       ss->transport = CBI_transport;
>                       ss->transport_reset = CB_reset;
>                       break;
>                       
>               case US_PR_BULK:
> -                     US_DEBUGPX("Bulk\n");
> +                     ss->transport_name = "Bulk only";
>                       ss->transport = Bulk_transport;
>                       ss->transport_reset = Bulk_reset;
>                       break;
>                       
>               default:
> -                     US_DEBUGPX("Unknown\n");    
> -                     kfree(ss);
> -                     return NULL;
> -                     break;
> +                     ss->transport_name = "Unknown";
> +                     ss->transport = NULL;
>               }
> +             US_DEBUGP("Transport: %s\n", ss->transport_name);
>  
> -             US_DEBUGP("Protocol: ");
>               switch (ss->subclass) {
> -             case US_SC_RBC:
> -                     US_DEBUGPX("Reduced Block Commands (RBC)\n");
> -                     ss->proto_handler = transparent_scsi_command;
> +             case US_SC_RBC:  ss->proto_name="Reduced Block Commands"; 
> +                     ss->proto_handler = transparent_scsi_command; 
>                       break;
> -
> -             case US_SC_8020:
> -                     US_DEBUGPX("8020i\n");
> +             case US_SC_8020: ss->proto_name="8020i";                  
>                       ss->proto_handler = ATAPI_command;
>                       break;
> -
> -             case US_SC_QIC:
> -                     US_DEBUGPX("QIC-157\n");
> +             case US_SC_QIC:  ss->proto_name="QIC157";
> +                     ss->proto_handler = NULL;
>                       break;
> -
> -             case US_SC_8070:
> -                     US_DEBUGPX("8070i\n");
> +             case US_SC_8070: ss->proto_name="8070i";                  
>                       ss->proto_handler = ATAPI_command;
>                       break;
> -
> -             case US_SC_SCSI:
> -                     US_DEBUGPX("Transparent SCSI\n");
> +             case US_SC_SCSI: ss->proto_name="Transparent SCSI";       
>                       ss->proto_handler = transparent_scsi_command;
>                       break;
> -
> -             case US_SC_UFI:
> -                     US_DEBUGPX("UFI\n");
> +             case US_SC_UFI:  ss->proto_name="UFI";                    
>                       ss->proto_handler = ufi_command;
>                       break;
> -
> -             default:
> -                     US_DEBUGPX("Unknown\n");
> +             default: ss->proto_name="Unknown";                
> +                     ss->proto_handler = NULL;            
>                       break;
>               }
> +             US_DEBUGP("Protocol: %s\n", ss->proto_name);
> +             if ((!ss->proto_handler) || (!ss->transport)) {
> +                     printk( KERN_ERR USB_STORAGE "Unknown transport or 
>protocol!\n" );
> +                     kfree(ss);
> +                     return NULL;
> +             }
> +
>  
>               if (ss->protocol == US_PR_CBI) {
>                       /* set up so we'll wait for notification */
> 
> 
> 

-- 
Matthew Dharm                              Home: [EMAIL PROTECTED] 
Engineer, Qualcomm, Inc.                         Work: [EMAIL PROTECTED]

I'm a pink gumdrop! How can anything be worse?!!
                                        -- Erwin
User Friendly, 10/4/1998


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to