Revert "mt76: usb: fix rx A-MSDU support"

This reverts commit 2bfae5a252.
To be replaced with a fixed version

Signed-off-by: Felix Fietkau <[email protected]>
This commit is contained in:
Felix Fietkau
2019-06-24 23:53:37 +02:00
parent 0d5caead97
commit 335e8c6baf
2 changed files with 9 additions and 44 deletions
+9 -43
View File
@@ -429,48 +429,6 @@ static int mt76u_get_rx_entry_len(u8 *data, u32 data_len)
return dma_len;
}
static struct sk_buff *
mt76u_build_rx_skb(u8 *data, int len, int buf_size,
int *nsgs)
{
int data_len = min(len, MT_SKB_HEAD_LEN);
struct sk_buff *skb;
if (SKB_WITH_OVERHEAD(buf_size) >= MT_DMA_HDR_LEN + len) {
/* fast path */
skb = build_skb(data, buf_size);
if (!skb)
return NULL;
skb_reserve(skb, MT_DMA_HDR_LEN);
__skb_put(skb, len);
return skb;
}
/* slow path, not enough space for data and
* skb_shared_info
*/
skb = alloc_skb(data_len, GFP_ATOMIC);
if (!skb)
return NULL;
skb_put_data(skb, data + MT_DMA_HDR_LEN, data_len);
data += (data_len + MT_DMA_HDR_LEN);
len -= data_len;
if (len > 0) {
struct page *page = virt_to_head_page(data);
int offset = data - (u8 *)page_address(page);
skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags,
page, offset, len, buf_size);
} else {
*nsgs = 0;
}
return skb;
}
static int
mt76u_process_rx_entry(struct mt76_dev *dev, struct urb *urb)
{
@@ -488,11 +446,19 @@ mt76u_process_rx_entry(struct mt76_dev *dev, struct urb *urb)
return 0;
data_len = min_t(int, len, data_len - MT_DMA_HDR_LEN);
skb = mt76u_build_rx_skb(data, data_len, q->buf_size, &nsgs);
if (MT_DMA_HDR_LEN + data_len > SKB_WITH_OVERHEAD(q->buf_size)) {
dev_err_ratelimited(dev->dev, "rx data too big %d\n", data_len);
return 0;
}
skb = build_skb(data, q->buf_size);
if (!skb)
return 0;
skb_reserve(skb, MT_DMA_HDR_LEN);
__skb_put(skb, data_len);
len -= data_len;
while (len > 0 && nsgs < urb->num_sgs) {
data_len = min_t(int, len, urb->sg[nsgs].length);
skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags,