Lines Matching refs:pBA
24 * input: PBA_RECORD pBA //BA entry to be enabled
28 void ActivateBAEntry(struct ieee80211_device* ieee, PBA_RECORD pBA, u16 Time)
30 pBA->bValid = true;
32 mod_timer(&pBA->Timer, jiffies + MSECS(Time));
37 * input: PBA_RECORD pBA //BA entry to be disabled
40 void DeActivateBAEntry( struct ieee80211_device* ieee, PBA_RECORD pBA)
42 pBA->bValid = false;
43 del_timer_sync(&pBA->Timer);
85 * PBA_RECORD pBA //entry to be reset
88 void ResetBaEntry( PBA_RECORD pBA)
90 pBA->bValid = false;
91 pBA->BaParamSet.shortData = 0;
92 pBA->BaTimeoutValue = 0;
93 pBA->DialogToken = 0;
94 pBA->BaStartSeqCtrl.ShortData = 0;
100 * PBA_RECORD pBA //BA_RECORD entry which stores the necessary information for BA.
106 static struct sk_buff* ieee80211_ADDBA(struct ieee80211_device* ieee, u8* Dst, PBA_RECORD pBA, u16 StatusCode, u8 type)
114 if (pBA == NULL||ieee == NULL)
116 IEEE80211_DEBUG(IEEE80211_DL_ERR, "pBA(%p) is NULL or ieee(%p) is NULL\n", pBA, ieee);
142 *tag ++= pBA->DialogToken;
153 tmp = cpu_to_le16(pBA->BaParamSet.shortData);
157 tmp = cpu_to_le16(pBA->BaTimeoutValue);
164 memcpy(tag,(u8*)&(pBA->BaStartSeqCtrl), 2);
175 * PBA_RECORD pBA //BA_RECORD entry which stores the necessary information for BA
184 PBA_RECORD pBA,
202 DelbaParamSet.field.TID = pBA->BaParamSet.field.TID;
242 * PBA_RECORD pBA //BA_RECORD entry which stores the necessary information for BA
244 * notice: If any possible, please hide pBA in ieee. And temporarily use Manage Queue as softmac_mgmt_xmit() usually does
246 void ieee80211_send_ADDBAReq(struct ieee80211_device* ieee, u8* dst, PBA_RECORD pBA)
249 skb = ieee80211_ADDBA(ieee, dst, pBA, 0, ACT_ADDBAREQ); //construct ACT_ADDBAREQ frames so set statuscode zero.
265 * PBA_RECORD pBA //BA_RECORD entry which stores the necessary information for BA
268 * notice: If any possible, please hide pBA in ieee. And temporarily use Manage Queue as softmac_mgmt_xmit() usually does
270 void ieee80211_send_ADDBARsp(struct ieee80211_device* ieee, u8* dst, PBA_RECORD pBA, u16 StatusCode)
273 skb = ieee80211_ADDBA(ieee, dst, pBA, StatusCode, ACT_ADDBARSP); //construct ACT_ADDBARSP frames
289 * PBA_RECORD pBA //BA_RECORD entry which stores the necessary information for BA
293 * notice: If any possible, please hide pBA in ieee. And temporarily use Manage Queue as softmac_mgmt_xmit() usually does
296 void ieee80211_send_DELBA(struct ieee80211_device* ieee, u8* dst, PBA_RECORD pBA, TR_SELECT TxRxSelect, u16 ReasonCode)
299 skb = ieee80211_DELBA(ieee, dst, pBA, TxRxSelect, ReasonCode); //construct ACT_ADDBARSP frames
322 PBA_RECORD pBA = NULL;
372 pBA = &pTS->RxAdmittedBARecord;
384 DeActivateBAEntry(ieee, pBA);
385 pBA->DialogToken = *pDialogToken;
386 pBA->BaParamSet = *pBaParamSet;
387 pBA->BaTimeoutValue = *pBaTimeoutVal;
388 pBA->BaStartSeqCtrl = *pBaStartSeqCtrl;
392 pBA->BaParamSet.field.BufferSize = 1;
394 pBA->BaParamSet.field.BufferSize = 32;
395 ActivateBAEntry(ieee, pBA, 0);
396 ieee80211_send_ADDBARsp(ieee, dst, pBA, ADDBA_STATUS_SUCCESS);
639 PBA_RECORD pBA = &pTS->TxPendingBARecord;
641 if(pBA->bValid==true && bOverwritePending==false)
645 DeActivateBAEntry(ieee, pBA);
647 pBA->DialogToken++; // DialogToken: Only keep the latest dialog token
648 pBA->BaParamSet.field.AMSDU_Support = 0; // Do not support A-MSDU with A-MPDU now!!
649 pBA->BaParamSet.field.BAPolicy = Policy; // Policy: Delayed or Immediate
650 pBA->BaParamSet.field.TID = pTS->TsCommonInfo.TSpec.f.TSInfo.field.ucTSID; // TID
652 pBA->BaParamSet.field.BufferSize = 32; // BufferSize: This need to be set according to A-MPDU vector
653 pBA->BaTimeoutValue = 0; // Timeout value: Set 0 to disable Timer
654 pBA->BaStartSeqCtrl.field.SeqNum = (pTS->TxCurSeq + 3) % 4096; // Block Ack will start after 3 packets later.
656 ActivateBAEntry(ieee, pBA, BA_SETUP_TIMEOUT);
658 ieee80211_send_ADDBAReq(ieee, pTS->TsCommonInfo.Addr, pBA);