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 */


-- 
I'm [EMAIL PROTECTED] "In my country we have almost anarchy and I don't care."
Panos Katsaloulis describing me w.r.t. patents me at [EMAIL PROTECTED]

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

Reply via email to