iproute2/ip
Vincent Mailhol 8316df6e6d iplink_can: fix configuration ranges in print_usage() and add unit
The configuration ranges in print_usage() are taken from "Table 8 -
Time segments' minimum configuration ranges" in section 11.3.1.2
"Configuration of the bit time parameters" of ISO 11898-1.

The standard clearly specifies that "implementations may allow time
segments that exceed the minimum required configuration ranges
specified in Table 8".

Because no maximum ranges are given in the standard, all given ranges
{ a..b } are simply replaced with { NUMBER }.

The actual ranges are specific to each device and can be confirmed
doing:

$ ip --details link show can0
1: can0: <NOARP,ECHO> mtu 16 qdisc noop state DOWN mode DEFAULT group default qlen 10
    link/can  promiscuity 0 minmtu 0 maxmtu 0
    can state STOPPED restart-ms 0
	  ES582.1/ES584.1: tseg1 2..256 tseg2 2..128 sjw 1..128 brp 1..512 brp-inc 1
	  ES582.1/ES584.1: dtseg1 2..32 dtseg2 1..16 dsjw 1..8 dbrp 1..32 dbrp-inc 1
	  clock 80000000 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535

Finally, the unit (bps, tq, ns or ms) are given. The rationale to add
the units is that the TDC parameters (that will be introduced in the
upcoming patches) are measured in a different unit than the other
bittiming parameters: clock period (a.k.a. minimum time quantum)
instead of time quantum. Adding the units disambiguates things.

For reference, before the change:
$ ip link set can0 type can help
Usage: ip link set DEVICE type can
	[ bitrate BITRATE [ sample-point SAMPLE-POINT] ] |
	[ tq TQ prop-seg PROP_SEG phase-seg1 PHASE-SEG1
 	  phase-seg2 PHASE-SEG2 [ sjw SJW ] ]

	[ dbitrate BITRATE [ dsample-point SAMPLE-POINT] ] |
	[ dtq TQ dprop-seg PROP_SEG dphase-seg1 PHASE-SEG1
 	  dphase-seg2 PHASE-SEG2 [ dsjw SJW ] ]

	[ loopback { on | off } ]
	[ listen-only { on | off } ]
	[ triple-sampling { on | off } ]
	[ one-shot { on | off } ]
	[ berr-reporting { on | off } ]
	[ fd { on | off } ]
	[ fd-non-iso { on | off } ]
	[ presume-ack { on | off } ]

	[ restart-ms TIME-MS ]
	[ restart ]

	[ termination { 0..65535 } ]

	Where: BITRATE	:= { 1..1000000 }
		  SAMPLE-POINT	:= { 0.000..0.999 }
		  TQ		:= { NUMBER }
		  PROP-SEG	:= { 1..8 }
		  PHASE-SEG1	:= { 1..8 }
		  PHASE-SEG2	:= { 1..8 }
		  SJW		:= { 1..4 }
		  RESTART-MS	:= { 0 | NUMBER }

...and after it:
$ ip link set can0 type can help
Usage: ip link set DEVICE type can
	[ bitrate BITRATE [ sample-point SAMPLE-POINT] ] |
	[ tq TQ prop-seg PROP_SEG phase-seg1 PHASE-SEG1
 	  phase-seg2 PHASE-SEG2 [ sjw SJW ] ]

	[ dbitrate BITRATE [ dsample-point SAMPLE-POINT] ] |
	[ dtq TQ dprop-seg PROP_SEG dphase-seg1 PHASE-SEG1
 	  dphase-seg2 PHASE-SEG2 [ dsjw SJW ] ]

	[ loopback { on | off } ]
	[ listen-only { on | off } ]
	[ triple-sampling { on | off } ]
	[ one-shot { on | off } ]
	[ berr-reporting { on | off } ]
	[ fd { on | off } ]
	[ fd-non-iso { on | off } ]
	[ presume-ack { on | off } ]
	[ cc-len8-dlc { on | off } ]

	[ restart-ms TIME-MS ]
	[ restart ]

	[ termination { 0..65535 } ]

	Where: BITRATE	:= { NUMBER in bps }
		  SAMPLE-POINT	:= { 0.000..0.999 }
		  TQ		:= { NUMBER in ns }
		  PROP-SEG	:= { NUMBER in tq }
		  PHASE-SEG1	:= { NUMBER in tq }
		  PHASE-SEG2	:= { NUMBER in tq }
		  SJW		:= { NUMBER in tq }
		  RESTART-MS	:= { 0 | NUMBER in ms }

