summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/google/gve/gve_rx.c
diff options
context:
space:
mode:
authorYangchun Fu <yangchun@google.com>2019-11-01 20:09:56 +0300
committerDavid S. Miller <davem@davemloft.net>2019-11-02 01:00:05 +0300
commit9cfeeb576d49a7b5e643b8066ba64a55e8417c5d (patch)
treeb15f25e27fc5ea1a0463cd1d175de1339dc2c253 /drivers/net/ethernet/google/gve/gve_rx.c
parenta904a0693c189691eeee64f6c6b188bd7dc244e9 (diff)
downloadlinux-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.c2
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