📄 cisaironethw.c
字号:
INT32 numBytes /* Number of bytes */ ) { /* enable Access to the Rid */ if ( cisAironetHwRidAccess (pWlanDev, rid, ANET_CMD_ACCESS) == ERROR ) { ANET_LOG(DEBUG_ERROR, ("bapWrite: error getting write access to RID\n", 1,2,3,4,5,6)); return (ERROR); } /* Enable access to the desired BAP (BAP0 or BAP1) */ if ( cisAironetHwBapSetup (pWlanDev, rid, offset, bap) == ERROR ) { ANET_LOG(DEBUG_ERROR, ("bapWrite: error Accessing BAP\n", 1,2,3,4,5,6)); return (ERROR); } /* Write to the Bap */ if (cisAironetHwBapWrite (pWlanDev, pSrc, numBytes, bap) == ERROR ) { ANET_LOG(DEBUG_ERROR, ("bapWrite: error writing data to RID\n", 1,2,3,4,5,6)); return (ERROR); } /* Commit data */ return ( cisAironetHwRidAccess (pWlanDev, rid, ANET_WRITE_RID) ); }/**************************************************************************** bapRead - Reads data from a buffer access path.* * This routine performs all the required initialization so the the user can * tranparently access the desired BAP..* * RETURNS : OK or ERROR if a NULL pointer is passed in or if required BAP * init fails. ** ERRNO : N/A** SEE ALSO: Cisco Aironet 340/350 Driver Programmer's Manual*/LOCAL STATUS bapRead ( CARD_CTRL_T * pWlanDev, /* Driver control object */ UINT16 rid, /* RID to access */ UINT32 offset, /* The offset into RID */ UINT16 bap, /* BAP to access (0 or 1) */ UINT16 * pDst, /* Destination buffer */ INT32 numBytes /* Number of bytes */ ) { /* enable Access to the Rid */ if ( cisAironetHwRidAccess (pWlanDev, rid, ANET_CMD_ACCESS) == ERROR ) { ANET_LOG(DEBUG_ERROR, ("bapRead: error getting read access to RID\n", 1,2,3,4,5,6)); return (ERROR); } /* Enable access to the desired BAP (BAP0 or BAP1) */ if ( cisAironetHwBapSetup (pWlanDev, rid, offset, bap) == ERROR ) { ANET_LOG(DEBUG_ERROR, ("bapRead: error Accessing BAP\n", 1,2,3,4,5,6)); return (ERROR); } /* Read the Bap */ if ( cisAironetHwBapRead (pWlanDev, pDst, numBytes, bap) == ERROR ) { ANET_LOG(DEBUG_ERROR, ("bapRead: error Reading BAP\n", 1,2,3,4,5,6)); return (ERROR); } return (OK); }/**************************************************************************** cisAironetHwRidAccess - Issues command to access a RID.* * This routine issues the aironet commmand to enable RID access. It also * checks the command response before returning the command status.* * RETURNS : OK or cmd status or ERROR if a NULL pointer is passed in or if * required rid cannot be accessed.** ERRNO : N/A** SEE ALSO: Cisco Aironet 340/350 Driver Programmer's Manual*/LOCAL INT16 cisAironetHwRidAccess ( CARD_CTRL_T * pWlanDev, /* Pointer to device handle */ UINT16 rid, /* Rid to access */ UINT16 cmd ) { CARD_RESP_T * pRespObj = NULL; CARD_CMD_T * pCmdObj = NULL; /* Sanity check */ if (pWlanDev == NULL) { ANET_LOG(DEBUG_ERROR, ("cisAironetHwRidAccess: Null pointer\n", 1,2,3,4,5,6)); return (ERROR); } /* Access to card response regs */ pRespObj = (CARD_RESP_T *) &pWlanDev->macResp; pCmdObj = (CARD_CMD_T *) &pWlanDev->macCmd; /* Issue the command */ pCmdObj->param0 = rid; pCmdObj->param1 = 0; pCmdObj->param2 = 0; pCmdObj->command = cmd; if ( (cisAironetHwCmdIssue (pWlanDev) == ERROR) || (cisAironetHwErrorCheck (pWlanDev) != 0) ) { ANET_LOG(DEBUG_ERROR, ("cisAironetHwRidAccess: error Accessing RID %s\n", (INT32) cisAironetHwErrorDesc (),2,3,4,5,6)); return (ERROR); } /* check the response register */ if ( (pRespObj->resp0 & ANET_STAT_CMD_RESULT) != 0 ) { ANET_LOG(DEBUG_ERROR, ("cisAironetHwRidAccess: we have a problem\n", 1,2,3,4,5,6)); return ( (cmd << 8) + (pRespObj->resp0 & 0xFF) ); } /* return OK */ return (OK); }/**************************************************************************** cisAironetHwBapRead - Reads data from the choosen buffer access path.* * This routine copies data from the card via a buffer access path to the * buffer pointer that is passed in as a parameter. All accesses are 16 bits* wide from the card.** RETURNS : OK ** ERRNO : N/A** SEE ALSO: Cisco Aironet 340/350 Driver Programmer's Manual*/LOCAL INT16 cisAironetHwBapRead ( CARD_CTRL_T * pWlanDev, UINT16 * pDst, /* Destination buffer */ UINT32 numBytes, /* Number of bytes */ UINT32 bap /* 0-BAP0 and 2-BAP1 */ ) { /* round length up to a 16 bit aligned value */ numBytes = ROUND_UP(numBytes,2); /* Pass the data from the Card into the buffer * Note: each access to DATA0 or DATA1 will auto-increment * the buffer pointer. */ while (numBytes > 0) { *pDst++ = WLAN_IN_16( ((UINT32) &pWlanDev->macReg->data0) + bap); numBytes -= 2; } /* Status - OK */ return (OK); }/**************************************************************************** cisAironetHwBapWrite - Writes data to the choosen buffer access path.* * This routine copies data from the buffer pointer that is passed in as * parameter to the card via a buffer access path. All accesses are 16 bits* wide from the card.** RETURNS : OK ** ERRNO : N/A** SEE ALSO: Cisco Aironet 340/350 Driver Programmer's Manual*/LOCAL INT16 cisAironetHwBapWrite ( CARD_CTRL_T * pWlanDev, UINT16 * pSrc, /* Source buffer */ UINT32 numBytes, /* Number of bytes to read */ UINT32 bap /* 0-BAP0 and 2-BAP1 */ ) { /* round length up to a 16 bit aligned value */ numBytes = ROUND_UP(numBytes, 2); /* Write data the buffer into the Card. * Note: each access to DATA0 or DATA1 will auto-increment * the buffer pointer. */ while (numBytes > 0) { WLAN_OUT_16( ((UINT32) &pWlanDev->macReg->data0) + bap, *pSrc++); numBytes -= 2; } /* Status - OK */ return (OK); }/*=========================================================================*//* *//* CARD REGISTER ACCESS ROUTINES *//* *//*=========================================================================*//**************************************************************************** cisAironetHwEventStatusGet - Returns the contents of the event status register.* * Returns the contents of the event status register.** RETURNS : register contents.** ERRNO : N/A** SEE ALSO: Cisco Aironet 340/350 Driver Programmer's Manual** NOMANUAL*/UINT16 cisAironetHwEventStatusGet ( CARD_CTRL_T * pWlanDev /* Driver control struct */ ) { UINT16 linkstatus = WLAN_IN_16( (UINT32) &pWlanDev->macReg->evStat); cisAironetHwEventLinkAck(pWlanDev); return linkstatus; }/**************************************************************************** cisAironetHwLinkStatusGet - Returns the contents of the link status register.* * Returns the contents of the link status register.** RETURNS : register contents.** ERRNO : N/A** SEE ALSO: Cisco Aironet 340/350 Driver Programmer's Manual** NOMANUAL*/UINT16 cisAironetHwLinkStatusGet ( CARD_CTRL_T * pWlanDev /* Driver control struct */ ) { UINT16 lnkstatus; lnkstatus = WLAN_IN_16( (UINT32) &pWlanDev->macReg->linkStatus); cisAironetHwEventLinkAck(pWlanDev); return lnkstatus; }/**************************************************************************** cisAironetHwRxFidGet - Returns the contents of the receive FID register.* * Returns the contents of the receive FID register.** RETURNS : register contents.** ERRNO : N/A** SEE ALSO: Cisco Aironet 340/350 Driver Programmer's Manual** NOMANUAL*/UINT16 cisAironetHwRxFidGet ( CARD_CTRL_T * pWlanDev /* Driver control struct */ ) { /* Return rx FID */ return (WLAN_IN_16( (UINT32) &pWlanDev->macReg->rxFID )); }/**************************************************************************** cisAironetHwTxComplFidGet - Returns the contents of the tranmit complete* FID register.* * Returns the contents of the transmit complete FID register.** RETURNS : register contents.** ERRNO : N/A** SEE ALSO: Cisco Aironet 340/350 Driver Programmer's Manual** NOMANUAL*/UINT16 cisAironetHwTxComplFidGet ( CARD_CTRL_T * pWlanDev /* Driver control struct */ ) { /* Return rx FID */ return ( WLAN_IN_16( (UINT32) &pWlanDev->macReg->txCompFID) ); }/**************************************************************************** cisAironetHwEventRxAck - Clears the receive event bit in the event ack* register.* * Clears the receive event bit in the event ack register.** RETURNS : N/A** ERRNO : N/A** SEE ALSO: Cisco Aironet 340/350 Driver Programmer's Manual** NOMANUAL*/void cisAironetHwEventRxAck ( CARD_CTRL_T * pWlanDev /* Driver control struct */ ) { WLAN_OUT_16( (UINT32) &pWlanDev->macReg->evAck, ANET_EVENT_RX); }/**************************************************************************** cisAironetHwEventAwakenAck - Clears the awaken event bit in the event * ack register.* * Clears the awaken event bit in the event ack register.** RETURNS : N/A** ERRNO : N/A** SEE ALSO: Cisco Aironet 340/350 Driver Programmer's Manual** NOMANUAL*/void cisAironetHwEventAwakenAck ( CARD_CTRL_T * pWlanDev /* Driver control struct */ ) { WLAN_OUT_16( (UINT32) &pWlanDev->macReg->evAck, ANET_EVENT_AWAKE); }/**************************************************************************** cisAironetHwEventTxAck - Clears the transmit event bit in the event * ack register.* * Clears the transmit event bit in the event ack register.** RETURNS : N/A** ERRNO : N/A** SEE ALSO: Cisco Aironet 340/350 Driver Programmer's Manual** NOMANUAL*/void cisAironetHwEventTxAck ( CARD_CTRL_T * pWlanDev /* Driver control struct */ ) { WLAN_OUT_16( (UINT32) &pWlanDev->macReg->evAck, ANET_EVENT_TX | ANET_EVENT_TX_EXC); }/**************************************************************************** cisAironetHwEventTxAck - Clears the link event bit in the event ack * register.* * Clears the link event bit in the event ack register.** RETURNS : N/A** ERRNO : N/A** SEE ALSO: Cisco Aironet 340/350 Driver Programmer's Manual* * NOMANUAL*/void cisAironetHwEventLinkAck ( CARD_CTRL_T * pWlanDev /* Driver control struct */ ) { WLAN_OUT_16( (UINT32) &pWlanDev->macReg->evAck, ANET_EVENT_LINK); }/**************************************************************************** cisAironetHwEventTxAck - Clears the unknown event bit in the event ack * register.* * Clears the unknown event bit in the event ack register.** RETURNS : N/A** ERRNO : N/A** SEE ALSO: Cisco Aironet 340/350 Driver Programmer's Manual** NOMANUAL*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -