Re: [PATCH net-next v2 1/2] net: dsa: mxl862xx: add CRC for MDIO communication
From: Andrew Lunn
Date: Sun Mar 22 2026 - 11:02:16 EST
On Sun, Mar 22, 2026 at 01:27:20PM +0000, Daniel Golle wrote:
> Enable the firmware's opt-in CRC validation on the MDIO/MMD command
> interface to detect bit errors on the bus. The firmware bundles CRC-6
> and CRC-16 under a single enable flag, so both are implemented
> together.
>
> CRC-6 protects the ctrl and len_ret command registers using a table-
> driven 3GPP algorithm. It is applied to every command exchange
> including SET_DATA/GET_DATA batch transfers. With CRC enabled, the
> firmware encodes its return value as a signed 11-bit integer within
> the CRC- protected register fields, replacing the previous 16-bit
> interpretation.
>
> CRC-16 protects the data payload using the kernel's crc16() library.
> The driver appends a CRC-16 checksum to outgoing data and verifies the
> firmware-appended checksum on responses. The checksum is placed at the
> exact byte offset where the struct data ends, correctly handling
> packed structs with odd sizes by splitting the checksum across word
> boundaries. SET_DATA/GET_DATA sub-commands carry only CRC-6.
>
> Upon detection of a CRC error on either side all conduit interfaces
> are taken down, triggering all user ports to go down as well. This is
> the most feasible option: CRC errors are likely caused either by
> broken hardware, or are symptom of overheating. In either case, trying
> to resume normal operation isn't reasonable.
>
> Signed-off-by: Daniel Golle <daniel@xxxxxxxxxxxxxx>
Reviewed-by: Andrew Lunn <andrew@xxxxxxx>
Andrew