ethernet: stmmac: unmap dma buffer after receive data for RX

Signed-off-by: David Wu <david.wu@rock-chips.com>
Change-Id: Icde5634bfb7d8d71eef08b3ddc20739483cc6316
This commit is contained in:
David Wu
2021-12-22 16:23:10 +08:00
committed by Tao Huang
parent b09fc482a2
commit 2c677df5ef

View File

@@ -612,7 +612,12 @@ static int dwmac_rk_rx_validate(struct stmmac_priv *priv,
}
frame_len -= ETH_FCS_LEN;
prefetch(skb->data - NET_IP_ALIGN);
skb_put(skb, frame_len);
dma_unmap_single(priv->device,
lb_priv->rx_skbuff_dma,
lb_priv->dma_buf_sz,
DMA_FROM_DEVICE);
ret = dwmac_rk_loopback_validate(priv, lb_priv, skb);
dwmac_rk_rx_clean(priv, lb_priv);
@@ -1187,6 +1192,21 @@ static void dwmac_rk_mtl_configuration(struct stmmac_priv *priv)
dwmac_rk_mac_enable_rx_queues(priv);
}
static void dwmac_rk_mmc_setup(struct stmmac_priv *priv)
{
unsigned int mode = MMC_CNTRL_RESET_ON_READ | MMC_CNTRL_COUNTER_RESET |
MMC_CNTRL_PRESET | MMC_CNTRL_FULL_HALF_PRESET;
stmmac_mmc_intr_all_mask(priv, priv->mmcaddr);
if (priv->dma_cap.rmon) {
stmmac_mmc_ctrl(priv, priv->mmcaddr, mode);
memset(&priv->mmc, 0, sizeof(struct stmmac_counters));
} else {
netdev_info(priv->dev, "No MAC Management Counters available\n");
}
}
static int dwmac_rk_init(struct net_device *dev,
struct dwmac_rk_lb_priv *lb_priv)
{
@@ -1228,6 +1248,8 @@ static int dwmac_rk_init(struct net_device *dev,
dwmac_rk_mtl_configuration(priv);
dwmac_rk_mmc_setup(priv);
ret = priv->hw->mac->rx_ipc(priv->hw);
if (!ret) {
pr_warn(" RX IPC Checksum Offload disabled\n");