Loading drivers/net/ethernet/stmicro/stmmac/common.h +1 −0 Original line number Diff line number Diff line Loading @@ -603,6 +603,7 @@ struct mac_device_info { unsigned int pmt; unsigned int ps; unsigned int crc_strip_en; unsigned int acs_strip_en; }; struct stmmac_rx_routing { Loading drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c +5 −0 Original line number Diff line number Diff line Loading @@ -93,6 +93,11 @@ static int dwmac4_wrback_get_rx_status(void *data, struct stmmac_extra_stats *x, if (likely(!(rdes3 & RDES3_LAST_DESCRIPTOR))) return discard_frame; if (unlikely(!(rdes3 & RDES3_PACKET_LEN_TYPE_MASK))) { pr_info("rdes3 = 0xX\n", rdes3); ret = llc_snap; } if (unlikely(rdes3 & RDES3_ERROR_SUMMARY)) { if (unlikely(rdes3 & RDES3_GIANT_PACKET)) stats->rx_length_errors++; Loading drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +8 −2 Original line number Diff line number Diff line Loading @@ -2626,6 +2626,7 @@ static int stmmac_hw_setup(struct net_device *dev, bool init_ptp) } } priv->hw->crc_strip_en = priv->plat->crc_strip_en; priv->hw->acs_strip_en = 0; /* Initialize the MAC Core */ priv->hw->mac->core_init(priv->hw, dev); Loading Loading @@ -3608,8 +3609,13 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit, u32 queue) * feature is always disabled and packets need to be * stripped manually. */ if (unlikely(priv->synopsys_id >= DWMAC_CORE_4_00) || unlikely(status != llc_snap)) if ((likely(priv->synopsys_id >= DWMAC_CORE_4_00) && ((unlikely(!priv->hw->crc_strip_en) && status != llc_snap) || (unlikely(!priv->hw->acs_strip_en) && status == llc_snap))) || (unlikely(priv->synopsys_id < DWMAC_CORE_4_00) && unlikely(status != llc_snap))) frame_len -= ETH_FCS_LEN; if (netif_msg_rx_status(priv)) { Loading Loading
drivers/net/ethernet/stmicro/stmmac/common.h +1 −0 Original line number Diff line number Diff line Loading @@ -603,6 +603,7 @@ struct mac_device_info { unsigned int pmt; unsigned int ps; unsigned int crc_strip_en; unsigned int acs_strip_en; }; struct stmmac_rx_routing { Loading
drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c +5 −0 Original line number Diff line number Diff line Loading @@ -93,6 +93,11 @@ static int dwmac4_wrback_get_rx_status(void *data, struct stmmac_extra_stats *x, if (likely(!(rdes3 & RDES3_LAST_DESCRIPTOR))) return discard_frame; if (unlikely(!(rdes3 & RDES3_PACKET_LEN_TYPE_MASK))) { pr_info("rdes3 = 0xX\n", rdes3); ret = llc_snap; } if (unlikely(rdes3 & RDES3_ERROR_SUMMARY)) { if (unlikely(rdes3 & RDES3_GIANT_PACKET)) stats->rx_length_errors++; Loading
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +8 −2 Original line number Diff line number Diff line Loading @@ -2626,6 +2626,7 @@ static int stmmac_hw_setup(struct net_device *dev, bool init_ptp) } } priv->hw->crc_strip_en = priv->plat->crc_strip_en; priv->hw->acs_strip_en = 0; /* Initialize the MAC Core */ priv->hw->mac->core_init(priv->hw, dev); Loading Loading @@ -3608,8 +3609,13 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit, u32 queue) * feature is always disabled and packets need to be * stripped manually. */ if (unlikely(priv->synopsys_id >= DWMAC_CORE_4_00) || unlikely(status != llc_snap)) if ((likely(priv->synopsys_id >= DWMAC_CORE_4_00) && ((unlikely(!priv->hw->crc_strip_en) && status != llc_snap) || (unlikely(!priv->hw->acs_strip_en) && status == llc_snap))) || (unlikely(priv->synopsys_id < DWMAC_CORE_4_00) && unlikely(status != llc_snap))) frame_len -= ETH_FCS_LEN; if (netif_msg_rx_status(priv)) { Loading