From: Jakub Kicinski Date: Fri, 6 Mar 2026 02:56:53 +0000 (-0800) Subject: Merge branch 'net-cadence-macb-add-ieee-802-3az-eee-support' X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8844de1037dd5fd39f4843cd58bdac763f6edaca;p=thirdparty%2Fkernel%2Flinux.git Merge branch 'net-cadence-macb-add-ieee-802-3az-eee-support' Nicolai Buchwitz says: ==================== net: cadence: macb: add IEEE 802.3az EEE support Add Energy Efficient Ethernet (IEEE 802.3az) support to the Cadence GEM (macb) driver using phylink's managed EEE framework. The GEM MAC has hardware LPI registers but no built-in idle timer, so the driver implements software-managed TX LPI using a delayed_work timer while delegating EEE negotiation and ethtool state to phylink. The series is structured as follows: 1. LPI statistics: Expose the four hardware EEE counters (RX/TX LPI transitions and time) through ethtool -S, accumulated in software since they are clear-on-read. Adds register offset definitions GEM_RXLPI/RXLPITIME/TXLPI/TXLPITIME (0x270-0x27c). 2. TX LPI engine: Introduces GEM_TXLPIEN (NCR bit 19) and MACB_CAPS_EEE alongside the implementation that uses them. phylink mac_enable_tx_lpi / mac_disable_tx_lpi callbacks with a delayed_work-based idle timer. LPI entry is deferred 1 second after link-up per IEEE 802.3az. Wake before transmit with a conservative 50us PHY wake delay (IEEE 802.3az Tw_sys_tx). 3. ethtool EEE ops: get_eee/set_eee delegating to phylink for PHY negotiation and timer management. 4. RP1 enablement: Set MACB_CAPS_EEE for the Raspberry Pi 5's RP1 southbridge (Cadence GEM_GXL rev 0x00070109 + BCM54213PE PHY). 5. EyeQ5 enablement: Set MACB_CAPS_EEE for the Mobileye EyeQ5 GEM instance, verified with a hardware loopback by Théo Lebrun. Tested on Raspberry Pi 5 (1000BASE-T, BCM54213PE PHY, 250ms LPI timer): iperf3 throughput (no regression): TCP TX: 937.8 Mbit/s (EEE on) vs 937.0 Mbit/s (EEE off) TCP RX: 936.5 Mbit/s both Latency (ping RTT, small expected increase from LPI wake): 1s interval: 0.273 ms (EEE on) vs 0.181 ms (EEE off) 10ms interval: 0.206 ms (EEE on) vs 0.168 ms (EEE off) flood ping: 0.200 ms (EEE on) vs 0.156 ms (EEE off) LPI counters (ethtool -S, 1s-interval ping, EEE on): tx_lpi_transitions: 112 tx_lpi_time: 15574651 Zero packet loss across all tests. Also verified with ethtool --show-eee / --set-eee and cable unplug/replug cycling. ==================== Link: https://patch.msgid.link/20260304105432.631186-1-nb@tipi-net.de Signed-off-by: Jakub Kicinski --- 8844de1037dd5fd39f4843cd58bdac763f6edaca