• Vincent Mailhol's avatar
    can: netlink: clear data_bittiming if FD is turned off · e3b0a4a4
    Vincent Mailhol authored
    When the FD is turned off through the netlink interface, the data bit
    timing values still remain in data_bittiming and are displayed despite
    of the feature being disabled.
    
    Example:
    
    | $ ip link set can0 type can bitrate 500000 dbitrate 2000000 fd on
    | $ ip --details link show can0
    | 1:  can0: <NOARP,ECHO> mtu 72 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 10
    |     link/can  promiscuity 0 minmtu 0 maxmtu 0
    |     can <FD> state STOPPED restart-ms 0
    | 	  bitrate 500000 sample-point 0.875
    | 	  tq 12 prop-seg 69 phase-seg1 70 phase-seg2 20 sjw 1
    | 	  ES582.1/ES584.1: tseg1 2..256 tseg2 2..128 sjw 1..128 brp 1..512 brp-inc 1
    | 	  dbitrate 2000000 dsample-point 0.750
    | 	  dtq 12 dprop-seg 14 dphase-seg1 15 dphase-seg2 10 dsjw 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
    |
    | $ ip link set can0 type can bitrate 500000 fd off
    | $ ip --details link show can0
    | 1:  can0: <NOARP,ECHO> mtu 16 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 10
    |     link/can  promiscuity 0 minmtu 0 maxmtu 0
    |     can state STOPPED restart-ms 0
    | 	  bitrate 500000 sample-point 0.875
    | 	  tq 12 prop-seg 69 phase-seg1 70 phase-seg2 20 sjw 1
    | 	  ES582.1/ES584.1: tseg1 2..256 tseg2 2..128 sjw 1..128 brp 1..512 brp-inc 1
    | 	  dbitrate 2000000 dsample-point 0.750
    | 	  dtq 12 dprop-seg 14 dphase-seg1 15 dphase-seg2 10 dsjw 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
    
    Remark: once FD is turned off, it is not possible to turn fd back on
    and reuse the previously input data bit timing values:
    
    | $ ip link set can0 type can bitrate 500000 fd on
    | RTNETLINK answers: Operation not supported
    
    This means that the user will need to re-configure the data bit timing
    in order to turn fd on again.
    
    Because old data bit timing values cannot be reused, this patch clears
    priv->data_bit timing whenever FD is turned off. This way, the data
    bit timing variables are not displayed anymore.
    
    Link: https://lore.kernel.org/r/20210618081904.141114-2-mailhol.vincent@wanadoo.fr
    
    Signed-off-by: default avatarVincent Mailhol <mailhol.vincent@wanadoo.fr>
    Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
    e3b0a4a4
netlink.c 10.9 KB