• Vinicius Costa Gomes's avatar
    taprio: Add support adding an admin schedule · a3d43c0d
    Vinicius Costa Gomes authored
    The IEEE 802.1Q-2018 defines two "types" of schedules, the "Oper" (from
    operational?) and "Admin" ones. Up until now, 'taprio' only had
    support for the "Oper" one, added when the qdisc is created. This adds
    support for the "Admin" one, which allows the .change() operation to
    be supported.
    
    Just for clarification, some quick (and dirty) definitions, the "Oper"
    schedule is the currently (as in this instant) running one, and it's
    read-only. The "Admin" one is the one that the system configurator has
    installed, it can be changed, and it will be "promoted" to "Oper" when
    it's 'base-time' is reached.
    
    The idea behing this patch is that calling something like the below,
    (after taprio is already configured with an initial schedule):
    
    $ tc qdisc change taprio dev IFACE parent root 	     \
         	   base-time X 	     	   	       	     \
         	   sched-entry <CMD> <GATES> <INTERVAL>	     \
    	   ...
    
    Will cause a new admin schedule to be created and programmed to be
    "promoted" to "Oper" at instant X. If an "Admin" schedule already
    exists, it will be overwritten with the new parameters.
    
    Up until now, there was some code that was added to ease the support
    of changing a single entry of a schedule, but was ultimately unused.
    Now, that we have support for "change" with more well thought
    semantics, updating a single entry seems to be less useful.
    
    So we remove what is in practice dead code, and return a "not
    supported" error if the user tries to use it. If changing a single
    entry would make the user's life easier we may ressurrect this idea,
    but at this point, removing it simplifies the code.
    
    For now, only the schedule specific bits are allowed to be added for a
    new schedule, that means that 'clockid', 'num_tc', 'map' and 'queues'
    cannot be modified.
    
    Example:
    
    $ tc qdisc change dev IFACE parent root handle 100 taprio \
          base-time $BASE_TIME \
          sched-entry S 00 500000 \
          sched-entry S 0f 500000 \
          clockid CLOCK_TAI
    
    The only change in the netlink API introduced by this change is the
    introduction of an "admin" type in the response to a dump request,
    that type allows userspace to separate the "oper" schedule from the
    "admin" schedule. If userspace doesn't support the "admin" type, it
    will only display the "oper" schedule.
    Signed-off-by: default avatarVinicius Costa Gomes <vinicius.gomes@intel.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a3d43c0d
sch_taprio.c 27.1 KB