27 Mar, 2018

1 commit


27 Feb, 2018

1 commit

  • The function xenvif_rx_skb is local to the source and does not need
    to be in global scope, so make it static.

    Cleans up sparse warning:
    drivers/net/xen-netback/rx.c:422:6: warning: symbol 'xenvif_rx_skb'
    was not declared. Should it be static?

    Signed-off-by: Colin Ian King
    Acked-by: Wei Liu
    Signed-off-by: David S. Miller

    Colin Ian King
     

07 Dec, 2017

1 commit


22 Oct, 2017

1 commit

  • There were quite a few overlapping sets of changes here.

    Daniel's bug fix for off-by-ones in the new BPF branch instructions,
    along with the added allowances for "data_end > ptr + x" forms
    collided with the metadata additions.

    Along with those three changes came veritifer test cases, which in
    their final form I tried to group together properly. If I had just
    trimmed GIT's conflict tags as-is, this would have split up the
    meta tests unnecessarily.

    In the socketmap code, a set of preemption disabling changes
    overlapped with the rename of bpf_compute_data_end() to
    bpf_compute_data_pointers().

    Changes were made to the mv88e6060.c driver set addr method
    which got removed in net-next.

    The hyperv transport socket layer had a locking change in 'net'
    which overlapped with a change of socket state macro usage
    in 'net-next'.

    Signed-off-by: David S. Miller

    David S. Miller
     

18 Oct, 2017

1 commit

  • In preparation for unconditionally passing the struct timer_list pointer to
    all timer callbacks, switch to using the new timer_setup() and from_timer()
    to pass the timer pointer explicitly.

    Cc: Wei Liu
    Cc: Paul Durrant
    Cc: xen-devel@lists.xenproject.org
    Cc: netdev@vger.kernel.org
    Signed-off-by: Kees Cook
    Signed-off-by: David S. Miller

    Kees Cook
     

17 Oct, 2017

1 commit

  • RFC791 specifies the minimum MTU to be 68, while xen-net{front|back}
    drivers use a minimum value of 0.

    When set MTU to 0~67 with xen_net{front|back} driver, the network
    will become unreachable immediately, the guest can no longer be pinged.

    xen_net{front|back} should not allow the user to set this value which causes
    network problems.

    Reported-by: Chen Shi
    Signed-off-by: Mohammed Gamal
    Acked-by: Wei Liu
    Reviewed-by: Boris Ostrovsky
    Signed-off-by: Boris Ostrovsky

    Mohammed Gamal
     

22 Sep, 2017

1 commit


29 Aug, 2017

1 commit

  • The xen driver initializes struct ubuf_info fields using designated
    initializers. I recently moved these fields inside a nested anonymous
    struct inside an anonymous union. I had missed this use case.

    This breaks compilation of xen-netback with older compilers.
    >From kbuild bot with gcc-4.4.7:

    drivers/net//xen-netback/interface.c: In function
    'xenvif_init_queue':
    >> drivers/net//xen-netback/interface.c:554: error: unknown field 'ctx' specified in initializer
    >> drivers/net//xen-netback/interface.c:554: warning: missing braces around initializer
    drivers/net//xen-netback/interface.c:554: warning: (near initialization for '(anonymous).')
    >> drivers/net//xen-netback/interface.c:554: warning: initialization makes integer from pointer without a cast
    >> drivers/net//xen-netback/interface.c:555: error: unknown field 'desc' specified in initializer

    Add double braces around the designated initializers to match their
    nested position in the struct. After this, compilation succeeds again.

    Fixes: 4ab6c99d99bb ("sock: MSG_ZEROCOPY notification coalescing")
    Reported-by: kbuild bot
    Signed-off-by: Willem de Bruijn
    Acked-by: Wei Liu
    Signed-off-by: David S. Miller

    Willem de Bruijn
     

22 Jun, 2017

