From 6864e50946bf92f96b8452d1e47765230a276bb0 Mon Sep 17 00:00:00 2001 From: Vladimir Oltean Date: Mon, 6 Jan 2020 14:30:58 +0200 Subject: [PATCH] Revert "net: mscc: ocelot: do not force Felix MACs at lower speeds than gigabit" This reverts commit f3ebad1269aad8a04710e84dc1cd5de485e5fec4. Signed-off-by: Vladimir Oltean --- drivers/net/dsa/ocelot/felix.c | 1 - drivers/net/dsa/ocelot/felix.h | 1 - drivers/net/dsa/ocelot/felix_vsc9959.c | 1 - drivers/net/ethernet/mscc/ocelot.c | 32 ++++++++++++++------------------ include/soc/mscc/ocelot.h | 7 ------- 5 files changed, 14 insertions(+), 28 deletions(-) --- a/drivers/net/dsa/ocelot/felix.c +++ b/drivers/net/dsa/ocelot/felix.c @@ -249,7 +249,6 @@ static int felix_init_structs(struct fel ocelot->num_stats = felix->info->num_stats; ocelot->shared_queue_sz = felix->info->shared_queue_sz; ocelot->ops = felix->info->ops; - ocelot->quirks = felix->info->quirks; base = pci_resource_start(felix->pdev, felix->info->pci_bar); --- a/drivers/net/dsa/ocelot/felix.h +++ b/drivers/net/dsa/ocelot/felix.h @@ -18,7 +18,6 @@ struct felix_info { unsigned int num_stats; int num_ports; int pci_bar; - unsigned long quirks; }; extern struct felix_info felix_info_vsc9959; --- a/drivers/net/dsa/ocelot/felix_vsc9959.c +++ b/drivers/net/dsa/ocelot/felix_vsc9959.c @@ -584,5 +584,4 @@ struct felix_info felix_info_vsc9959 = { .shared_queue_sz = 128 * 1024, .num_ports = 6, .pci_bar = 4, - .quirks = OCELOT_PCS_PERFORMS_RATE_ADAPTATION, }; --- a/drivers/net/ethernet/mscc/ocelot.c +++ b/drivers/net/ethernet/mscc/ocelot.c @@ -409,32 +409,27 @@ static u16 ocelot_wm_enc(u16 value) void ocelot_adjust_link(struct ocelot *ocelot, int port, struct phy_device *phydev) { - int speed, mac_speed, mac_mode = DEV_MAC_MODE_CFG_FDX_ENA; struct ocelot_port *ocelot_port = ocelot->ports[port]; + int speed, mode = 0; - if (ocelot->quirks & OCELOT_PCS_PERFORMS_RATE_ADAPTATION) - speed = SPEED_1000; - else - speed = phydev->speed; - - switch (speed) { + switch (phydev->speed) { case SPEED_10: - mac_speed = OCELOT_SPEED_10; + speed = OCELOT_SPEED_10; break; case SPEED_100: - mac_speed = OCELOT_SPEED_100; + speed = OCELOT_SPEED_100; break; case SPEED_1000: - mac_speed = OCELOT_SPEED_1000; - mac_mode |= DEV_MAC_MODE_CFG_GIGA_MODE_ENA; + speed = OCELOT_SPEED_1000; + mode = DEV_MAC_MODE_CFG_GIGA_MODE_ENA; break; case SPEED_2500: - mac_speed = OCELOT_SPEED_2500; - mac_mode |= DEV_MAC_MODE_CFG_GIGA_MODE_ENA; + speed = OCELOT_SPEED_2500; + mode = DEV_MAC_MODE_CFG_GIGA_MODE_ENA; break; default: dev_err(ocelot->dev, "Unsupported PHY speed on port %d: %d\n", - port, speed); + port, phydev->speed); return; } @@ -444,7 +439,8 @@ void ocelot_adjust_link(struct ocelot *o return; /* Only full duplex supported for now */ - ocelot_port_writel(ocelot_port, mac_mode, DEV_MAC_MODE_CFG); + ocelot_port_writel(ocelot_port, DEV_MAC_MODE_CFG_FDX_ENA | + mode, DEV_MAC_MODE_CFG); if (ocelot->ops->pcs_init) ocelot->ops->pcs_init(ocelot, port); @@ -455,11 +451,11 @@ void ocelot_adjust_link(struct ocelot *o /* Take MAC, Port, Phy (intern) and PCS (SGMII/Serdes) clock out of * reset */ - ocelot_port_writel(ocelot_port, DEV_CLOCK_CFG_LINK_SPEED(mac_speed), + ocelot_port_writel(ocelot_port, DEV_CLOCK_CFG_LINK_SPEED(speed), DEV_CLOCK_CFG); /* No PFC */ - ocelot_write_gix(ocelot, ANA_PFC_PFC_CFG_FC_LINK_SPEED(mac_speed), + ocelot_write_gix(ocelot, ANA_PFC_PFC_CFG_FC_LINK_SPEED(speed), ANA_PFC_PFC_CFG, port); /* Core: Enable port for frame transfer */ @@ -473,7 +469,7 @@ void ocelot_adjust_link(struct ocelot *o SYS_MAC_FC_CFG_RX_FC_ENA | SYS_MAC_FC_CFG_TX_FC_ENA | SYS_MAC_FC_CFG_ZERO_PAUSE_ENA | SYS_MAC_FC_CFG_FC_LATENCY_CFG(0x7) | - SYS_MAC_FC_CFG_FC_LINK_SPEED(mac_speed), + SYS_MAC_FC_CFG_FC_LINK_SPEED(speed), SYS_MAC_FC_CFG, port); ocelot_write_rix(ocelot, 0, ANA_POL_FLOWC, port); } --- a/include/soc/mscc/ocelot.h +++ b/include/soc/mscc/ocelot.h @@ -404,11 +404,6 @@ enum ocelot_tag_prefix { OCELOT_TAG_PREFIX_LONG, }; -/* Hardware quirks (differences between switch instantiations) */ -enum { - OCELOT_PCS_PERFORMS_RATE_ADAPTATION = BIT(0), -}; - struct ocelot; struct ocelot_ops { @@ -469,8 +464,6 @@ struct ocelot { struct delayed_work stats_work; struct workqueue_struct *stats_queue; - unsigned long quirks; - u8 ptp:1; struct ptp_clock *ptp_clock; struct ptp_clock_info ptp_info;