Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Functions
mpt2sas_scsih.c File Reference
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/errno.h>
#include <linux/blkdev.h>
#include <linux/sched.h>
#include <linux/workqueue.h>
#include <linux/delay.h>
#include <linux/pci.h>
#include <linux/interrupt.h>
#include <linux/aer.h>
#include <linux/raid_class.h>
#include <linux/slab.h>
#include "mpt2sas_base.h"

Go to the source code of this file.

Data Structures

struct  sense_info
 
struct  fw_event_work
 
struct  _scsi_io_transfer
 

Macros

#define RAID_CHANNEL   1
 
#define MPT2SAS_MAX_LUN   (16895)
 
#define MPT2SAS_TURN_ON_FAULT_LED   (0xFFFC)
 
#define MPT2SAS_PORT_ENABLE_COMPLETE   (0xFFFD)
 
#define MPT2SAS_REMOVE_UNRESPONDING_DEVICES   (0xFFFF)
 

Functions

 MODULE_AUTHOR (MPT2SAS_AUTHOR)
 
 MODULE_DESCRIPTION (MPT2SAS_DESCRIPTION)
 
 MODULE_LICENSE ("GPL")
 
 MODULE_VERSION (MPT2SAS_DRIVER_VERSION)
 
 LIST_HEAD (mpt2sas_ioc_list)
 
 MODULE_PARM_DESC (logging_level," bits for enabling additional logging info ""(default=0)")
 
 module_param (max_sectors, ushort, 0)
 
 MODULE_PARM_DESC (max_sectors,"max sectors, range 64 to 32767 default=32767")
 
 module_param (max_lun, int, 0)
 
 MODULE_PARM_DESC (max_lun," max lun, default=16895 ")
 
 module_param (diag_buffer_enable, int, 0)
 
 MODULE_PARM_DESC (diag_buffer_enable," post diag buffers ""(TRACE=1/SNAPSHOT=2/EXTENDED=4/default=0)")
 
 module_param (disable_discovery, int, 0)
 
 MODULE_PARM_DESC (disable_discovery," disable discovery ")
 
 module_param (prot_mask, int, 0)
 
 MODULE_PARM_DESC (prot_mask," host protection capabilities mask, def=7 ")
 
 MODULE_DEVICE_TABLE (pci, scsih_pci_table)
 
 module_param_call (logging_level, _scsih_set_debug_level, param_get_int,&logging_level, 0644)
 
struct _sas_devicempt2sas_scsih_sas_device_find_by_sas_address (struct MPT2SAS_ADAPTER *ioc, u64 sas_address)
 
struct _sas_nodempt2sas_scsih_expander_find_by_handle (struct MPT2SAS_ADAPTER *ioc, u16 handle)
 
struct _sas_nodempt2sas_scsih_expander_find_by_sas_address (struct MPT2SAS_ADAPTER *ioc, u64 sas_address)
 
void mpt2sas_scsih_set_tm_flag (struct MPT2SAS_ADAPTER *ioc, u16 handle)
 
void mpt2sas_scsih_clear_tm_flag (struct MPT2SAS_ADAPTER *ioc, u16 handle)
 
int mpt2sas_scsih_issue_tm (struct MPT2SAS_ADAPTER *ioc, u16 handle, uint channel, uint id, uint lun, u8 type, u16 smid_task, ulong timeout, unsigned long serial_number, enum mutex_type m_type)
 
void mpt2sas_port_enable_complete (struct MPT2SAS_ADAPTER *ioc)
 
void mpt2sas_expander_remove (struct MPT2SAS_ADAPTER *ioc, u64 sas_address)
 
void mpt2sas_device_remove_by_sas_address (struct MPT2SAS_ADAPTER *ioc, u64 sas_address)
 
void mpt2sas_scsih_reset_handler (struct MPT2SAS_ADAPTER *ioc, int reset_phase)
 
u8 mpt2sas_scsih_event_callback (struct MPT2SAS_ADAPTER *ioc, u8 msix_index, u32 reply)
 
 module_init (_scsih_init)
 
 module_exit (_scsih_exit)
 

Macro Definition Documentation

#define MPT2SAS_MAX_LUN   (16895)

Definition at line 105 of file mpt2sas_scsih.c.

#define MPT2SAS_PORT_ENABLE_COMPLETE   (0xFFFD)

Definition at line 145 of file mpt2sas_scsih.c.

#define MPT2SAS_REMOVE_UNRESPONDING_DEVICES   (0xFFFF)

Definition at line 146 of file mpt2sas_scsih.c.

#define MPT2SAS_TURN_ON_FAULT_LED   (0xFFFC)

Definition at line 144 of file mpt2sas_scsih.c.

#define RAID_CHANNEL   1

Definition at line 65 of file mpt2sas_scsih.c.

Function Documentation