1 commit

  • Add a flag to indicate if a queue is rate-limited. Test the flag in
    NAPI poll handler and avoid rescheduling the queue if true, otherwise
    we risk locking up the host. The rescheduling will be done in the
    timer callback function.

    Reported-by: Jean-Louis Dupond
    Signed-off-by: Wei Liu
    Tested-by: Jean-Louis Dupond
    Reviewed-by: Paul Durrant
    Signed-off-by: David S. Miller

    Wei Liu
     

13 Mar, 2017

1 commit


05 Mar, 2017

1 commit

  • Pull networking fixes from David Miller:

    1) Fix double-free in batman-adv, from Sven Eckelmann.

    2) Fix packet stats for fast-RX path, from Joannes Berg.

    3) Netfilter's ip_route_me_harder() doesn't handle request sockets
    properly, fix from Florian Westphal.

    4) Fix sendmsg deadlock in rxrpc, from David Howells.

    5) Add missing RCU locking to transport hashtable scan, from Xin Long.

    6) Fix potential packet loss in mlxsw driver, from Ido Schimmel.

    7) Fix race in NAPI handling between poll handlers and busy polling,
    from Eric Dumazet.

    8) TX path in vxlan and geneve need proper RCU locking, from Jakub
    Kicinski.

    9) SYN processing in DCCP and TCP need to disable BH, from Eric
    Dumazet.

    10) Properly handle net_enable_timestamp() being invoked from IRQ
    context, also from Eric Dumazet.

    11) Fix crash on device-tree systems in xgene driver, from Alban Bedel.

    12) Do not call sk_free() on a locked socket, from Arnaldo Carvalho de
    Melo.

    13) Fix use-after-free in netvsc driver, from Dexuan Cui.

    14) Fix max MTU setting in bonding driver, from WANG Cong.

    15) xen-netback hash table can be allocated from softirq context, so use
    GFP_ATOMIC. From Anoob Soman.

    16) Fix MAC address change bug in bgmac driver, from Hari Vyas.

    17) strparser needs to destroy strp_wq on module exit, from WANG Cong.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (69 commits)
    strparser: destroy workqueue on module exit
    sfc: fix IPID endianness in TSOv2
    sfc: avoid max() in array size
    rds: remove unnecessary returned value check
    rxrpc: Fix potential NULL-pointer exception
    nfp: correct DMA direction in XDP DMA sync
    nfp: don't tell FW about the reserved buffer space
    net: ethernet: bgmac: mac address change bug
    net: ethernet: bgmac: init sequence bug
    xen-netback: don't vfree() queues under spinlock
    xen-netback: keep a local pointer for vif in backend_disconnect()
    netfilter: nf_tables: don't call nfnetlink_set_err() if nfnetlink_send() fails
    netfilter: nft_set_rbtree: incorrect assumption on lower interval lookups
    netfilter: nf_conntrack_sip: fix wrong memory initialisation
    can: flexcan: fix typo in comment
    can: usb_8dev: Fix memory leak of priv->cmd_msg_buffer
    can: gs_usb: fix coding style
    can: gs_usb: Don't use stack memory for USB transfers
    ixgbe: Limit use of 2K buffers on architectures with 256B or larger cache lines
    ixgbe: update the rss key on h/w, when ethtool ask for it
    ...

    Linus Torvalds
     

04 Mar, 2017

