aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolger Bechtold <Holger.Bechtold@gmx.net>2013-11-25 09:48:19 -0500
committerMarc Kleine-Budde <mkl@pengutronix.de>2013-11-25 15:48:54 -0500
commit7ee330c7b3b738847bf297912b371bbcec3bc994 (patch)
tree71314361df1ad1e174b87b8f913f361231b204f8
parente35d46adc49b469fd92bdb64fea8af93640e6651 (diff)
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>
-rw-r--r--drivers/net/can/c_can/c_can.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/net/can/c_can/c_can.c b/drivers/net/can/c_can/c_can.c
index e59c42b446a9..77061eebb034 100644
--- a/drivers/net/can/c_can/c_can.c
+++ b/drivers/net/can/c_can/c_can.c
@@ -763,6 +763,7 @@ static void c_can_do_tx(struct net_device *dev)
763 if (!(val & (1 << (msg_obj_no - 1)))) { 763 if (!(val & (1 << (msg_obj_no - 1)))) {
764 can_get_echo_skb(dev, 764 can_get_echo_skb(dev,
765 msg_obj_no - C_CAN_MSG_OBJ_TX_FIRST); 765 msg_obj_no - C_CAN_MSG_OBJ_TX_FIRST);
766 c_can_object_get(dev, 0, msg_obj_no, IF_COMM_ALL);
766 stats->tx_bytes += priv->read_reg(priv, 767 stats->tx_bytes += priv->read_reg(priv,
767 C_CAN_IFACE(MSGCTRL_REG, 0)) 768 C_CAN_IFACE(MSGCTRL_REG, 0))
768 & IF_MCONT_DLC_MASK; 769 & IF_MCONT_DLC_MASK;