]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/scsi/mpt2sas/mpt2sas_base.h
Merge tag 'v2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / drivers / scsi / mpt2sas / mpt2sas_base.h
index 0b15a8bdebfc4a62f7bd119b2fca641c9d48cac8..283568c6fb049728c432774185a6b2f70000e37f 100644 (file)
@@ -69,8 +69,8 @@
 #define MPT2SAS_DRIVER_NAME            "mpt2sas"
 #define MPT2SAS_AUTHOR "LSI Corporation <DL-MPTFusionLinux@lsi.com>"
 #define MPT2SAS_DESCRIPTION    "LSI MPT Fusion SAS 2.0 Device Driver"
-#define MPT2SAS_DRIVER_VERSION         "06.100.00.00"
-#define MPT2SAS_MAJOR_VERSION          06
+#define MPT2SAS_DRIVER_VERSION         "07.100.00.00"
+#define MPT2SAS_MAJOR_VERSION          07
 #define MPT2SAS_MINOR_VERSION          100
 #define MPT2SAS_BUILD_VERSION          00
 #define MPT2SAS_RELEASE_VERSION                00
@@ -418,6 +418,18 @@ enum reset_type {
        SOFT_RESET,
 };
 
+/**
+ * struct chain_tracker - firmware chain tracker
+ * @chain_buffer: chain buffer
+ * @chain_buffer_dma: physical address
+ * @tracker_list: list of free request (ioc->free_chain_list)
+ */
+struct chain_tracker {
+       void *chain_buffer;
+       dma_addr_t chain_buffer_dma;
+       struct list_head tracker_list;
+};
+
 /**
  * struct request_tracker - firmware request tracker
  * @smid: system message id
@@ -430,6 +442,7 @@ struct request_tracker {
        u16     smid;
        struct scsi_cmnd *scmd;
        u8      cb_idx;
+       struct list_head chain_list;
        struct list_head tracker_list;
 };
 
@@ -704,8 +717,10 @@ struct MPT2SAS_ADAPTER {
        wait_queue_head_t reset_wq;
 
        /* chain */
-       u8              *chain;
-       dma_addr_t      chain_dma;
+       struct chain_tracker *chain_lookup;
+       struct list_head free_chain_list;
+       struct dma_pool *chain_dma_pool;
+       ulong           chain_pages;
        u16             max_sges_in_main_message;
        u16             max_sges_in_chain_message;
        u16             chains_needed_per_io;
@@ -737,6 +752,8 @@ struct MPT2SAS_ADAPTER {
        u16             reply_sz;
        u8              *reply;
        dma_addr_t      reply_dma;
+       u32             reply_dma_max_address;
+       u32             reply_dma_min_address;
        struct dma_pool *reply_dma_pool;
 
        /* reply free queue */
@@ -832,6 +849,8 @@ int mpt2sas_scsih_issue_tm(struct MPT2SAS_ADAPTER *ioc, u16 handle,
     ulong timeout, struct scsi_cmnd *scmd);
 void mpt2sas_scsih_set_tm_flag(struct MPT2SAS_ADAPTER *ioc, u16 handle);
 void mpt2sas_scsih_clear_tm_flag(struct MPT2SAS_ADAPTER *ioc, u16 handle);
+void mpt2sas_expander_remove(struct MPT2SAS_ADAPTER *ioc, u64 sas_address);
+void mpt2sas_device_remove(struct MPT2SAS_ADAPTER *ioc, u64 sas_address);
 struct _sas_node *mpt2sas_scsih_expander_find_by_handle(struct MPT2SAS_ADAPTER *ioc,
     u16 handle);
 struct _sas_node *mpt2sas_scsih_expander_find_by_sas_address(struct MPT2SAS_ADAPTER