2 commits

  • This leads to a BUG of the following form:

    [ 174.512861] switch: port 2(vif3.0) entered disabled state
    [ 174.522735] BUG: sleeping function called from invalid context at
    /home/build/linux-linus/mm/vmalloc.c:1441
    [ 174.523451] in_atomic(): 1, irqs_disabled(): 0, pid: 28, name: xenwatch
    [ 174.524131] CPU: 1 PID: 28 Comm: xenwatch Tainted: G W
    4.10.0upstream-11073-g4977ab6-dirty #1
    [ 174.524819] Hardware name: MSI MS-7680/H61M-P23 (MS-7680), BIOS V17.0
    03/14/2011
    [ 174.525517] Call Trace:
    [ 174.526217] show_stack+0x23/0x60
    [ 174.526899] dump_stack+0x5b/0x88
    [ 174.527562] ___might_sleep+0xde/0x130
    [ 174.528208] __might_sleep+0x35/0xa0
    [ 174.528840] ? _raw_spin_unlock_irqrestore+0x13/0x20
    [ 174.529463] ? __wake_up+0x40/0x50
    [ 174.530089] remove_vm_area+0x20/0x90
    [ 174.530724] __vunmap+0x1d/0xc0
    [ 174.531346] ? delete_object_full+0x13/0x20
    [ 174.531973] vfree+0x40/0x80
    [ 174.532594] set_backend_state+0x18a/0xa90
    [ 174.533221] ? dwc_scan_descriptors+0x24d/0x430
    [ 174.533850] ? kfree+0x5b/0xc0
    [ 174.534476] ? xenbus_read+0x3d/0x50
    [ 174.535101] ? xenbus_read+0x3d/0x50
    [ 174.535718] ? xenbus_gather+0x31/0x90
    [ 174.536332] ? ___might_sleep+0xf6/0x130
    [ 174.536945] frontend_changed+0x6b/0xd0
    [ 174.537565] xenbus_otherend_changed+0x7d/0x80
    [ 174.538185] frontend_changed+0x12/0x20
    [ 174.538803] xenwatch_thread+0x74/0x110
    [ 174.539417] ? woken_wake_function+0x20/0x20
    [ 174.540049] kthread+0xe5/0x120
    [ 174.540663] ? xenbus_printf+0x50/0x50
    [ 174.541278] ? __kthread_init_worker+0x40/0x40
    [ 174.541898] ret_from_fork+0x21/0x2c
    [ 174.548635] switch: port 2(vif3.0) entered disabled state

    This patch defers the vfree() until after the spinlock is released.

    Reported-by: Juergen Gross
    Signed-off-by: Paul Durrant
    Signed-off-by: David S. Miller

    Paul Durrant
     
  • This patch replaces use of 'be->vif' with 'vif' and hence generally
    makes the function look tidier. No semantic change.

    Signed-off-by: Paul Durrant
    Signed-off-by: David S. Miller

    Paul Durrant
     

03 Mar, 2017

1 commit


02 Mar, 2017

1 commit


23 Feb, 2017

1 commit

  • Pull networking updates from David Miller:
    "Highlights:

    1) Support TX_RING in AF_PACKET TPACKET_V3 mode, from Sowmini
    Varadhan.

    2) Simplify classifier state on sk_buff in order to shrink it a bit.
    From Willem de Bruijn.

    3) Introduce SIPHASH and it's usage for secure sequence numbers and
    syncookies. From Jason A. Donenfeld.

    4) Reduce CPU usage for ICMP replies we are going to limit or
    suppress, from Jesper Dangaard Brouer.

    5) Introduce Shared Memory Communications socket layer, from Ursula
    Braun.

    6) Add RACK loss detection and allow it to actually trigger fast
    recovery instead of just assisting after other algorithms have
    triggered it. From Yuchung Cheng.

    7) Add xmit_more and BQL support to mvneta driver, from Simon Guinot.

    8) skb_cow_data avoidance in esp4 and esp6, from Steffen Klassert.

    9) Export MPLS packet stats via netlink, from Robert Shearman.

    10) Significantly improve inet port bind conflict handling, especially
    when an application is restarted and changes it's setting of
    reuseport. From Josef Bacik.

    11) Implement TX batching in vhost_net, from Jason Wang.

    12) Extend the dummy device so that VF (virtual function) features,
    such as configuration, can be more easily tested. From Phil
    Sutter.

    13) Avoid two atomic ops per page on x86 in bnx2x driver, from Eric
    Dumazet.

    14) Add new bpf MAP, implementing a longest prefix match trie. From
    Daniel Mack.

    15) Packet sample offloading support in mlxsw driver, from Yotam Gigi.

    16) Add new aquantia driver, from David VomLehn.

    17) Add bpf tracepoints, from Daniel Borkmann.

    18) Add support for port mirroring to b53 and bcm_sf2 drivers, from
    Florian Fainelli.

    19) Remove custom busy polling in many drivers, it is done in the core
    networking since 4.5 times. From Eric Dumazet.

    20) Support XDP adjust_head in virtio_net, from John Fastabend.

    21) Fix several major holes in neighbour entry confirmation, from
    Julian Anastasov.

    22) Add XDP support to bnxt_en driver, from Michael Chan.

    23) VXLAN offloads for enic driver, from Govindarajulu Varadarajan.

    24) Add IPVTAP driver (IP-VLAN based tap driver) from Sainath Grandhi.

    25) Support GRO in IPSEC protocols, from Steffen Klassert"

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1764 commits)
    Revert "ath10k: Search SMBIOS for OEM board file extension"
    net: socket: fix recvmmsg not returning error from sock_error
    bnxt_en: use eth_hw_addr_random()
    bpf: fix unlocking of jited image when module ronx not set
    arch: add ARCH_HAS_SET_MEMORY config
    net: napi_watchdog() can use napi_schedule_irqoff()
    tcp: Revert "tcp: tcp_probe: use spin_lock_bh()"
    net/hsr: use eth_hw_addr_random()
    net: mvpp2: enable building on 64-bit platforms
    net: mvpp2: switch to build_skb() in the RX path
    net: mvpp2: simplify MVPP2_PRS_RI_* definitions
    net: mvpp2: fix indentation of MVPP2_EXT_GLOBAL_CTRL_DEFAULT
    net: mvpp2: remove unused register definitions
    net: mvpp2: simplify mvpp2_bm_bufs_add()
    net: mvpp2: drop useless fields in mvpp2_bm_pool and related code
    net: mvpp2: remove unused 'tx_skb' field of 'struct mvpp2_tx_queue'
    net: mvpp2: release reference to txq_cpu[] entry after unmapping
    net: mvpp2: handle too large value in mvpp2_rx_time_coal_set()
    net: mvpp2: handle too large value handling in mvpp2_rx_pkts_coal_set()
    net: mvpp2: remove useless arguments in mvpp2_rx_{pkts, time}_coal_set
    ...

    Linus Torvalds
     

