Lines Matching refs:pBA
12 * input: PBA_RECORD pBA //BA entry to be enabled
16 void ActivateBAEntry(struct ieee80211_device* ieee, PBA_RECORD pBA, u16 Time)
18 pBA->bValid = true;
20 mod_timer(&pBA->Timer, jiffies + MSECS(Time));
25 * input: PBA_RECORD pBA //BA entry to be disabled
28 void DeActivateBAEntry( struct ieee80211_device* ieee, PBA_RECORD pBA)
30 pBA->bValid = false;
31 del_timer_sync(&pBA->Timer);
73 * PBA_RECORD pBA //entry to be reset
76 void ResetBaEntry( PBA_RECORD pBA)
78 pBA->bValid = false;
79 pBA->BaParamSet.shortData = 0;
80 pBA->BaTimeoutValue = 0;
81 pBA->DialogToken = 0;
82 pBA->BaStartSeqCtrl.ShortData = 0;
88 * PBA_RECORD pBA //BA_RECORD entry which stores the necessary information for BA.
94 static struct sk_buff* ieee80211_ADDBA(struct ieee80211_device* ieee, u8* Dst, PBA_RECORD pBA, u16 StatusCode, u8 type)
103 if (pBA == NULL||ieee == NULL)
105 IEEE80211_DEBUG(IEEE80211_DL_ERR, "pBA(%p) is NULL or ieee(%p) is NULL\n", pBA, ieee);
132 *tag ++= pBA->DialogToken;
143 tmp = cpu_to_le16(pBA->BaParamSet.shortData);
147 tmp = cpu_to_le16(pBA->BaTimeoutValue);
154 memcpy(tag,(u8*)&(pBA->BaStartSeqCtrl), 2);
167 * PBA_RECORD pBA //BA_RECORD entry which stores the necessary information for BA
176 PBA_RECORD pBA,
195 DelbaParamSet.field.TID = pBA->BaParamSet.field.TID;
236 * PBA_RECORD pBA //BA_RECORD entry which stores the necessary information for BA
238 * notice: If any possible, please hide pBA in ieee. And temporarily use Manage Queue as softmac_mgmt_xmit() usually does
240 void ieee80211_send_ADDBAReq(struct ieee80211_device* ieee, u8* dst, PBA_RECORD pBA)
243 skb = ieee80211_ADDBA(ieee, dst, pBA, 0, ACT_ADDBAREQ); //construct ACT_ADDBAREQ frames so set statuscode zero.
262 * PBA_RECORD pBA //BA_RECORD entry which stores the necessary information for BA
265 * notice: If any possible, please hide pBA in ieee. And temporarily use Manage Queue as softmac_mgmt_xmit() usually does
267 void ieee80211_send_ADDBARsp(struct ieee80211_device* ieee, u8* dst, PBA_RECORD pBA, u16 StatusCode)
270 skb = ieee80211_ADDBA(ieee, dst, pBA, StatusCode, ACT_ADDBARSP); //construct ACT_ADDBARSP frames
287 * PBA_RECORD pBA //BA_RECORD entry which stores the necessary information for BA
291 * notice: If any possible, please hide pBA in ieee. And temporarily use Manage Queue as softmac_mgmt_xmit() usually does
294 void ieee80211_send_DELBA(struct ieee80211_device* ieee, u8* dst, PBA_RECORD pBA, TR_SELECT TxRxSelect, u16 ReasonCode)
297 skb = ieee80211_DELBA(ieee, dst, pBA, TxRxSelect, ReasonCode); //construct ACT_ADDBARSP frames
321 PBA_RECORD pBA = NULL;
368 pBA = &pTS->RxAdmittedBARecord;
381 DeActivateBAEntry(ieee, pBA);
382 pBA->DialogToken = *pDialogToken;
383 pBA->BaParamSet = *pBaParamSet;
384 pBA->BaTimeoutValue = *pBaTimeoutVal;
385 pBA->BaStartSeqCtrl = *pBaStartSeqCtrl;
388 pBA->BaParamSet.field.BufferSize = 1;
390 pBA->BaParamSet.field.BufferSize = 32;
391 ActivateBAEntry(ieee, pBA, pBA->BaTimeoutValue);
392 ieee80211_send_ADDBARsp(ieee, dst, pBA, ADDBA_STATUS_SUCCESS);
631 PBA_RECORD pBA = &pTS->TxPendingBARecord;
633 if(pBA->bValid==true && bOverwritePending==false)
637 DeActivateBAEntry(ieee, pBA);
639 pBA->DialogToken++; // DialogToken: Only keep the latest dialog token
640 pBA->BaParamSet.field.AMSDU_Support = 0; // Do not support A-MSDU with A-MPDU now!!
641 pBA->BaParamSet.field.BAPolicy = Policy; // Policy: Delayed or Immediate
642 pBA->BaParamSet.field.TID = pTS->TsCommonInfo.TSpec.f.TSInfo.field.ucTSID; // TID
644 pBA->BaParamSet.field.BufferSize = 32; // BufferSize: This need to be set according to A-MPDU vector
645 pBA->BaTimeoutValue = 0; // Timeout value: Set 0 to disable Timer
646 pBA->BaStartSeqCtrl.field.SeqNum = (pTS->TxCurSeq + 3) % 4096; // Block Ack will start after 3 packets later.
648 ActivateBAEntry(ieee, pBA, BA_SETUP_TIMEOUT);
650 ieee80211_send_ADDBAReq(ieee, pTS->TsCommonInfo.Addr, pBA);