From 675fdc945c2d1fce01c72f520e82289ba5877ba2 Mon Sep 17 00:00:00 2001 From: Stanislaw Gruszka Date: Thu, 14 Feb 2019 19:48:05 +0100 Subject: [PATCH v5 3/3] mt76usb: do not use compound head page for SG I/O We use head of compound page as base for SG, that results in sg->offset bigger than PAGE_SIZE pointing to another page. Some DMA controllers work ok with that, but for dma_map_sg() and dma_map_page() we should provide buffer contained in single page (eventually with sg->offset = 0 and sg->length of more pages, but not with sg->offset pointed to different page than sg->page). Signed-off-by: Stanislaw Gruszka --- drivers/net/wireless/mediatek/mt76/usb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/wireless/mediatek/mt76/usb.c b/drivers/net/wireless/mediatek/mt76/usb.c index db31cae11911..de906f07e85a 100644 --- a/drivers/net/wireless/mediatek/mt76/usb.c +++ b/drivers/net/wireless/mediatek/mt76/usb.c @@ -288,7 +288,7 @@ mt76u_fill_rx_sg(struct mt76_dev *dev, struct mt76u_buf *buf, if (!data) break; - page = virt_to_head_page(data); + page = virt_to_page(data); offset = data - page_address(page); sg_set_page(&urb->sg[i], page, sglen, offset); } -- 2.7.5