diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/block/cciss.c | 12 | ||||
-rw-r--r-- | drivers/block/cciss.h | 1 |
2 files changed, 10 insertions, 3 deletions
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c index a17223c43aeb..e61279f6f26e 100644 --- a/drivers/block/cciss.c +++ b/drivers/block/cciss.c | |||
@@ -269,6 +269,7 @@ static int cciss_proc_get_info(char *buffer, char **start, off_t offset, | |||
269 | "Firmware Version: %c%c%c%c\n" | 269 | "Firmware Version: %c%c%c%c\n" |
270 | "IRQ: %d\n" | 270 | "IRQ: %d\n" |
271 | "Logical drives: %d\n" | 271 | "Logical drives: %d\n" |
272 | "Max sectors: %d\n" | ||
272 | "Current Q depth: %d\n" | 273 | "Current Q depth: %d\n" |
273 | "Current # commands on controller: %d\n" | 274 | "Current # commands on controller: %d\n" |
274 | "Max Q depth since init: %d\n" | 275 | "Max Q depth since init: %d\n" |
@@ -279,7 +280,9 @@ static int cciss_proc_get_info(char *buffer, char **start, off_t offset, | |||
279 | (unsigned long)h->board_id, | 280 | (unsigned long)h->board_id, |
280 | h->firm_ver[0], h->firm_ver[1], h->firm_ver[2], | 281 | h->firm_ver[0], h->firm_ver[1], h->firm_ver[2], |
281 | h->firm_ver[3], (unsigned int)h->intr[SIMPLE_MODE_INT], | 282 | h->firm_ver[3], (unsigned int)h->intr[SIMPLE_MODE_INT], |
282 | h->num_luns, h->Qdepth, h->commands_outstanding, | 283 | h->num_luns, |
284 | h->cciss_max_sectors, | ||
285 | h->Qdepth, h->commands_outstanding, | ||
283 | h->maxQsinceinit, h->max_outstanding, h->maxSG); | 286 | h->maxQsinceinit, h->max_outstanding, h->maxSG); |
284 | 287 | ||
285 | pos += size; | 288 | pos += size; |
@@ -1395,7 +1398,7 @@ static void cciss_update_drive_info(int ctlr, int drv_index) | |||
1395 | /* This is a limit in the driver and could be eliminated. */ | 1398 | /* This is a limit in the driver and could be eliminated. */ |
1396 | blk_queue_max_phys_segments(disk->queue, MAXSGENTRIES); | 1399 | blk_queue_max_phys_segments(disk->queue, MAXSGENTRIES); |
1397 | 1400 | ||
1398 | blk_queue_max_sectors(disk->queue, 512); | 1401 | blk_queue_max_sectors(disk->queue, h->cciss_max_sectors); |
1399 | 1402 | ||
1400 | blk_queue_softirq_done(disk->queue, cciss_softirq_done); | 1403 | blk_queue_softirq_done(disk->queue, cciss_softirq_done); |
1401 | 1404 | ||
@@ -3347,6 +3350,9 @@ static int __devinit cciss_init_one(struct pci_dev *pdev, | |||
3347 | hba[i]->access.set_intr_mask(hba[i], CCISS_INTR_ON); | 3350 | hba[i]->access.set_intr_mask(hba[i], CCISS_INTR_ON); |
3348 | 3351 | ||
3349 | cciss_procinit(i); | 3352 | cciss_procinit(i); |
3353 | |||
3354 | hba[i]->cciss_max_sectors = 2048; | ||
3355 | |||
3350 | hba[i]->busy_initializing = 0; | 3356 | hba[i]->busy_initializing = 0; |
3351 | 3357 | ||
3352 | for (j = 0; j < NWD; j++) { /* mfm */ | 3358 | for (j = 0; j < NWD; j++) { /* mfm */ |
@@ -3371,7 +3377,7 @@ static int __devinit cciss_init_one(struct pci_dev *pdev, | |||
3371 | /* This is a limit in the driver and could be eliminated. */ | 3377 | /* This is a limit in the driver and could be eliminated. */ |
3372 | blk_queue_max_phys_segments(q, MAXSGENTRIES); | 3378 | blk_queue_max_phys_segments(q, MAXSGENTRIES); |
3373 | 3379 | ||
3374 | blk_queue_max_sectors(q, 512); | 3380 | blk_queue_max_sectors(q, hba[i]->cciss_max_sectors); |
3375 | 3381 | ||
3376 | blk_queue_softirq_done(q, cciss_softirq_done); | 3382 | blk_queue_softirq_done(q, cciss_softirq_done); |
3377 | 3383 | ||
diff --git a/drivers/block/cciss.h b/drivers/block/cciss.h index 0d765f9237be..c3df673f860b 100644 --- a/drivers/block/cciss.h +++ b/drivers/block/cciss.h | |||
@@ -77,6 +77,7 @@ struct ctlr_info | |||
77 | unsigned int intr[4]; | 77 | unsigned int intr[4]; |
78 | unsigned int msix_vector; | 78 | unsigned int msix_vector; |
79 | unsigned int msi_vector; | 79 | unsigned int msi_vector; |
80 | int cciss_max_sectors; | ||
80 | BYTE cciss_read; | 81 | BYTE cciss_read; |
81 | BYTE cciss_write; | 82 | BYTE cciss_write; |
82 | BYTE cciss_read_capacity; | 83 | BYTE cciss_read_capacity; |