X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fmessage%2Ffusion%2Fmptbase.h;h=8a84b72a3d001e5aacaf73b7526b8d311c9943d5;hb=9bf4aaab3e101692164d49b7ca357651eb691cb6;hp=dbadc822409ecd07b3b0794f26fd3b87d695bc02;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/drivers/message/fusion/mptbase.h b/drivers/message/fusion/mptbase.h index dbadc8224..8a84b72a3 100644 --- a/drivers/message/fusion/mptbase.h +++ b/drivers/message/fusion/mptbase.h @@ -55,7 +55,11 @@ #define MPTBASE_H_INCLUDED /*{-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ -#include "linux_compat.h" /* linux-2.2.x (vs. -2.4.x) tweaks */ +#include +#include +#include +#include + #include "scsi3.h" /* SCSI defines */ #include "lsi/mpi_type.h" @@ -81,8 +85,8 @@ #define COPYRIGHT "Copyright (c) 1999-2004 " MODULEAUTHOR #endif -#define MPT_LINUX_VERSION_COMMON "3.01.03" -#define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-3.01.03" +#define MPT_LINUX_VERSION_COMMON "3.01.09" +#define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-3.01.09" #define WHAT_MAGIC_STRING "@" "(" "#" ")" #define show_mptmod_ver(s,ver) \ @@ -577,13 +581,6 @@ typedef struct _ScsiCfgData { u8 rsvd[1]; } ScsiCfgData; -typedef struct _fw_image { - char *fw; - dma_addr_t fw_dma; - u32 size; - u32 rsvd; -} fw_image_t; - /* * Adapter Structure - pci_dev specific. Maximum: MPT_MAX_ADAPTERS */ @@ -655,9 +652,9 @@ typedef struct _MPT_ADAPTER int timeout_maxcnt; #endif struct _mpt_ioctl_events *events; /* pointer to event log */ - fw_image_t **cached_fw; /* Pointer to FW SG List */ + u8 *cached_fw; /* Pointer to FW */ + dma_addr_t cached_fw_dma; Q_TRACKER configQ; /* linked list of config. requests */ - int num_fw_frags; /* Number of SGE in FW SG List */ int hs_reply_idx; #ifndef MFCNT u32 pad0; @@ -678,6 +675,7 @@ typedef struct _MPT_ADAPTER u8 upload_fw; /* If set, do a fw upload */ u8 reload_fw; /* Force a FW Reload on next reset */ u8 pad1[5]; + struct list_head list; } MPT_ADAPTER; @@ -738,6 +736,33 @@ typedef struct _mpt_sge { #define dprintk(x) #endif +#ifdef MPT_DEBUG_INIT +#define dinitprintk(x) printk x +#define DBG_DUMP_FW_REQUEST_FRAME(mfp) \ + { int i, n = 10; \ + u32 *m = (u32 *)(mfp); \ + printk(KERN_INFO " "); \ + for (i=0; iSCp area - * NOTE: SCp area is 36 bytes min, 44 bytes max? - */ -typedef struct _scPrivate { - struct scsi_cmnd *forw; - struct scsi_cmnd *back; - void *p1; - void *p2; - u8 io_path_id; /* DMP */ - u8 pad[7]; -} scPrivate; - /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ /* * More Dynamic Multi-Pathing stuff... @@ -1045,31 +1057,29 @@ extern int mpt_device_driver_register(struct mpt_pci_driver * dd_cbfunc, int cb extern void mpt_device_driver_deregister(int cb_idx); extern int mpt_register_ascqops_strings(void *ascqTable, int ascqtbl_sz, const char **opsTable); extern void mpt_deregister_ascqops_strings(void); -extern MPT_FRAME_HDR *mpt_get_msg_frame(int handle, int iocid); -extern void mpt_free_msg_frame(int handle, int iocid, MPT_FRAME_HDR *mf); -extern void mpt_put_msg_frame(int handle, int iocid, MPT_FRAME_HDR *mf); +extern MPT_FRAME_HDR *mpt_get_msg_frame(int handle, MPT_ADAPTER *ioc); +extern void mpt_free_msg_frame(int handle, MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf); +extern void mpt_put_msg_frame(int handle, MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf); extern void mpt_add_sge(char *pAddr, u32 flagslength, dma_addr_t dma_addr); extern void mpt_add_chain(char *pAddr, u8 next, u16 length, dma_addr_t dma_addr); -extern int mpt_send_handshake_request(int handle, int iocid, int reqBytes, u32 *req, int sleepFlag); +extern int mpt_send_handshake_request(int handle, MPT_ADAPTER *ioc, int reqBytes, u32 *req, int sleepFlag); extern int mpt_handshake_req_reply_wait(MPT_ADAPTER *ioc, int reqBytes, u32 *req, int replyBytes, u16 *u16reply, int maxwait, int sleepFlag); extern int mpt_verify_adapter(int iocid, MPT_ADAPTER **iocpp); -extern MPT_ADAPTER *mpt_adapter_find_first(void); -extern MPT_ADAPTER *mpt_adapter_find_next(MPT_ADAPTER *prev); extern u32 mpt_GetIocState(MPT_ADAPTER *ioc, int cooked); extern void mpt_print_ioc_summary(MPT_ADAPTER *ioc, char *buf, int *size, int len, int showlan); extern int mpt_HardResetHandler(MPT_ADAPTER *ioc, int sleepFlag); extern int mpt_config(MPT_ADAPTER *ioc, CONFIGPARMS *cfg); extern int mpt_toolbox(MPT_ADAPTER *ioc, CONFIGPARMS *cfg); -extern void *mpt_alloc_fw_memory(MPT_ADAPTER *ioc, int size, int *frags, int *alloc_sz); -extern void mpt_free_fw_memory(MPT_ADAPTER *ioc, fw_image_t **alt_img); +extern void mpt_alloc_fw_memory(MPT_ADAPTER *ioc, int size); +extern void mpt_free_fw_memory(MPT_ADAPTER *ioc); extern int mpt_findImVolumes(MPT_ADAPTER *ioc); extern int mpt_read_ioc_pg_3(MPT_ADAPTER *ioc); /* * Public data decl's... */ -extern MPT_ADAPTER *mpt_adapters[MPT_MAX_ADAPTERS]; +extern struct list_head ioc_list; extern struct proc_dir_entry *mpt_proc_root_dir; extern DmpServices_t *DmpService;