22 Feb, 2017

1 commit

  • Pull xen updates from Juergen Gross:
    "Xen features and fixes:

    - a series from Boris Ostrovsky adding support for booting Linux as
    Xen PVH guest

    - a series from Juergen Gross streamlining the xenbus driver

    - a series from Paul Durrant adding support for the new device model
    hypercall

    - several small corrections"

    * tag 'for-linus-4.11-rc0-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
    xen/privcmd: add IOCTL_PRIVCMD_RESTRICT
    xen/privcmd: Add IOCTL_PRIVCMD_DM_OP
    xen/privcmd: return -ENOTTY for unimplemented IOCTLs
    xen: optimize xenbus driver for multiple concurrent xenstore accesses
    xen: modify xenstore watch event interface
    xen: clean up xenbus internal headers
    xenbus: Neaten xenbus_va_dev_error
    xen/pvh: Use Xen's emergency_restart op for PVH guests
    xen/pvh: Enable CPU hotplug
    xen/pvh: PVH guests always have PV devices
    xen/pvh: Initialize grant table for PVH guests
    xen/pvh: Make sure we don't use ACPI_IRQ_MODEL_PIC for SCI
    xen/pvh: Bootstrap PVH guest
    xen/pvh: Import PVH-related Xen public interfaces
    xen/x86: Remove PVH support
    x86/boot/32: Convert the 32-bit pgtable setup code from assembly to C
    xen/manage: correct return value check on xenbus_scanf()
    x86/xen: Fix APIC id mismatch warning on Intel
    xen/netback: set default upper limit of tx/rx queues to 8
    xen/netfront: set default upper limit of tx/rx queues to 8

    Linus Torvalds
     

17 Feb, 2017

1 commit


14 Feb, 2017

1 commit

  • This patch fixes an issue where the type of counters in the queue(s)
    and interface are not in sync (queue counters are int, interface
    counters are long), causing incorrect reporting of tx/rx values
    of the vif interface and unclear counter overflows.
    This patch sets both counters to the u64 type.

    Signed-off-by: Mart van Santen
    Reviewed-by: Paul Durrant
    Signed-off-by: David S. Miller

    Mart van Santen
     

