USBHST_STATUS RTUSBBulkOutDataPacketComplete(URBCompleteStatus Status, purbb_t pURB, pregs *pt_regs) { PHT_TX_CONTEXT pHTTXContext; PRTMP_ADAPTER pAd; POS_COOKIE pObj; UCHAR BulkOutPipeId; pHTTXContext = (PHT_TX_CONTEXT)RTMP_OS_USB_CONTEXT_GET(pURB); pAd = pHTTXContext->pAd; pObj = (POS_COOKIE) pAd->OS_Cookie; /* Store BulkOut PipeId*/ BulkOutPipeId = pHTTXContext->BulkOutPipeId; pAd->BulkOutDataOneSecCount++; switch (BulkOutPipeId) { case EDCA_AC0_PIPE: #ifdef RALINK_ATE if (!ATE_ON(pAd)) { #endif /* RALINK_ATE */ RTMP_NET_TASK_DATA_ASSIGN(&pObj->ac0_dma_done_task, (unsigned long)pURB); RTMP_OS_TASKLET_SCHE(&pObj->ac0_dma_done_task); #ifdef RALINK_ATE } else { RTMP_NET_TASK_DATA_ASSIGN(&pObj->ate_ac0_dma_done_task, (unsigned long)pURB); RTMP_OS_TASKLET_SCHE(&pObj->ate_ac0_dma_done_task); } #endif /* RALINK_ATE */ break; case EDCA_AC1_PIPE: RTMP_NET_TASK_DATA_ASSIGN(&pObj->ac1_dma_done_task, (unsigned long)pURB); RTMP_OS_TASKLET_SCHE(&pObj->ac1_dma_done_task); break; case EDCA_AC2_PIPE: RTMP_NET_TASK_DATA_ASSIGN(&pObj->ac2_dma_done_task, (unsigned long)pURB); RTMP_OS_TASKLET_SCHE(&pObj->ac2_dma_done_task); break; case EDCA_AC3_PIPE: RTMP_NET_TASK_DATA_ASSIGN(&pObj->ac3_dma_done_task, (unsigned long)pURB); RTMP_OS_TASKLET_SCHE(&pObj->ac3_dma_done_task); break; case HCCA_PIPE: RTMP_NET_TASK_DATA_ASSIGN(&pObj->hcca_dma_done_task, (unsigned long)pURB); RTMP_OS_TASKLET_SCHE(&pObj->hcca_dma_done_task); break; } }
//void RTUSBBulkCmdRspEventComplete(purbb_t pURB) USBHST_STATUS RTUSBBulkCmdRspEventComplete(URBCompleteStatus Status, purbb_t pURB, pregs *pt_regs) { PRX_CONTEXT pCmdRspEventContext; PRTMP_ADAPTER pAd; POS_COOKIE pObj; pCmdRspEventContext = (PRX_CONTEXT)RTMP_OS_USB_CONTEXT_GET(pURB); pAd = pCmdRspEventContext->pAd; pObj = (POS_COOKIE)pAd->OS_Cookie; RTMP_NET_TASK_DATA_ASSIGN(&pObj->cmd_rsp_event_task, (unsigned long)pURB); RTMP_OS_TASKLET_SCHE(&pObj->cmd_rsp_event_task); }
USBHST_STATUS RTUSBBulkOutHCCANullFrameComplete(URBCompleteStatus Status, purbb_t pURB, pregs *pt_regs) { PRTMP_ADAPTER pAd; PTX_CONTEXT pNullContext; NTSTATUS Status; POS_COOKIE pObj; pNullContext = (PTX_CONTEXT)RTMP_OS_USB_CONTEXT_GET(pURB); pAd = pNullContext->pAd; Status = RTMP_OS_USB_STATUS_GET(pURB); /*->rtusb_urb_status;*/ pObj = (POS_COOKIE) pAd->OS_Cookie; RTMP_NET_TASK_DATA_ASSIGN(&pObj->hcca_null_frame_complete_task, (unsigned long)pURB); RTMP_OS_TASKLET_SCHE(&pObj->hcca_null_frame_complete_task); }
USBHST_STATUS RTUSBBulkOutMLMEPacketComplete(URBCompleteStatus Status, purbb_t pURB, pregs *pt_regs) { PTX_CONTEXT pMLMEContext; PRTMP_ADAPTER pAd; NTSTATUS Status; POS_COOKIE pObj; int index; pMLMEContext = (PTX_CONTEXT)RTMP_OS_USB_CONTEXT_GET(pURB); pAd = pMLMEContext->pAd; pObj = (POS_COOKIE)pAd->OS_Cookie; Status = RTMP_OS_USB_STATUS_GET(pURB); index = pMLMEContext->SelfIdx; RTMP_NET_TASK_DATA_ASSIGN(&pObj->mgmt_dma_done_task, (unsigned long)pURB); RTMP_OS_TASKLET_SCHE(&pObj->mgmt_dma_done_task); }
/* ======================================================================== Routine Description: This routine process Rx Irp and call rx complete function. Arguments: DeviceObject Pointer to the device object for next lower device. DeviceObject passed in here belongs to the next lower driver in the stack because we were invoked via IoCallDriver in USB_RxPacket AND it is not OUR device object Irp Ptr to completed IRP Context Ptr to our Adapter object (context specified in IoSetCompletionRoutine Return Value: Always returns STATUS_MORE_PROCESSING_REQUIRED Note: Always returns STATUS_MORE_PROCESSING_REQUIRED ======================================================================== */ USBHST_STATUS RTUSBBulkRxComplete(URBCompleteStatus Status, purbb_t pURB, pregs *pt_regs) { /* use a receive tasklet to handle received packets;*/ /* or sometimes hardware IRQ will be disabled here, so we can not*/ /* use spin_lock_bh()/spin_unlock_bh() after IRQ is disabled. :<*/ PRX_CONTEXT pRxContext; PRTMP_ADAPTER pAd; POS_COOKIE pObj; pRxContext = (PRX_CONTEXT)RTMP_OS_USB_CONTEXT_GET(pURB); pAd = pRxContext->pAd; pObj = (POS_COOKIE) pAd->OS_Cookie; RTMP_NET_TASK_DATA_ASSIGN(&pObj->rx_done_task, (unsigned long)pURB); RTMP_OS_TASKLET_SCHE(&pObj->rx_done_task); }