• Sathya Perla's avatar
    be2net: dma_sync each RX frag before passing it to the stack · e50287be
    Sathya Perla authored
    The driver currently maps a page for DMA, divides the page into multiple
    frags and posts them to the HW. It un-maps the page after data is received
    on all the frags of the page. This scheme doesn't work when bounce buffers
    are used for DMA (swiotlb=force kernel param).
    
    This patch fixes this problem by calling dma_sync_single_for_cpu() for each
    frag (excepting the last one) so that the data is copied from the bounce
    buffers. The page is un-mapped only when DMA finishes on the last frag of
    the page.
    (Thanks Ben H. for suggesting the dma_sync API!)
    
    This patch also renames the "last_page_user" field of be_rx_page_info{}
    struct to "last_frag" to improve readability of the fixed code.
    Reported-by: default avatarLi Fengmao <li.fengmao@zte.com.cn>
    Signed-off-by: default avatarSathya Perla <sathya.perla@emulex.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    e50287be
be.h 21.7 KB