10 Feb, 2017

1 commit

  • Today a Xenstore watch event is delivered via a callback function
    declared as:

    void (*callback)(struct xenbus_watch *,
    const char **vec, unsigned int len);

    As all watch events only ever come with two parameters (path and token)
    changing the prototype to:

    void (*callback)(struct xenbus_watch *,
    const char *path, const char *token);

    is the natural thing to do.

    Apply this change and adapt all users.

    Cc: konrad.wilk@oracle.com
    Cc: roger.pau@citrix.com
    Cc: wei.liu2@citrix.com
    Cc: paul.durrant@citrix.com
    Cc: netdev@vger.kernel.org

    Signed-off-by: Juergen Gross
    Reviewed-by: Paul Durrant
    Reviewed-by: Wei Liu
    Reviewed-by: Roger Pau Monné
    Reviewed-by: Boris Ostrovsky
    Signed-off-by: Boris Ostrovsky

    Juergen Gross
     

31 Jan, 2017

1 commit

  • napi_complete_done() allows to opt-in for gro_flush_timeout,
    added back in linux-3.19, commit 3b47d30396ba
    ("net: gro: add a per device gro flush timer")

    This allows for more efficient GRO aggregation without
    sacrifying latencies.

    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     

30 Jan, 2017

1 commit

  • The default for the maximum number of tx/rx queues of one interface is
    the number of cpus of the system today. As each queue pair reserves 512
    grant pages this default consumes a ridiculous number of grants for
    large guests.

    Limit the queue number to 8 as default. This value can be modified
    via a module parameter if required.

    Signed-off-by: Juergen Gross
    Reviewed-by: Boris Ostrovsky
    Signed-off-by: Boris Ostrovsky

    Juergen Gross
     

19 Jan, 2017

2 commits


14 Dec, 2016

1 commit

  • Pull xen updates from Juergen Gross:
    "Xen features and fixes for 4.10

    These are some fixes, a move of some arm related headers to share them
    between arm and arm64 and a series introducing a helper to make code
    more readable.

    The most notable change is David stepping down as maintainer of the
    Xen hypervisor interface. This results in me sending you the pull
    requests for Xen related code from now on"

    * tag 'for-linus-4.10-rc0-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip: (29 commits)
    xen/balloon: Only mark a page as managed when it is released
    xenbus: fix deadlock on writes to /proc/xen/xenbus
    xen/scsifront: don't request a slot on the ring until request is ready
    xen/x86: Increase xen_e820_map to E820_X_MAX possible entries
    x86: Make E820_X_MAX unconditionally larger than E820MAX
    xen/pci: Bubble up error and fix description.
    xen: xenbus: set error code on failure
    xen: set error code on failures
    arm/xen: Use alloc_percpu rather than __alloc_percpu
    arm/arm64: xen: Move shared architecture headers to include/xen/arm
    xen/events: use xen_vcpu_id mapping for EVTCHNOP_status
    xen/gntdev: Use VM_MIXEDMAP instead of VM_IO to avoid NUMA balancing
    xen-scsifront: Add a missing call to kfree
    MAINTAINERS: update XEN HYPERVISOR INTERFACE
    xenfs: Use proc_create_mount_point() to create /proc/xen
    xen-platform: use builtin_pci_driver
    xen-netback: fix error handling output
    xen: make use of xenbus_read_unsigned() in xenbus
    xen: make use of xenbus_read_unsigned() in xen-pciback
    xen: make use of xenbus_read_unsigned() in xen-fbfront
    ...

    Linus Torvalds
     

10 Nov, 2016

