uioc
nitioctl_t uioc;
memset(&uioc, 0, sizeof(nitioctl_t));
if( (rval = mega_m_to_n( (void __user *)arg, &uioc)) != 0 )
switch( uioc.opcode ) {
if( put_user(driver_ver, (u32 __user *)uioc.uioc_uaddr) )
if( put_user(hba_count, (u32 __user *)uioc.uioc_uaddr) )
if( (adapno = GETADAP(uioc.adapno)) >= hba_count )
if( copy_to_user(uioc.uioc_uaddr, mcontroller+adapno,
if( (adapno = GETADAP(uioc.adapno)) >= hba_count )
ustats = uioc.uioc_uaddr;
if( (adapno = GETADAP(uioc.adapno)) >= hba_count )
if( uioc.uioc_rmbox[0] == FC_DEL_LOGDRV &&
uioc.uioc_rmbox[2] == OP_DEL_LOGDRV ) {
rval = mega_del_logdrv( adapter, uioc.uioc_rmbox[3] );
if( uioc.uioc_rmbox[0] == MEGA_MBOXCMD_PASSTHRU64 ||
uioc.uioc_rmbox[0] == MEGA_MBOXCMD_EXTPTHRU ) {
if( uioc.uioc_rmbox[0] == MEGA_MBOXCMD_PASSTHRU ) {
upthru = (mega_passthru __user *)(unsigned long)MBOX(uioc)->xferaddr;
if( pthru->dataxferlen && (uioc.flags & UIOC_WR) ) {
if( pthru->dataxferlen && (uioc.flags & UIOC_RD) ) {
if( uioc.xferlen ) {
uioc.xferlen,
uxferaddr = MBOX(uioc)->xferaddr;
if( uioc.xferlen && (uioc.flags & UIOC_WR) ) {
uioc.xferlen) ) {
uioc.xferlen, data,
memcpy(&mc, MBOX(uioc), sizeof(megacmd_t));
if( uioc.xferlen ) {
uioc.xferlen, data,
if( uioc.xferlen && (uioc.flags & UIOC_RD) ) {
uioc.xferlen) ) {
if( uioc.xferlen ) {
dma_free_coherent(&pdev->dev, uioc.xferlen,
mega_m_to_n(void __user *arg, nitioctl_t *uioc)
if( copy_from_user(uioc, arg, sizeof(nitioctl_t)) )
uioc->opcode = GET_DRIVER_VER;
uioc->uioc_uaddr = uioc_mimd.data;
uioc->opcode = GET_N_ADAP;
uioc->uioc_uaddr = uioc_mimd.data;
uioc->opcode = GET_ADAP_INFO;
uioc->adapno = uioc_mimd.ui.fcs.adapno;
uioc->uioc_uaddr = uioc_mimd.data;
uioc->opcode = MBOX_CMD;
uioc->adapno = uioc_mimd.ui.fcs.adapno;
memcpy(uioc->uioc_rmbox, uioc_mimd.mbox, 18);
uioc->xferlen = uioc_mimd.ui.fcs.length;
if( uioc_mimd.outlen ) uioc->flags = UIOC_RD;
if( uioc_mimd.inlen ) uioc->flags |= UIOC_WR;
uioc->opcode = MBOX_CMD;
uioc->adapno = uioc_mimd.ui.fcs.adapno;
memcpy(uioc->uioc_rmbox, uioc_mimd.mbox, 18);
uioc->xferlen = uioc_mimd.outlen > uioc_mimd.inlen ?
if( uioc_mimd.outlen ) uioc->flags = UIOC_RD;
if( uioc_mimd.inlen ) uioc->flags |= UIOC_WR;
#define MBOX(uioc) ((megacmd_t *)&((uioc).__ua.__raw_mbox[0]))
#define MBOX_P(uioc) ((megacmd_t __user *)&((uioc)->__ua.__raw_mbox[0]))
void (*done)(struct uioc*);
uioc_t *uioc;
megaraid_sysfs_get_ldmap_done(uioc_t *uioc)
adapter_t *adapter = (adapter_t *)uioc->buf_vaddr;
uioc->status = 0;
uioc_t *uioc = timeout->uioc;
adapter_t *adapter = (adapter_t *)uioc->buf_vaddr;
uioc->status = -ETIME;
uioc_t *uioc;
uioc = raid_dev->sysfs_uioc;
memset(uioc, 0, sizeof(uioc_t));
uioc->cmdbuf = (uint64_t)(unsigned long)mbox64;
uioc->buf_vaddr = (caddr_t)adapter;
uioc->status = -ENODATA;
uioc->done = megaraid_sysfs_get_ldmap_done;
timeout.uioc = uioc;
rval = megaraid_mbox_mm_command(adapter, uioc);
wait_event(raid_dev->sysfs_wait_q, (uioc->status != -ENODATA));
if (uioc->status == -ETIME) {
timeout.uioc = kioc;
uioc_t *kioc = timeout->uioc;