mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-04 01:24:12 +08:00
can: c_can: fix calculation of transmitted bytes on tx complete
The number of bytes transmitted was not updated correctly, if several CAN messages (with different length) were transmitted in one 'bunch'. Thus programs like 'ifconfig' showed wrong transmit byte counts. Reason was, that the message object whose DLC is to be read was not necessarily the active one at the time when priv->read_reg(priv, C_CAN_IFACE(MSGCTRL_REG, 0)) & IF_MCONT_DLC_MASK; was executed. Signed-off-by: Holger Bechtold <Holger.Bechtold@gmx.net> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
This commit is contained in:
parent
e35d46adc4
commit
7ee330c7b3
@ -763,6 +763,7 @@ static void c_can_do_tx(struct net_device *dev)
|
|||||||
if (!(val & (1 << (msg_obj_no - 1)))) {
|
if (!(val & (1 << (msg_obj_no - 1)))) {
|
||||||
can_get_echo_skb(dev,
|
can_get_echo_skb(dev,
|
||||||
msg_obj_no - C_CAN_MSG_OBJ_TX_FIRST);
|
msg_obj_no - C_CAN_MSG_OBJ_TX_FIRST);
|
||||||
|
c_can_object_get(dev, 0, msg_obj_no, IF_COMM_ALL);
|
||||||
stats->tx_bytes += priv->read_reg(priv,
|
stats->tx_bytes += priv->read_reg(priv,
|
||||||
C_CAN_IFACE(MSGCTRL_REG, 0))
|
C_CAN_IFACE(MSGCTRL_REG, 0))
|
||||||
& IF_MCONT_DLC_MASK;
|
& IF_MCONT_DLC_MASK;
|
||||||
|
Loading…
Reference in New Issue
Block a user