lkml.org 
[lkml]   [2019]   [Feb]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 3.16 175/305] can: dev: can_get_echo_skb(): factor out non sending code to __can_get_echo_skb()
    3.16.63-rc1 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.

    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    ---
    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
    @@ -422,14 +422,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);

    @@ -440,13 +433,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
    @@ -127,6 +127,7 @@ void can_change_state(struct net_device

    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: 2019-02-03 15:27    [W:4.021 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site