mpt fusion: [2.6.30-rc6][Reviewed] Added support for Broadcast primitives Event handling
Subsystems (2)
PATCH 17/17 mpt fusion: [2.6.30-rc6][Reviewed] Added support for Broadcast primitives Event handling
Firmware is able to handle Broadcast primitives, but upstream driver does not have support for broadcast primitive handling. Now this patch is mainly to support broadcast primitives.
---
Signed-off-by Kashyap Desai <[email protected]>
---
drivers/message/fusion/mptbase.h +1 -0
@@ -758,6 +758,7 @@ typedef struct _MPT_ADAPTERstruct scsi_cmnd **ScsiLookup;spinlock_t scsi_lookup_lock;u64 dma_mask; +u32 broadcast_aen_busy;char reset_work_q_name[MPT_KOBJ_NAME_LEN ];struct workqueue_struct *reset_work_q;struct delayed_work fault_reset_work;
drivers/message/fusion/mptsas.c +207 -0
237 lines not on this page · raw message
drivers/message/fusion/mptscsih.c +21 -0
@@ -80,6 +80,7 @@ MODULE_VERSION(my_VERSION);/* * Other private/forward protos... */ +struct scsi_cmnd *mptscsih_get_scsi_lookup (MPT_ADAPTER *ioc,int i);static struct scsi_cmnd *mptscsih_getclear_scsi_lookup (MPT_ADAPTER *ioc,int i);static void mptscsih_set_scsi_lookup (MPT_ADAPTER *ioc,int i,struct scsi_cmnd *scmd);static int SCPNT_TO_LOOKUP_IDX (MPT_ADAPTER *ioc,struct scsi_cmnd *scmd);
@@ -2419,6 +2420,26 @@ mptscsih_copy_sense_data(struct scsi_cmnd *sc, MPT_SCSI_HOST *hd, MPT_FRAME_HDR } } +/** +* mptscsih_get_scsi_lookup - retrieves scmd entry +* @ioc: Pointer to MPT_ADAPTER structure +* @i: index into the array +* +* Returns the scsi_cmd pointer +*/ +struct scsi_cmnd * +mptscsih_get_scsi_lookup (MPT_ADAPTER *ioc,int i) +{ +unsigned long flags; +struct scsi_cmnd *scmd; + +spin_lock_irqsave (&ioc->scsi_lookup_lock, flags); + scmd = ioc->ScsiLookup[i]; +spin_unlock_irqrestore (&ioc->scsi_lookup_lock, flags); + +return scmd; +} +EXPORT_SYMBOL (mptscsih_get_scsi_lookup);/** * mptscsih_getclear_scsi_lookup
drivers/message/fusion/mptscsih.h +1 -0
@@ -133,4 +133,5 @@ extern void mptscsih_timer_expired(unsigned long data);extern u8 mptscsih_raid_id_to_num (MPT_ADAPTER *ioc,u8 channel,u8 id);extern int mptscsih_is_phys_disk (MPT_ADAPTER *ioc,u8 channel,u8 id);extern struct device_attribute *mptscsih_host_attrs[]; +extern struct scsi_cmnd *mptscsih_get_scsi_lookup (MPT_ADAPTER *ioc,int i);extern void mptscsih_taskmgmt_response_code (MPT_ADAPTER *ioc,u8 response_code);