1. 26 Jan, 2020 12 commits
  2. 25 Jan, 2020 28 commits
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm · 2821e26f
      Linus Torvalds authored
      Pull ARM fixes from Russell King:
      
       - fix ftrace relocation type filtering
      
       - relax arch timer version check
      
      * tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm:
        ARM: 8955/1: virt: Relax arch timer version check during early boot
        ARM: 8950/1: ftrace/recordmcount: filter relocation types
      2821e26f
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net · 84809aaf
      Linus Torvalds authored
      Pull networking fixes from David Miller:
      
       1) Off by one in mt76 airtime calculation, from Dan Carpenter.
      
       2) Fix TLV fragment allocation loop condition in iwlwifi, from Luca
          Coelho.
      
       3) Don't confirm neigh entries when doing ipsec pmtu updates, from Xu
          Wang.
      
       4) More checks to make sure we only send TSO packets to lan78xx chips
          that they can actually handle. From James Hughes.
      
       5) Fix ip_tunnel namespace move, from William Dauchy.
      
       6) Fix unintended packet reordering due to cooperation between
          listification done by GRO and non-GRO paths. From Maxim
          Mikityanskiy.
      
       7) Add Jakub Kicincki formally as networking co-maintainer.
      
       8) Info leak in airo ioctls, from Michael Ellerman.
      
       9) IFLA_MTU attribute needs validation during rtnl_create_link(), from
          Eric Dumazet.
      
      10) Use after free during reload in mlxsw, from Ido Schimmel.
      
      11) Dangling pointers are possible in tp->highest_sack, fix from Eric
          Dumazet.
      
      12) Missing *pos++ in various networking seq_next handlers, from Vasily
          Averin.
      
      13) CHELSIO_GET_MEM operation neds CAP_NET_ADMIN check, from Michael
          Ellerman.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (109 commits)
        firestream: fix memory leaks
        net: cxgb3_main: Add CAP_NET_ADMIN check to CHELSIO_GET_MEM
        net: bcmgenet: Use netif_tx_napi_add() for TX NAPI
        tipc: change maintainer email address
        net: stmmac: platform: fix probe for ACPI devices
        net/mlx5e: kTLS, Do not send decrypted-marked SKBs via non-accel path
        net/mlx5e: kTLS, Remove redundant posts in TX resync flow
        net/mlx5e: kTLS, Fix corner-case checks in TX resync flow
        net/mlx5e: Clear VF config when switching modes
        net/mlx5: DR, use non preemptible call to get the current cpu number
        net/mlx5: E-Switch, Prevent ingress rate configuration of uplink rep
        net/mlx5: DR, Enable counter on non-fwd-dest objects
        net/mlx5: Update the list of the PCI supported devices
        net/mlx5: Fix lowest FDB pool size
        net: Fix skb->csum update in inet_proto_csum_replace16().
        netfilter: nf_tables: autoload modules from the abort path
        netfilter: nf_tables: add __nft_chain_type_get()
        netfilter: nf_tables_offload: fix check the chain offload flag
        netfilter: conntrack: sctp: use distinct states for new SCTP connections
        ipv6_route_seq_next should increase position index
        ...
      84809aaf
    • Linus Torvalds's avatar
      Merge tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc · f041eada
      Linus Torvalds authored
      Pull ARM SoC fixes from Olof Johansson:
       "A couple of fixes have come in that would be good to include in this
        release:
      
         - A fix for amount of memory on Beaglebone Black. Surfaced now since
           GRUB2 doesn't update memory size in the booted kernel.
      
         - A fix to make SPI interfaces work on am43x-epos-evm.
      
         - Small Kconfig fix for OPTEE (adds a depend on MMU) to avoid build
           failures"
      
      * tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc:
        ARM: dts: am43x-epos-evm: set data pin directions for spi0 and spi1
        tee: optee: Fix compilation issue with nommu
        ARM: dts: am335x-boneblack-common: fix memory size
      f041eada
    • Wenwen Wang's avatar
      firestream: fix memory leaks · fa865ba1
      Wenwen Wang authored
      In fs_open(), 'vcc' is allocated through kmalloc() and assigned to
      'atm_vcc->dev_data.' In the following execution, if an error occurs, e.g.,
      there is no more free channel, an error code EBUSY or ENOMEM will be
      returned. However, 'vcc' is not deallocated, leading to memory leaks. Note
      that, in normal cases where fs_open() returns 0, 'vcc' will be deallocated
      in fs_close(). But, if fs_open() fails, there is no guarantee that
      fs_close() will be invoked.
      
      To fix this issue, deallocate 'vcc' before the error code is returned.
      Signed-off-by: default avatarWenwen Wang <wenwen@cs.uga.edu>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      fa865ba1
    • David S. Miller's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf · 6badad1c
      David S. Miller authored
      Pablo Neira Ayuso says:
      
      ====================
      Netfilter fixes for net
      
      The following patchset contains Netfilter fixes for net:
      
      1) Missing netlink attribute sanity check for NFTA_OSF_DREG,
         from Florian Westphal.
      
      2) Use bitmap infrastructure in ipset to fix KASAN slab-out-of-bounds
         reads, from Jozsef Kadlecsik.
      
      3) Missing initial CLOSED state in new sctp connection through
         ctnetlink events, from Jiri Wiesner.
      
      4) Missing check for NFT_CHAIN_HW_OFFLOAD in nf_tables offload
         indirect block infrastructure, from wenxu.
      
      5) Add __nft_chain_type_get() to sanity check family and chain type.
      
      6) Autoload modules from the nf_tables abort path to fix races
         reported by syzbot.
      
      7) Remove unnecessary skb->csum update on inet_proto_csum_replace16(),
         from Praveen Chaudhary.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6badad1c
    • Linus Torvalds's avatar
      Merge tag 'for-5.5-rc8-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux · a075f23d
      Linus Torvalds authored
      Pull btrfs fix from David Sterba:
       "Here's a last minute fix for a regression introduced in this
        development cycle.
      
        There's a small chance of a silent corruption when device replace and
        NOCOW data writes happen at the same time in one block group. Metadata
        or COW data writes are unaffected.
      
        The extra fixup patch is there to silence an unnecessary warning"
      
      * tag 'for-5.5-rc8-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux:
        btrfs: dev-replace: remove warning for unknown return codes when finished
        btrfs: scrub: Require mandatory block group RO for dev-replace
      a075f23d
    • Linus Torvalds's avatar
      Merge tag 'pinctrl-v5.5-5' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl · 93d1a05e
      Linus Torvalds authored
      Pull pin control fix from Linus Walleij:
       "A single fix for the Intel Sunrisepoint pin controller that makes the
        interrupts work properly on it"
      
      * tag 'pinctrl-v5.5-5' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl:
        pinctrl: sunrisepoint: Add missing Interrupt Status register offset
      93d1a05e
    • David S. Miller's avatar
      Merge tag 'mlx5-fixes-2020-01-24' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux · 722943a5
      David S. Miller authored
      Saeed Mahameed says:
      
      ====================
      Mellanox, mlx5 fixes 2020-01-24
      
      This series introduces some fixes to mlx5 driver.
      
      Please pull and let me know if there is any problem.
      
      Merge conflict: once merge with net-next, a contextual conflict will
      appear in drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
      since the code moved in net-next.
      To resolve, just delete ALL of the conflicting hunk from net.
      So sorry for the small mess ..
      
      For -stable v5.4:
       ('net/mlx5: Update the list of the PCI supported devices')
       ('net/mlx5: Fix lowest FDB pool size')
       ('net/mlx5e: kTLS, Fix corner-case checks in TX resync flow')
       ('net/mlx5e: kTLS, Do not send decrypted-marked SKBs via non-accel path')
       ('net/mlx5: Eswitch, Prevent ingress rate configuration of uplink rep')
       ('net/mlx5e: kTLS, Remove redundant posts in TX resync flow')
       ('net/mlx5: DR, Enable counter on non-fwd-dest objects')
       ('net/mlx5: DR, use non preemptible call to get the current cpu number')
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      722943a5
    • David Sterba's avatar
      btrfs: dev-replace: remove warning for unknown return codes when finished · 4cea9037
      David Sterba authored
      The fstests btrfs/011 triggered a warning at the end of device replace,
      
        [ 1891.998975] BTRFS warning (device vdd): failed setting block group ro: -28
        [ 1892.038338] BTRFS error (device vdd): btrfs_scrub_dev(/dev/vdd, 1, /dev/vdb) failed -28
        [ 1892.059993] ------------[ cut here ]------------
        [ 1892.063032] WARNING: CPU: 2 PID: 2244 at fs/btrfs/dev-replace.c:506 btrfs_dev_replace_start.cold+0xf9/0x140 [btrfs]
        [ 1892.074346] CPU: 2 PID: 2244 Comm: btrfs Not tainted 5.5.0-rc7-default+ #942
        [ 1892.079956] RIP: 0010:btrfs_dev_replace_start.cold+0xf9/0x140 [btrfs]
      
        [ 1892.096576] RSP: 0018:ffffbb58c7b3fd10 EFLAGS: 00010286
        [ 1892.098311] RAX: 00000000ffffffe4 RBX: 0000000000000001 RCX: 8888888888888889
        [ 1892.100342] RDX: 0000000000000001 RSI: ffff9e889645f5d8 RDI: ffffffff92821080
        [ 1892.102291] RBP: ffff9e889645c000 R08: 000001b8878fe1f6 R09: 0000000000000000
        [ 1892.104239] R10: ffffbb58c7b3fd08 R11: 0000000000000000 R12: ffff9e88a0017000
        [ 1892.106434] R13: ffff9e889645f608 R14: ffff9e88794e1000 R15: ffff9e88a07b5200
        [ 1892.108642] FS:  00007fcaed3f18c0(0000) GS:ffff9e88bda00000(0000) knlGS:0000000000000000
        [ 1892.111558] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
        [ 1892.113492] CR2: 00007f52509ff420 CR3: 00000000603dd002 CR4: 0000000000160ee0
      
        [ 1892.115814] Call Trace:
        [ 1892.116896]  btrfs_dev_replace_by_ioctl+0x35/0x60 [btrfs]
        [ 1892.118962]  btrfs_ioctl+0x1d62/0x2550 [btrfs]
      
      caused by the previous patch ("btrfs: scrub: Require mandatory block
      group RO for dev-replace"). Hitting ENOSPC is possible and could happen
      when the block group is set read-only, preventing NOCOW writes to the
      area that's being accessed by dev-replace.
      
      This has happend with scratch devices of size 12G but not with 5G and
      20G, so this is depends on timing and other activity on the filesystem.
      The whole replace operation is restartable, the space state should be
      examined by the user in any case.
      
      The error code is propagated back to the ioctl caller so the kernel
      warning is causing false alerts.
      Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
      4cea9037
    • David S. Miller's avatar
      Merge branch 'mlxsw-Offload-TBF' · 3333e50b
      David S. Miller authored
      Ido Schimmel says:
      
      ====================
      mlxsw: Offload TBF
      
      Petr says:
      
      In order to allow configuration of shapers on Spectrum family of
      machines, recognize TBF either as root Qdisc, or as a child of ETS or
      PRIO. Configure rate of maximum shaper according to TBF rate setting,
      and maximum shaper burst size according to TBF burst setting.
      
      - Patches #1 and #2 make the TBF shaper suitable for offloading.
      - Patches #3, #4 and #5 are refactoring aimed at easier support of leaf
        Qdiscs in general.
      - Patches #6 to #10 gradually introduce TBF offload.
      - Patches #11 to #14 add selftests.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3333e50b
    • Petr Machata's avatar
      selftests: mlxsw: Add a TBF selftest · e814c58d
      Petr Machata authored
      Add a test that runs traffic across a port throttled with TBF. The test
      checks that the observed throughput is within +-5% from the installed
      shaper.
      
      To allow checking both the software datapath and the offloaded one, make
      the test suitable for inclusion from driver-specific wrapper. Introduce
      such wrappers for mlxsw.
      Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e814c58d
    • Petr Machata's avatar
      selftests: forwarding: lib: Allow reading TC rule byte counters · c143139b
      Petr Machata authored
      The function tc_rule_stats_get() fetches a packet counter of a given TC
      rule. Extend it to support byte counters as well by adding an optional
      argument with selector.
      Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c143139b
    • Petr Machata's avatar
      selftests: forwarding: lib: Add helpers for busywaiting · 4121d947
      Petr Machata authored
      The function busywait() is handy as a safety-latched variant of a while
      loop. Many selftests deal specifically with counter values, and busywaiting
      on them is likely to be rather common (it is not quite common now, but
      busywait() has not been around for very long). To facilitate expressing
      simply what is tested, introduce two helpers:
      
      - until_counter_is(), which can be used as a predicate passed to
        busywait(), which holds when expression, which is itself passed as an
        argument to until_counter_is(), reaches a desired value.
      
      - busywait_for_counter(), which is useful for waiting until a given counter
        changes "by" (as opposed to "to") a certain amount.
      Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4121d947
    • Petr Machata's avatar
      selftests: Move two functions from mlxsw's qos_lib to lib · adc6c7ec
      Petr Machata authored
      The function humanize() is used for converting value in bits/s to a
      human-friendly approximate value in Kbps, Mbps or Gbps. There is nothing
      hardware-specific in that, so move the function to lib.sh.
      
      Similarly for the rate() function, which just does a bit of math to
      calculate a rate, given two counter values and a time interval.
      Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      adc6c7ec
    • Petr Machata's avatar
      mlxsw: spectrum_qdisc: Support offloading of TBF Qdisc · a44f58c4
      Petr Machata authored
      React to the TC messages that were introduced in a preceding patch and
      configure egress maximum shaper as appropriate. TBF can be used as a root
      qdisc or under one of PRIO or strict ETS bands.
      Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a44f58c4
    • Petr Machata's avatar
      mlxsw: spectrum: Configure shaper rate and burst size together · dbacf8ba
      Petr Machata authored
      In order to allow configuration of burst size together with shaper rate,
      extend mlxsw_sp_port_ets_maxrate_set() with a burst_size argument. Convert
      call sites to pass 0 (for default).
      Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      dbacf8ba
    • Petr Machata's avatar
      mlxsw: spectrum: Add lowest_shaper_bs to struct mlxsw_sp · 47259544
      Petr Machata authored
      Lower limit of burst size configuration is dependent on system type. Add a
      datum to track the value. Initialize as appropriate in mlxsw_spX_init().
      Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      47259544
    • Petr Machata's avatar
      mlxsw: reg: Increase MLXSW_REG_QEEC_MAS_DIS · 92afbfed
      Petr Machata authored
      As the port speeds grow, the current value of "unlimited shaper",
      200000000Kbps, might become lower than the actually supported speeds. Bump
      it to the maximum value that fits in the corresponding QEEC field, which is
      about 2.1Tbps.
      Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      92afbfed
    • Petr Machata's avatar
      mlxsw: reg: Add max_shaper_bs to QoS ETS Element Configuration · 23effa24
      Petr Machata authored
      The QEEC register configures scheduling elements. One of the bits of
      configuration is the burst size to use for the shaper installed on the
      element. Add the necessary fields to support this configuration.
      Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      23effa24
    • Petr Machata's avatar
      mlxsw: spectrum_qdisc: Extract a common leaf unoffload function · be1d5a8a
      Petr Machata authored
      When the RED Qdisc is unoffloaded, it needs to reduce the reported backlog
      by the amount that is in the HW, so that only the SW backlog is contained
      in the counter. The same thing will need to be done by TBF, and likely any
      other leaf Qdisc as well.
      
      Extract a helper mlxsw_sp_qdisc_leaf_unoffload() and call it from
      mlxsw_sp_qdisc_red_unoffload().
      Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      be1d5a8a
    • Petr Machata's avatar
      mlxsw: spectrum_qdisc: Add mlxsw_sp_qdisc_get_class_stats() · 3d0d5921
      Petr Machata authored
      Add a wrapper around mlxsw_sp_qdisc_collect_tc_stats() and
      mlxsw_sp_qdisc_update_stats() for the simple case of doing both in one go:
      mlxsw_sp_qdisc_get_class_stats(). Dispatch to that function from
      mlxsw_sp_qdisc_get_red_stats(). This new function will be useful for other
      leaf Qdiscs as well.
      Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3d0d5921
    • Petr Machata's avatar
      mlxsw: spectrum_qdisc: Extract a per-TC stat function · cf9af379
      Petr Machata authored
      Extract from mlxsw_sp_qdisc_get_prio_stats() two new functions:
      mlxsw_sp_qdisc_collect_tc_stats() to accumulate stats for that one TC only,
      and mlxsw_sp_qdisc_update_stats() that makes the stats relative to base
      values stored earlier. Use them from mlxsw_sp_qdisc_get_red_stats().
      Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      cf9af379
    • Petr Machata's avatar
      net: sched: Make TBF Qdisc offloadable · ef6aadcc
      Petr Machata authored
      Invoke ndo_setup_tc as appropriate to signal init / replacement, destroying
      and dumping of TBF Qdisc.
      Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
      Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ef6aadcc
    • Petr Machata's avatar
      net: sched: sch_tbf: Don't overwrite backlog before dumping · c2070152
      Petr Machata authored
      In 2011, in commit b0460e44 ("sch_tbf: report backlog information"),
      TBF started copying backlog depth from the child Qdisc before dumping, with
      the motivation that the backlog was otherwise not visible in "tc -s qdisc
      show".
      
      Later, in 2016, in commit 8d5958f4 ("sch_tbf: update backlog as well"),
      TBF got a full-blown backlog tracking. However it kept copying the child's
      backlog over before dumping.
      
      That line is now unnecessary, so remove it.
      
      As shown in the following example, backlog is still reported correctly:
      
          # tc -s qdisc show dev veth0 invisible
          qdisc tbf 1: root refcnt 2 rate 1Mbit burst 128Kb lat 82.8s
           Sent 505475370 bytes 406985 pkt (dropped 0, overlimits 812544 requeues 0)
           backlog 81972b 66p requeues 0
          qdisc bfifo 0: parent 1:1 limit 10Mb
           Sent 505475370 bytes 406985 pkt (dropped 0, overlimits 0 requeues 0)
           backlog 81972b 66p requeues 0
      Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
      Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c2070152
    • Michael Ellerman's avatar
      net: cxgb3_main: Add CAP_NET_ADMIN check to CHELSIO_GET_MEM · 3546d8f1
      Michael Ellerman authored
      The cxgb3 driver for "Chelsio T3-based gigabit and 10Gb Ethernet
      adapters" implements a custom ioctl as SIOCCHIOCTL/SIOCDEVPRIVATE in
      cxgb_extension_ioctl().
      
      One of the subcommands of the ioctl is CHELSIO_GET_MEM, which appears
      to read memory directly out of the adapter and return it to userspace.
      It's not entirely clear what the contents of the adapter memory
      contains, but the assumption is that it shouldn't be accessible to all
      users.
      
      So add a CAP_NET_ADMIN check to the CHELSIO_GET_MEM case. Put it after
      the is_offload() check, which matches two of the other subcommands in
      the same function which also check for is_offload() and CAP_NET_ADMIN.
      
      Found by Ilja by code inspection, not tested as I don't have the
      required hardware.
      Reported-by: default avatarIlja Van Sprundel <ivansprundel@ioactive.com>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3546d8f1
    • David S. Miller's avatar
      Merge branch 'hv_netvsc-Add-XDP-support' · 2f64ab27
      David S. Miller authored
      Haiyang Zhang says:
      
      ====================
      hv_netvsc: Add XDP support
      
      Add XDP support and update related document.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2f64ab27
    • Haiyang Zhang's avatar
      hv_netvsc: Update document for XDP support · 12fa7438
      Haiyang Zhang authored
      Added the new section in the document regarding XDP support
      by hv_netvsc driver.
      Signed-off-by: default avatarHaiyang Zhang <haiyangz@microsoft.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      12fa7438
    • Haiyang Zhang's avatar
      hv_netvsc: Add XDP support · 351e1581
      Haiyang Zhang authored
      This patch adds support of XDP in native mode for hv_netvsc driver, and
      transparently sets the XDP program on the associated VF NIC as well.
      
      Setting / unsetting XDP program on synthetic NIC (netvsc) propagates to
      VF NIC automatically. Setting / unsetting XDP program on VF NIC directly
      is not recommended, also not propagated to synthetic NIC, and may be
      overwritten by setting of synthetic NIC.
      
      The Azure/Hyper-V synthetic NIC receive buffer doesn't provide headroom
      for XDP. We thought about re-use the RNDIS header space, but it's too
      small. So we decided to copy the packets to a page buffer for XDP. And,
      most of our VMs on Azure have Accelerated  Network (SRIOV) enabled, so
      most of the packets run on VF NIC. The synthetic NIC is considered as a
      fallback data-path. So the data copy on netvsc won't impact performance
      significantly.
      
      XDP program cannot run with LRO (RSC) enabled, so you need to disable LRO
      before running XDP:
              ethtool -K eth0 lro off
      
      XDP actions not yet supported:
              XDP_REDIRECT
      Signed-off-by: default avatarHaiyang Zhang <haiyangz@microsoft.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      351e1581