diff options
-rw-r--r-- | drivers/net/can/dev.c | 10 | ||||
-rw-r--r-- | include/linux/can/dev.h | 2 |
2 files changed, 10 insertions, 2 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 | ||
diff --git a/include/linux/can/dev.h b/include/linux/can/dev.h index a0969fcb72b9..5d2efe7e3f1b 100644 --- a/include/linux/can/dev.h +++ b/include/linux/can/dev.h | |||
@@ -92,7 +92,7 @@ void can_bus_off(struct net_device *dev); | |||
92 | 92 | ||
93 | void can_put_echo_skb(struct sk_buff *skb, struct net_device *dev, | 93 | void can_put_echo_skb(struct sk_buff *skb, struct net_device *dev, |
94 | unsigned int idx); | 94 | unsigned int idx); |
95 | void can_get_echo_skb(struct net_device *dev, unsigned int idx); | 95 | unsigned int can_get_echo_skb(struct net_device *dev, unsigned int idx); |
96 | void can_free_echo_skb(struct net_device *dev, unsigned int idx); | 96 | void can_free_echo_skb(struct net_device *dev, unsigned int idx); |
97 | 97 | ||
98 | struct sk_buff *alloc_can_skb(struct net_device *dev, struct can_frame **cf); | 98 | struct sk_buff *alloc_can_skb(struct net_device *dev, struct can_frame **cf); |