@@ -174,10 +174,6 @@ static void wx_dma_sync_frag(struct wx_ring *rx_ring,
174
174
skb_frag_off (frag ),
175
175
skb_frag_size (frag ),
176
176
DMA_FROM_DEVICE );
177
-
178
- /* If the page was released, just unmap it. */
179
- if (unlikely (WX_CB (skb )-> page_released ))
180
- page_pool_put_full_page (rx_ring -> page_pool , rx_buffer -> page , false);
181
177
}
182
178
183
179
static struct wx_rx_buffer * wx_get_rx_buffer (struct wx_ring * rx_ring ,
@@ -227,10 +223,6 @@ static void wx_put_rx_buffer(struct wx_ring *rx_ring,
227
223
struct sk_buff * skb ,
228
224
int rx_buffer_pgcnt )
229
225
{
230
- if (!IS_ERR (skb ) && WX_CB (skb )-> dma == rx_buffer -> dma )
231
- /* the page has been released from the ring */
232
- WX_CB (skb )-> page_released = true;
233
-
234
226
/* clear contents of rx_buffer */
235
227
rx_buffer -> page = NULL ;
236
228
rx_buffer -> skb = NULL ;
@@ -315,7 +307,7 @@ static bool wx_alloc_mapped_page(struct wx_ring *rx_ring,
315
307
return false;
316
308
dma = page_pool_get_dma_addr (page );
317
309
318
- bi -> page_dma = dma ;
310
+ bi -> dma = dma ;
319
311
bi -> page = page ;
320
312
bi -> page_offset = 0 ;
321
313
@@ -352,7 +344,7 @@ void wx_alloc_rx_buffers(struct wx_ring *rx_ring, u16 cleaned_count)
352
344
DMA_FROM_DEVICE );
353
345
354
346
rx_desc -> read .pkt_addr =
355
- cpu_to_le64 (bi -> page_dma + bi -> page_offset );
347
+ cpu_to_le64 (bi -> dma + bi -> page_offset );
356
348
357
349
rx_desc ++ ;
358
350
bi ++ ;
@@ -365,6 +357,8 @@ void wx_alloc_rx_buffers(struct wx_ring *rx_ring, u16 cleaned_count)
365
357
366
358
/* clear the status bits for the next_to_use descriptor */
367
359
rx_desc -> wb .upper .status_error = 0 ;
360
+ /* clear the length for the next_to_use descriptor */
361
+ rx_desc -> wb .upper .length = 0 ;
368
362
369
363
cleaned_count -- ;
370
364
} while (cleaned_count );
@@ -2423,9 +2417,6 @@ static void wx_clean_rx_ring(struct wx_ring *rx_ring)
2423
2417
if (rx_buffer -> skb ) {
2424
2418
struct sk_buff * skb = rx_buffer -> skb ;
2425
2419
2426
- if (WX_CB (skb )-> page_released )
2427
- page_pool_put_full_page (rx_ring -> page_pool , rx_buffer -> page , false);
2428
-
2429
2420
dev_kfree_skb (skb );
2430
2421
}
2431
2422
@@ -2449,6 +2440,9 @@ static void wx_clean_rx_ring(struct wx_ring *rx_ring)
2449
2440
}
2450
2441
}
2451
2442
2443
+ /* Zero out the descriptor ring */
2444
+ memset (rx_ring -> desc , 0 , rx_ring -> size );
2445
+
2452
2446
rx_ring -> next_to_alloc = 0 ;
2453
2447
rx_ring -> next_to_clean = 0 ;
2454
2448
rx_ring -> next_to_use = 0 ;
0 commit comments