• Vladimir Oltean's avatar
    net: dsa: sja1105: fix tc-gate schedule with single element · 43ce887c
    Vladimir Oltean authored
    The sja1105_gating_cfg_time_to_interval function does this, as per the
    comments:
    
    /* The gate entries contain absolute times in their e->interval field. Convert
     * that to proper intervals (i.e. "0, 5, 10, 15" to "5, 5, 5, 5").
     */
    
    To perform that task, it iterates over gating_cfg->entries, at each step
    updating the interval of the _previous_ entry. So one interval remains
    to be updated at the end of the loop: the last one (since it isn't
    "prev" for anyone else).
    
    But there was an erroneous check, that the last element's interval
    should not be updated if it's also the only element. I'm not quite sure
    why that check was there, but it's clearly incorrect, as a tc-gate
    schedule with a single element would get an e->interval of zero,
    regardless of the duration requested by the user. The switch wouldn't
    even consider this configuration as valid: it will just drop all traffic
    that matches the rule.
    
    Fixes: 834f8933 ("net: dsa: sja1105: implement tc-gate using time-triggered virtual links")
    Reported-by: default avatarXiaoliang Yang <xiaoliang.yang_1@nxp.com>
    Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    43ce887c
sja1105_vl.c 23 KB