lkml.org 
[lkml]   [2018]   [Sep]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.14 54/67] xen-netfront: fix queue name setting
    Date
    From: Vitaly Kuznetsov <vkuznets@redhat.com>

    [ Upstream commit 2d408c0d4574b01b9ed45e02516888bf925e11a9 ]

    Commit f599c64fdf7d ("xen-netfront: Fix race between device setup and
    open") changed the initialization order: xennet_create_queues() now
    happens before we do register_netdev() so using netdev->name in
    xennet_init_queue() is incorrect, we end up with the following in
    /proc/interrupts:

    60: 139 0 xen-dyn -event eth%d-q0-tx
    61: 265 0 xen-dyn -event eth%d-q0-rx
    62: 234 0 xen-dyn -event eth%d-q1-tx
    63: 1 0 xen-dyn -event eth%d-q1-rx

    and this looks ugly. Actually, using early netdev name (even when it's
    already set) is also not ideal: nowadays we tend to rename eth devices
    and queue name may end up not corresponding to the netdev name.

    Use nodename from xenbus device for queue naming: this can't change in VM's
    lifetime. Now /proc/interrupts looks like

    62: 202 0 xen-dyn -event device/vif/0-q0-tx
    63: 317 0 xen-dyn -event device/vif/0-q0-rx
    64: 262 0 xen-dyn -event device/vif/0-q1-tx
    65: 17 0 xen-dyn -event device/vif/0-q1-rx

    Fixes: f599c64fdf7d ("xen-netfront: Fix race between device setup and open")
    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Reviewed-by: Ross Lagerwall <ross.lagerwall@citrix.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    ---
    drivers/net/xen-netfront.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
    index d5e790dd589a..00c214348e69 100644
    --- a/drivers/net/xen-netfront.c
    +++ b/drivers/net/xen-netfront.c
    @@ -1611,7 +1611,7 @@ static int xennet_init_queue(struct netfront_queue *queue)
    (unsigned long)queue);

    snprintf(queue->name, sizeof(queue->name), "%s-q%u",
    - queue->info->netdev->name, queue->id);
    + queue->info->xbdev->nodename, queue->id);

    /* Initialise tx_skbs as a free chain containing every entry. */
    queue->tx_skb_freelist = 0;
    --
    2.17.1
    \
     
     \ /
      Last update: 2018-09-07 02:40    [W:4.236 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site