Lines Matching refs:bf
629 ath5k_rxbuf_setup(struct ath5k_hw *ah, struct ath5k_buf *bf) in ath5k_rxbuf_setup() argument
631 struct sk_buff *skb = bf->skb; in ath5k_rxbuf_setup()
636 skb = ath5k_rx_skb_alloc(ah, &bf->skbaddr); in ath5k_rxbuf_setup()
639 bf->skb = skb; in ath5k_rxbuf_setup()
657 ds = bf->desc; in ath5k_rxbuf_setup()
658 ds->ds_link = bf->daddr; /* link to self */ in ath5k_rxbuf_setup()
659 ds->ds_data = bf->skbaddr; in ath5k_rxbuf_setup()
667 *ah->rxlink = bf->daddr; in ath5k_rxbuf_setup()
698 struct ath5k_buf *bf, int idx) in ath5k_get_rate() argument
704 if (bf->rates[idx].idx < 0) { in ath5k_get_rate()
708 return &hw->wiphy->bands[info->band]->bitrates[ bf->rates[idx].idx ]; in ath5k_get_rate()
714 struct ath5k_buf *bf, int idx) in ath5k_get_rate_hw_value() argument
720 rate = ath5k_get_rate(hw, info, bf, idx); in ath5k_get_rate_hw_value()
724 rc_flags = bf->rates[idx].flags; in ath5k_get_rate_hw_value()
732 ath5k_txbuf_setup(struct ath5k_hw *ah, struct ath5k_buf *bf, in ath5k_txbuf_setup() argument
736 struct ath5k_desc *ds = bf->desc; in ath5k_txbuf_setup()
737 struct sk_buff *skb = bf->skb; in ath5k_txbuf_setup()
751 bf->skbaddr = dma_map_single(ah->dev, skb->data, skb->len, in ath5k_txbuf_setup()
754 if (dma_mapping_error(ah->dev, bf->skbaddr)) in ath5k_txbuf_setup()
757 ieee80211_get_tx_rates(info->control.vif, (control) ? control->sta : NULL, skb, bf->rates, in ath5k_txbuf_setup()
758 ARRAY_SIZE(bf->rates)); in ath5k_txbuf_setup()
760 rate = ath5k_get_rate(ah->hw, info, bf, 0); in ath5k_txbuf_setup()
772 hw_rate = ath5k_get_rate_hw_value(ah->hw, info, bf, 0); in ath5k_txbuf_setup()
801 bf->rates[0].count, keyidx, ah->ah_tx_ant, flags, in ath5k_txbuf_setup()
813 rate = ath5k_get_rate(ah->hw, info, bf, i); in ath5k_txbuf_setup()
817 mrr_rate[i] = ath5k_get_rate_hw_value(ah->hw, info, bf, i); in ath5k_txbuf_setup()
818 mrr_tries[i] = bf->rates[i].count; in ath5k_txbuf_setup()
828 ds->ds_data = bf->skbaddr; in ath5k_txbuf_setup()
831 list_add_tail(&bf->list, &txq->q); in ath5k_txbuf_setup()
834 ath5k_hw_set_txdp(ah, txq->qnum, bf->daddr); in ath5k_txbuf_setup()
836 *txq->link = bf->daddr; in ath5k_txbuf_setup()
845 dma_unmap_single(ah->dev, bf->skbaddr, skb->len, DMA_TO_DEVICE); in ath5k_txbuf_setup()
857 struct ath5k_buf *bf; in ath5k_desc_alloc() local
878 bf = kcalloc(1 + ATH_TXBUF + ATH_RXBUF + ATH_BCBUF, in ath5k_desc_alloc()
880 if (bf == NULL) { in ath5k_desc_alloc()
885 ah->bufptr = bf; in ath5k_desc_alloc()
888 for (i = 0; i < ATH_RXBUF; i++, bf++, ds++, da += sizeof(*ds)) { in ath5k_desc_alloc()
889 bf->desc = ds; in ath5k_desc_alloc()
890 bf->daddr = da; in ath5k_desc_alloc()
891 list_add_tail(&bf->list, &ah->rxbuf); in ath5k_desc_alloc()
896 for (i = 0; i < ATH_TXBUF; i++, bf++, ds++, da += sizeof(*ds)) { in ath5k_desc_alloc()
897 bf->desc = ds; in ath5k_desc_alloc()
898 bf->daddr = da; in ath5k_desc_alloc()
899 list_add_tail(&bf->list, &ah->txbuf); in ath5k_desc_alloc()
904 for (i = 0; i < ATH_BCBUF; i++, bf++, ds++, da += sizeof(*ds)) { in ath5k_desc_alloc()
905 bf->desc = ds; in ath5k_desc_alloc()
906 bf->daddr = da; in ath5k_desc_alloc()
907 list_add_tail(&bf->list, &ah->bcbuf); in ath5k_desc_alloc()
919 ath5k_txbuf_free_skb(struct ath5k_hw *ah, struct ath5k_buf *bf) in ath5k_txbuf_free_skb() argument
921 BUG_ON(!bf); in ath5k_txbuf_free_skb()
922 if (!bf->skb) in ath5k_txbuf_free_skb()
924 dma_unmap_single(ah->dev, bf->skbaddr, bf->skb->len, in ath5k_txbuf_free_skb()
926 ieee80211_free_txskb(ah->hw, bf->skb); in ath5k_txbuf_free_skb()
927 bf->skb = NULL; in ath5k_txbuf_free_skb()
928 bf->skbaddr = 0; in ath5k_txbuf_free_skb()
929 bf->desc->ds_data = 0; in ath5k_txbuf_free_skb()
933 ath5k_rxbuf_free_skb(struct ath5k_hw *ah, struct ath5k_buf *bf) in ath5k_rxbuf_free_skb() argument
937 BUG_ON(!bf); in ath5k_rxbuf_free_skb()
938 if (!bf->skb) in ath5k_rxbuf_free_skb()
940 dma_unmap_single(ah->dev, bf->skbaddr, common->rx_bufsize, in ath5k_rxbuf_free_skb()
942 dev_kfree_skb_any(bf->skb); in ath5k_rxbuf_free_skb()
943 bf->skb = NULL; in ath5k_rxbuf_free_skb()
944 bf->skbaddr = 0; in ath5k_rxbuf_free_skb()
945 bf->desc->ds_data = 0; in ath5k_rxbuf_free_skb()
951 struct ath5k_buf *bf; in ath5k_desc_free() local
953 list_for_each_entry(bf, &ah->txbuf, list) in ath5k_desc_free()
954 ath5k_txbuf_free_skb(ah, bf); in ath5k_desc_free()
955 list_for_each_entry(bf, &ah->rxbuf, list) in ath5k_desc_free()
956 ath5k_rxbuf_free_skb(ah, bf); in ath5k_desc_free()
957 list_for_each_entry(bf, &ah->bcbuf, list) in ath5k_desc_free()
958 ath5k_txbuf_free_skb(ah, bf); in ath5k_desc_free()
1114 struct ath5k_buf *bf, *bf0; in ath5k_drain_tx_buffs() local
1121 list_for_each_entry_safe(bf, bf0, &txq->q, list) { in ath5k_drain_tx_buffs()
1122 ath5k_debug_printtxbuf(ah, bf); in ath5k_drain_tx_buffs()
1124 ath5k_txbuf_free_skb(ah, bf); in ath5k_drain_tx_buffs()
1127 list_move_tail(&bf->list, &ah->txbuf); in ath5k_drain_tx_buffs()
1164 struct ath5k_buf *bf; in ath5k_rx_start() local
1174 list_for_each_entry(bf, &ah->rxbuf, list) { in ath5k_rx_start()
1175 ret = ath5k_rxbuf_setup(ah, bf); in ath5k_rx_start()
1181 bf = list_first_entry(&ah->rxbuf, struct ath5k_buf, list); in ath5k_rx_start()
1182 ath5k_hw_set_rxdp(ah, bf->daddr); in ath5k_rx_start()
1547 struct ath5k_buf *bf; in ath5k_tasklet_rx() local
1557 bf = list_first_entry(&ah->rxbuf, struct ath5k_buf, list); in ath5k_tasklet_rx()
1558 BUG_ON(bf->skb == NULL); in ath5k_tasklet_rx()
1559 skb = bf->skb; in ath5k_tasklet_rx()
1560 ds = bf->desc; in ath5k_tasklet_rx()
1563 if (ath5k_hw_get_rxdp(ah) == bf->daddr) in ath5k_tasklet_rx()
1585 dma_unmap_single(ah->dev, bf->skbaddr, in ath5k_tasklet_rx()
1593 bf->skb = next_skb; in ath5k_tasklet_rx()
1594 bf->skbaddr = next_skb_addr; in ath5k_tasklet_rx()
1597 list_move_tail(&bf->list, &ah->rxbuf); in ath5k_tasklet_rx()
1598 } while (ath5k_rxbuf_setup(ah, bf) == 0); in ath5k_tasklet_rx()
1615 struct ath5k_buf *bf; in ath5k_tx_queue() local
1643 bf = list_first_entry(&ah->txbuf, struct ath5k_buf, list); in ath5k_tx_queue()
1644 list_del(&bf->list); in ath5k_tx_queue()
1650 bf->skb = skb; in ath5k_tx_queue()
1652 if (ath5k_txbuf_setup(ah, bf, txq, padsize, control)) { in ath5k_tx_queue()
1653 bf->skb = NULL; in ath5k_tx_queue()
1655 list_add_tail(&bf->list, &ah->txbuf); in ath5k_tx_queue()
1669 struct ath5k_buf *bf) in ath5k_tx_frame_completed() argument
1680 size = min_t(int, sizeof(info->status.rates), sizeof(bf->rates)); in ath5k_tx_frame_completed()
1681 memcpy(info->status.rates, bf->rates, size); in ath5k_tx_frame_completed()
1736 struct ath5k_buf *bf, *bf0; in ath5k_tx_processq() local
1742 list_for_each_entry_safe(bf, bf0, &txq->q, list) { in ath5k_tx_processq()
1747 if (bf->skb != NULL) { in ath5k_tx_processq()
1748 ds = bf->desc; in ath5k_tx_processq()
1760 skb = bf->skb; in ath5k_tx_processq()
1761 bf->skb = NULL; in ath5k_tx_processq()
1763 dma_unmap_single(ah->dev, bf->skbaddr, skb->len, in ath5k_tx_processq()
1765 ath5k_tx_frame_completed(ah, skb, txq, &ts, bf); in ath5k_tx_processq()
1774 if (ath5k_hw_get_txdp(ah, txq->qnum) != bf->daddr) { in ath5k_tx_processq()
1776 list_move_tail(&bf->list, &ah->txbuf); in ath5k_tx_processq()
1810 ath5k_beacon_setup(struct ath5k_hw *ah, struct ath5k_buf *bf) in ath5k_beacon_setup() argument
1812 struct sk_buff *skb = bf->skb; in ath5k_beacon_setup()
1820 bf->skbaddr = dma_map_single(ah->dev, skb->data, skb->len, in ath5k_beacon_setup()
1824 (unsigned long long)bf->skbaddr); in ath5k_beacon_setup()
1826 if (dma_mapping_error(ah->dev, bf->skbaddr)) { in ath5k_beacon_setup()
1829 bf->skb = NULL; in ath5k_beacon_setup()
1833 ds = bf->desc; in ath5k_beacon_setup()
1838 ds->ds_link = bf->daddr; /* self-linked */ in ath5k_beacon_setup()
1868 ds->ds_data = bf->skbaddr; in ath5k_beacon_setup()
1881 dma_unmap_single(ah->dev, bf->skbaddr, skb->len, DMA_TO_DEVICE); in ath5k_beacon_setup()
1933 struct ath5k_buf *bf; in ath5k_beacon_send() local
1984 bf = avf->bbuf; in ath5k_beacon_send()
2004 if (unlikely(bf->skb == NULL || ah->opmode == NL80211_IFTYPE_STATION || in ath5k_beacon_send()
2006 ATH5K_WARN(ah, "bf=%p bf_skb=%p\n", bf, bf->skb); in ath5k_beacon_send()
2010 trace_ath5k_tx(ah, bf->skb, &ah->txqs[ah->bhalq]); in ath5k_beacon_send()
2012 ath5k_hw_set_txdp(ah, ah->bhalq, bf->daddr); in ath5k_beacon_send()
2015 ah->bhalq, (unsigned long long)bf->daddr, bf->desc); in ath5k_beacon_send()