static int SendHCICommand(struct ar3k_config_info *pConfig, u8 *pBuffer, int Length) { struct htc_packet *pPacket = NULL; int status = 0; do { pPacket = (struct htc_packet *)A_MALLOC(sizeof(struct htc_packet)); if (NULL == pPacket) { status = A_NO_MEMORY; break; } A_MEMZERO(pPacket,sizeof(struct htc_packet)); SET_HTC_PACKET_INFO_TX(pPacket, NULL, pBuffer, Length, HCI_COMMAND_TYPE, AR6K_CONTROL_PKT_TAG); /* issue synchronously */ status = HCI_TransportSendPkt(pConfig->pHCIDev,pPacket,true); } while (false); if (pPacket != NULL) { kfree(pPacket); } return status; }
static A_STATUS SendHCICommand(AR3K_CONFIG_INFO *pConfig, A_UINT8 *pBuffer, int Length) { HTC_PACKET *pPacket = NULL; A_STATUS status = A_OK; do { pPacket = (HTC_PACKET *)A_MALLOC(sizeof(HTC_PACKET)); if (NULL == pPacket) { status = A_NO_MEMORY; break; } A_MEMZERO(pPacket,sizeof(HTC_PACKET)); SET_HTC_PACKET_INFO_TX(pPacket, NULL, pBuffer, Length, HCI_COMMAND_TYPE, AR6K_CONTROL_PKT_TAG); /* issue synchronously */ status = HCI_TransportSendPkt(pConfig->pHCIDev,pPacket,TRUE); } while (FALSE); if (pPacket != NULL) { A_FREE(pPacket); } return status; }
A_STATUS hci_test_send(AR_SOFTC_T *ar, struct sk_buff *skb) #endif { int status = A_OK; int length; EPPING_HEADER *pHeader; HTC_PACKET *pPacket; HTC_TX_TAG htc_tag = AR6K_DATA_PKT_TAG; #ifdef EXPORT_HCI_BRIDGE_INTERFACE AR6K_HCI_BRIDGE_INFO *pHcidevInfo = g_pHcidevInfo; #else AR6K_HCI_BRIDGE_INFO *pHcidevInfo = (AR6K_HCI_BRIDGE_INFO *)ar->hcidev_info; #endif do { if (NULL == pHcidevInfo) { status = A_ERROR; break; } if (NULL == pHcidevInfo->pHCIDev) { status = A_ERROR; break; } if (pHcidevInfo->HciNormalMode) { /* this interface cannot run when normal WMI is running */ status = A_ERROR; break; } pHeader = (EPPING_HEADER *)A_NETBUF_DATA(skb); if (!IS_EPPING_PACKET(pHeader)) { status = A_EINVAL; break; } if (IS_EPING_PACKET_NO_DROP(pHeader)) { htc_tag = AR6K_CONTROL_PKT_TAG; } length = sizeof(EPPING_HEADER) + pHeader->DataLength; pPacket = AllocHTCStruct(pHcidevInfo); if (NULL == pPacket) { status = A_NO_MEMORY; break; } SET_HTC_PACKET_INFO_TX(pPacket, skb, A_NETBUF_DATA(skb), length, HCI_ACL_TYPE, /* send every thing out as ACL */ htc_tag); HCI_TransportSendPkt(pHcidevInfo->pHCIDev,pPacket,FALSE); pPacket = NULL; } while (FALSE); return status; }