Byungchul Park <byungchul@xxxxxx> writes: > On Wed, May 28, 2025 at 11:29:11AM +0900, Byungchul Park wrote: >> To simplify struct page, the effort to separate its own descriptor from >> struct page is required and the work for page pool is on going. >> >> Use netmem descriptor and APIs for page pool in mt76 code. >> >> Signed-off-by: Byungchul Park <byungchul@xxxxxx> >> --- >> drivers/net/wireless/mediatek/mt76/dma.c | 6 ++--- >> drivers/net/wireless/mediatek/mt76/mt76.h | 12 +++++----- >> .../net/wireless/mediatek/mt76/sdio_txrx.c | 24 +++++++++---------- >> drivers/net/wireless/mediatek/mt76/usb.c | 10 ++++---- >> 4 files changed, 26 insertions(+), 26 deletions(-) >> >> diff --git a/drivers/net/wireless/mediatek/mt76/dma.c b/drivers/net/wireless/mediatek/mt76/dma.c >> index 35b4ec91979e..cceff435ec4a 100644 >> --- a/drivers/net/wireless/mediatek/mt76/dma.c >> +++ b/drivers/net/wireless/mediatek/mt76/dma.c >> @@ -820,10 +820,10 @@ mt76_add_fragment(struct mt76_dev *dev, struct mt76_queue *q, void *data, >> int nr_frags = shinfo->nr_frags; >> >> if (nr_frags < ARRAY_SIZE(shinfo->frags)) { >> - struct page *page = virt_to_head_page(data); >> - int offset = data - page_address(page) + q->buf_offset; >> + netmem_ref netmem = netmem_compound_head(virt_to_netmem(data)); >> + int offset = data - netmem_address(netmem) + q->buf_offset; >> >> - skb_add_rx_frag(skb, nr_frags, page, offset, len, q->buf_size); >> + skb_add_rx_frag_netmem(skb, nr_frags, netmem, offset, len, q->buf_size); >> } else { >> mt76_put_page_pool_buf(data, allow_direct); >> } >> diff --git a/drivers/net/wireless/mediatek/mt76/mt76.h b/drivers/net/wireless/mediatek/mt76/mt76.h >> index 5f8d81cda6cd..f075c1816554 100644 >> --- a/drivers/net/wireless/mediatek/mt76/mt76.h >> +++ b/drivers/net/wireless/mediatek/mt76/mt76.h >> @@ -1795,21 +1795,21 @@ int mt76_rx_token_consume(struct mt76_dev *dev, void *ptr, >> int mt76_create_page_pool(struct mt76_dev *dev, struct mt76_queue *q); >> static inline void mt76_put_page_pool_buf(void *buf, bool allow_direct) >> { >> - struct page *page = virt_to_head_page(buf); >> + netmem_ref netmem = netmem_compound_head(virt_to_netmem(buf)); >> >> - page_pool_put_full_page(page->pp, page, allow_direct); > > To Mina, > > They touch ->pp field. That's why I thought they use page pool. Am I > missing something? It does, since commit: 2f5c3c77fc9b ("wifi: mt76: switch to page_pool allocator") -Toke