diff options
author | Yangchun Fu <yangchun@google.com> | 2019-11-01 20:09:56 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-11-02 01:00:05 +0300 |
commit | 9cfeeb576d49a7b5e643b8066ba64a55e8417c5d (patch) | |
tree | b15f25e27fc5ea1a0463cd1d175de1339dc2c253 /drivers/net/ethernet/google/gve/gve_rx.c | |
parent | a904a0693c189691eeee64f6c6b188bd7dc244e9 (diff) | |
download | linux-9cfeeb576d49a7b5e643b8066ba64a55e8417c5d.tar.xz |
gve: Fixes DMA synchronization.
Synces the DMA buffer properly in order for CPU and device to see
the most up-to-data data.
Signed-off-by: Yangchun Fu <yangchun@google.com>
Reviewed-by: Catherine Sullivan <csully@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/google/gve/gve_rx.c')
-rw-r--r-- | drivers/net/ethernet/google/gve/gve_rx.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/ethernet/google/gve/gve_rx.c b/drivers/net/ethernet/google/gve/gve_rx.c index 59564ac99d2a..edec61dfc868 100644 --- a/drivers/net/ethernet/google/gve/gve_rx.c +++ b/drivers/net/ethernet/google/gve/gve_rx.c @@ -289,6 +289,8 @@ static bool gve_rx(struct gve_rx_ring *rx, struct gve_rx_desc *rx_desc, len = be16_to_cpu(rx_desc->len) - GVE_RX_PAD; page_info = &rx->data.page_info[idx]; + dma_sync_single_for_cpu(&priv->pdev->dev, rx->data.qpl->page_buses[idx], + PAGE_SIZE, DMA_FROM_DEVICE); /* gvnic can only receive into registered segments. If the buffer * can't be recycled, our only choice is to copy the data out of |