]> err.no Git - linux-2.6/blobdiff - drivers/scsi/ibmvscsi/ibmvscsi.c
Merge with http://kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
[linux-2.6] / drivers / scsi / ibmvscsi / ibmvscsi.c
index 5b14934ba861f0f119a9c48e809b0aea8340ebbc..822b9fa706f385f789d6cbbe125b971d586e4ec1 100644 (file)
@@ -727,6 +727,16 @@ static void adapter_info_rsp(struct srp_event_struct *evt_struct)
                if (hostdata->madapter_info.port_max_txu[0]) 
                        hostdata->host->max_sectors = 
                                hostdata->madapter_info.port_max_txu[0] >> 9;
+               
+               if (hostdata->madapter_info.os_type == 3 &&
+                   strcmp(hostdata->madapter_info.srp_version, "1.6a") <= 0) {
+                       printk("ibmvscsi: host (Ver. %s) doesn't support large"
+                              "transfers\n",
+                              hostdata->madapter_info.srp_version);
+                       printk("ibmvscsi: limiting scatterlists to %d\n",
+                              MAX_INDIRECT_BUFS);
+                       hostdata->host->sg_tablesize = MAX_INDIRECT_BUFS;
+               }
        }
 }
 
@@ -1533,13 +1543,16 @@ static struct vio_device_id ibmvscsi_device_table[] __devinitdata = {
        {"vscsi", "IBM,v-scsi"},
        { "", "" }
 };
-
 MODULE_DEVICE_TABLE(vio, ibmvscsi_device_table);
+
 static struct vio_driver ibmvscsi_driver = {
-       .name = "ibmvscsi",
        .id_table = ibmvscsi_device_table,
        .probe = ibmvscsi_probe,
-       .remove = ibmvscsi_remove
+       .remove = ibmvscsi_remove,
+       .driver = {
+               .name = "ibmvscsi",
+               .owner = THIS_MODULE,
+       }
 };
 
 int __init ibmvscsi_module_init(void)