Lines Matching refs:ampdu

152 static void brcms_c_scb_ampdu_update_max_txlen(struct ampdu_info *ampdu, u8 dur)  in brcms_c_scb_ampdu_update_max_txlen()  argument
160 ampdu->max_txlen[mcs][0][0] = (rate * dur) >> 3; in brcms_c_scb_ampdu_update_max_txlen()
163 ampdu->max_txlen[mcs][1][0] = (rate * dur) >> 3; in brcms_c_scb_ampdu_update_max_txlen()
166 ampdu->max_txlen[mcs][0][1] = (rate * dur) >> 3; in brcms_c_scb_ampdu_update_max_txlen()
169 ampdu->max_txlen[mcs][1][1] = (rate * dur) >> 3; in brcms_c_scb_ampdu_update_max_txlen()
173 static bool brcms_c_ampdu_cap(struct ampdu_info *ampdu) in brcms_c_ampdu_cap() argument
175 if (BRCMS_PHY_11N_CAP(ampdu->wlc->band)) in brcms_c_ampdu_cap()
181 static int brcms_c_ampdu_set(struct ampdu_info *ampdu, bool on) in brcms_c_ampdu_set() argument
183 struct brcms_c_info *wlc = ampdu->wlc; in brcms_c_ampdu_set()
194 if (!brcms_c_ampdu_cap(ampdu)) { in brcms_c_ampdu_set()
205 static void brcms_c_ffpld_init(struct ampdu_info *ampdu) in brcms_c_ffpld_init() argument
211 fifo = (ampdu->fifo_tb + j); in brcms_c_ffpld_init()
225 struct ampdu_info *ampdu; in brcms_c_ampdu_attach() local
228 ampdu = kzalloc(sizeof(struct ampdu_info), GFP_ATOMIC); in brcms_c_ampdu_attach()
229 if (!ampdu) in brcms_c_ampdu_attach()
232 ampdu->wlc = wlc; in brcms_c_ampdu_attach()
235 ampdu->ini_enable[i] = true; in brcms_c_ampdu_attach()
237 ampdu->ini_enable[PRIO_8021D_VO] = false; in brcms_c_ampdu_attach()
238 ampdu->ini_enable[PRIO_8021D_NC] = false; in brcms_c_ampdu_attach()
241 ampdu->ini_enable[PRIO_8021D_NONE] = false; in brcms_c_ampdu_attach()
242 ampdu->ini_enable[PRIO_8021D_BK] = false; in brcms_c_ampdu_attach()
244 ampdu->ba_tx_wsize = AMPDU_TX_BA_DEF_WSIZE; in brcms_c_ampdu_attach()
245 ampdu->ba_rx_wsize = AMPDU_RX_BA_DEF_WSIZE; in brcms_c_ampdu_attach()
246 ampdu->mpdu_density = AMPDU_DEF_MPDU_DENSITY; in brcms_c_ampdu_attach()
247 ampdu->max_pdu = AUTO; in brcms_c_ampdu_attach()
248 ampdu->dur = AMPDU_MAX_DUR; in brcms_c_ampdu_attach()
250 ampdu->ffpld_rsvd = AMPDU_DEF_FFPLD_RSVD; in brcms_c_ampdu_attach()
256 ampdu->rx_factor = IEEE80211_HT_MAX_AMPDU_32K; in brcms_c_ampdu_attach()
258 ampdu->rx_factor = IEEE80211_HT_MAX_AMPDU_64K; in brcms_c_ampdu_attach()
259 ampdu->retry_limit = AMPDU_DEF_RETRY_LIMIT; in brcms_c_ampdu_attach()
260 ampdu->rr_retry_limit = AMPDU_DEF_RR_RETRY_LIMIT; in brcms_c_ampdu_attach()
263 ampdu->retry_limit_tid[i] = ampdu->retry_limit; in brcms_c_ampdu_attach()
264 ampdu->rr_retry_limit_tid[i] = ampdu->rr_retry_limit; in brcms_c_ampdu_attach()
267 brcms_c_scb_ampdu_update_max_txlen(ampdu, ampdu->dur); in brcms_c_ampdu_attach()
268 ampdu->mfbr = false; in brcms_c_ampdu_attach()
270 brcms_c_ampdu_set(ampdu, wlc->pub->_ampdu); in brcms_c_ampdu_attach()
272 ampdu->tx_max_funl = FFPLD_TX_MAX_UNFL; in brcms_c_ampdu_attach()
273 brcms_c_ffpld_init(ampdu); in brcms_c_ampdu_attach()
275 return ampdu; in brcms_c_ampdu_attach()
278 void brcms_c_ampdu_detach(struct ampdu_info *ampdu) in brcms_c_ampdu_detach() argument
280 kfree(ampdu); in brcms_c_ampdu_detach()
283 static void brcms_c_scb_ampdu_update_config(struct ampdu_info *ampdu, in brcms_c_scb_ampdu_update_config() argument
293 if (ampdu->fifo_tb[i].ampdu_pld_size > FFPLD_PLD_INCR) in brcms_c_scb_ampdu_update_config()
298 if (ampdu->max_pdu != AUTO) in brcms_c_scb_ampdu_update_config()
299 scb_ampdu->max_pdu = (u8) ampdu->max_pdu; in brcms_c_scb_ampdu_update_config()
309 ampdu->fifo_tb[TX_AC_BE_FIFO]. in brcms_c_scb_ampdu_update_config()
313 static void brcms_c_scb_ampdu_update_config_all(struct ampdu_info *ampdu) in brcms_c_scb_ampdu_update_config_all() argument
315 brcms_c_scb_ampdu_update_config(ampdu, &ampdu->wlc->pri_scb); in brcms_c_scb_ampdu_update_config_all()
318 static void brcms_c_ffpld_calc_mcs2ampdu_table(struct ampdu_info *ampdu, int f) in brcms_c_ffpld_calc_mcs2ampdu_table() argument
323 struct brcms_fifo_info *fifo = (ampdu->fifo_tb + f); in brcms_c_ffpld_calc_mcs2ampdu_table()
358 struct ampdu_info *ampdu = wlc->ampdu; in brcms_c_ffpld_check_txfunfl() local
365 struct brcms_fifo_info *fifo = (ampdu->fifo_tb + fid); in brcms_c_ffpld_check_txfunfl()
381 if (!ampdu->tx_max_funl) in brcms_c_ffpld_check_txfunfl()
388 if ((TXFIFO_SIZE_UNIT * (u32) xmtfifo_sz) <= ampdu->ffpld_rsvd) in brcms_c_ffpld_check_txfunfl()
391 max_pld_size = TXFIFO_SIZE_UNIT * xmtfifo_sz - ampdu->ffpld_rsvd; in brcms_c_ffpld_check_txfunfl()
412 if (txunfl_ratio > ampdu->tx_max_funl) { in brcms_c_ffpld_check_txfunfl()
438 brcms_c_scb_ampdu_update_config_all(ampdu); in brcms_c_ffpld_check_txfunfl()
467 brcms_c_ffpld_calc_mcs2ampdu_table(ampdu, fid); in brcms_c_ffpld_check_txfunfl()
470 brcms_c_scb_ampdu_update_config_all(ampdu); in brcms_c_ffpld_check_txfunfl()
484 struct ampdu_info *ampdu = wlc->ampdu; in brcms_c_ampdu_tx_operational() local
488 if (!ampdu->ini_enable[tid]) { in brcms_c_ampdu_tx_operational()
521 struct ampdu_info *ampdu = wlc->ampdu; in brcms_c_ampdu_add_frame() local
573 if (txrate[0].count <= ampdu->rr_retry_limit_tid[tid]) { in brcms_c_ampdu_add_frame()
584 struct brcms_fifo_info *f = &ampdu->fifo_tb[fifo]; in brcms_c_ampdu_add_frame()
600 ampdu->max_txlen[mcs][is40][sgi]); in brcms_c_ampdu_add_frame()
629 struct ampdu_info *ampdu = wlc->ampdu; in brcms_c_ampdu_finalize() local
664 f = &ampdu->fifo_tb[fifo]; in brcms_c_ampdu_finalize()
837 brcms_c_ampdu_dotxstatus_complete(struct ampdu_info *ampdu, struct scb *scb, in brcms_c_ampdu_dotxstatus_complete() argument
842 struct brcms_c_info *wlc = ampdu->wlc; in brcms_c_ampdu_dotxstatus_complete()
868 retry_limit = ampdu->retry_limit_tid[tid]; in brcms_c_ampdu_dotxstatus_complete()
869 rr_retry_limit = ampdu->rr_retry_limit_tid[tid]; in brcms_c_ampdu_dotxstatus_complete()
1030 brcms_c_ampdu_dotxstatus(struct ampdu_info *ampdu, struct scb *scb, in brcms_c_ampdu_dotxstatus() argument
1034 struct brcms_c_info *wlc = ampdu->wlc; in brcms_c_ampdu_dotxstatus()
1065 brcms_c_ampdu_dotxstatus_complete(ampdu, scb, p, txs, s1, s2); in brcms_c_ampdu_dotxstatus()
1102 return wlc->ampdu->ini_enable[tid]; in brcms_c_aggregatable()
1105 void brcms_c_ampdu_shm_upd(struct ampdu_info *ampdu) in brcms_c_ampdu_shm_upd() argument
1107 struct brcms_c_info *wlc = ampdu->wlc; in brcms_c_ampdu_shm_upd()
1113 if ((ampdu->rx_factor & IEEE80211_HT_AMPDU_PARM_FACTOR) == in brcms_c_ampdu_shm_upd()