aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/block/mtip32xx/mtip32xx.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/block/mtip32xx/mtip32xx.h')
-rw-r--r--drivers/block/mtip32xx/mtip32xx.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/block/mtip32xx/mtip32xx.h b/drivers/block/mtip32xx/mtip32xx.h
index 8e8334c9dd0f..3bb8a295fbe4 100644
--- a/drivers/block/mtip32xx/mtip32xx.h
+++ b/drivers/block/mtip32xx/mtip32xx.h
@@ -52,6 +52,9 @@
52#define MTIP_FTL_REBUILD_MAGIC 0xED51 52#define MTIP_FTL_REBUILD_MAGIC 0xED51
53#define MTIP_FTL_REBUILD_TIMEOUT_MS 2400000 53#define MTIP_FTL_REBUILD_TIMEOUT_MS 2400000
54 54
55/* unaligned IO handling */
56#define MTIP_MAX_UNALIGNED_SLOTS 8
57
55/* Macro to extract the tag bit number from a tag value. */ 58/* Macro to extract the tag bit number from a tag value. */
56#define MTIP_TAG_BIT(tag) (tag & 0x1F) 59#define MTIP_TAG_BIT(tag) (tag & 0x1F)
57 60
@@ -333,6 +336,8 @@ struct mtip_cmd {
333 336
334 int scatter_ents; /* Number of scatter list entries used */ 337 int scatter_ents; /* Number of scatter list entries used */
335 338
339 int unaligned; /* command is unaligned on 4k boundary */
340
336 struct scatterlist sg[MTIP_MAX_SG]; /* Scatter list entries */ 341 struct scatterlist sg[MTIP_MAX_SG]; /* Scatter list entries */
337 342
338 int retries; /* The number of retries left for this command. */ 343 int retries; /* The number of retries left for this command. */
@@ -452,6 +457,10 @@ struct mtip_port {
452 * command slots available. 457 * command slots available.
453 */ 458 */
454 struct semaphore cmd_slot; 459 struct semaphore cmd_slot;
460
461 /* Semaphore to control queue depth of unaligned IOs */
462 struct semaphore cmd_slot_unal;
463
455 /* Spinlock for working around command-issue bug. */ 464 /* Spinlock for working around command-issue bug. */
456 spinlock_t cmd_issue_lock[MTIP_MAX_SLOT_GROUPS]; 465 spinlock_t cmd_issue_lock[MTIP_MAX_SLOT_GROUPS];
457}; 466};
@@ -502,6 +511,8 @@ struct driver_data {
502 511
503 int isr_binding; 512 int isr_binding;
504 513
514 int unal_qdepth; /* qdepth of unaligned IO queue */
515
505 struct list_head online_list; /* linkage for online list */ 516 struct list_head online_list; /* linkage for online list */
506 517
507 struct list_head remove_list; /* linkage for removing list */ 518 struct list_head remove_list; /* linkage for removing list */