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]