mbox series

[iproute2-next,v2,0/7] Move rate and size parsing and output to lib

Message ID cover.1607201857.git.me@pmachata.org
Headers show
Series Move rate and size parsing and output to lib | expand

Message

Petr Machata Dec. 5, 2020, 9:13 p.m. UTC
The DCB tool will have commands that deal with buffer sizes and traffic
rates. TC is another tool that has a number of such commands, and functions
to support them: get_size(), get_rate/64(), s/print_size() and
s/print_rate(). In this patchset, these functions are moved from TC to lib/
for possible reuse and modernized.

s/print_rate() has a hidden parameter of a global variable use_iec, which
made the conversion non-trivial. The parameter was made explicit,
print_rate() converted to a mostly json_print-like function, and
sprint_rate() retired in favor of the new print_rate. Patches #1 and #2
deal with this.

The intention was to treat s/print_size() similarly, but unfortunately two
use cases of sprint_size() cannot be converted to a json_print-like
print_size(), and the function sprint_size() had to remain as a discouraged
backdoor to print_size(). This is done in patch #3.

Patch #4 then improves the code of sprint_size() a little bit.

Patch #5 fixes a buglet in formatting small rates in IEC mode.

Patches #6 and #7 handle a routine movement of, respectively,
get_rate/64() and get_size() from tc to lib.

This patchset does not actually add any new uses of these functions. A
follow-up patchset will add subtools for management of DCB buffer and DCB
maxrate objects that will make use of them.

v2:
- Patch #2:
    - Adapt q_mqprio.c patch, the file changed since v1.
- Patch #4:
    - This patch is new. It addresses a request from Stephen Hemminger to
      clean up the sprint_size() function.


Petr Machata (7):
  Move the use_iec declaration to the tools
  lib: Move print_rate() from tc here; modernize
  lib: Move sprint_size() from tc here, add print_size()
  lib: sprint_size(): Uncrustify the code a bit
  lib: print_color_rate(): Fix formatting small rates in IEC mode
  lib: Move get_rate(), get_rate64() from tc here
  lib: Move get_size() from tc here

 include/json_print.h |  14 ++++
 include/utils.h      |   4 +-
 ip/ip_common.h       |   2 +
 lib/json_print.c     |  63 +++++++++++++++
 lib/utils.c          | 114 +++++++++++++++++++++++++++
 tc/m_gate.c          |   6 +-
 tc/m_police.c        |  14 ++--
 tc/q_cake.c          |  44 +++++------
 tc/q_cbq.c           |  14 +---
 tc/q_drr.c           |  10 +--
 tc/q_fifo.c          |  10 +--
 tc/q_fq.c            |  34 +++-----
 tc/q_fq_codel.c      |   5 +-
 tc/q_fq_pie.c        |   9 +--
 tc/q_gred.c          |  39 ++--------
 tc/q_hfsc.c          |   4 +-
 tc/q_hhf.c           |   9 +--
 tc/q_htb.c           |  23 +++---
 tc/q_mqprio.c        |   6 +-
 tc/q_netem.c         |   4 +-
 tc/q_red.c           |  13 +---
 tc/q_sfq.c           |  15 +---
 tc/q_tbf.c           |  32 +++-----
 tc/tc_common.h       |   1 +
 tc/tc_util.c         | 180 +++----------------------------------------
 tc/tc_util.h         |   8 +-
 26 files changed, 307 insertions(+), 370 deletions(-)

Comments

David Ahern Dec. 9, 2020, 2:34 a.m. UTC | #1
On 12/5/20 2:13 PM, Petr Machata wrote:
> The DCB tool will have commands that deal with buffer sizes and traffic
> rates. TC is another tool that has a number of such commands, and functions
> to support them: get_size(), get_rate/64(), s/print_size() and
> s/print_rate(). In this patchset, these functions are moved from TC to lib/
> for possible reuse and modernized.
> 
> s/print_rate() has a hidden parameter of a global variable use_iec, which
> made the conversion non-trivial. The parameter was made explicit,
> print_rate() converted to a mostly json_print-like function, and
> sprint_rate() retired in favor of the new print_rate. Patches #1 and #2
> deal with this.
> 
> The intention was to treat s/print_size() similarly, but unfortunately two
> use cases of sprint_size() cannot be converted to a json_print-like
> print_size(), and the function sprint_size() had to remain as a discouraged
> backdoor to print_size(). This is done in patch #3.
> 
> Patch #4 then improves the code of sprint_size() a little bit.
> 
> Patch #5 fixes a buglet in formatting small rates in IEC mode.
> 
> Patches #6 and #7 handle a routine movement of, respectively,
> get_rate/64() and get_size() from tc to lib.
> 
> This patchset does not actually add any new uses of these functions. A
> follow-up patchset will add subtools for management of DCB buffer and DCB
> maxrate objects that will make use of them.
> 
> v2:
> - Patch #2:
>     - Adapt q_mqprio.c patch, the file changed since v1.
> - Patch #4:
>     - This patch is new. It addresses a request from Stephen Hemminger to
>       clean up the sprint_size() function.
> 
> 

applied to iproute2-next. Thanks, Petr