struct cmd_msg *AndesAllocCmdMsg(RTMP_ADAPTER *ad, unsigned int length) { struct cmd_msg *msg = NULL; RTMP_CHIP_CAP *cap = &ad->chipCap; struct MCU_CTRL *ctl = &ad->MCUCtrl; PNDIS_PACKET net_pkt = NULL; INT32 AllocateSize = cap->cmd_header_len + length + cap->cmd_padding_len; #ifdef RTMP_SDIO_SUPPORT if (AllocateSize >= ad->BlockSize) AllocateSize = (AllocateSize + ((-AllocateSize) & (ad->BlockSize - 1))); #endif net_pkt = RTMP_AllocateFragPacketBuffer(ad, AllocateSize); if (!net_pkt) { DBGPRINT(RT_DEBUG_ERROR, ("can not allocate net_pkt\n")); goto error0; } if ((ctl->Stage == FW_NO_INIT) || (ctl->Stage == FW_DOWNLOAD) || (ctl->Stage == ROM_PATCH_DOWNLOAD)) OS_PKT_RESERVE(net_pkt, cap->cmd_header_len); else if (ctl->Stage == FW_RUN_TIME) OS_PKT_RESERVE(net_pkt, sizeof(FW_TXD *)); os_alloc_mem(NULL, (PUCHAR *)&msg, sizeof(*msg)); if (!msg) { DBGPRINT(RT_DEBUG_ERROR, ("can not allocate cmd msg\n")); goto error1; } CMD_MSG_CB(net_pkt)->msg = msg; memset(msg, 0x00, sizeof(*msg)); msg->priv = (void *)ad; msg->net_pkt = net_pkt; ctl->alloc_cmd_msg++; return msg; os_free_mem(NULL, msg); error1: RTMPFreeNdisPacket(ad, net_pkt); error0: return NULL; }
struct cmd_msg *AndesAllocCmdMsg(RTMP_ADAPTER *ad, unsigned int length) { struct cmd_msg *msg = NULL; RTMP_CHIP_CAP *cap = &ad->chipCap; struct MCU_CTRL *ctl = &ad->MCUCtrl; PNDIS_PACKET net_pkt = NULL; INT32 AllocateSize = cap->cmd_header_len + length + cap->cmd_padding_len; net_pkt = RTMP_AllocateFragPacketBuffer(ad, AllocateSize); if (!net_pkt) { MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_ERROR, ("can not allocate net_pkt\n")); goto error0; } OS_PKT_RESERVE(net_pkt, cap->cmd_header_len); os_alloc_mem(NULL, (PUCHAR *)&msg, sizeof(*msg)); if (!msg) { MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_ERROR, ("can not allocate cmd msg\n")); goto error1; } CMD_MSG_CB(net_pkt)->msg = msg; memset(msg, 0x00, sizeof(*msg)); msg->priv = (void *)ad; msg->net_pkt = net_pkt; ctl->alloc_cmd_msg++; return msg; os_free_mem(NULL, msg); error1: RTMPFreeNdisPacket(ad, net_pkt); error0: return NULL; }