Lines Matching refs:bd

22 static inline int get_rssi0(struct wcn36xx_rx_bd *bd)
24 return 100 - ((bd->phy_stat0 >> 24) & 0xff);
27 static inline int get_snr(struct wcn36xx_rx_bd *bd)
29 return ((bd->phy_stat1 >> 24) & 0xff);
311 struct wcn36xx_rx_bd *bd;
320 bd = (struct wcn36xx_rx_bd *)skb->data;
321 buff_to_be((u32 *)bd, sizeof(*bd)/sizeof(u32));
323 "BD <<< ", (char *)bd,
326 if (bd->pdu.mpdu_data_off <= bd->pdu.mpdu_header_off ||
327 bd->pdu.mpdu_len < bd->pdu.mpdu_header_len)
330 if (bd->asf && !bd->esf) { /* chained A-MSDU chunks */
332 if (bd->pdu.mpdu_data_off + bd->pdu.mpdu_len > WCN36XX_PKT_SIZE)
335 skb_put(skb, bd->pdu.mpdu_data_off + bd->pdu.mpdu_len);
336 skb_pull(skb, bd->pdu.mpdu_data_off);
342 if (bd->pdu.mpdu_header_off < sizeof(*bd) ||
343 bd->pdu.mpdu_header_off + bd->pdu.mpdu_len > WCN36XX_PKT_SIZE)
346 skb_put(skb, bd->pdu.mpdu_header_off + bd->pdu.mpdu_len);
347 skb_pull(skb, bd->pdu.mpdu_header_off);
354 status.signal = -get_rssi0(bd);
364 if (bd->scan_learn) {
366 * band/channel from bd descriptor.
368 u8 hwch = (bd->reserved0 << 4) + bd->rx_ch;
370 if (bd->rf_band != 1 && hwch <= sizeof(ab_rx_ch_map) && hwch >= 1) {
383 wcn36xx_update_survey(wcn, status.signal, get_snr(bd),
386 if (bd->rate_id < ARRAY_SIZE(wcn36xx_rate_table)) {
387 rate = &wcn36xx_rate_table[bd->rate_id];
427 if (unlikely(bd->asf && !(bd->lsf && bd->esf))) {
428 if (bd->esf && !skb_queue_empty(&wcn->amsdu)) {
435 if (!bd->lsf)
449 skb, bd->pdu.mpdu_len, bd->pdu.mpdu_header_off,
450 bd->pdu.mpdu_data_off, bd->asf, bd->esf, bd->lsf);
458 static void wcn36xx_set_tx_pdu(struct wcn36xx_tx_bd *bd,
463 bd->pdu.mpdu_header_len = mpdu_header_len;
464 bd->pdu.mpdu_header_off = sizeof(*bd);
465 bd->pdu.mpdu_data_off = bd->pdu.mpdu_header_len +
466 bd->pdu.mpdu_header_off;
467 bd->pdu.mpdu_len = len;
468 bd->pdu.tid = tid;
520 static void wcn36xx_set_tx_data(struct wcn36xx_tx_bd *bd,
534 bd->bd_rate = WCN36XX_BD_RATE_DATA;
544 bd->dpu_sign = sta_priv->ucast_dpu_sign;
546 bd->sta_index = sta_priv->bss_sta_index;
547 bd->dpu_desc_idx = sta_priv->bss_dpu_desc_index;
551 bd->sta_index = sta_priv->sta_index;
552 bd->dpu_desc_idx = sta_priv->dpu_desc_index;
556 bd->sta_index = __vif_priv->self_sta_index;
557 bd->dpu_desc_idx = __vif_priv->self_dpu_desc_index;
558 bd->dpu_sign = __vif_priv->self_ucast_dpu_sign;
564 bd->queue_id = tid;
565 bd->pdu.bd_ssn = WCN36XX_TXBD_SSN_FILL_DPU_QOS;
567 bd->pdu.bd_ssn = WCN36XX_TXBD_SSN_FILL_DPU_NON_QOS;
572 bd->dpu_ne = 1;
577 bd->queue_id = WCN36XX_TX_U_WQ_ID;
578 bd->bd_rate = WCN36XX_BD_RATE_CTRL;
580 bd->pdu.bd_ssn = WCN36XX_TXBD_SSN_FILL_HOST;
584 bd->ub = 1;
585 bd->ack_policy = 1;
589 wcn36xx_set_tx_pdu(bd,
599 static void wcn36xx_set_tx_mgmt(struct wcn36xx_tx_bd *bd,
608 bd->sta_index = __vif_priv->self_sta_index;
609 bd->dpu_desc_idx = __vif_priv->self_dpu_desc_index;
610 bd->dpu_ne = 1;
614 bd->bd_rate = (WCN36XX_BAND(wcn) == NL80211_BAND_5GHZ) ?
618 bd->bd_rate = WCN36XX_BD_RATE_CTRL;
632 bd->ub = 1;
634 bd->ack_policy = 1;
635 bd->queue_id = WCN36XX_TX_B_WQ_ID;
637 bd->queue_id = WCN36XX_TX_U_WQ_ID;
640 bd->pdu.bd_ssn = WCN36XX_TXBD_SSN_FILL_DPU_NON_QOS;
642 wcn36xx_set_tx_pdu(bd,
661 struct wcn36xx_tx_bd bd;
664 memset(&bd, 0, sizeof(bd));
674 bd.dpu_rf = WCN36XX_BMU_WQ_TX;
685 bd.tx_comp = 1;
690 wcn36xx_set_tx_data(&bd, wcn, &vif_priv, sta_priv, skb, bcast);
693 wcn36xx_set_tx_mgmt(&bd, wcn, &vif_priv, skb, bcast);
695 buff_to_be((u32 *)&bd, sizeof(bd)/sizeof(u32));
696 bd.tx_bd_sign = 0xbdbdbdbd;
698 ret = wcn36xx_dxe_tx_frame(wcn, vif_priv, &bd, skb, is_low);