speed is a u32, so SPEED_UNKNOWN arrives as 0xffffffff and passes the "speed <= 0" check. A taprio schedule installed while the link is down then has its hardware interval limit derived from that value, a limit that rounds to 1 ns, and the first entry fails with a misleading "exceeds hardware limit". Name the case instead of relying on the sign. Fixes: 89934dbf169e ("net: macb: Add TAPRIO traffic scheduling support") Assisted-by: LLM Signed-off-by: Aleksei Sviridkin --- drivers/net/ethernet/cadence/macb_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index a43855db1e45..81530b9257b2 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -4324,7 +4324,7 @@ static int macb_taprio_setup_replace(struct net_device *netdev, } speed = kset.base.speed; - if (unlikely(speed <= 0)) { + if (unlikely(speed == SPEED_UNKNOWN || !speed)) { netdev_err(netdev, "Invalid speed: %d\n", speed); return -EINVAL; } -- 2.53.0