Signed-off-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
Signed-off-by: David Ahern <dsahern@kernel.org>
2021-11-04 09:42:23 -06:00
..
.gitignore Another .gitignore file. 2006-08-08 12:11:23 -07:00
Makefile ip: add AMT support 2021-11-03 13:24:13 -06:00
ila_common.h SPDX license identifiers 2017-11-24 12:21:35 -08:00
ip.c ip: add AMT support 2021-11-03 13:24:13 -06:00
ip6tunnel.c ip tunnel: add json output 2019-08-07 12:00:58 -07:00
ip_common.h ip: nexthop: add print_cache_nexthop which prints and manages the nh cache 2021-10-03 18:24:59 -06:00
ipaddress.c ip: Support filter links/neighs with no master 2021-09-12 11:17:18 -06:00
ipaddrlabel.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
ipfou.c ip fou: respect preferred_family for IPv6 2020-07-06 11:03:09 -07:00
ipila.c ip: cleanup help message text 2021-03-18 11:24:06 -07:00
ipioam6.c ipioam6: use print_nl instead of print_null 2021-09-01 12:51:44 -07:00
ipl2tp.c use print_{,h}hu instead of print_uint when format specifier is %{,h}hu 2019-02-10 19:00:59 -08:00
iplink.c ip: add AMT support 2021-11-03 13:24:13 -06:00
iplink_amt.c ip: add AMT support 2021-11-03 13:24:13 -06:00
iplink_bareudp.c iplink_bareudp: cleanup help message and man page 2021-02-02 14:11:32 -08:00
iplink_bond.c ip/bond: add lacp active support 2021-09-01 12:51:44 -07:00
iplink_bond_slave.c iplink: bond: print lacp actor/partner oper states as strings 2020-01-02 17:45:32 +00:00
iplink_bridge.c ip: bridge: add support for mcast_vlan_snooping 2021-08-31 21:20:03 -06:00
iplink_bridge_slave.c ip: iplink_bridge_slave: Convert to use print_on_off() 2020-11-24 21:43:30 -07:00
iplink_can.c iplink_can: fix configuration ranges in print_usage() and add unit 2021-11-04 09:42:23 -06:00
iplink_dummy.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
iplink_geneve.c ip/tunnel: always print all known attributes 2021-09-01 12:51:44 -07:00
iplink_hsr.c iplink: hsr: add support for creating PRP device similar to HSR 2020-08-22 21:14:12 -07:00
iplink_ifb.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
iplink_ipoib.c ip: iplink_ipoib.c: Remove extra spaces 2020-09-30 22:29:05 -07:00
iplink_ipvlan.c iplink: add ipvtap support 2018-09-20 17:53:56 -07:00
iplink_macvlan.c Merge branch 'main' into next 2021-04-28 15:48:28 +00:00
iplink_netdevsim.c ip: link: add support for netdevsim device type 2018-01-02 20:46:19 -08:00
iplink_nlmon.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
iplink_rmnet.c ip: add rmnet initial support 2018-06-15 11:15:14 -07:00
iplink_team.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
iplink_vcan.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
iplink_vlan.c lib: parse_mapping: Recognize a keyword "all" 2020-11-13 19:43:15 -07:00
iplink_vrf.c iplink_vrf: Save device index from response for return code 2018-06-01 15:45:09 -04:00
iplink_vxcan.c iplink: Perform most of request buffer setups and checks in iplink_parse() 2018-03-11 17:59:03 -07:00
iplink_vxlan.c ip/tunnel: always print all known attributes 2021-09-01 12:51:44 -07:00
iplink_wwan.c iplink: support for WWAN devices 2021-06-26 04:40:57 +00:00
iplink_xdp.c iplink: add support for reporting multiple XDP programs 2018-07-15 13:10:03 -07:00
iplink_xstats.c ip: xstats: add json output support 2019-03-15 13:55:57 -07:00
ipmacsec.c lib: Add parse_one_of(), parse_on_off() 2020-11-13 19:43:15 -07:00
ipmaddr.c iproute2: ip maddress: Check multiaddr length 2020-08-22 21:12:30 -07:00
ipmonitor.c ip: nexthop: add print_cache_nexthop which prints and manages the nh cache 2021-10-03 18:24:59 -06:00
ipmptcp.c mptcp: cleanup include section. 2021-10-15 17:48:36 -06:00
ipmroute.c cmd: use spaces instead of tabs for usage indentation 2021-10-06 10:00:49 -07:00
ipneigh.c ip, neigh: Add NTF_EXT_MANAGED support 2021-10-28 08:59:03 -06:00
ipnetconf.c ip: ipnetconf: Convert to use print_on_off() 2020-11-24 21:43:34 -07:00
ipnetns.c ip: netns: fix missing netns close on some error paths 2021-04-26 21:04:02 -07:00
ipnexthop.c ip: nexthop: keep cache netlink socket open 2021-10-05 08:34:29 -06:00
ipntable.c cmd: use spaces instead of tabs for usage indentation 2021-10-06 10:00:49 -07:00
ipprefix.c Tree wide: Drop sockaddr_nl arg 2018-10-22 09:43:48 -07:00
iproute.c Merge branch 'main' into next 2021-10-09 17:47:47 -06:00
iproute_lwtunnel.c Add support for IOAM encap modes 2021-10-09 17:35:29 -06:00
iprule.c ip: cleanup help message text 2021-03-18 11:24:06 -07:00
ipseg6.c cmd: use spaces instead of tabs for usage indentation 2021-10-06 10:00:49 -07:00
iptoken.c ip/iptoken: fix dump error when ipv6 disabled 2019-06-26 14:23:12 -07:00
iptunnel.c cmd: use spaces instead of tabs for usage indentation 2021-10-06 10:00:49 -07:00
iptuntap.c cmd: use spaces instead of tabs for usage indentation 2021-10-06 10:00:49 -07:00
ipvrf.c vrf: print BPF log buffer if bpf_program_load fails 2021-01-18 12:32:11 -08:00
ipxfrm.c Merge branch 'main' into next 2021-03-21 17:16:01 +00:00
link_gre.c ip/tunnel: always print all known attributes 2021-09-01 12:51:44 -07:00
link_gre6.c ip/tunnel: always print all known attributes 2021-09-01 12:51:44 -07:00
link_ip6tnl.c ip/tunnel: always print all known attributes 2021-09-01 12:51:44 -07:00
link_iptnl.c ip/tunnel: always print all known attributes 2021-09-01 12:51:44 -07:00
link_veth.c iplink: Perform most of request buffer setups and checks in iplink_parse() 2018-03-11 17:59:03 -07:00
link_vti.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
link_vti6.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
link_xfrm.c ip: xfrm if_id -ve value is error 2019-12-25 12:38:13 -08:00
nh_common.h ip: nexthop: add print_cache_nexthop which prints and manages the nh cache 2021-10-03 18:24:59 -06:00
routel ip: rewrite routel in python 2021-09-06 16:31:24 -06:00
rtm_map.c ip: add a new parameter -Numeric 2019-06-18 08:37:47 -07:00
rtmon.c cmd: use spaces instead of tabs for usage indentation 2021-10-06 10:00:49 -07:00
static-syms.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
tcp_metrics.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
tunnel.c ip tunnel: add json output 2019-08-07 12:00:58 -07:00
tunnel.h tunnel: factorize printout of GRE key and flags 2019-07-18 10:19:47 -07:00
xfrm.h xfrm: enable to manage default policies 2021-10-28 08:58:28 -06:00
xfrm_monitor.c xfrm: enable to manage default policies 2021-10-28 08:58:28 -06:00
xfrm_policy.c xfrm: enable to manage default policies 2021-10-28 08:58:28 -06:00
xfrm_state.c ip: xfrm: add support for tfcpad 2021-03-21 17:15:07 +00:00