VOID RT28xx_UpdateTimToAsic( IN RTMP_ADAPTER *pAd, IN INT apidx, IN ULONG FrameLen) { TIM_BUF_STRUC *tim_buf = NULL; UCHAR *buf; INT len; PNDIS_PACKET *pkt = NULL; IF_DEV_CONFIG_OPMODE_ON_AP(pAd) { tim_buf = &pAd->ApCfg.MBSSID[apidx].tim_buf; } if (!tim_buf) { MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_ERROR, ("%s(): bcn_buf is NULL!\n", __FUNCTION__)); return; } pkt = tim_buf->TimPkt; if (pkt) { buf = (UCHAR *)GET_OS_PKT_DATAPTR(pkt); len = FrameLen + pAd->chipCap.tx_hw_hdr_len; SET_OS_PKT_LEN(pkt, len); /* Now do hardware-depened kick out.*/ HAL_KickOutMgmtTx(pAd, Q_IDX_BCN, pkt, buf, len); RTMP_SEM_UNLOCK(&pAd->BcnRingLock); } else { MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_ERROR, ("%s(): TimPkt is NULL!\n", __FUNCTION__)); } }
void convert_reordering_packet_to_preAMSDU_or_802_3_packet(struct rt_rtmp_adapter *pAd, struct rt_rx_blk *pRxBlk, u8 FromWhichBSSID) { void *pRxPkt; u8 Header802_3[LENGTH_802_3]; /* 1. get 802.3 Header */ /* 2. remove LLC */ /* a. pointer pRxBlk->pData to payload */ /* b. modify pRxBlk->DataSize */ RTMP_802_11_REMOVE_LLC_AND_CONVERT_TO_802_3(pRxBlk, Header802_3); ASSERT(pRxBlk->pRxPacket); pRxPkt = RTPKT_TO_OSPKT(pRxBlk->pRxPacket); SET_OS_PKT_NETDEV(pRxPkt, get_netdev_from_bssid(pAd, FromWhichBSSID)); SET_OS_PKT_DATAPTR(pRxPkt, pRxBlk->pData); SET_OS_PKT_LEN(pRxPkt, pRxBlk->DataSize); SET_OS_PKT_DATATAIL(pRxPkt, pRxBlk->pData, pRxBlk->DataSize); /* */ /* copy 802.3 header, if necessary */ /* */ if (!RX_BLK_TEST_FLAG(pRxBlk, fRX_AMSDU)) { { #ifdef LINUX NdisMoveMemory(skb_push(pRxPkt, LENGTH_802_3), Header802_3, LENGTH_802_3); #endif } } }