diff options
author | Marc Kleine-Budde <mkl@pengutronix.de> | 2011-10-10 17:43:53 -0400 |
---|---|---|
committer | Marc Kleine-Budde <mkl@pengutronix.de> | 2012-02-02 19:21:25 -0500 |
commit | cf5046b309b3a05c444a8edba6b44108510b7d7d (patch) | |
tree | f0603d9caf8d3ce1050447c8817dfed25452eca8 /drivers/net/can | |
parent | f84cbda06f79f05b748707b33b925b50c2fedc84 (diff) |
can: dev: let can_get_echo_skb() return dlc of CAN frame
can_get_echo_skb() is usually called in the TX complete handler.
The stats->tx_packets and stats->tx_bytes should be updated there, too.
This patch simplifies to figure out the size of the sent CAN frame.
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Diffstat (limited to 'drivers/net/can')
-rw-r--r-- | drivers/net/can/dev.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/net/can/dev.c b/drivers/net/can/dev.c index 120f1ab5a2ce..9d9799cf68cd 100644 --- a/drivers/net/can/dev.c +++ b/drivers/net/can/dev.c | |||
@@ -327,16 +327,24 @@ EXPORT_SYMBOL_GPL(can_put_echo_skb); | |||
327 | * is handled in the device driver. The driver must protect | 327 | * is handled in the device driver. The driver must protect |
328 | * access to priv->echo_skb, if necessary. | 328 | * access to priv->echo_skb, if necessary. |
329 | */ | 329 | */ |
330 | void can_get_echo_skb(struct net_device *dev, unsigned int idx) | 330 | unsigned int can_get_echo_skb(struct net_device *dev, unsigned int idx) |
331 | { | 331 | { |
332 | struct can_priv *priv = netdev_priv(dev); | 332 | struct can_priv *priv = netdev_priv(dev); |
333 | 333 | ||
334 | BUG_ON(idx >= priv->echo_skb_max); | 334 | BUG_ON(idx >= priv->echo_skb_max); |
335 | 335 | ||
336 | if (priv->echo_skb[idx]) { | 336 | if (priv->echo_skb[idx]) { |
337 | struct sk_buff *skb = priv->echo_skb[idx]; | ||
338 | struct can_frame *cf = (struct can_frame *)skb->data; | ||
339 | u8 dlc = cf->can_dlc; | ||
340 | |||
337 | netif_rx(priv->echo_skb[idx]); | 341 | netif_rx(priv->echo_skb[idx]); |
338 | priv->echo_skb[idx] = NULL; | 342 | priv->echo_skb[idx] = NULL; |
343 | |||
344 | return dlc; | ||
339 | } | 345 | } |
346 | |||
347 | return 0; | ||
340 | } | 348 | } |
341 | EXPORT_SYMBOL_GPL(can_get_echo_skb); | 349 | EXPORT_SYMBOL_GPL(can_get_echo_skb); |
342 | 350 | ||