Loading drivers/platform/msm/ipa/ipa_v3/ipa_dp.c +13 −9 Original line number Diff line number Diff line Loading @@ -3500,17 +3500,21 @@ static struct sk_buff *handle_page_completion(struct gsi_chan_xfer_notify sys->ep->client == IPA_CLIENT_APPS_LAN_CONS) { rx_skb = alloc_skb(0, GFP_ATOMIC); if (unlikely(!rx_skb)) { IPAERR("skb alloc failure\n"); list_del(&rx_pkt->link); IPAERR("skb alloc failure, free all pending pages\n"); list_for_each_entry_safe(rx_pkt, tmp, head, link) { rx_page = rx_pkt->page_data; list_del_init(&rx_pkt->link); if (!rx_page.is_tmp_alloc) { init_page_count(rx_page.page); } else { dma_unmap_page(ipa3_ctx->pdev, rx_page.dma_addr, dma_unmap_page(ipa3_ctx->pdev, rx_page.dma_addr, rx_pkt->len, DMA_FROM_DEVICE); __free_pages(rx_pkt->page_data.page, IPA_WAN_PAGE_ORDER); } rx_pkt->sys->free_rx_wrapper(rx_pkt); } IPA_STATS_INC_CNT(ipa3_ctx->stats.rx_page_drop_cnt); return NULL; } Loading Loading
drivers/platform/msm/ipa/ipa_v3/ipa_dp.c +13 −9 Original line number Diff line number Diff line Loading @@ -3500,17 +3500,21 @@ static struct sk_buff *handle_page_completion(struct gsi_chan_xfer_notify sys->ep->client == IPA_CLIENT_APPS_LAN_CONS) { rx_skb = alloc_skb(0, GFP_ATOMIC); if (unlikely(!rx_skb)) { IPAERR("skb alloc failure\n"); list_del(&rx_pkt->link); IPAERR("skb alloc failure, free all pending pages\n"); list_for_each_entry_safe(rx_pkt, tmp, head, link) { rx_page = rx_pkt->page_data; list_del_init(&rx_pkt->link); if (!rx_page.is_tmp_alloc) { init_page_count(rx_page.page); } else { dma_unmap_page(ipa3_ctx->pdev, rx_page.dma_addr, dma_unmap_page(ipa3_ctx->pdev, rx_page.dma_addr, rx_pkt->len, DMA_FROM_DEVICE); __free_pages(rx_pkt->page_data.page, IPA_WAN_PAGE_ORDER); } rx_pkt->sys->free_rx_wrapper(rx_pkt); } IPA_STATS_INC_CNT(ipa3_ctx->stats.rx_page_drop_cnt); return NULL; } Loading