This is for version 3.4.0 of the Marvell SATA driver available from
ftp://ftp.abit.com.tw/pub/download/drivers/linux/marvell/mvsata340.zip,
which isn't part of the linux kernel, but might be of use to folks. This
modifies the driver to use the headers in include/scsi rather than
drivers/scsi and facilitates easier building for me for fedora kernels
using /lib/modules/<ver>/build.
If anyone knows of a later version of this driver floating around, I'd like
to know.
I'd also like to express my desire to see a libata version someday and
willingness to test.
Orion
Only in DAC-SATA-MV8-3.4.0-cora/build/Linux/DebugError: mv_sata.ko
Only in DAC-SATA-MV8-3.4.0-cora/build/Linux/DebugFull: mv_sata.ko
Only in DAC-SATA-MV8-3.4.0-cora/build/Linux/Free: mv_sata.ko
Only in DAC-SATA-MV8-3.4.0-cora/LinuxIAL: build.out
Only in DAC-SATA-MV8-3.4.0-cora/LinuxIAL: gsub.sh
Only in DAC-SATA-MV8-3.4.0-cora/LinuxIAL: Makefile
diff -cr DAC-SATA-MV8-3.4.0/LinuxIAL/Makefile_2_6 DAC-SATA-MV8-3.4.0-cora/LinuxIAL/Makefile_2_6
*** DAC-SATA-MV8-3.4.0/LinuxIAL/Makefile_2_6 2004-08-16 12:08:54.000000000 -0600
--- DAC-SATA-MV8-3.4.0-cora/LinuxIAL/Makefile_2_6 2005-05-25 08:12:08.000000000 -0600
***************
*** 4,10 ****
IAL_OBJS := mvLinuxIalLib.o mvLinuxIalHt.o mvLinuxIalOs.o mvIALCommon.o mvIALCommonUtils.o mvLinuxIalSmart.o
SAL_OBJS := mvScsiAtaLayer.o
PWD := $(shell pwd)
! INCLUDE_DIRS := -I$(KERNEL_SRC)/drivers/scsi
TARGET := mv_sata.o
CFLAGS += -DDEBUG=1 $(INCLUDE_DIRS) $(CFLAGS_EXTRA) -DLINUX
--- 4,10 ----
IAL_OBJS := mvLinuxIalLib.o mvLinuxIalHt.o mvLinuxIalOs.o mvIALCommon.o mvIALCommonUtils.o mvLinuxIalSmart.o
SAL_OBJS := mvScsiAtaLayer.o
PWD := $(shell pwd)
! INCLUDE_DIRS := -I$(KERNEL_SRC)/include
TARGET := mv_sata.o
CFLAGS += -DDEBUG=1 $(INCLUDE_DIRS) $(CFLAGS_EXTRA) -DLINUX
diff -cr DAC-SATA-MV8-3.4.0/LinuxIAL/mvLinuxIalHt.c DAC-SATA-MV8-3.4.0-cora/LinuxIAL/mvLinuxIalHt.c
*** DAC-SATA-MV8-3.4.0/LinuxIAL/mvLinuxIalHt.c 2004-09-07 18:56:36.000000000 -0600
--- DAC-SATA-MV8-3.4.0-cora/LinuxIAL/mvLinuxIalHt.c 2005-05-25 08:30:08.000000000 -0600
***************
*** 78,84 ****
#include "mvIALCommon.h"
#include "mvLinuxIalSmart.h"
! extern Scsi_Host_Template driver_template;
static void mv_ial_init_log(void);
--- 78,84 ----
#include "mvIALCommon.h"
#include "mvLinuxIalSmart.h"
! extern struct scsi_host_template driver_template;
static void mv_ial_init_log(void);
***************
*** 104,113 ****
#define __devexit_p(x) x
#endif
static void mv_ial_ht_select_queue_depths (struct Scsi_Host* pHost,
! Scsi_Device* pDevs);
! static inline struct Scsi_Host *scsi_host_alloc(Scsi_Host_Template *t, size_t s)
{
return scsi_register(t, s);
}
--- 104,113 ----
#define __devexit_p(x) x
#endif
static void mv_ial_ht_select_queue_depths (struct Scsi_Host* pHost,
! struct scsi_device* pDevs);
! static inline struct Scsi_Host *scsi_host_alloc(struct scsi_host_template *t, size_t s)
{
return scsi_register(t, s);
}
***************
*** 121,127 ****
#else
! static int mv_ial_ht_slave_configure (Scsi_Device* pDevs);
static int __devinit mv_ial_probe_device(struct pci_dev *pci_dev, const struct pci_device_id *ent);
static void __devexit mv_ial_remove_device(struct pci_dev *pci_dev);
--- 121,127 ----
#else
! static int mv_ial_ht_slave_configure (struct scsi_device* pDevs);
static int __devinit mv_ial_probe_device(struct pci_dev *pci_dev, const struct pci_device_id *ent);
static void __devexit mv_ial_remove_device(struct pci_dev *pci_dev);
***************
*** 593,599 ****
* Returns: Number of adapters installed.
*
****************************************************************/
! int mv_ial_ht_detect (Scsi_Host_Template *tpnt)
{
int num_hosts=0;
struct pci_dev *pcidev = NULL;
--- 593,599 ----
* Returns: Number of adapters installed.
*
****************************************************************/
! int mv_ial_ht_detect (struct scsi_host_template *tpnt)
{
int num_hosts=0;
struct pci_dev *pcidev = NULL;
***************
*** 665,671 ****
MV_U8 channel;
MV_SATA_ADAPTER * pMvSataAdapter = &pAdapter->mvSataAdapter;
unsigned long lock_flags;
! Scsi_Cmnd *cmnds_done_list = NULL;
IAL_HOST_T *ial_host = HOSTDATA(pHost);
channel = ial_host->channelIndex;
--- 665,671 ----
MV_U8 channel;
MV_SATA_ADAPTER * pMvSataAdapter = &pAdapter->mvSataAdapter;
unsigned long lock_flags;
! struct scsi_cmnd *cmnds_done_list = NULL;
IAL_HOST_T *ial_host = HOSTDATA(pHost);
channel = ial_host->channelIndex;
***************
*** 784,790 ****
* Returns: Status code.
*
****************************************************************/
! int mv_ial_ht_queuecommand (Scsi_Cmnd * SCpnt, void (*done) (Scsi_Cmnd *))
{
IAL_ADAPTER_T *pAdapter = MV_IAL_ADAPTER(SCpnt->device->host);
MV_SATA_ADAPTER *pMvSataAdapter;
--- 784,790 ----
* Returns: Status code.
*
****************************************************************/
! int mv_ial_ht_queuecommand (struct scsi_cmnd * SCpnt, void (*done) (struct scsi_cmnd *))
{
IAL_ADAPTER_T *pAdapter = MV_IAL_ADAPTER(SCpnt->device->host);
MV_SATA_ADAPTER *pMvSataAdapter;
***************
*** 799,805 ****
unsigned int prd_size;
unsigned long lock_flags;
! Scsi_Cmnd *cmnds_done_list = NULL;
mvLogMsg(MV_IAL_LOG_ID, MV_DEBUG, " :queuecommand host=%d, bus=%d, channel=%d\n",
SCpnt->device->host->host_no,
--- 799,805 ----
unsigned int prd_size;
unsigned long lock_flags;
! struct scsi_cmnd *cmnds_done_list = NULL;
mvLogMsg(MV_IAL_LOG_ID, MV_DEBUG, " :queuecommand host=%d, bus=%d, channel=%d\n",
SCpnt->device->host->host_no,
***************
*** 957,963 ****
* Returns: Status code.
*
****************************************************************/
! int mv_ial_ht_bus_reset (Scsi_Cmnd *SCpnt)
{
IAL_ADAPTER_T *pAdapter = MV_IAL_ADAPTER(SCpnt->device->host);
MV_SATA_ADAPTER *pMvSataAdapter = &pAdapter->mvSataAdapter;
--- 957,963 ----
* Returns: Status code.
*
****************************************************************/
! int mv_ial_ht_bus_reset (struct scsi_cmnd *SCpnt)
{
IAL_ADAPTER_T *pAdapter = MV_IAL_ADAPTER(SCpnt->device->host);
MV_SATA_ADAPTER *pMvSataAdapter = &pAdapter->mvSataAdapter;
***************
*** 1320,1330 ****
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
! static int mv_ial_ht_slave_configure (Scsi_Device* pDevs)
{
IAL_HOST_T *pHost = HOSTDATA (pDevs->host);
struct Scsi_Host* scsiHost = pDevs->host;
! Scsi_Device* pDevice = NULL;
mvLogMsg(MV_IAL_LOG_ID, MV_DEBUG, "[%d]: slave configure\n",
pHost->pAdapter->mvSataAdapter.adapterId);
shost_for_each_device(pDevice, scsiHost)
--- 1320,1330 ----
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
! static int mv_ial_ht_slave_configure (struct scsi_device* pDevs)
{
IAL_HOST_T *pHost = HOSTDATA (pDevs->host);
struct Scsi_Host* scsiHost = pDevs->host;
! struct scsi_device* pDevice = NULL;
mvLogMsg(MV_IAL_LOG_ID, MV_DEBUG, "[%d]: slave configure\n",
pHost->pAdapter->mvSataAdapter.adapterId);
shost_for_each_device(pDevice, scsiHost)
***************
*** 1340,1349 ****
}
#else
static void mv_ial_ht_select_queue_depths (struct Scsi_Host* pHost,
! Scsi_Device* pDevs)
{
IAL_HOST_T *ial_host = HOSTDATA (pHost);
! Scsi_Device* pDevice;
if (ial_host != NULL && ial_host->queueDepth > 0)
{
mvLogMsg(MV_IAL_LOG_ID, MV_DEBUG, "[%d %d]: adjust queue depth to %d\n",
--- 1340,1349 ----
}
#else
static void mv_ial_ht_select_queue_depths (struct Scsi_Host* pHost,
! struct scsi_device* pDevs)
{
IAL_HOST_T *ial_host = HOSTDATA (pHost);
! struct scsi_device* pDevice;
if (ial_host != NULL && ial_host->queueDepth > 0)
{
mvLogMsg(MV_IAL_LOG_ID, MV_DEBUG, "[%d %d]: adjust queue depth to %d\n",
***************
*** 1371,1377 ****
}
#endif
! int mv_ial_ht_abort(Scsi_Cmnd *SCpnt)
{
IAL_ADAPTER_T *pAdapter;
IAL_HOST_T *pHost;
--- 1371,1377 ----
}
#endif
! int mv_ial_ht_abort(struct scsi_cmnd *SCpnt)
{
IAL_ADAPTER_T *pAdapter;
IAL_HOST_T *pHost;
***************
*** 1379,1385 ****
MV_SATA_ADAPTER *pMvSataAdapter;
MV_U8 channel;
unsigned long lock_flags;
! Scsi_Cmnd *cmnds_done_list = NULL;
mvLogMsg(MV_IAL_LOG_ID, MV_DEBUG, "abort command %p\n", SCpnt);
if (SCpnt == NULL)
--- 1379,1385 ----
MV_SATA_ADAPTER *pMvSataAdapter;
MV_U8 channel;
unsigned long lock_flags;
! struct scsi_cmnd *cmnds_done_list = NULL;
mvLogMsg(MV_IAL_LOG_ID, MV_DEBUG, "abort command %p\n", SCpnt);
if (SCpnt == NULL)
***************
*** 1431,1437 ****
}
! Scsi_Host_Template driver_template = mvSata;
MODULE_LICENSE("Marvell");
MODULE_DESCRIPTION("Marvell Serial ATA PCI-X Adapter");
--- 1431,1437 ----
}
! struct scsi_host_template driver_template = mvSata;
MODULE_LICENSE("Marvell");
MODULE_DESCRIPTION("Marvell Serial ATA PCI-X Adapter");
diff -cr DAC-SATA-MV8-3.4.0/LinuxIAL/mvLinuxIalHt.h DAC-SATA-MV8-3.4.0-cora/LinuxIAL/mvLinuxIalHt.h
*** DAC-SATA-MV8-3.4.0/LinuxIAL/mvLinuxIalHt.h 2004-08-24 22:04:14.000000000 -0600
--- DAC-SATA-MV8-3.4.0-cora/LinuxIAL/mvLinuxIalHt.h 2005-05-25 11:40:02.585540599 -0600
***************
*** 42,51 ****
#include <scsi/scsi.h>
#include <scsi/scsi_cmnd.h>
#include <scsi/scsi_device.h>
#include <scsi/scsi_host.h>
#include <scsi/scsi_tcq.h>
- //#include "scsi_typedefs.h"
- #include "scsi.h"
#else
#include <linux/blk.h>
#include "scsi.h"
--- 42,50 ----
#include <scsi/scsi.h>
#include <scsi/scsi_cmnd.h>
#include <scsi/scsi_device.h>
+ #include <scsi/scsi_eh.h>
#include <scsi/scsi_host.h>
#include <scsi/scsi_tcq.h>
#else
#include <linux/blk.h>
#include "scsi.h"
***************
*** 65,76 ****
/* Interfaces to the midlevel Linux SCSI driver */
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
! extern int mv_ial_ht_detect (Scsi_Host_Template *);
#endif
extern int mv_ial_ht_release (struct Scsi_Host *);
! extern int mv_ial_ht_queuecommand (Scsi_Cmnd *, void (*done) (Scsi_Cmnd *));
! extern int mv_ial_ht_bus_reset (Scsi_Cmnd *);
! extern int mv_ial_ht_abort(Scsi_Cmnd *SCpnt);
#define HOSTDATA(host) ((IAL_HOST_T *)&host->hostdata)
#define MV_IAL_ADAPTER(host) (HOSTDATA(host)->pAdapter)
--- 64,75 ----
/* Interfaces to the midlevel Linux SCSI driver */
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
! extern int mv_ial_ht_detect (struct scsi_host_template *);
#endif
extern int mv_ial_ht_release (struct Scsi_Host *);
! extern int mv_ial_ht_queuecommand (struct scsi_cmnd *, void (*done) (struct scsi_cmnd *));
! extern int mv_ial_ht_bus_reset (struct scsi_cmnd *);
! extern int mv_ial_ht_abort(struct scsi_cmnd *SCpnt);
#define HOSTDATA(host) ((IAL_HOST_T *)&host->hostdata)
#define MV_IAL_ADAPTER(host) (HOSTDATA(host)->pAdapter)
***************
*** 178,184 ****
void *prdPool[MV_SATA_SW_QUEUE_SIZE];
void *prdPoolAligned[MV_SATA_SW_QUEUE_SIZE];
MV_U32 freePRDsNum;
! Scsi_Cmnd *scsi_cmnd_done_head, *scsi_cmnd_done_tail;
MV_BOOLEAN hostBlocked;
} IAL_HOST_T;
--- 177,183 ----
void *prdPool[MV_SATA_SW_QUEUE_SIZE];
void *prdPoolAligned[MV_SATA_SW_QUEUE_SIZE];
MV_U32 freePRDsNum;
! struct scsi_cmnd *scsi_cmnd_done_head, *scsi_cmnd_done_tail;
MV_BOOLEAN hostBlocked;
} IAL_HOST_T;
***************
*** 193,206 ****
/* UDMA command completion info */
struct mv_comp_info
{
! Scsi_Cmnd *SCpnt;
MV_SATA_EDMA_PRD_ENTRY *cpu_PRDpnt;
dma_addr_t dma_PRDpnt;
dma_addr_t single_buff_busaddr;
unsigned int allocated_entries;
unsigned int seq_number;
MV_SATA_SCSI_CMD_BLOCK *pSALBlock;
! Scsi_Cmnd *next_done;
};
--- 192,205 ----
/* UDMA command completion info */
struct mv_comp_info
{
! struct scsi_cmnd *SCpnt;
MV_SATA_EDMA_PRD_ENTRY *cpu_PRDpnt;
dma_addr_t dma_PRDpnt;
dma_addr_t single_buff_busaddr;
unsigned int allocated_entries;
unsigned int seq_number;
MV_SATA_SCSI_CMD_BLOCK *pSALBlock;
! struct scsi_cmnd *next_done;
};
diff -cr DAC-SATA-MV8-3.4.0/LinuxIAL/mvLinuxIalLib.c DAC-SATA-MV8-3.4.0-cora/LinuxIAL/mvLinuxIalLib.c
*** DAC-SATA-MV8-3.4.0/LinuxIAL/mvLinuxIalLib.c 2004-09-01 19:53:02.000000000 -0600
--- DAC-SATA-MV8-3.4.0-cora/LinuxIAL/mvLinuxIalLib.c 2005-05-25 11:39:21.122782674 -0600
***************
*** 160,166 ****
******************************************************************************/
void mv_ial_lib_add_done_queue (struct IALAdapter *pAdapter,
MV_U8 channel,
! Scsi_Cmnd *scsi_cmnd)
{
/* Put new command in the tail of the queue and make it point to NULL */
((struct mv_comp_info *)(&scsi_cmnd->SCp))->next_done = NULL;
--- 160,166 ----
******************************************************************************/
void mv_ial_lib_add_done_queue (struct IALAdapter *pAdapter,
MV_U8 channel,
! struct scsi_cmnd *scsi_cmnd)
{
/* Put new command in the tail of the queue and make it point to NULL */
((struct mv_comp_info *)(&scsi_cmnd->SCp))->next_done = NULL;
***************
*** 197,207 ****
*
* Return Value: Pointer to first scsi command in chain
******************************************************************************/
! Scsi_Cmnd * mv_ial_lib_get_first_cmnd (struct IALAdapter *pAdapter, MV_U8 channel)
{
if (pAdapter->host[channel] != NULL)
{
! Scsi_Cmnd *cmnd = pAdapter->host[channel]->scsi_cmnd_done_head;
pAdapter->host[channel]->scsi_cmnd_done_head = NULL;
pAdapter->host[channel]->scsi_cmnd_done_tail = NULL;
return cmnd;
--- 197,207 ----
*
* Return Value: Pointer to first scsi command in chain
******************************************************************************/
! struct scsi_cmnd * mv_ial_lib_get_first_cmnd (struct IALAdapter *pAdapter, MV_U8 channel)
{
if (pAdapter->host[channel] != NULL)
{
! struct scsi_cmnd *cmnd = pAdapter->host[channel]->scsi_cmnd_done_head;
pAdapter->host[channel]->scsi_cmnd_done_head = NULL;
pAdapter->host[channel]->scsi_cmnd_done_tail = NULL;
return cmnd;
***************
*** 219,230 ****
* Parameters: cmnd - First command in scsi commands chain
*
******************************************************************************/
! void mv_ial_lib_do_done (Scsi_Cmnd *cmnd)
{
/* Call done function for all commands in queue */
while (cmnd)
{
! Scsi_Cmnd *temp;
temp = ((struct mv_comp_info *)(&cmnd->SCp))->next_done;
if (cmnd->scsi_done == NULL)
--- 219,230 ----
* Parameters: cmnd - First command in scsi commands chain
*
******************************************************************************/
! void mv_ial_lib_do_done (struct scsi_cmnd *cmnd)
{
/* Call done function for all commands in queue */
while (cmnd)
{
! struct scsi_cmnd *temp;
temp = ((struct mv_comp_info *)(&cmnd->SCp))->next_done;
if (cmnd->scsi_done == NULL)
***************
*** 362,368 ****
IAL_ADAPTER_T *pAdapter;
unsigned long flags;
int handled = 0;
! Scsi_Cmnd *cmnds_done_list = NULL;
pAdapter = (IAL_ADAPTER_T *)dev_id;
/*
--- 362,368 ----
IAL_ADAPTER_T *pAdapter;
unsigned long flags;
int handled = 0;
! struct scsi_cmnd *cmnds_done_list = NULL;
pAdapter = (IAL_ADAPTER_T *)dev_id;
/*
***************
*** 512,518 ****
}
/* map to pci */
! int mv_ial_lib_generate_prd(MV_SATA_ADAPTER *pMvSataAdapter, Scsi_Cmnd *SCpnt,
MV_SATA_EDMA_PRD_ENTRY **ppPRD_table,
dma_addr_t *pPRD_dma_address,
unsigned int *pPrd_size, dma_addr_t *pBusaddr)
--- 512,518 ----
}
/* map to pci */
! int mv_ial_lib_generate_prd(MV_SATA_ADAPTER *pMvSataAdapter, struct scsi_cmnd *SCpnt,
MV_SATA_EDMA_PRD_ENTRY **ppPRD_table,
dma_addr_t *pPRD_dma_address,
unsigned int *pPrd_size, dma_addr_t *pBusaddr)
***************
*** 851,857 ****
{
struct rescan_wrapper* rescan = (struct rescan_wrapper*)data;
struct Scsi_Host *host;
! Scsi_Device *sdev = NULL;
MV_U16 target;
if (rescan->pAdapter->host[rescan->channelIndex] == NULL)
{
--- 851,857 ----
{
struct rescan_wrapper* rescan = (struct rescan_wrapper*)data;
struct Scsi_Host *host;
! struct scsi_device *sdev = NULL;
MV_U16 target;
if (rescan->pAdapter->host[rescan->channelIndex] == NULL)
{
***************
*** 962,968 ****
{
IAL_ADAPTER_T *pAdapter = (IAL_ADAPTER_T *)data;
unsigned long flags;
! Scsi_Cmnd *cmnds_done_list = NULL;
MV_U8 i;
spin_lock_irqsave(&pAdapter->adapter_lock, flags);
--- 962,968 ----
{
IAL_ADAPTER_T *pAdapter = (IAL_ADAPTER_T *)data;
unsigned long flags;
! struct scsi_cmnd *cmnds_done_list = NULL;
MV_U8 i;
spin_lock_irqsave(&pAdapter->adapter_lock, flags);
***************
*** 1147,1153 ****
MV_BOOLEAN IALCompletion(struct mvSataAdapter *pSataAdapter,
MV_SATA_SCSI_CMD_BLOCK *pCmdBlock)
{
! Scsi_Cmnd *SCpnt = (Scsi_Cmnd *)pCmdBlock->IALData;
struct mv_comp_info *pInfo = ( struct mv_comp_info *) &(SCpnt->SCp);
MV_U8 host_status;
--- 1147,1153 ----
MV_BOOLEAN IALCompletion(struct mvSataAdapter *pSataAdapter,
MV_SATA_SCSI_CMD_BLOCK *pCmdBlock)
{
! struct scsi_cmnd *SCpnt = (struct scsi_cmnd *)pCmdBlock->IALData;
struct mv_comp_info *pInfo = ( struct mv_comp_info *) &(SCpnt->SCp);
MV_U8 host_status;
diff -cr DAC-SATA-MV8-3.4.0/LinuxIAL/mvLinuxIalLib.h DAC-SATA-MV8-3.4.0-cora/LinuxIAL/mvLinuxIalLib.h
*** DAC-SATA-MV8-3.4.0/LinuxIAL/mvLinuxIalLib.h 2004-08-29 12:46:12.000000000 -0600
--- DAC-SATA-MV8-3.4.0-cora/LinuxIAL/mvLinuxIalLib.h 2005-05-25 08:18:53.000000000 -0600
***************
*** 61,67 ****
! int mv_ial_lib_generate_prd(MV_SATA_ADAPTER *pMvSataAdapter, Scsi_Cmnd *SCpnt,
MV_SATA_EDMA_PRD_ENTRY **ppPRD_table,
dma_addr_t *pPRD_dma_address,
unsigned int *pPrd_size, dma_addr_t *pBusaddr);
--- 61,67 ----
! int mv_ial_lib_generate_prd(MV_SATA_ADAPTER *pMvSataAdapter, struct scsi_cmnd *SCpnt,
MV_SATA_EDMA_PRD_ENTRY **ppPRD_table,
dma_addr_t *pPRD_dma_address,
unsigned int *pPrd_size, dma_addr_t *pBusaddr);
***************
*** 87,98 ****
/* SCSI done queuing and callback */
void mv_ial_lib_add_done_queue (struct IALAdapter *pAdapter,
MV_U8 channel,
! Scsi_Cmnd *scsi_cmnd);
! Scsi_Cmnd * mv_ial_lib_get_first_cmnd (struct IALAdapter *pAdapter,
MV_U8 channel);
! void mv_ial_lib_do_done (Scsi_Cmnd *cmnd);
void mv_ial_block_requests(struct IALAdapter *pAdapter, MV_U8 channelIndex);
--- 87,98 ----
/* SCSI done queuing and callback */
void mv_ial_lib_add_done_queue (struct IALAdapter *pAdapter,
MV_U8 channel,
! struct scsi_cmnd *scsi_cmnd);
! struct scsi_cmnd * mv_ial_lib_get_first_cmnd (struct IALAdapter *pAdapter,
MV_U8 channel);
! void mv_ial_lib_do_done (struct scsi_cmnd *cmnd);
void mv_ial_block_requests(struct IALAdapter *pAdapter, MV_U8 channelIndex);
Only in DAC-SATA-MV8-3.4.0/LinuxIAL: mv_sata.mod.c
Only in DAC-SATA-MV8-3.4.0-cora/LinuxIAL/.tmp_versions: mv_sata.mod
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]