Skip to content

Commit 97538c1

Browse files
emuslndavem330
authored andcommitted
ionic: add helpers for accessing buffer info
These helpers clean up some of the code around DMA mapping and other buffer references, and will be used in the next few patches for the XDP support. Signed-off-by: Shannon Nelson <[email protected]> Reviewed-by: Brett Creeley <[email protected]> Reviewed-by: Jacob Keller <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent c699f35 commit 97538c1

File tree

1 file changed

+24
-13
lines changed

1 file changed

+24
-13
lines changed

drivers/net/ethernet/pensando/ionic/ionic_txrx.c

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,21 @@ static inline struct netdev_queue *q_to_ndq(struct ionic_queue *q)
8888
return netdev_get_tx_queue(q->lif->netdev, q->index);
8989
}
9090

91+
static void *ionic_rx_buf_va(struct ionic_buf_info *buf_info)
92+
{
93+
return page_address(buf_info->page) + buf_info->page_offset;
94+
}
95+
96+
static dma_addr_t ionic_rx_buf_pa(struct ionic_buf_info *buf_info)
97+
{
98+
return buf_info->dma_addr + buf_info->page_offset;
99+
}
100+
101+
static unsigned int ionic_rx_buf_size(struct ionic_buf_info *buf_info)
102+
{
103+
return min_t(u32, IONIC_MAX_BUF_LEN, IONIC_PAGE_SIZE - buf_info->page_offset);
104+
}
105+
91106
static int ionic_rx_page_alloc(struct ionic_queue *q,
92107
struct ionic_buf_info *buf_info)
93108
{
@@ -207,12 +222,11 @@ static struct sk_buff *ionic_rx_frags(struct ionic_queue *q,
207222
return NULL;
208223
}
209224

210-
frag_len = min_t(u16, len, min_t(u32, IONIC_MAX_BUF_LEN,
211-
IONIC_PAGE_SIZE - buf_info->page_offset));
225+
frag_len = min_t(u16, len, ionic_rx_buf_size(buf_info));
212226
len -= frag_len;
213227

214228
dma_sync_single_for_cpu(dev,
215-
buf_info->dma_addr + buf_info->page_offset,
229+
ionic_rx_buf_pa(buf_info),
216230
frag_len, DMA_FROM_DEVICE);
217231

218232
skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags,
@@ -262,10 +276,10 @@ static struct sk_buff *ionic_rx_copybreak(struct ionic_queue *q,
262276
return NULL;
263277
}
264278

265-
dma_sync_single_for_cpu(dev, buf_info->dma_addr + buf_info->page_offset,
279+
dma_sync_single_for_cpu(dev, ionic_rx_buf_pa(buf_info),
266280
len, DMA_FROM_DEVICE);
267-
skb_copy_to_linear_data(skb, page_address(buf_info->page) + buf_info->page_offset, len);
268-
dma_sync_single_for_device(dev, buf_info->dma_addr + buf_info->page_offset,
281+
skb_copy_to_linear_data(skb, ionic_rx_buf_va(buf_info), len);
282+
dma_sync_single_for_device(dev, ionic_rx_buf_pa(buf_info),
269283
len, DMA_FROM_DEVICE);
270284

271285
skb_put(skb, len);
@@ -452,9 +466,8 @@ void ionic_rx_fill(struct ionic_queue *q)
452466
}
453467

454468
/* fill main descriptor - buf[0] */
455-
desc->addr = cpu_to_le64(buf_info->dma_addr + buf_info->page_offset);
456-
frag_len = min_t(u16, len, min_t(u32, IONIC_MAX_BUF_LEN,
457-
IONIC_PAGE_SIZE - buf_info->page_offset));
469+
desc->addr = cpu_to_le64(ionic_rx_buf_pa(buf_info));
470+
frag_len = min_t(u16, len, ionic_rx_buf_size(buf_info));
458471
desc->len = cpu_to_le16(frag_len);
459472
remain_len -= frag_len;
460473
buf_info++;
@@ -472,10 +485,8 @@ void ionic_rx_fill(struct ionic_queue *q)
472485
}
473486
}
474487

475-
sg_elem->addr = cpu_to_le64(buf_info->dma_addr + buf_info->page_offset);
476-
frag_len = min_t(u16, remain_len, min_t(u32, IONIC_MAX_BUF_LEN,
477-
IONIC_PAGE_SIZE -
478-
buf_info->page_offset));
488+
sg_elem->addr = cpu_to_le64(ionic_rx_buf_pa(buf_info));
489+
frag_len = min_t(u16, remain_len, ionic_rx_buf_size(buf_info));
479490
sg_elem->len = cpu_to_le16(frag_len);
480491
remain_len -= frag_len;
481492
buf_info++;

0 commit comments

Comments
 (0)