• Jakub Kicinski's avatar
    net: sched: gred: allow manipulating per-DP RED flags · 72111015
    Jakub Kicinski authored
    Allow users to set and dump RED flags (ECN enabled and harddrop)
    on per-virtual queue basis.  Validation of attributes is split
    from changes to make sure we won't have to undo previous operations
    when we find out configuration is invalid.
    
    The objective is to allow changing per-Qdisc parameters without
    overwriting the per-vq configured flags.
    
    Old user space will not pass the TCA_GRED_VQ_FLAGS attribute and
    per-Qdisc flags will always get propagated to the virtual queues.
    
    New user space which wants to make use of per-vq flags should set
    per-Qdisc flags to 0 and then configure per-vq flags as it
    sees fit.  Once per-vq flags are set per-Qdisc flags can't be
    changed to non-zero.  Vice versa - if the per-Qdisc flags are
    non-zero the TCA_GRED_VQ_FLAGS attribute has to either be omitted
    or set to the same value as per-Qdisc flags.
    
    Update per-Qdisc parameters:
    per-Qdisc | per-VQ | result
            0 |      0 | all vq flags updated
    	0 |  non-0 | error (vq flags in use)
        non-0 |      0 | -- impossible --
        non-0 |  non-0 | all vq flags updated
    
    Update per-VQ state (flags parameter not specified):
       no change to flags
    
    Update per-VQ state (flags parameter set):
    per-Qdisc | per-VQ | result
            0 |   any  | per-vq flags updated
        non-0 |      0 | -- impossible --
        non-0 |  non-0 | error (per-Qdisc flags in use)
    Signed-off-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
    Reviewed-by: default avatarJohn Hurley <john.hurley@netronome.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    72111015
sch_gred.c 19.8 KB