mirror of
https://github.com/outbackdingo/mt76.git
synced 2026-10-24 13:26:48 +00:00
wifi: mt76: introduce rxwi and rx token utility routines
This is a preliminary patch to introduce WED RX support for mt7915. Tested-by: Daniel Golle <[email protected]> Co-developed-by: Lorenzo Bianconi <[email protected]> Signed-off-by: Lorenzo Bianconi <[email protected]> Signed-off-by: Sujuan Chen <[email protected]> Signed-off-by: Felix Fietkau <[email protected]>
This commit is contained in:
committed by
Felix Fietkau
parent
3b8eed9c38
commit
417cca39ba
@@ -339,7 +339,10 @@ struct mt76_txwi_cache {
|
||||
struct list_head list;
|
||||
dma_addr_t dma_addr;
|
||||
|
||||
struct sk_buff *skb;
|
||||
union {
|
||||
struct sk_buff *skb;
|
||||
void *ptr;
|
||||
};
|
||||
};
|
||||
|
||||
struct mt76_rx_tid {
|
||||
@@ -728,6 +731,7 @@ struct mt76_dev {
|
||||
|
||||
struct ieee80211_hw *hw;
|
||||
|
||||
spinlock_t wed_lock;
|
||||
spinlock_t lock;
|
||||
spinlock_t cc_lock;
|
||||
|
||||
@@ -754,6 +758,7 @@ struct mt76_dev {
|
||||
struct sk_buff_head rx_skb[__MT_RXQ_MAX];
|
||||
|
||||
struct list_head txwi_cache;
|
||||
struct list_head rxwi_cache;
|
||||
struct mt76_queue *q_mcu[__MT_MCUQ_MAX];
|
||||
struct mt76_queue q_rx[__MT_RXQ_MAX];
|
||||
const struct mt76_queue_ops *queue_ops;
|
||||
@@ -768,6 +773,10 @@ struct mt76_dev {
|
||||
u16 token_count;
|
||||
u16 token_size;
|
||||
|
||||
spinlock_t rx_token_lock;
|
||||
struct idr rx_token;
|
||||
u16 rx_token_size;
|
||||
|
||||
wait_queue_head_t tx_wait;
|
||||
/* spinclock used to protect wcid pktid linked list */
|
||||
spinlock_t status_lock;
|
||||
@@ -1247,6 +1256,8 @@ mt76_tx_status_get_hw(struct mt76_dev *dev, struct sk_buff *skb)
|
||||
}
|
||||
|
||||
void mt76_put_txwi(struct mt76_dev *dev, struct mt76_txwi_cache *t);
|
||||
void mt76_put_rxwi(struct mt76_dev *dev, struct mt76_txwi_cache *t);
|
||||
struct mt76_txwi_cache *mt76_get_rxwi(struct mt76_dev *dev);
|
||||
void mt76_rx_complete(struct mt76_dev *dev, struct sk_buff_head *frames,
|
||||
struct napi_struct *napi);
|
||||
void mt76_rx_poll_complete(struct mt76_dev *dev, enum mt76_rxq_id q,
|
||||
@@ -1391,6 +1402,9 @@ struct mt76_txwi_cache *
|
||||
mt76_token_release(struct mt76_dev *dev, int token, bool *wake);
|
||||
int mt76_token_consume(struct mt76_dev *dev, struct mt76_txwi_cache **ptxwi);
|
||||
void __mt76_set_tx_blocked(struct mt76_dev *dev, bool blocked);
|
||||
struct mt76_txwi_cache *mt76_rx_token_release(struct mt76_dev *dev, int token);
|
||||
int mt76_rx_token_consume(struct mt76_dev *dev, void *ptr,
|
||||
struct mt76_txwi_cache *r, dma_addr_t phys);
|
||||
|
||||
static inline void mt76_set_tx_blocked(struct mt76_dev *dev, bool blocked)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user