LIST_HEAD ( mpt2sas_ioc_list  )
MODULE_AUTHOR ( MPT2SAS_AUTHOR  )
MODULE_DESCRIPTION ( MPT2SAS_DESCRIPTION  )
MODULE_DEVICE_TABLE ( pci  ,
scsih_pci_table   
)
module_exit ( _scsih_exit  )
module_init ( _scsih_init  )
MODULE_LICENSE ( "GPL"  )
module_param ( max_sectors  ,
ushort  ,
 
)
module_param ( max_lun  ,
int  ,
 
)
module_param ( diag_buffer_enable  ,
int  ,
 
)
module_param ( disable_discovery  ,
int  ,
 
)
module_param ( prot_mask  ,
int  ,
 
)
module_param_call ( logging_level  ,
_scsih_set_debug_level  ,
param_get_int  ,
logging_level,
0644   
)
MODULE_PARM_DESC ( logging_level  ,
" bits for enabling additional logging info ""(default=0)"   
)
MODULE_PARM_DESC ( max_sectors  ,
"max  sectors 
)
MODULE_PARM_DESC ( max_lun  ,
" max  lun 
)
MODULE_PARM_DESC ( diag_buffer_enable  ,
" post diag buffers ""(TRACE=1/SNAPSHOT=2/EXTENDED=4/default=0)"   
)
MODULE_PARM_DESC ( disable_discovery  ,
" disable discovery "   
)
MODULE_PARM_DESC ( prot_mask  ,
" host protection capabilities  mask 
)
MODULE_VERSION ( MPT2SAS_DRIVER_VERSION  )
void mpt2sas_device_remove_by_sas_address ( struct MPT2SAS_ADAPTER ioc,
u64  sas_address 
)

mpt2sas_device_remove_by_sas_address - removing device object by sas address : per adapter object : device sas_address

Return nothing.

Definition at line 5379 of file mpt2sas_scsih.c.

void mpt2sas_expander_remove ( struct MPT2SAS_ADAPTER ioc,
u64  sas_address 
)

mpt2sas_expander_remove - removing expander object : per adapter object : expander sas_address

Return nothing.

Definition at line 5043 of file mpt2sas_scsih.c.

void mpt2sas_port_enable_complete ( struct MPT2SAS_ADAPTER ioc)

mpt2sas_port_enable_complete - port enable completed (fake event) : per adapter object

Return nothing.

Definition at line 2855 of file mpt2sas_scsih.c.

void mpt2sas_scsih_clear_tm_flag ( struct MPT2SAS_ADAPTER ioc,
u16  handle 
)

mpt2sas_scsih_clear_tm_flag - clear per target tm_busy : per adapter object : device handle

During taskmangement request, we need to freeze the device queue.

Definition at line 2321 of file mpt2sas_scsih.c.

u8 mpt2sas_scsih_event_callback ( struct MPT2SAS_ADAPTER ioc,
u8  msix_index,
u32  reply 
)

mpt2sas_scsih_event_callback - firmware event handler (called at ISR time) : per adapter object : MSIX table index supplied by the OS : reply message frame(lower 32bit addr) Context: interrupt.

This function merely adds a new work task into ioc->firmware_event_thread. The tasks are worked from _firmware_event_work in user context.

Return 1 meaning mf should be freed from _base_interrupt 0 means the mf is freed from this function.

Definition at line 7363 of file mpt2sas_scsih.c.

struct _sas_node* mpt2sas_scsih_expander_find_by_handle ( struct MPT2SAS_ADAPTER ioc,
u16  handle 
)
read

mpt2sas_scsih_expander_find_by_handle - expander device search : per adapter object : expander handle (assigned by firmware) Context: Calling function should acquire ioc->sas_device_lock

This searches for expander device based on handle, then returns the sas_node object.

Definition at line 788 of file mpt2sas_scsih.c.

struct _sas_node* mpt2sas_scsih_expander_find_by_sas_address ( struct MPT2SAS_ADAPTER ioc,
u64  sas_address 
)
read

mpt2sas_scsih_expander_find_by_sas_address - expander device search : per adapter object : sas address Context: Calling function should acquire ioc->sas_node_lock.

This searches for expander device based on sas_address, then returns the sas_node object.

Definition at line 813 of file mpt2sas_scsih.c.

int mpt2sas_scsih_issue_tm ( struct MPT2SAS_ADAPTER ioc,
u16  handle,
uint  channel,
uint  id,
uint  lun,
u8  type,
u16  smid_task,
ulong  timeout,
unsigned long  serial_number,
enum mutex_type  m_type 
)

mpt2sas_scsih_issue_tm - main routine for sending tm requests : per adapter struct : device handle : the channel assigned by the OS : the id assigned by the OS : lun number : MPI2_SCSITASKMGMT_TASKTYPE__XXX (defined in mpi2_init.h) : smid assigned to the task : timeout in seconds : the serial_number from scmd : TM_MUTEX_ON or TM_MUTEX_OFF Context: user

A generic API for sending task management requests to firmware.

The callback index is set inside ioc->tm_cb_idx.

Return SUCCESS or FAILED.

Definition at line 2363 of file mpt2sas_scsih.c.

void mpt2sas_scsih_reset_handler ( struct MPT2SAS_ADAPTER ioc,
int  reset_phase 
)

mpt2sas_scsih_reset_handler - reset callback handler (for scsih) : per adapter object : phase

The handler for doing any required cleanup or initialization.

The reset phase can be MPT2_IOC_PRE_RESET, MPT2_IOC_AFTER_RESET, MPT2_IOC_DONE_RESET

Return nothing.

Definition at line 7231 of file mpt2sas_scsih.c.

struct _sas_device* mpt2sas_scsih_sas_device_find_by_sas_address ( struct MPT2SAS_ADAPTER ioc,
u64  sas_address 
)
read

mpt2sas_scsih_sas_device_find_by_sas_address - sas device search : per adapter object : sas address Context: Calling function should acquire ioc->sas_device_lock

This searches for sas_device based on sas_address, then return sas_device object.

Definition at line 532 of file mpt2sas_scsih.c.

void mpt2sas_scsih_set_tm_flag ( struct MPT2SAS_ADAPTER ioc,
u16  handle 
)

mpt2sas_scsih_set_tm_flag - set per target tm_busy : per adapter object : device handle

During taskmangement request, we need to freeze the device queue.

Definition at line 2293 of file mpt2sas_scsih.c.