@@ -88,6 +88,21 @@ static inline struct netdev_queue *q_to_ndq(struct ionic_queue *q)
88
88
return netdev_get_tx_queue (q -> lif -> netdev , q -> index );
89
89
}
90
90
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
+
91
106
static int ionic_rx_page_alloc (struct ionic_queue * q ,
92
107
struct ionic_buf_info * buf_info )
93
108
{
@@ -207,12 +222,11 @@ static struct sk_buff *ionic_rx_frags(struct ionic_queue *q,
207
222
return NULL ;
208
223
}
209
224
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 ));
212
226
len -= frag_len ;
213
227
214
228
dma_sync_single_for_cpu (dev ,
215
- buf_info -> dma_addr + buf_info -> page_offset ,
229
+ ionic_rx_buf_pa ( buf_info ) ,
216
230
frag_len , DMA_FROM_DEVICE );
217
231
218
232
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,
262
276
return NULL ;
263
277
}
264
278
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 ) ,
266
280
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 ) ,
269
283
len , DMA_FROM_DEVICE );
270
284
271
285
skb_put (skb , len );
@@ -452,9 +466,8 @@ void ionic_rx_fill(struct ionic_queue *q)
452
466
}
453
467
454
468
/* 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 ));
458
471
desc -> len = cpu_to_le16 (frag_len );
459
472
remain_len -= frag_len ;
460
473
buf_info ++ ;
@@ -472,10 +485,8 @@ void ionic_rx_fill(struct ionic_queue *q)
472
485
}
473
486
}
474
487
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 ));
479
490
sg_elem -> len = cpu_to_le16 (frag_len );
480
491
remain_len -= frag_len ;
481
492
buf_info ++ ;
0 commit comments