|
@@ -1629,7 +1629,8 @@ static bool ixgbe_alloc_mapped_page(struct ixgbe_ring *rx_ring,
|
|
|
bi->dma = dma;
|
|
|
bi->page = page;
|
|
|
bi->page_offset = ixgbe_rx_offset(rx_ring);
|
|
|
- bi->pagecnt_bias = 1;
|
|
|
+ page_ref_add(page, USHRT_MAX - 1);
|
|
|
+ bi->pagecnt_bias = USHRT_MAX;
|
|
|
rx_ring->rx_stats.alloc_rx_page++;
|
|
|
|
|
|
return true;
|
|
@@ -2039,8 +2040,8 @@ static bool ixgbe_can_reuse_rx_page(struct ixgbe_rx_buffer *rx_buffer)
|
|
|
* the pagecnt_bias and page count so that we fully restock the
|
|
|
* number of references the driver holds.
|
|
|
*/
|
|
|
- if (unlikely(!pagecnt_bias)) {
|
|
|
- page_ref_add(page, USHRT_MAX);
|
|
|
+ if (unlikely(pagecnt_bias == 1)) {
|
|
|
+ page_ref_add(page, USHRT_MAX - 1);
|
|
|
rx_buffer->pagecnt_bias = USHRT_MAX;
|
|
|
}
|
|
|
|