lkml.org 
[lkml]   [2018]   [Nov]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.18 09/83] can: dev: can_get_echo_skb(): factor out non sending code to __can_get_echo_skb()
    Date
    3.18-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Marc Kleine-Budde <mkl@pengutronix.de>

    commit a4310fa2f24687888ce80fdb0e88583561a23700 upstream.

    This patch factors out all non sending parts of can_get_echo_skb() into
    a seperate function __can_get_echo_skb(), so that it can be re-used in
    an upcoming patch.

    Cc: linux-stable <stable@vger.kernel.org>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/net/can/dev.c | 36 +++++++++++++++++++++++++-----------
    include/linux/can/dev.h | 1 +
    2 files changed, 26 insertions(+), 11 deletions(-)

    --- a/drivers/net/can/dev.c
    +++ b/drivers/net/can/dev.c
    @@ -343,14 +343,7 @@ void can_put_echo_skb(struct sk_buff *sk
    }
    EXPORT_SYMBOL_GPL(can_put_echo_skb);

    -/*
    - * Get the skb from the stack and loop it back locally
    - *
    - * The function is typically called when the TX done interrupt
    - * is handled in the device driver. The driver must protect
    - * access to priv->echo_skb, if necessary.
    - */
    -unsigned int can_get_echo_skb(struct net_device *dev, unsigned int idx)
    +struct sk_buff *__can_get_echo_skb(struct net_device *dev, unsigned int idx, u8 *len_ptr)
    {
    struct can_priv *priv = netdev_priv(dev);

    @@ -361,13 +354,34 @@ unsigned int can_get_echo_skb(struct net
    struct can_frame *cf = (struct can_frame *)skb->data;
    u8 dlc = cf->can_dlc;

    - netif_rx(priv->echo_skb[idx]);
    + *len_ptr = dlc;
    priv->echo_skb[idx] = NULL;

    - return dlc;
    + return skb;
    }

    - return 0;
    + return NULL;
    +}
    +
    +/*
    + * Get the skb from the stack and loop it back locally
    + *
    + * The function is typically called when the TX done interrupt
    + * is handled in the device driver. The driver must protect
    + * access to priv->echo_skb, if necessary.
    + */
    +unsigned int can_get_echo_skb(struct net_device *dev, unsigned int idx)
    +{
    + struct sk_buff *skb;
    + u8 len;
    +
    + skb = __can_get_echo_skb(dev, idx, &len);
    + if (!skb)
    + return 0;
    +
    + netif_rx(skb);
    +
    + return len;
    }
    EXPORT_SYMBOL_GPL(can_get_echo_skb);

    --- a/include/linux/can/dev.h
    +++ b/include/linux/can/dev.h
    @@ -148,6 +148,7 @@ void can_bus_off(struct net_device *dev)

    void can_put_echo_skb(struct sk_buff *skb, struct net_device *dev,
    unsigned int idx);
    +struct sk_buff *__can_get_echo_skb(struct net_device *dev, unsigned int idx, u8 *len_ptr);
    unsigned int can_get_echo_skb(struct net_device *dev, unsigned int idx);
    void can_free_echo_skb(struct net_device *dev, unsigned int idx);


    \
     
     \ /
      Last update: 2018-11-29 15:15    [W:4.049 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site