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]