2 commits

  • The connect function prints an unintialized error code after an
    earlier initialization was removed:

    drivers/net/xen-netback/xenbus.c: In function 'connect':
    drivers/net/xen-netback/xenbus.c:938:3: error: 'err' may be used uninitialized in this function [-Werror=maybe-uninitialized]

    This prints it as -EINVAL instead, which seems to be the most
    appropriate error code. Before the patch that caused the warning,
    this would print a positive number returned by vsscanf() instead,
    which is also wrong. We probably don't need a backport though,
    as fixing the warning here should be sufficient.

    Fixes: f95842e7a9f2 ("xen: make use of xenbus_read_unsigned() in xen-netback")
    Fixes: 8d3d53b3e433 ("xen-netback: Add support for multiple queues")
    Signed-off-by: Arnd Bergmann
    Reviewed-by: Paul Durrant
    Signed-off-by: Juergen Gross

    Arnd Bergmann
     
  • For single items being collected this should be preferred as being more
    typesafe (as the compiler can check format string and to-be-written-to
    variable match) and more efficient (requiring one less parameter to be
    passed).

    Signed-off-by: Jan Beulich
    Reviewed-by: Paul Durrant
    Signed-off-by: David S. Miller

    Jan Beulich
     

07 Nov, 2016

1 commit

  • Use xenbus_read_unsigned() instead of xenbus_scanf() when possible.
    This requires to change the type of some reads from int to unsigned,
    but these cases have been wrong before: negative values are not allowed
    for the modified cases.

    Cc: wei.liu2@citrix.com
    Cc: paul.durrant@citrix.com
    Cc: netdev@vger.kernel.org

    Signed-off-by: Juergen Gross
    Reviewed-by: Paul Durrant
    Acked-by: David Vrabel

    Juergen Gross
     

21 Oct, 2016

1 commit

  • hyperv_net:
    - set min/max_mtu, per Haiyang, after rndis_filter_device_add

    virtio_net:
    - set min/max_mtu
    - remove virtnet_change_mtu

    vmxnet3:
    - set min/max_mtu

    xen-netback:
    - min_mtu = 0, max_mtu = 65517

    xen-netfront:
    - min_mtu = 0, max_mtu = 65535

    unisys/visor:
    - clean up defines a little to not clash with network core or add
    redundat definitions

    CC: netdev@vger.kernel.org
    CC: virtualization@lists.linux-foundation.org
    CC: "K. Y. Srinivasan"
    CC: Haiyang Zhang
    CC: "Michael S. Tsirkin"
    CC: Shrikrishna Khare
    CC: "VMware, Inc."
    CC: Wei Liu
    CC: Paul Durrant
    CC: David Kershner
    Signed-off-by: Jarod Wilson
    Reviewed-by: Haiyang Zhang
    Signed-off-by: David S. Miller

    Jarod Wilson
     

13 Oct, 2016

3 commits

  • Wiht the latest rework of the xen-netback driver, we get a warning
    on ARM about the types passed into min():

    drivers/net/xen-netback/rx.c: In function 'xenvif_rx_next_chunk':
    include/linux/kernel.h:739:16: error: comparison of distinct pointer types lacks a cast [-Werror]

    The reason is that XEN_PAGE_SIZE is not size_t here. There
    is no actual bug, and we can easily avoid the warning using the
    min_t() macro instead of min().

    Fixes: eb1723a29b9a ("xen-netback: refactor guest rx")
    Signed-off-by: Arnd Bergmann
    Acked-by: Paul Durrant
    Signed-off-by: David S. Miller

    Arnd Bergmann
     
  • If a VIF has been ready for rx_stall_timeout (60s by default) and an
    Rx ring is drained of all requests an Rx stall will be incorrectly
    detected. When this occurs and the guest Rx queue is empty, the Rx
    ring's event index will not be set and the frontend will not raise an
    event when new requests are placed on the ring, permanently stalling
    the VIF.

    This is a regression introduced by eb1723a29b9a7 (xen-netback:
    refactor guest rx).

    Fix this by reinstating the setting of queue->last_rx_time when
    placing a packet onto the guest Rx ring.

    Signed-off-by: David Vrabel
    Reviewed-by: Paul Durrant
    Signed-off-by: David S. Miller

    David Vrabel
     
  • It is useful to be able to see the hash configuration when running tests.
    This patch adds a debugfs node for that purpose.

    The original version of this patch (commit c0c64c152389) was reverted due
    to build failures caused by a conflict with commit 0364a8824c02
    ("xen-netback: switch to threaded irq for control ring"). This new version
    of the patch is nearly identical to the original, the only difference
    being that creation of the debugfs node is predicated on 'ctrl_irq' being
    non-zero rather then the now non-existent 'ctrl_task'.

    Signed-off-by: Paul Durrant
    Cc: Wei Liu
    Cc: David S. Miller
    Acked-by: Wei Liu
    Signed-off-by: David S. Miller

    Paul Durrant
     

