Lines Matching defs:pmcsc

163 #define AG_GET_DONE_PCCB(pccb, pmcsc)            \
165 AG_LOCAL_LOCK(&pmcsc->doneLock); \
166 pccb = pmcsc->ccbDoneHead; \
169 pmcsc->ccbDoneHead = NULL; \
170 pmcsc->ccbDoneTail = NULL; \
171 AG_LOCAL_UNLOCK(&pmcsc->doneLock); \
172 agtiapi_Done(pmcsc, pccb); \
175 AG_LOCAL_UNLOCK(&pmcsc->doneLock); \
178 #define AG_GET_DONE_SMP_PCCB(pccb, pmcsc) \
180 AG_LOCAL_LOCK(&pmcsc->doneSMPLock); \
181 pccb = pmcsc->smpDoneHead; \
184 pmcsc->smpDoneHead = NULL; \
185 pmcsc->smpDoneTail = NULL; \
186 AG_LOCAL_UNLOCK(&pmcsc->doneSMPLock); \
187 agtiapi_SMPDone(pmcsc, pccb); \
190 AG_LOCAL_UNLOCK(&pmcsc->doneSMPLock); \
1589 int agtiapi_alloc_requests( struct agtiapi_softc *pmcsc )
1614 &pmcsc->pCardInfo->pmIOLock, // lockarg
1615 &pmcsc->buffer_dmat ) ) {
1638 &pmcsc->tisgl_dmat ) ) {
1643 if( bus_dmamem_alloc( pmcsc->tisgl_dmat,
1644 (void **)&pmcsc->tisgl_mem,
1646 &pmcsc->tisgl_map ) ) {
1651 bzero( pmcsc->tisgl_mem, rsize );
1652 bus_dmamap_load( pmcsc->tisgl_dmat,
1653 pmcsc->tisgl_map,
1654 pmcsc->tisgl_mem,
1657 &pmcsc->tisgl_busaddr,
1660 mtx_init( &pmcsc->OS_timer_lock, "OS timer lock", NULL, MTX_DEF );
1661 mtx_init( &pmcsc->IO_timer_lock, "IO timer lock", NULL, MTX_DEF );
1662 mtx_init( &pmcsc->devRmTimerLock, "targ rm timer lock", NULL, MTX_DEF );
1663 callout_init_mtx( &pmcsc->OS_timer, &pmcsc->OS_timer_lock, 0 );
1664 callout_init_mtx( &pmcsc->IO_timer, &pmcsc->IO_timer_lock, 0 );
1665 callout_init_mtx( &pmcsc->devRmTimer,
1666 &pmcsc->devRmTimerLock, 0);
1668 next_tick = pmcsc->pCardInfo->tiRscInfo.tiLoLevelResource.
1672 callout_reset( &pmcsc->OS_timer, next_tick, agtiapi_TITimer, pmcsc );
1682 struct agtiapi_softc *pmcsc (IN) Pointer to the HBA data structure
1689 int agtiapi_alloc_ostimem( struct agtiapi_softc *pmcsc ) {
1709 &pmcsc->osti_dmat ) ) {
1715 if( bus_dmamem_alloc( pmcsc->osti_dmat,
1716 &pmcsc->osti_mem,
1718 &pmcsc->osti_mapp ) ) {
1725 bus_dmamap_load( pmcsc->osti_dmat,
1726 pmcsc->osti_mapp,
1727 pmcsc->osti_mem,
1730 &pmcsc->osti_busaddr,
1736 ag_card_info_t *pCardInfo = pmcsc->pCardInfo;
1741 pMem->nocache_busaddr = pmcsc->osti_busaddr + ( idx * nomsize );
1742 pMem->nocache_mem = (void*)((U64)pmcsc->osti_mem + ( idx * nomsize ));
1765 struct agtiapi_softc *pmcsc;
1773 pmcsc = cam_sim_softc( sim );
1774 AGTIAPI_IO( "agtiapi_cam_action: start pmcs %p\n", pmcsc );
1776 if (pmcsc == agNULL)
1781 mtx_assert( &(pmcsc->pCardInfo->pmIOLock), MA_OWNED );
1783 AGTIAPI_IO( "agtiapi_cam_action: cardNO %d func_code 0x%x\n", pmcsc->cardNo, ccb->ccb_h.func_code );
1830 if ( pmcsc->flags & AGTIAPI_SHUT_DOWN )
1847 if (pmcsc != NULL && targetID >= 0 && targetID < maxTargets)
1849 if (pmcsc->pWWNList != NULL)
1851 TID = INDEX(pmcsc, targetID);
1854 pDevHandle = pmcsc->pDevList[TID].pDevHandle;
1860 tiINIGetDeviceInfo( &pmcsc->tiRoot, pDevHandle, &devInfo );
1883 lRetVal = agtiapi_eh_HostReset( pmcsc, ccb ); // usually works first time
1908 agtiapi_QueueSMP( pmcsc, ccb );
1914 if(pmcsc->dev_scan == agFALSE)
1919 if (pmcsc->flags & AGTIAPI_SHUT_DOWN)
1930 agtiapi_QueueCmnd_( pmcsc, ccb );
1962 struct agtiapi_softc *pmcsc (IN) Pointer to HBA structure
1967 STATIC pccb_t agtiapi_GetCCB( struct agtiapi_softc *pmcsc )
1973 AG_LOCAL_LOCK( &pmcsc->ccbLock );
1976 if ((pccb = (pccb_t)pmcsc->ccbFreeList) != NULL)
1978 pmcsc->ccbFreeList = (caddr_t *)pccb->pccbNext;
1982 pmcsc->activeCCB++;
1990 AG_LOCAL_UNLOCK( &pmcsc->ccbLock );
2007 int agtiapi_QueueCmnd_(struct agtiapi_softc *pmcsc, union ccb * ccb)
2039 if ((pccb = agtiapi_GetCCB(pmcsc)) == NULL)
2042 if (pmcsc != NULL)
2045 TID = INDEX(pmcsc, TID);
2046 targ = &pmcsc->pDevList[TID];
2055 pccb->pmcsc = pmcsc;
2069 status = agtiapi_PrepareSGList(pmcsc, pccb);
2073 agtiapi_FreeCCB(pmcsc, pccb);
2154 *data (IN) point to pmcsc (struct agtiapi_softc *)
2158 int agtiapi_DoSoftReset (struct agtiapi_softc *pmcsc)
2163 pmcsc->flags |= AGTIAPI_SOFT_RESET;
2165 ret = agtiapi_ResetCard( pmcsc, &flags );
2188 struct agtiapi_softc *pmcsc;
2191 pmcsc = (struct agtiapi_softc *)data;
2195 //AGTIAPI_PRINTK("agtiapi_CheckIOTimeout: Active CCB %d\n", pmcsc->activeCCB);
2197 pccb = (pccb_t)pmcsc->ccbChainList;
2200 if ((pccb == NULL) || (pmcsc->activeCCB == 0))
2207 if (pmcsc->flags & AGTIAPI_SHUT_DOWN)
2231 status = agtiapi_StartTM(pmcsc, pccb_curr);
2247 agtiapi_DoSoftReset (pmcsc);
2255 callout_reset(&pmcsc->IO_timer, 1*hz, agtiapi_CheckIOTimeout, pmcsc);
2329 pTMccb->pmcsc = pCard;
2413 static int agtiapi_PrepareSGList(struct agtiapi_softc *pmcsc, ccb_t *pccb)
2432 // AG_LOCAL_LOCK(&(pmcsc->pCardInfo->pmIOLock));
2434 error = bus_dmamap_load( pmcsc->buffer_dmat,
2441 // AG_LOCAL_UNLOCK( &(pmcsc->pCardInfo->pmIOLock) );
2447 xpt_freeze_simq(pmcsc->sim, 1);
2448 pmcsc->SimQFrozen = agTRUE;
2489 static int agtiapi_PrepareSGList(struct agtiapi_softc *pmcsc, ccb_t *pccb)
2507 // AG_LOCAL_LOCK(&(pmcsc->pCardInfo->pmIOLock));
2509 error = bus_dmamap_load( pmcsc->buffer_dmat,
2516 // AG_LOCAL_UNLOCK( &(pmcsc->pCardInfo->pmIOLock) );
2522 xpt_freeze_simq(pmcsc->sim, 1);
2523 pmcsc->SimQFrozen = agTRUE;
2578 struct agtiapi_softc *pmcsc;
2591 pmcsc = pccb->pmcsc;
2602 bus_dmamap_unload(pmcsc->buffer_dmat, pccb->CCB_dmamap);
2603 agtiapi_FreeCCB(pmcsc, pccb);
2618 bus_dmamap_unload(pmcsc->buffer_dmat, pccb->CCB_dmamap);
2619 agtiapi_FreeCCB(pmcsc, pccb);
2787 agtiapi_FreeCCB(pmcsc, pccb);
2793 if (INDEX(pmcsc, pccb->targetId) >= maxTargets)
2797 agtiapi_FreeCCB(pmcsc, pccb);
2803 pDev = &pmcsc->pDevList[INDEX(pmcsc, pccb->targetId)];
2806 if ((pmcsc->flags & EDC_DATA) &&
2990 bus_dmamap_sync(pmcsc->buffer_dmat, pccb->CCB_dmamap, op);
3001 agtiapi_FreeCCB(pmcsc, pccb);
3007 TID = INDEX(pmcsc, pccb->targetId);
3008 if ((TID >= pmcsc->devDiscover) ||
3009 !(pccb->devHandle = pmcsc->pDevList[TID].pDevHandle))
3015 pmcsc->devDiscover, pmcsc, pccb );
3019 agtiapi_FreeCCB(pmcsc, pccb);
3026 "pccb->targetId %d TID %d pmcsc->devDiscover %d card %p\n",
3027 pccb->devHandle, pccb->targetId, TID, pmcsc->devDiscover,
3028 pmcsc );
3030 if(pmcsc->encrypt && io_is_encryptable) {
3031 agtiapi_SetupEncryptedIO(pmcsc, pccb, start_lba);
3038 agtiapi_QueueCCB( pmcsc, &pmcsc->ccbSendHead, &pmcsc->ccbSendTail
3039 AG_CARD_LOCAL_LOCK(&pmcsc->sendLock), pccb );
3040 agtiapi_StartIO(pmcsc);
3050 (struct agtiapi_softc *pmcsc (IN) Pointer to HBA data structure
3054 STATIC void agtiapi_StartIO( struct agtiapi_softc *pmcsc )
3062 AG_LOCAL_LOCK( &pmcsc->sendLock );
3063 pccb = pmcsc->ccbSendHead;
3066 if ((pccb == NULL) || pmcsc->flags & AGTIAPI_RESET)
3068 AG_LOCAL_UNLOCK( &pmcsc->sendLock );
3074 if (pmcsc != NULL && pccb->targetId >= 0 && pccb->targetId < maxTargets)
3076 TID = INDEX(pmcsc, pccb->targetId);
3077 targ = &pmcsc->pDevList[TID];
3082 pmcsc->ccbSendHead = NULL;
3083 pmcsc->ccbSendTail = NULL;
3084 AG_LOCAL_UNLOCK( &pmcsc->sendLock );
3131 agtiapi_Done( pmcsc, pccb );
3138 status = agtiapi_FastIOTest( pmcsc, pccb );
3140 status = tiINISuperIOStart( &pmcsc->tiRoot,
3166 agtiapi_LogEvent( pmcsc,
3175 agtiapi_Done(pmcsc, pccb);
3182 agtiapi_LogEvent( pmcsc,
3192 agtiapi_Done(pmcsc, pccb);
3199 agtiapi_LogEvent( pmcsc,
3211 agtiapi_Done(pmcsc, pccb);
3214 agtiapi_QueueCCB(pmcsc, &pmcsc->ccbSendHead, &pmcsc->ccbSendTail
3215 AG_CARD_LOCAL_LOCK(&pmcsc->sendLock), pccb);
3222 agtiapi_LogEvent(pmcsc,
3231 agtiapi_Done(pmcsc, pccb);
3237 agtiapi_LogEvent(pmcsc,
3246 agtiapi_Done(pmcsc, pccb);
3253 AG_GET_DONE_PCCB(pccb, pmcsc);
3263 (struct agtiapi_softc *pmcsc (IN) Pointer to HBA data structure
3267 STATIC void agtiapi_StartSMP(struct agtiapi_softc *pmcsc)
3273 AG_LOCAL_LOCK(&pmcsc->sendSMPLock);
3274 pccb = pmcsc->smpSendHead;
3277 if ((pccb == NULL) || pmcsc->flags & AGTIAPI_RESET)
3279 AG_LOCAL_UNLOCK(&pmcsc->sendSMPLock);
3285 pmcsc->smpSendHead = NULL;
3286 pmcsc->smpSendTail = NULL;
3287 AG_LOCAL_UNLOCK(&pmcsc->sendSMPLock);
3314 status = tiINISMPStart( &pmcsc->tiRoot,
3329 agtiapi_QueueCCB(pmcsc, &pmcsc->smpSendHead, &pmcsc->smpSendTail
3330 AG_CARD_LOCAL_LOCK(&pmcsc->sendSMPLock), pccb);
3336 agtiapi_SMPDone(pmcsc, pccb);
3342 agtiapi_SMPDone(pmcsc, pccb);
3349 AG_GET_DONE_SMP_PCCB(pccb, pmcsc);
3369 static int agtiapi_PrepareSMPSGList( struct agtiapi_softc *pmcsc, ccb_t *pccb )
3407 //AG_LOCAL_LOCK(&(pmcsc->pCardInfo->pmIOLock));
3409 error = bus_dmamap_load( pmcsc->buffer_dmat,
3417 //AG_LOCAL_UNLOCK(&(pmcsc->pCardInfo->pmIOLock));
3428 xpt_freeze_simq( pmcsc->sim, 1 );
3429 pmcsc->SimQFrozen = agTRUE;
3440 //AG_LOCAL_LOCK( &(pmcsc->pCardInfo->pmIOLock) );
3442 error = bus_dmamap_load( pmcsc->buffer_dmat,
3450 //AG_LOCAL_UNLOCK( &(pmcsc->pCardInfo->pmIOLock) );
3461 xpt_freeze_simq( pmcsc->sim, 1 );
3462 pmcsc->SimQFrozen = agTRUE;
3501 static int agtiapi_PrepareSMPSGList( struct agtiapi_softc *pmcsc, ccb_t *pccb )
3541 //AG_LOCAL_LOCK(&(pmcsc->pCardInfo->pmIOLock));
3543 error = bus_dmamap_load( pmcsc->buffer_dmat,
3551 //AG_LOCAL_UNLOCK(&(pmcsc->pCardInfo->pmIOLock));
3562 xpt_freeze_simq( pmcsc->sim, 1 );
3563 pmcsc->SimQFrozen = agTRUE;
3574 //AG_LOCAL_LOCK( &(pmcsc->pCardInfo->pmIOLock) );
3576 error = bus_dmamap_load( pmcsc->buffer_dmat,
3584 //AG_LOCAL_UNLOCK( &(pmcsc->pCardInfo->pmIOLock) );
3595 xpt_freeze_simq( pmcsc->sim, 1 );
3596 pmcsc->SimQFrozen = agTRUE;
3642 struct agtiapi_softc *pmcsc;
3651 pmcsc = pccb->pmcsc;
3663 bus_dmamap_unload( pmcsc->buffer_dmat, pccb->CCB_dmamap );
3664 agtiapi_FreeCCB( pmcsc, pccb );
3679 bus_dmamap_unload( pmcsc->buffer_dmat, pccb->CCB_dmamap );
3680 agtiapi_FreeCCB( pmcsc, pccb );
3693 agtiapi_FreeCCB( pmcsc, pccb );
3699 TID = INDEX( pmcsc, pccb->targetId );
3700 if ( (TID >= pmcsc->devDiscover) ||
3701 !(pccb->devHandle = pmcsc->pDevList[TID].pDevHandle) )
3709 pmcsc->devDiscover,
3710 pmcsc,
3712 agtiapi_FreeCCB( pmcsc, pccb );
3722 "pccb->targetId %d TID %d pmcsc->devDiscover %d card %p\n",
3725 pmcsc->devDiscover,
3726 pmcsc );
3728 tiExpPortalInfo = pmcsc->pDevList[TID].pPortalInfo;
3731 status = tiINIGetExpander( &pmcsc->tiRoot,
3740 agtiapi_FreeCCB( pmcsc, pccb );
3750 agtiapi_QueueCCB( pmcsc, &pmcsc->smpSendHead, &pmcsc->smpSendTail
3751 AG_CARD_LOCAL_LOCK(&pmcsc->sendSMPLock), pccb );
3753 agtiapi_StartSMP( pmcsc );
3765 struct agtiapi_softc *pmcsc (IN) Pointer to HBA data structure
3770 STATIC void agtiapi_Done(struct agtiapi_softc *pmcsc, ccb_t *pccb)
3784 if (agtiapi_CheckError(pmcsc, pccb_curr) != 0)
3796 CMND_DMA_UNMAP(pmcsc, ccb);
3800 agtiapi_FreeCCB(pmcsc, pccb_curr);
3814 struct agtiapi_softc *pmcsc (IN) Ponter to HBA data structure
3820 STATIC void agtiapi_SMPDone(struct agtiapi_softc *pmcsc, ccb_t *pccb)
3834 if (agtiapi_CheckSMPError(pmcsc, pccb_curr) != 0)
3836 CMND_DMA_UNMAP(pmcsc, ccb);
3840 agtiapi_FreeSMPCCB(pmcsc, pccb_curr);
3905 STATIC U32 agtiapi_CheckError(struct agtiapi_softc *pmcsc, ccb_t *pccb)
3921 agtiapi_FreeCCB(pmcsc, pccb);
3927 if (pmcsc != NULL && pccb->targetId >= 0 && pccb->targetId < maxTargets)
3929 if (pmcsc->pWWNList != NULL)
3931 TID = INDEX(pmcsc, pccb->targetId);
3934 pDevice = &pmcsc->pDevList[TID];
3945 agtiapi_FreeCCB(pmcsc, pccb);
3955 AG_LOCAL_LOCK(&pmcsc->freezeLock);
3956 if(pmcsc->freezeSim == agTRUE)
3958 pmcsc->freezeSim = agFALSE;
3959 xpt_release_simq(pmcsc->sim, 1);
3961 AG_LOCAL_UNLOCK(&pmcsc->freezeLock);
4018 AG_LOCAL_LOCK(&pmcsc->freezeLock);
4019 if(pmcsc->freezeSim == agFALSE)
4021 pmcsc->freezeSim = agTRUE;
4022 xpt_freeze_simq(pmcsc->sim, 1);
4024 AG_LOCAL_UNLOCK(&pmcsc->freezeLock);
4134 STATIC U32 agtiapi_CheckSMPError( struct agtiapi_softc *pmcsc, ccb_t *pccb )
4145 agtiapi_FreeSMPCCB(pmcsc, pccb);
4200 struct agtiapi_softc *pmcsc (IN) Pointer to the HBA structure
4206 STATIC void agtiapi_Retry(struct agtiapi_softc *pmcsc, ccb_t *pccb)
4218 agtiapi_QueueCCB(pmcsc, &pmcsc->ccbSendHead, &pmcsc->ccbSendTail
4219 AG_CARD_LOCAL_LOCK(&pmcsc->sendLock), pccb);
4291 int agtiapi_eh_HostReset( struct agtiapi_softc *pmcsc, union ccb *cmnd )
4303 agtiapi_LogEvent( pmcsc,
4311 return agtiapi_DoSoftReset( pmcsc );
4321 struct agtiapi_softc *pmcsc (IN) Pointer to HBA data structure
4329 STATIC void agtiapi_QueueCCB( struct agtiapi_softc *pmcsc,
4374 static int agtiapi_QueueSMP(struct agtiapi_softc *pmcsc, union ccb * ccb)
4383 if ((pccb = agtiapi_GetCCB(pmcsc)) == NULL)
4390 pccb->pmcsc = pmcsc;
4396 status = agtiapi_PrepareSMPSGList(pmcsc, pccb);
4401 agtiapi_FreeCCB(pmcsc, pccb);
4463 struct agtiapi_softc *pmcsc (IN) Pointer to HBA data structure
4469 STATIC void agtiapi_FreeCCB(struct agtiapi_softc *pmcsc, pccb_t pccb)
4474 AG_LOCAL_LOCK(&pmcsc->ccbLock);
4511 bus_dmamap_sync(pmcsc->buffer_dmat, pccb->CCB_dmamap, op);
4512 bus_dmamap_unload(pmcsc->buffer_dmat, pccb->CCB_dmamap);
4518 bus_dmamap_sync(pmcsc->buffer_dmat, pccb->CCB_dmamap, op);
4519 bus_dmamap_unload(pmcsc->buffer_dmat, pccb->CCB_dmamap);
4545 pci_free_consistent( pmcsc->pCardInfo->pPCIDev,
4564 if (pmcsc->encrypt)
4565 agtiapi_CleanupEncryptedIO(pmcsc, pccb);
4571 pccb->pccbNext = (pccb_t)pmcsc->ccbFreeList;
4572 pmcsc->ccbFreeList = (caddr_t *)pccb;
4574 pmcsc->activeCCB--;
4576 AG_LOCAL_UNLOCK(&pmcsc->ccbLock);
4641 struct agtiapi_softc *pmcsc (IN) Pointer to HBA data structure
4647 STATIC void agtiapi_FreeSMPCCB(struct agtiapi_softc *pmcsc, pccb_t pccb)
4652 AG_LOCAL_LOCK(&pmcsc->ccbLock);
4674 bus_dmamap_sync(pmcsc->buffer_dmat, pccb->CCB_dmamap, op);
4675 bus_dmamap_unload(pmcsc->buffer_dmat, pccb->CCB_dmamap);
4681 bus_dmamap_sync(pmcsc->buffer_dmat, pccb->CCB_dmamap, op);
4682 bus_dmamap_unload(pmcsc->buffer_dmat, pccb->CCB_dmamap);
4697 pccb->pccbNext = (pccb_t)pmcsc->ccbFreeList;
4698 pmcsc->ccbFreeList = (caddr_t *)pccb;
4700 pmcsc->activeCCB--;
4702 AG_LOCAL_UNLOCK(&pmcsc->ccbLock);
4713 struct agtiapi_softc *pmcsc (IN) Pointer to HBA data structure
4719 STATIC void agtiapi_FreeTMCCB(struct agtiapi_softc *pmcsc, pccb_t pccb)
4721 AG_LOCAL_LOCK(&pmcsc->ccbLock);
4735 pccb->pccbNext = (pccb_t)pmcsc->ccbFreeList;
4736 pmcsc->ccbFreeList = (caddr_t *)pccb;
4737 pmcsc->activeCCB--;
4738 AG_LOCAL_UNLOCK(&pmcsc->ccbLock);
5616 static void agtiapi_scan(struct agtiapi_softc *pmcsc)
5621 AGTIAPI_PRINTK("agtiapi_scan: start cardNO %d \n", pmcsc->cardNo);
5623 bus = cam_sim_path(pmcsc->sim);
5628 mtx_lock(&(pmcsc->pCardInfo->pmIOLock));
5632 mtx_unlock(&(pmcsc->pCardInfo->pmIOLock));
5638 mtx_unlock(&(pmcsc->pCardInfo->pmIOLock));
5643 mtx_unlock(&(pmcsc->pCardInfo->pmIOLock));
5644 pmcsc->dev_scan = agTRUE;