• Vladimir Oltean's avatar
    net: dsa: felix: configure default-prio and dscp priorities · 978777d0
    Vladimir Oltean authored
    Follow the established programming model for this driver and provide
    shims in the felix DSA driver which call the implementations from the
    ocelot switch lib. The ocelot switchdev driver wasn't integrated with
    dcbnl due to lack of hardware availability.
    
    The switch doesn't have any fancy QoS classification enabled by default.
    The provided getters will create a default-prio app table entry of 0,
    and no dscp entry. However, the getters have been made to actually
    retrieve the hardware configuration rather than static values, to be
    future proof in case DSA will need this information from more call paths.
    
    For default-prio, there is a single field per port, in ANA_PORT_QOS_CFG,
    called QOS_DEFAULT_VAL.
    
    DSCP classification is enabled per-port, again via ANA_PORT_QOS_CFG
    (field QOS_DSCP_ENA), and individual DSCP values are configured as
    trusted or not through register ANA_DSCP_CFG (replicated 64 times).
    An untrusted DSCP value falls back to other QoS classification methods.
    If trusted, the selected ANA_DSCP_CFG register also holds the QoS class
    in the QOS_DSCP_VAL field.
    
    The hardware also supports DSCP remapping (DSCP value X is translated to
    DSCP value Y before the QoS class is determined based on the app table
    entry for Y) and DSCP packet rewriting. The dcbnl framework, for being
    so flexible in other useless areas, doesn't appear to support this.
    So this functionality has been left out.
    Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    978777d0
felix.c 51.5 KB