• Vincent Mailhol's avatar
    can: do not increase tx_bytes statistics for RTR frames · cc4b08c3
    Vincent Mailhol authored
    The actual payload length of the CAN Remote Transmission Request (RTR)
    frames is always 0, i.e. no payload is transmitted on the wire.
    However, those RTR frames still use the DLC to indicate the length of
    the requested frame.
    
    As such, net_device_stats::tx_bytes should not be increased when
    sending RTR frames.
    
    The function can_get_echo_skb() already returns the correct length,
    even for RTR frames (c.f. [1]). However, for historical reasons, the
    drivers do not use can_get_echo_skb()'s return value and instead, most
    of them store a temporary length (or dlc) in some local structure or
    array. Using the return value of can_get_echo_skb() solves the
    issue. After doing this, such length/dlc fields become unused and so
    this patch does the adequate cleaning when needed.
    
    This patch fixes all the CAN drivers.
    
    Finally, can_get_echo_skb() is decorated with the __must_check
    attribute in order to force future drivers to correctly use its return
    value (else the compiler would emit a warning).
    
    [1] commit ed3320ce ("can: dev: __can_get_echo_skb():
    fix real payload length return value for RTR frames")
    
    Link: https://lore.kernel.org/all/20211207121531.42941-6-mailhol.vincent@wanadoo.fr
    Cc: Nicolas Ferre <nicolas.ferre@microchip.com>
    Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Cc: Ludovic Desroches <ludovic.desroches@microchip.com>
    Cc: Maxime Ripard <mripard@kernel.org>
    Cc: Chen-Yu Tsai <wens@csie.org>
    Cc: Jernej Skrabec <jernej.skrabec@gmail.com>
    Cc: Yasushi SHOJI <yashi@spacecubics.com>
    Cc: Oliver Hartkopp <socketcan@hartkopp.net>
    Cc: Stephane Grosjean <s.grosjean@peak-system.com>
    Cc: Andreas Larsson <andreas@gaisler.com>
    Tested-by: Jimmy Assarsson <extja@kvaser.com> # kvaser
    Signed-off-by: default avatarVincent Mailhol <mailhol.vincent@wanadoo.fr>
    Acked-by: Stefan Mätje <stefan.maetje@esd.eu> # esd_usb2
    Tested-by: Stefan Mätje <stefan.maetje@esd.eu> # esd_usb2
    [mkl: add conversion for grcan]
    Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
    cc4b08c3
gs_usb.c 24.3 KB