aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/block/cciss.c12
-rw-r--r--drivers/block/cciss.h1
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;