08 Oct, 2016

1 commit

  • In the case when a frontend only negotiates a single queue with xen-
    netback it is possible for a skbuff with a s/w hash to result in a
    hash extra_info segment being sent to the frontend even when no hash
    algorithm has been configured. (The ndo_select_queue() entry point makes
    sure the hash is not set if no algorithm is configured, but this entry
    point is not called when there is only a single queue). This can result
    in a frontend that is unable to handle extra_info segments being given
    such a segment, causing it to crash.

    This patch fixes the problem by clearing the hash in ndo_start_xmit()
    instead, which is clearly guaranteed to be called irrespective of the
    number of queues.

    Signed-off-by: Paul Durrant
    Cc: Wei Liu
    Acked-by: Wei Liu
    Signed-off-by: David S. Miller

    Paul Durrant
     

07 Oct, 2016

7 commits

  • This allows full 64K skbuffs (with 1500 mtu ethernet, composed of 45
    fragments) to be handled by netback for to-guest rx.

    Signed-off-by: Ross Lagerwall
    [re-based]
    Signed-off-by: Paul Durrant
    Reviewed-by: David Vrabel
    Signed-off-by: David S. Miller

    Ross Lagerwall
     
  • Instead of flushing the copy ops when an packet is complete, complete
    packets when their copy ops are done. This improves performance by
    reducing the number of grant copy hypercalls.

    Latency is still limited by the relatively small size of the copy
    batch.

    Signed-off-by: David Vrabel
    [re-based]
    Signed-off-by: Paul Durrant
    Signed-off-by: David S. Miller

    David Vrabel
     
  • Instead of only placing one skb on the guest rx ring at a time, process
    a batch of up-to 64. This improves performance by ~10% in some tests.

    Signed-off-by: David Vrabel
    [re-based]
    Signed-off-by: Paul Durrant
    Signed-off-by: David S. Miller

    David Vrabel
     
  • When an skb is removed from the guest rx queue, immediately wake the
    tx queue, instead of after processing them.

    Signed-off-by: David Vrabel
    [re-based]
    Signed-off-by: Paul Durrant
    Signed-off-by: David S. Miller

    David Vrabel
     
  • Refactor the to-guest (rx) path to:

    1. Push responses for completed skbs earlier, reducing latency.

    2. Reduce the per-queue memory overhead by greatly reducing the
    maximum number of grant copy ops in each hypercall (from 4352 to
    64). Each struct xenvif_queue is now only 44 kB instead of 220 kB.

    3. Make the code more maintainable.

    Signed-off-by: David Vrabel
    [re-based]
    Signed-off-by: Paul Durrant
    Signed-off-by: David S. Miller

    David Vrabel
     
  • As far as I am aware only very old Windows network frontends make use of
    this style of passing GSO packets from backend to frontend. These
    frontends can easily be replaced by the freely available Xen Project
    Windows PV network frontend, which uses the 'default' mechanism for
    passing GSO packets, which is also used by all Linux frontends.

    NOTE: Removal of this feature will not cause breakage in old Windows
    frontends. They simply will no longer receive GSO packets - the
    packets instead being fragmented in the backend.

    Signed-off-by: Paul Durrant
    Reviewed-by: David Vrabel
    Signed-off-by: David S. Miller

    Paul Durrant
     
  • The netback source module has become very large and somewhat confusing.
    This patch simply moves all code related to the backend to frontend (i.e
    guest side rx) data-path into a separate rx source module.

    This patch contains no functional change, it is code movement and
    minimal changes to avoid patch style-check issues.

    Signed-off-by: Paul Durrant
    Signed-off-by: David S. Miller

    Paul Durrant