Skip to content

Commit

Permalink
mt76: reserve enough room for USB tx skbs
Browse files Browse the repository at this point in the history
Reserve enough room for USB skb, so we don not need to check
the room every time we send frame.

Signed-off-by: Stanislaw Gruszka <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
  • Loading branch information
Stanislaw Gruszka authored and nbd168 committed Oct 8, 2018
1 parent f0951c2 commit 4f3685e
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 17 deletions.
5 changes: 4 additions & 1 deletion mt76x0/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -368,7 +368,10 @@ int mt76x0_register_device(struct mt76x02_dev *dev)
hw->max_rates = 1;
hw->max_report_rates = 7;
hw->max_rate_tries = 1;
hw->extra_tx_headroom = sizeof(struct mt76x02_txwi) + 4 + 2;
hw->extra_tx_headroom = 2;
if (mt76_is_usb(dev))
hw->extra_tx_headroom += sizeof(struct mt76x02_txwi) +
MT_DMA_HDR_LEN;

hw->sta_data_size = sizeof(struct mt76x02_sta);
hw->vif_data_size = sizeof(struct mt76x02_vif);
Expand Down
17 changes: 1 addition & 16 deletions mt76x02_usb_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,17 +34,6 @@ void mt76x02u_tx_complete_skb(struct mt76_dev *mdev, struct mt76_queue *q,
}
EXPORT_SYMBOL_GPL(mt76x02u_tx_complete_skb);

static int mt76x02u_check_skb_rooms(struct sk_buff *skb)
{
int hdr_len = ieee80211_get_hdrlen_from_skb(skb);
u32 need_head;

need_head = sizeof(struct mt76x02_txwi) + MT_DMA_HDR_LEN;
if (hdr_len % 4)
need_head += 2;
return skb_cow(skb, need_head);
}

int mt76x02u_skb_dma_info(struct sk_buff *skb, int port, u32 flags)
{
struct sk_buff *iter, *last = skb;
Expand Down Expand Up @@ -106,11 +95,7 @@ int mt76x02u_tx_prepare_skb(struct mt76_dev *mdev, void *data,
{
struct mt76x02_dev *dev = container_of(mdev, struct mt76x02_dev, mt76);
struct mt76x02_txwi *txwi;
int err, len = skb->len;

err = mt76x02u_check_skb_rooms(skb);
if (err < 0)
return -ENOMEM;
int len = skb->len;

mt76x02_insert_hdr_pad(skb);

Expand Down
3 changes: 3 additions & 0 deletions mt76x2/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,9 @@ void mt76x2_init_device(struct mt76x02_dev *dev)
hw->max_report_rates = 7;
hw->max_rate_tries = 1;
hw->extra_tx_headroom = 2;
if (mt76_is_usb(dev))
hw->extra_tx_headroom += sizeof(struct mt76x02_txwi) +
MT_DMA_HDR_LEN;

hw->sta_data_size = sizeof(struct mt76x02_sta);
hw->vif_data_size = sizeof(struct mt76x02_vif);
Expand Down

0 comments on commit 4f3685e

Please sign in to comment.