can: xilinx_can: update stats.tx_bytes after transmission
The driver updates stats.tx_bytes in start_xmit() even though it could do so in TX interrupt handler. Change the code to update tx_bytes in the interrupt handler, using the return value of can_get_echo_skb(). Signed-off-by: Anssi Hannula <anssi.hannula@bitwise.fi> Cc: Michal Simek <michal.simek@xilinx.com> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
This commit is contained in:
parent
6181dbc02b
commit
11ee5fcd6a
@ -403,7 +403,6 @@ static int xcan_do_set_mode(struct net_device *ndev, enum can_mode mode)
|
|||||||
static netdev_tx_t xcan_start_xmit(struct sk_buff *skb, struct net_device *ndev)
|
static netdev_tx_t xcan_start_xmit(struct sk_buff *skb, struct net_device *ndev)
|
||||||
{
|
{
|
||||||
struct xcan_priv *priv = netdev_priv(ndev);
|
struct xcan_priv *priv = netdev_priv(ndev);
|
||||||
struct net_device_stats *stats = &ndev->stats;
|
|
||||||
struct can_frame *cf = (struct can_frame *)skb->data;
|
struct can_frame *cf = (struct can_frame *)skb->data;
|
||||||
u32 id, dlc, data[2] = {0, 0};
|
u32 id, dlc, data[2] = {0, 0};
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
@ -469,7 +468,6 @@ static netdev_tx_t xcan_start_xmit(struct sk_buff *skb, struct net_device *ndev)
|
|||||||
* write triggers tranmission
|
* write triggers tranmission
|
||||||
*/
|
*/
|
||||||
priv->write_reg(priv, XCAN_TXFIFO_DW2_OFFSET, data[1]);
|
priv->write_reg(priv, XCAN_TXFIFO_DW2_OFFSET, data[1]);
|
||||||
stats->tx_bytes += cf->can_dlc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Clear TX-FIFO-empty interrupt for xcan_tx_interrupt() */
|
/* Clear TX-FIFO-empty interrupt for xcan_tx_interrupt() */
|
||||||
@ -889,7 +887,7 @@ static void xcan_tx_interrupt(struct net_device *ndev, u32 isr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
while (frames_sent--) {
|
while (frames_sent--) {
|
||||||
can_get_echo_skb(ndev, priv->tx_tail %
|
stats->tx_bytes += can_get_echo_skb(ndev, priv->tx_tail %
|
||||||
priv->tx_max);
|
priv->tx_max);
|
||||||
priv->tx_tail++;
|
priv->tx_tail++;
|
||||||
stats->tx_packets++;
|
stats->tx_packets++;
|
||||||
|
Loading…
Reference in New Issue
Block a user