• Oliver Hartkopp's avatar
    can: isotp: set default value for N_As to 50 micro seconds · 530e0d46
    Oliver Hartkopp authored
    The N_As value describes the time a CAN frame needs on the wire when
    transmitted by the CAN controller. Even very short CAN FD frames need
    arround 100 usecs (bitrate 1Mbit/s, data bitrate 8Mbit/s).
    
    Having N_As to be zero (the former default) leads to 'no CAN frame
    separation' when STmin is set to zero by the receiving node. This 'burst
    mode' should not be enabled by default as it could potentially dump a high
    number of CAN frames into the netdev queue from the soft hrtimer context.
    This does not affect the system stability but is just not nice and
    cooperative.
    
    With this N_As/frame_txtime value the 'burst mode' is disabled by default.
    
    As user space applications usually do not set the frame_txtime element
    of struct can_isotp_options the new in-kernel default is very likely
    overwritten with zero when the sockopt() CAN_ISOTP_OPTS is invoked.
    To make sure that a N_As value of zero is only set intentional the
    value '0' is now interpreted as 'do not change the current value'.
    When a frame_txtime of zero is required for testing purposes this
    CAN_ISOTP_FRAME_TXTIME_ZERO u32 value has to be set in frame_txtime.
    
    Link: https://lore.kernel.org/all/20220309120416.83514-2-socketcan@hartkopp.netSigned-off-by: default avatarOliver Hartkopp <socketcan@hartkopp.net>
    Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
    530e0d46
isotp.c 40.5 KB