static void mt7620_rxcsum_config(bool enable) { if (enable) fe_w32(fe_r32(MT7620A_GDMA1_FWD_CFG) | (GDMA_ICS_EN | GDMA_TCS_EN | GDMA_UCS_EN), MT7620A_GDMA1_FWD_CFG); else fe_w32(fe_r32(MT7620A_GDMA1_FWD_CFG) & ~(GDMA_ICS_EN | GDMA_TCS_EN | GDMA_UCS_EN), MT7620A_GDMA1_FWD_CFG); }
static void rt5350_rxcsum_config(bool enable) { if (enable) fe_w32(fe_r32(RT5350_SDM_CFG) | (RT5350_SDM_ICS_EN | RT5350_SDM_TCS_EN | RT5350_SDM_UCS_EN), RT5350_SDM_CFG); else fe_w32(fe_r32(RT5350_SDM_CFG) & ~(RT5350_SDM_ICS_EN | RT5350_SDM_TCS_EN | RT5350_SDM_UCS_EN), RT5350_SDM_CFG); }
static void mt7620_txcsum_config(bool enable) { if (enable) fe_w32(fe_r32(MT7620A_CDMA_CSG_CFG) | (CDMA_ICS_EN | CDMA_UCS_EN | CDMA_TCS_EN), MT7620A_CDMA_CSG_CFG); else fe_w32(fe_r32(MT7620A_CDMA_CSG_CFG) & ~(CDMA_ICS_EN | CDMA_UCS_EN | CDMA_TCS_EN), MT7620A_CDMA_CSG_CFG); }
static int mt7621_fwd_config(struct fe_priv *priv) { struct net_device *dev = priv_netdev(priv); fe_w32(fe_r32(MT7620A_GDMA1_FWD_CFG) & ~0xffff, MT7620A_GDMA1_FWD_CFG); mt7620_txcsum_config((dev->features & NETIF_F_IP_CSUM)); mt7620_rxcsum_config((dev->features & NETIF_F_RXCSUM)); return 0; }
static int mt7621_fwd_config(struct fe_priv *priv) { struct net_device *dev = priv_netdev(priv); fe_w32(fe_r32(MT7620A_GDMA1_FWD_CFG) & ~0xffff, MT7620A_GDMA1_FWD_CFG); /* mt7621 doesn't have txcsum config */ mt7621_rxcsum_config((dev->features & NETIF_F_RXCSUM)); mt7621_rxvlan_config(priv->flags & FE_FLAG_RX_VLAN_CTAG); return 0; }