···721721{722722 unsigned long clk = clk_get_rate(priv->plat->stmmac_clk);723723724724- if (!clk)725725- return 0;724724+ if (!clk) {725725+ clk = priv->plat->clk_ref_rate;726726+ if (!clk)727727+ return 0;728728+ }726729727730 return (usec * (clk / 1000000)) / 256;728731}···734731{735732 unsigned long clk = clk_get_rate(priv->plat->stmmac_clk);736733737737- if (!clk)738738- return 0;734734+ if (!clk) {735735+ clk = priv->plat->clk_ref_rate;736736+ if (!clk)737737+ return 0;738738+ }739739740740 return (riwt * 256) / (clk / 1000000);741741}
+13-4
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
···3023302330243024 tx_q = &priv->tx_queue[queue];3025302530263026+ if (priv->tx_path_in_lpi_mode)30273027+ stmmac_disable_eee_mode(priv);30283028+30263029 /* Manage oversized TCP frames for GMAC4 device */30273030 if (skb_is_gso(skb) && priv->tso) {30283028- if (skb_shinfo(skb)->gso_type & (SKB_GSO_TCPV4 | SKB_GSO_TCPV6))30313031+ if (skb_shinfo(skb)->gso_type & (SKB_GSO_TCPV4 | SKB_GSO_TCPV6)) {30323032+ /*30333033+ * There is no way to determine the number of TSO30343034+ * capable Queues. Let's use always the Queue 030353035+ * because if TSO is supported then at least this30363036+ * one will be capable.30373037+ */30383038+ skb_set_queue_mapping(skb, 0);30393039+30293040 return stmmac_tso_xmit(skb, dev);30413041+ }30303042 }3031304330323044 if (unlikely(stmmac_tx_avail(priv, queue) < nfrags + 1)) {···30523040 }30533041 return NETDEV_TX_BUSY;30543042 }30553055-30563056- if (priv->tx_path_in_lpi_mode)30573057- stmmac_disable_eee_mode(priv);3058304330593044 entry = tx_q->cur_tx;30603045 first_entry = entry;
+1
include/linux/stmmac.h
···184184 struct clk *pclk;185185 struct clk *clk_ptp_ref;186186 unsigned int clk_ptp_rate;187187+ unsigned int clk_ref_rate;187188 struct reset_control *stmmac_rst;188189 struct stmmac_axi *axi;189190 int has_gmac4;