1. 13 Sep, 2018 40 commits
    • David S. Miller's avatar
      Merge branch 'vhost_net-TX-batching' · 8bb83b78
      David S. Miller authored
      Jason Wang says:
      
      ====================
      vhost_net TX batching
      
      This series tries to batch submitting packets to underlayer socket
      through msg_control during sendmsg(). This is done by:
      
      1) Doing userspace copy inside vhost_net
      2) Build XDP buff
      3) Batch at most 64 (VHOST_NET_BATCH) XDP buffs and submit them once
         through msg_control during sendmsg().
      4) Underlayer sockets can use XDP buffs directly when XDP is enalbed,
         or build skb based on XDP buff.
      
      For the packet that can not be built easily with XDP or for the case
      that batch submission is hard (e.g sndbuf is limited). We will go for
      the previous slow path, passing iov iterator to underlayer socket
      through sendmsg() once per packet.
      
      This can help to improve cache utilization and avoid lots of indirect
      calls with sendmsg(). It can also co-operate with the batching support
      of the underlayer sockets (e.g the case of XDP redirection through
      maps).
      
      Testpmd(txonly) in guest shows obvious improvements:
      
      Test                /+pps%
      XDP_DROP on TAP     /+44.8%
      XDP_REDIRECT on TAP /+29%
      macvtap (skb)       /+26%
      
      Netperf TCP_STREAM TX from guest shows obvious improvements on small
      packet:
      
          size/session/+thu%/+normalize%
             64/     1/   +2%/    0%
             64/     2/   +3%/   +1%
             64/     4/   +7%/   +5%
             64/     8/   +8%/   +6%
            256/     1/   +3%/    0%
            256/     2/  +10%/   +7%
            256/     4/  +26%/  +22%
            256/     8/  +27%/  +23%
            512/     1/   +3%/   +2%
            512/     2/  +19%/  +14%
            512/     4/  +43%/  +40%
            512/     8/  +45%/  +41%
           1024/     1/   +4%/    0%
           1024/     2/  +27%/  +21%
           1024/     4/  +38%/  +73%
           1024/     8/  +15%/  +24%
           2048/     1/  +10%/   +7%
           2048/     2/  +16%/  +12%
           2048/     4/    0%/   +2%
           2048/     8/    0%/   +2%
           4096/     1/  +36%/  +60%
           4096/     2/  -11%/  -26%
           4096/     4/    0%/  +14%
           4096/     8/    0%/   +4%
          16384/     1/   -1%/   +5%
          16384/     2/    0%/   +2%
          16384/     4/    0%/   -3%
          16384/     8/    0%/   +4%
          65535/     1/    0%/  +10%
          65535/     2/    0%/   +8%
          65535/     4/    0%/   +1%
          65535/     8/    0%/   +3%
      
      Please review.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8bb83b78
    • Jason Wang's avatar
      vhost_net: batch submitting XDP buffers to underlayer sockets · 0a0be13b
      Jason Wang authored
      This patch implements XDP batching for vhost_net. The idea is first to
      try to do userspace copy and build XDP buff directly in vhost. Instead
      of submitting the packet immediately, vhost_net will batch them in an
      array and submit every 64 (VHOST_NET_BATCH) packets to the under layer
      sockets through msg_control of sendmsg().
      
      When XDP is enabled on the TUN/TAP, TUN/TAP can process XDP inside a
      loop without caring GUP thus it can do batch map flushing. When XDP is
      not enabled or not supported, the underlayer socket need to build skb
      and pass it to network core. The batched packet submission allows us
      to do batching like netif_receive_skb_list() in the future.
      
      This saves lots of indirect calls for better cache utilization. For
      the case that we can't so batching e.g when sndbuf is limited or
      packet size is too large, we will go for usual one packet per
      sendmsg() way.
      
      Doing testpmd on various setups gives us:
      
      Test                /+pps%
      XDP_DROP on TAP     /+44.8%
      XDP_REDIRECT on TAP /+29%
      macvtap (skb)       /+26%
      
      Netperf tests shows obvious improvements for small packet transmission:
      
      size/session/+thu%/+normalize%
         64/     1/   +2%/    0%
         64/     2/   +3%/   +1%
         64/     4/   +7%/   +5%
         64/     8/   +8%/   +6%
        256/     1/   +3%/    0%
        256/     2/  +10%/   +7%
        256/     4/  +26%/  +22%
        256/     8/  +27%/  +23%
        512/     1/   +3%/   +2%
        512/     2/  +19%/  +14%
        512/     4/  +43%/  +40%
        512/     8/  +45%/  +41%
       1024/     1/   +4%/    0%
       1024/     2/  +27%/  +21%
       1024/     4/  +38%/  +73%
       1024/     8/  +15%/  +24%
       2048/     1/  +10%/   +7%
       2048/     2/  +16%/  +12%
       2048/     4/    0%/   +2%
       2048/     8/    0%/   +2%
       4096/     1/  +36%/  +60%
       4096/     2/  -11%/  -26%
       4096/     4/    0%/  +14%
       4096/     8/    0%/   +4%
      16384/     1/   -1%/   +5%
      16384/     2/    0%/   +2%
      16384/     4/    0%/   -3%
      16384/     8/    0%/   +4%
      65535/     1/    0%/  +10%
      65535/     2/    0%/   +8%
      65535/     4/    0%/   +1%
      65535/     8/    0%/   +3%
      Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0a0be13b
    • Jason Wang's avatar
      tap: accept an array of XDP buffs through sendmsg() · 0efac277
      Jason Wang authored
      This patch implement TUN_MSG_PTR msg_control type. This type allows
      the caller to pass an array of XDP buffs to tuntap through ptr field
      of the tun_msg_control. Tap will build skb through those XDP buffers.
      
      This will avoid lots of indirect calls thus improves the icache
      utilization and allows to do XDP batched flushing when doing XDP
      redirection.
      Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0efac277
    • Jason Wang's avatar
      tuntap: accept an array of XDP buffs through sendmsg() · 043d222f
      Jason Wang authored
      This patch implement TUN_MSG_PTR msg_control type. This type allows
      the caller to pass an array of XDP buffs to tuntap through ptr field
      of the tun_msg_control. If an XDP program is attached, tuntap can run
      XDP program directly. If not, tuntap will build skb and do a fast
      receiving since part of the work has been done by vhost_net.
      
      This will avoid lots of indirect calls thus improves the icache
      utilization and allows to do XDP batched flushing when doing XDP
      redirection.
      Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      043d222f
    • Jason Wang's avatar
      tun: switch to new type of msg_control · fe8dd45b
      Jason Wang authored
      This patch introduces to a new tun/tap specific msg_control:
      
      #define TUN_MSG_UBUF 1
      #define TUN_MSG_PTR  2
      struct tun_msg_ctl {
             int type;
             void *ptr;
      };
      
      This allows us to pass different kinds of msg_control through
      sendmsg(). The first supported type is ubuf (TUN_MSG_UBUF) which will
      be used by the existed vhost_net zerocopy code. The second is XDP
      buff, which allows vhost_net to pass XDP buff to TUN. This could be
      used to implement accepting an array of XDP buffs from vhost_net in
      the following patches.
      Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      fe8dd45b
    • Jason Wang's avatar
      tuntap: move XDP flushing out of tun_do_xdp() · 1a097910
      Jason Wang authored
      This will allow adding batch flushing on top.
      Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1a097910
    • Jason Wang's avatar
      tuntap: split out XDP logic · 8ae1aff0
      Jason Wang authored
      This patch split out XDP logic into a single function. This make it to
      be reused by XDP batching path in the following patch.
      Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8ae1aff0
    • Jason Wang's avatar
      tuntap: tweak on the path of skb XDP case in tun_build_skb() · ac1f1f6c
      Jason Wang authored
      If we're sure not to go native XDP, there's no need for several things
      like bh and rcu stuffs. So this patch introduces a helper to build skb
      and hold page refcnt. When we found we will go through skb path, build
      skb directly.
      Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ac1f1f6c
    • Jason Wang's avatar
      tuntap: simplify error handling in tun_build_skb() · f7053b6c
      Jason Wang authored
      There's no need to duplicate page get logic in each action. So this
      patch tries to get page and calculate the offset before processing XDP
      actions (except for XDP_DROP), and undo them when meet errors (we
      don't care the performance on errors). This will be used for factoring
      out XDP logic.
      Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f7053b6c
    • Jason Wang's avatar
      tuntap: enable bh early during processing XDP · 291aeb2b
      Jason Wang authored
      This patch move the bh enabling a little bit earlier, this will be
      used for factoring out the core XDP logic of tuntap.
      Acked-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      291aeb2b
    • Jason Wang's avatar
      4f23aff8
    • Jason Wang's avatar
      net: sock: introduce SOCK_XDP · e4a2a304
      Jason Wang authored
      This patch introduces a new sock flag - SOCK_XDP. This will be used
      for notifying the upper layer that XDP program is attached on the
      lower socket, and requires for extra headroom.
      
      TUN will be the first user.
      Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e4a2a304
    • Cong Wang's avatar
      llc: avoid blocking in llc_sap_close() · 9708d2b5
      Cong Wang authored
      llc_sap_close() is called by llc_sap_put() which
      could be called in BH context in llc_rcv(). We can't
      block in BH.
      
      There is no reason to block it here, kfree_rcu() should
      be sufficient.
      Signed-off-by: default avatarCong Wang <xiyou.wangcong@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9708d2b5
    • Andre Naujoks's avatar
      ipv6: Add sockopt IPV6_MULTICAST_ALL analogue to IP_MULTICAST_ALL · 15033f04
      Andre Naujoks authored
      The socket option will be enabled by default to ensure current behaviour
      is not changed. This is the same for the IPv4 version.
      
      A socket bound to in6addr_any and a specific port will receive all traffic
      on that port. Analogue to IP_MULTICAST_ALL, disable this behaviour, if
      one or more multicast groups were joined (using said socket) and only
      pass on multicast traffic from groups, which were explicitly joined via
      this socket.
      
      Without this option disabled a socket (system even) joined to multiple
      multicast groups is very hard to get right. Filtering by destination
      address has to take place in user space to avoid receiving multicast
      traffic from other multicast groups, which might have traffic on the same
      port.
      
      The extension of the IP_MULTICAST_ALL socketoption to just apply to ipv6,
      too, is not done to avoid changing the behaviour of current applications.
      Signed-off-by: default avatarAndre Naujoks <nautsch2@gmail.com>
      Acked-By: default avatarYOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      15033f04
    • David S. Miller's avatar
      Merge branch 'Lantiq-Intel-vrx200-support' · d03790f5
      David S. Miller authored
      Hauke Mehrtens says:
      
      ====================
      Add support for Lantiq / Intel vrx200 network
      
      This adds basic support for the GSWIP (Gigabit Switch) found in the
      VRX200 SoC.
      There are different versions of this IP core used in different SoCs, but
      this driver was currently only tested on the VRX200 SoC line, for other
      SoCs this driver probably need some adoptions to work.
      
      I also plan to add Layer 2 offloading to the DSA driver and later also
      layer 3 offloading which is supported by the PPE HW block.
      
      All these patches should go through the net-next tree.
      
      This depends on the patch "MIPS: lantiq: dma: add dev pointer" which
      should go into 4.19.
      
      Changes since:
      v2:
       * Send patch "MIPS: lantiq: dma: add dev pointer" separately
       * all: removed return in register write functions
       * switch: uses phylink
       * switch: uses hardware MDIO auto polling
       * switch: use usleep_range() in MDIO busy check
       * switch: configure MDIO bus to 2.5 MHz
       * switch: disable xMII link when it is not used
       * Ethernet: use NAPI for TX cleanups
       * Ethernet: enable clock in open callback
       * Ethernet: improve skb allocation
       * Ethernet: use net_dev->stats
      
      v1:
       * Add "MIPS: lantiq: dma: add dev pointer"
       * checkpatch fixes a all patches
       * Added binding documentation
       * use readx_poll_timeout function and ETIMEOUT error code
       * integrate GPHY firmware loading into DSA driver
       * renamed to NET_DSA_LANTIQ_GSWIP
       * removed some needed casts
       * added of_device_id.data information about the detected switch
       * fixed John's email address
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d03790f5
    • Hauke Mehrtens's avatar
      net: dsa: Add Lantiq / Intel DSA driver for vrx200 · 14fceff4
      Hauke Mehrtens authored
      This adds the DSA driver for the GSWIP Switch found in the VRX200 SoC.
      This switch is integrated in the DSL SoC, this SoC uses a GSWIP version
      2.1, there are other SoCs using different versions of this IP block, but
      this driver was only tested with the version found in the VRX200.
      Currently only the basic features are implemented which will forward all
      packages to the CPU and let the CPU do the forwarding. The hardware also
      support Layer 2 offloading which is not yet implemented in this driver.
      
      The GPHY FW loaded is now done by this driver and not any more by the
      separate driver in drivers/soc/lantiq/gphy.c, I will remove this driver
      is a separate patch. to make use of the GPHY this switch driver is
      needed anyway. Other SoCs have more embedded GPHYs so this driver should
      support a variable number of GPHYs. After the firmware was loaded the
      GPHY can be probed on the MDIO bus and it behaves like an external GPHY,
      without the firmware it can not be probed on the MDIO bus.
      
      The clock names in the sysctrl.c file have to be changed because the
      clocks are now used by a different driver. This should be cleaned up and
      a real common clock driver should provide the clocks instead.
      Signed-off-by: default avatarHauke Mehrtens <hauke@hauke-m.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      14fceff4
    • Hauke Mehrtens's avatar
      dt-bindings: net: dsa: Add lantiq, xrx200-gswip DT bindings · 86ce2bc7
      Hauke Mehrtens authored
      This adds the binding for the GSWIP (Gigabit switch) core found in the
      xrx200 / VR9 Lantiq / Intel SoC.
      
      This part takes care of the switch, MDIO bus, and loading the FW into
      the embedded GPHYs.
      Signed-off-by: default avatarHauke Mehrtens <hauke@hauke-m.de>
      Cc: devicetree@vger.kernel.org
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      86ce2bc7
    • Hauke Mehrtens's avatar
      net: lantiq: Add Lantiq / Intel VRX200 Ethernet driver · fe1a5642
      Hauke Mehrtens authored
      This drives the PMAC between the GSWIP Switch and the CPU in the VRX200
      SoC. This is currently only the very basic version of the Ethernet
      driver.
      
      When the DMA channel is activated we receive some packets which were
      send to the SoC while it was still in U-Boot, these packets have the
      wrong header. Resetting the IP cores did not work so we read out the
      extra packets at the beginning and discard them.
      
      This also adapts the clock code in sysctrl.c to use the default name of
      the device node so that the driver gets the correct clock. sysctrl.c
      should be replaced with a proper common clock driver later.
      Signed-off-by: default avatarHauke Mehrtens <hauke@hauke-m.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      fe1a5642
    • Hauke Mehrtens's avatar
      dt-bindings: net: Add lantiq, xrx200-net DT bindings · 839790e8
      Hauke Mehrtens authored
      This adds the binding for the PMAC core between the CPU and the GSWIP
      switch found on the xrx200 / VR9 Lantiq / Intel SoC.
      Signed-off-by: default avatarHauke Mehrtens <hauke@hauke-m.de>
      Cc: devicetree@vger.kernel.org
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      839790e8
    • Hauke Mehrtens's avatar
      net: dsa: Add Lantiq / Intel GSWIP tag support · 79691192
      Hauke Mehrtens authored
      This handles the tag added by the PMAC on the VRX200 SoC line.
      
      The GSWIP uses internally a GSWIP special tag which is located after the
      Ethernet header. The PMAC which connects the GSWIP to the CPU converts
      this special tag used by the GSWIP into the PMAC special tag which is
      added in front of the Ethernet header.
      
      This was tested with GSWIP 2.1 found in the VRX200 SoCs, other GSWIP
      versions use slightly different PMAC special tags.
      Signed-off-by: default avatarHauke Mehrtens <hauke@hauke-m.de>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      79691192
    • Hauke Mehrtens's avatar
      MIPS: lantiq: Do not enable IRQs in dma open · cc973aec
      Hauke Mehrtens authored
      When a DMA channel is opened the IRQ should not get activated
      automatically, this allows it to pull data out manually without the help
      of interrupts. This is needed for a workaround in the vrx200 Ethernet
      driver.
      Signed-off-by: default avatarHauke Mehrtens <hauke@hauke-m.de>
      Acked-by: default avatarPaul Burton <paul.burton@mips.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      cc973aec
    • David S. Miller's avatar
    • Tobin C. Harding's avatar
      docs: net: Remove TCP congestion document · a20625e4
      Tobin C. Harding authored
      Document is stale, let's remove it.
      
      Remove TCP congestion document.
      Signed-off-by: default avatarTobin C. Harding <me@tobin.cc>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a20625e4
    • Hangbin Liu's avatar
      geneve: add ttl inherit support · 52d0d404
      Hangbin Liu authored
      Similar with commit 72f6d71e ("vxlan: add ttl inherit support"),
      currently ttl == 0 means "use whatever default value" on geneve instead
      of inherit inner ttl. To respect compatibility with old behavior, let's
      add a new IFLA_GENEVE_TTL_INHERIT for geneve ttl inherit support.
      Reported-by: default avatarJianlin Shi <jishi@redhat.com>
      Suggested-by: default avatarJiri Benc <jbenc@redhat.com>
      Signed-off-by: default avatarHangbin Liu <liuhangbin@gmail.com>
      Reviewed-by: default avatarJiri Benc <jbenc@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      52d0d404
    • Linus Torvalds's avatar
      Merge tag 'drm-fixes-2018-09-12' of git://anongit.freedesktop.org/drm/drm · 7428b2e5
      Linus Torvalds authored
      Pull drm nouveau fixes from Dave Airlie:
       "I'm sending this separately as it's a bit larger than I generally like
        for one driver, but it does contain a bunch of make my nvidia laptop
        not die (runpm) and a bunch to make my docking station and monitor
        display stuff (mst) fixes.
      
        Lyude has spent a lot of time on these, and we are putting the fixes
        into distro kernels as well asap, as it helps a bunch of standard
        Lenovo laptops, so I'm fairly happy things are better than they were
        before these patches, but I decided to split them out just for
        clarification"
      
      * tag 'drm-fixes-2018-09-12' of git://anongit.freedesktop.org/drm/drm:
        drm/nouveau/disp/gm200-: enforce identity-mapped SOR assignment for LVDS/eDP panels
        drm/nouveau/disp: fix DP disable race
        drm/nouveau/disp: move eDP panel power handling
        drm/nouveau/disp: remove unused struct member
        drm/nouveau/TBDdevinit: don't fail when PMU/PRE_OS is missing from VBIOS
        drm/nouveau/mmu: don't attempt to dereference vmm without valid instance pointer
        drm/nouveau: fix oops in client init failure path
        drm/nouveau: Fix nouveau_connector_ddc_detect()
        drm/nouveau/drm/nouveau: Don't forget to cancel hpd_work on suspend/unload
        drm/nouveau/drm/nouveau: Prevent handling ACPI HPD events too early
        drm/nouveau: Reset MST branching unit before enabling
        drm/nouveau: Only write DP_MSTM_CTRL when needed
        drm/nouveau: Remove useless poll_enable() call in drm_load()
        drm/nouveau: Remove useless poll_disable() call in switcheroo_set_state()
        drm/nouveau: Remove useless poll_enable() call in switcheroo_set_state()
        drm/nouveau: Fix deadlocks in nouveau_connector_detect()
        drm/nouveau/drm/nouveau: Use pm_runtime_get_noresume() in connector_detect()
        drm/nouveau/drm/nouveau: Fix deadlock with fb_helper with async RPM requests
        drm/nouveau: Remove duplicate poll_enable() in pmops_runtime_suspend()
        drm/nouveau/drm/nouveau: Fix bogus drm_kms_helper_poll_enable() placement
      7428b2e5
    • Marek Vasut's avatar
      net: dsa: mv88e6xxx: Make sure to configure ports with external PHYs · d700ec41
      Marek Vasut authored
      The MV88E6xxx can have external PHYs attached to certain ports and those
      PHYs could even be on different MDIO bus than the one within the switch.
      This patch makes sure that ports with such PHYs are configured correctly
      according to the information provided by the PHY.
      Signed-off-by: default avatarMarek Vasut <marex@denx.de>
      Cc: Andrew Lunn <andrew@lunn.ch>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d700ec41
    • zhong jiang's avatar
      net: ethernet: Use DIV_ROUND_UP instead of reimplementing its function · f8a1988f
      zhong jiang authored
      DIV_ROUND_UP has implemented the code-opened function. Therefore, just
      replace the implementation with DIV_ROUND_UP.
      Signed-off-by: default avatarzhong jiang <zhongjiang@huawei.com>
      Acked-by: default avatarTariq Toukan <tariqt@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f8a1988f
    • Yue Haibing's avatar
      qlcnic: Remove set but not used variables 'fw_mbx' and 'hdr_size' · db3df242
      Yue Haibing authored
      Fixes gcc '-Wunused-but-set-variable' warning:
      
      drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_common.c: In function 'qlcnic_sriov_pull_bc_msg':
      drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_common.c:907:6: warning:
       variable 'fw_mbx' set but not used [-Wunused-but-set-variable]
      
      drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_common.c: In function 'qlcnic_sriov_issue_bc_post':
      drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_common.c:939:16: warning:
       variable 'hdr_size' set but not used [-Wunused-but-set-variable]
      Signed-off-by: default avatarYue Haibing <yuehaibing@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      db3df242
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 67b07609
      Linus Torvalds authored
      Pull networking fixes from David Miller:
      
       1) Fix up several Kconfig dependencies in netfilter, from Martin Willi
          and Florian Westphal.
      
       2) Memory leak in be2net driver, from Petr Oros.
      
       3) Memory leak in E-Switch handling of mlx5 driver, from Raed Salem.
      
       4) mlx5_attach_interface needs to check for errors, from Huy Nguyen.
      
       5) tipc_release() needs to orphan the sock, from Cong Wang.
      
       6) Need to program TxConfig register after TX/RX is enabled in r8169
          driver, not beforehand, from Maciej S. Szmigiero.
      
       7) Handle 64K PAGE_SIZE properly in ena driver, from Netanel Belgazal.
      
       8) Fix crash regression in ip_do_fragment(), from Taehee Yoo.
      
       9) syzbot can create conditions where kernel log is flooded with
          synflood warnings due to creation of many listening sockets, fix
          that. From Willem de Bruijn.
      
      10) Fix RCU issues in rds socket layer, from Cong Wang.
      
      11) Fix vlan matching in nfp driver, from Pieter Jansen van Vuuren.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (59 commits)
        nfp: flower: reject tunnel encap with ipv6 outer headers for offloading
        nfp: flower: fix vlan match by checking both vlan id and vlan pcp
        tipc: check return value of __tipc_dump_start()
        s390/qeth: don't dump past end of unknown HW header
        s390/qeth: use vzalloc for QUERY OAT buffer
        s390/qeth: switch on SG by default for IQD devices
        s390/qeth: indicate error when netdev allocation fails
        rds: fix two RCU related problems
        r8169: Clear RTL_FLAG_TASK_*_PENDING when clearing RTL_FLAG_TASK_ENABLED
        erspan: fix error handling for erspan tunnel
        erspan: return PACKET_REJECT when the appropriate tunnel is not found
        tcp: rate limit synflood warnings further
        MIPS: lantiq: dma: add dev pointer
        netfilter: xt_hashlimit: use s->file instead of s->private
        netfilter: nfnetlink_queue: Solve the NFQUEUE/conntrack clash for NF_REPEAT
        netfilter: cttimeout: ctnl_timeout_find_get() returns incorrect pointer to type
        netfilter: conntrack: timeout interface depend on CONFIG_NF_CONNTRACK_TIMEOUT
        netfilter: conntrack: reset tcp maxwin on re-register
        qmi_wwan: Support dynamic config on Quectel EP06
        ethernet: renesas: convert to SPDX identifiers
        ...
      67b07609
    • Nikolay Aleksandrov's avatar
      net: bridge: add support for sticky fdb entries · 435f2e7c
      Nikolay Aleksandrov authored
      Add support for entries which are "sticky", i.e. will not change their port
      if they show up from a different one. A new ndm flag is introduced for that
      purpose - NTF_STICKY. We allow to set it only to non-local entries.
      Signed-off-by: default avatarNikolay Aleksandrov <nikolay@cumulusnetworks.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      435f2e7c
    • David S. Miller's avatar
      Merge branch 'Preparing-for-phylib-linkmodes' · 15665342
      David S. Miller authored
      Andrew Lunn says:
      
      ====================
      Preparing for phylib linkmodes
      
      phylib currently makes us of a u32 bitmap for advertising, supported,
      and link partner capabilities. For a long time, this has been
      sufficient, for devices up to 1Gbps. With more MAC/PHY combinations
      now supporting speeds greater than 1Gbps, we have run out of
      bits. There is the need to replace this u32 with an
      __ETHTOOL_DECLARE_LINK_MODE_MASK, which makes use of linux's generic
      bitmaps.
      
      This patchset does some of the work preparing for this change. A few
      cleanups are applied to PHY drivers. Some MAC drivers directly access
      members of phydev which are going to change type. These patches adds
      some helpers and swaps MAC drivers to use them, mostly dealing with
      Pause configuration.
      
      v3:
      Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Add missing at in commit message
      Change Subject of patch 5
      Fix return in from phy_set_asym_pause
      Fix kerneldoc in phy_set_pause
      
      v2:
      Fixup bad indentation in tg3.c
      Rename phy_support_pause() to phy_support_sym_pause()
      Also trigger autoneg if the advertising settings have changed.
      Rename phy_set_pause() to phy_set_sym_pause()
      Use the bcm63xx_enet.c logic, not fec_main.c for validating pause
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      15665342
    • Andrew Lunn's avatar
      net: ethernet: Add helper to determine if pause configuration is supported · 22b7d299
      Andrew Lunn authored
      Rather than have MAC drivers open code the test, add a helper in
      phylib. This will help when we change the type of phydev->supported.
      Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      22b7d299
    • Andrew Lunn's avatar
      net: ethernet: Add helper for set_pauseparam for Pause · 0c122405
      Andrew Lunn authored
      ethtool can be used to enable/disable pause. Add a helper to configure
      the PHY when Pause is supported.
      Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0c122405
    • Andrew Lunn's avatar
      net: ethernet: Add helper for set_pauseparam for Asym Pause · 70814e81
      Andrew Lunn authored
      ethtool can be used to enable/disable pause. Add a helper to configure
      the PHY when asym pause is supported.
      Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      70814e81
    • Andrew Lunn's avatar
      net: ethernet: Add helper for MACs which support pause · c306ad36
      Andrew Lunn authored
      Rather than have the MAC drivers manipulate phydev members, add a
      helper function for MACs supporting Pause, but not Asym Pause.
      Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c306ad36
    • Andrew Lunn's avatar
      net: ethernet: Add helper for MACs which support asym pause · af8d9bb2
      Andrew Lunn authored
      Rather than have the MAC drivers manipulate phydev members to indicate
      they support Asym Pause, add a helper function.
      Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      af8d9bb2
    • Andrew Lunn's avatar
      net: ethernet: Add helper to remove a supported link mode · 41124fa6
      Andrew Lunn authored
      Some MAC hardware cannot support a subset of link modes. e.g. often
      1Gbps Full duplex is supported, but Half duplex is not. Add a helper
      to remove such a link mode.
      Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      41124fa6
    • Andrew Lunn's avatar
      net: ethernet: Fix up drivers masking pause support · 04b7d41d
      Andrew Lunn authored
      PHY drivers don't indicate they support pause. They expect MAC drivers
      to enable its support if the MAC has the needed hardware. Thus MAC
      drivers should not mask Pause support, but enable it.
      
      Change a few ANDs to ORs.
      Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      04b7d41d
    • Andrew Lunn's avatar
      net: bcmgenet: Fix speed selection for reverse MII · 00eb2243
      Andrew Lunn authored
      The phy supported speed is being used to determine if the MAC should
      be configured to 100 or 1G. The masking logic is broken. Instead, look
      at 1G supported speeds to enable 1G MAC support.
      Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Acked-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      00eb2243
    • Andrew Lunn's avatar
      net: ethernet: Use phy_set_max_speed() to limit advertised speed · 58056c1e
      Andrew Lunn authored
      Many Ethernet MAC drivers want to limit the PHY to only advertise a
      maximum speed of 100Mbs or 1Gbps. Rather than using a mask, make use
      of the helper function phy_set_max_speed().
      Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      58056c1e