|
@@ -1776,6 +1776,7 @@ static void be_post_rx_frags(struct be_rx_obj *rxo, gfp_t gfp)
|
|
|
struct be_rx_page_info *page_info = NULL, *prev_page_info = NULL;
|
|
|
struct be_queue_info *rxq = &rxo->q;
|
|
|
struct page *pagep = NULL;
|
|
|
+ struct device *dev = &adapter->pdev->dev;
|
|
|
struct be_eth_rx_d *rxd;
|
|
|
u64 page_dmaaddr = 0, frag_dmaaddr;
|
|
|
u32 posted, page_offset = 0;
|
|
@@ -1788,9 +1789,15 @@ static void be_post_rx_frags(struct be_rx_obj *rxo, gfp_t gfp)
|
|
|
rx_stats(rxo)->rx_post_fail++;
|
|
|
break;
|
|
|
}
|
|
|
- page_dmaaddr = dma_map_page(&adapter->pdev->dev, pagep,
|
|
|
- 0, adapter->big_page_size,
|
|
|
+ page_dmaaddr = dma_map_page(dev, pagep, 0,
|
|
|
+ adapter->big_page_size,
|
|
|
DMA_FROM_DEVICE);
|
|
|
+ if (dma_mapping_error(dev, page_dmaaddr)) {
|
|
|
+ put_page(pagep);
|
|
|
+ pagep = NULL;
|
|
|
+ rx_stats(rxo)->rx_post_fail++;
|
|
|
+ break;
|
|
|
+ }
|
|
|
page_info->page_offset = 0;
|
|
|
} else {
|
|
|
get_page(pagep);
|