1. 27 Jul, 2018 23 commits
    • Saeed Mahameed's avatar
      net/mlx5e: Vxlan, rename from mlx5e to mlx5 · a3c785d7
      Saeed Mahameed authored
      Rename vxlan functions from mlx5e_vxlan_* to mlx5_vxlan_*.
      Rename mlx5e_vxlan_db to mlx5_vxlan and move it from en.h to vxlan.c
      since it is not related to mlx5e anymore.
      
      Allocate mlx5_vxlan structure dynamically in order to make it easier to
      move later to core driver and to make it private in vxlan.c.
      
      This is in preparation to move vxlan API to mlx5 core.
      Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
      Reviewed-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
      a3c785d7
    • Saeed Mahameed's avatar
      net/mlx5e: Vxlan, rename struct mlx5e_vxlan to mlx5_vxlan_port · 5006eb22
      Saeed Mahameed authored
      The name mlx5e_vxlan will be used in downstream patch to describe
      mlx5 vxlan structure that will replace mlx5e_vxlan_db.
      
      Hence we rename struct mlx5e_vxlan to mlx5_vxlan_port which describes a
      mlx5 vxlan port.
      Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
      Reviewed-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
      5006eb22
    • Saeed Mahameed's avatar
      net/mlx5e: Vxlan, move netdev only logic to en_main.c · dccea6bf
      Saeed Mahameed authored
      Create a direct vxlan API to add and delete vxlan ports from HW.
      +void mlx5e_vxlan_add_port(struct mlx5e_priv *priv, u16 port);
      +void mlx5e_vxlan_del_port(struct mlx5e_priv *priv, u16 port);
      
      And move vxlan_add/del_work to en_main.c since they are netdev only
      logic.
      Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
      Reviewed-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
      dccea6bf
    • Saeed Mahameed's avatar
      net/mlx5e: Vxlan, add direct delete function · 0f647bfc
      Saeed Mahameed authored
      Add direct vxlan delete function to be called from vxlan_delete_work.
      Needed in downstream patch.
      Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
      Reviewed-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
      0f647bfc
    • Gal Pressman's avatar
      net/mlx5e: Vxlan, cleanup an unused member in vxlan work · 278d7f3d
      Gal Pressman authored
      Cleanup the sa_family member of the vxlan work, it is unused/needed
      anywhere in the code.
      Signed-off-by: default avatarGal Pressman <galp@mellanox.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
      278d7f3d
    • Gal Pressman's avatar
      net/mlx5e: Vxlan, replace ports radix-tree with hash table · d30d8cde
      Gal Pressman authored
      The VXLAN database is accessed in the data path for each VXLAN TX skb in
      order to check whether the UDP port is being offloaded or not.
      The number of elements in the database is relatively small, we can
      simplify the radix-tree to a hash table and speedup the lookup process.
      
      Measuring mlx5e_vxlan_lookup_port execution time:
      
                        Radix Tree   Hash Table
       --------------- ------------ ------------
        Single Stream   161 ns       79  ns (51% improvement)
        Multi Stream    259 ns       136 ns (47% improvement)
      
      Measuring UDP stream packet rate, single fully utilized TX core:
      Radix Tree: 498,300 PPS
      Hash Table: 555,468 PPS (11% improvement)
      Signed-off-by: default avatarGal Pressman <galp@mellanox.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
      d30d8cde
    • Gal Pressman's avatar
      net/mlx5e: Vxlan, check maximum number of UDP ports · 22a65aa8
      Gal Pressman authored
      The NIC has a limited number of offloaded VXLAN UDP ports (usually 4).
      Instead of letting the firmware fail when trying to add more ports than
      it can handle, let the driver check it on its own.
      Signed-off-by: default avatarGal Pressman <galp@mellanox.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
      22a65aa8
    • Gal Pressman's avatar
      net/mlx5e: Vxlan, reflect 4789 UDP port default addition to software database · a082c4f4
      Gal Pressman authored
      The hardware offloads 4789 UDP port (default VXLAN port) automatically.
      Add it to the software database as well in order to reflect the hardware
      state appropriately.
      Signed-off-by: default avatarGal Pressman <galp@mellanox.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
      a082c4f4
    • Jiri Pirko's avatar
      net: sched: don't dump chains only held by actions · 1f3ed383
      Jiri Pirko authored
      In case a chain is empty and not explicitly created by a user,
      such chain should not exist. The only exception is if there is
      an action "goto chain" pointing to it. In that case, don't show the
      chain in the dump. Track the chain references held by actions and
      use them to find out if a chain should or should not be shown
      in chain dump.
      Signed-off-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1f3ed383
    • David S. Miller's avatar
      Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec-next · 7a49d3d4
      David S. Miller authored
      Steffen Klassert says:
      
      ====================
      pull request (net-next): ipsec-next 2018-07-27
      
      1) Extend the output_mark to also support the input direction
         and masking the mark values before applying to the skb.
      
      2) Add a new lookup key for the upcomming xfrm interfaces.
      
      3) Extend the xfrm lookups to match xfrm interface IDs.
      
      4) Add virtual xfrm interfaces. The purpose of these interfaces
         is to overcome the design limitations that the existing
         VTI devices have.
      
        The main limitations that we see with the current VTI are the
        following:
      
        VTI interfaces are L3 tunnels with configurable endpoints.
        For xfrm, the tunnel endpoint are already determined by the SA.
        So the VTI tunnel endpoints must be either the same as on the
        SA or wildcards. In case VTI tunnel endpoints are same as on
        the SA, we get a one to one correlation between the SA and
        the tunnel. So each SA needs its own tunnel interface.
      
        On the other hand, we can have only one VTI tunnel with
        wildcard src/dst tunnel endpoints in the system because the
        lookup is based on the tunnel endpoints. The existing tunnel
        lookup won't work with multiple tunnels with wildcard
        tunnel endpoints. Some usecases require more than on
        VTI tunnel of this type, for example if somebody has multiple
        namespaces and every namespace requires such a VTI.
      
        VTI needs separate interfaces for IPv4 and IPv6 tunnels.
        So when routing to a VTI, we have to know to which address
        family this traffic class is going to be encapsulated.
        This is a lmitation because it makes routing more complex
        and it is not always possible to know what happens behind the
        VTI, e.g. when the VTI is move to some namespace.
      
        VTI works just with tunnel mode SAs. We need generic interfaces
        that ensures transfomation, regardless of the xfrm mode and
        the encapsulated address family.
      
        VTI is configured with a combination GRE keys and xfrm marks.
        With this we have to deal with some extra cases in the generic
        tunnel lookup because the GRE keys on the VTI are actually
        not GRE keys, the GRE keys were just reused for something else.
        All extensions to the VTI interfaces would require to add
        even more complexity to the generic tunnel lookup.
      
        So to overcome this, we developed xfrm interfaces with the
        following design goal:
      
        It should be possible to tunnel IPv4 and IPv6 through the same
        interface.
      
        No limitation on xfrm mode (tunnel, transport and beet).
      
        Should be a generic virtual interface that ensures IPsec
        transformation, no need to know what happens behind the
        interface.
      
        Interfaces should be configured with a new key that must match a
        new policy/SA lookup key.
      
        The lookup logic should stay in the xfrm codebase, no need to
        change or extend generic routing and tunnel lookups.
      
        Should be possible to use IPsec hardware offloads of the underlying
        interface.
      
      5) Remove xfrm pcpu policy cache. This was added after the flowcache
         removal, but it turned out to make things even worse.
         From Florian Westphal.
      
      6) Allow to update the set mark on SA updates.
         From Nathan Harold.
      
      7) Convert some timestamps to time64_t.
         From Arnd Bergmann.
      
      8) Don't check the offload_handle in xfrm code,
         it is an opaque data cookie for the driver.
         From Shannon Nelson.
      
      9) Remove xfrmi interface ID from flowi. After this pach
         no generic code is touched anymore to do xfrm interface
         lookups. From Benedict Wong.
      
      10) Allow to update the xfrm interface ID on SA updates.
          From Nathan Harold.
      
      11) Don't pass zero to ERR_PTR() in xfrm_resolve_and_create_bundle.
          From YueHaibing.
      
      12) Return more detailed errors on xfrm interface creation.
          From Benedict Wong.
      
      13) Use PTR_ERR_OR_ZERO instead of IS_ERR + PTR_ERR.
          From the kbuild test robot.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7a49d3d4
    • kbuild test robot's avatar
      xfrm: fix ptr_ret.cocci warnings · c6f5e017
      kbuild test robot authored
      net/xfrm/xfrm_interface.c:692:1-3: WARNING: PTR_ERR_OR_ZERO can be used
      
       Use PTR_ERR_OR_ZERO rather than if(IS_ERR(...)) + PTR_ERR
      
      Generated by: scripts/coccinelle/api/ptr_ret.cocci
      
      Fixes: 44e2b838 ("xfrm: Return detailed errors from xfrmi_newlink")
      CC: Benedict Wong <benedictwong@google.com>
      Signed-off-by: default avatarkbuild test robot <fengguang.wu@intel.com>
      Signed-off-by: default avatarSteffen Klassert <steffen.klassert@secunet.com>
      c6f5e017
    • David S. Miller's avatar
      Merge tag 'mlx5e-updates-2018-07-26' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux · ecbcd689
      David S. Miller authored
      Saeed Mahameed says:
      
      ====================
      mlx5e-updates-2018-07-26 (XDP redirect)
      
      This series from Tariq adds the support for device-out XDP redirect.
      
      Start with a simple RX and XDP cleanups:
      - Replace call to MPWQE free with dealloc in interface down flow
      - Do not recycle RX pages in interface down flow
      - Gather all XDP pre-requisite checks in a single function
      - Restrict the combination of large MTU and XDP
      
      Since now XDP logic is going to be called from TX side as well,
      generic XDP TX logic is not RX only anymore, for that Tariq creates
      a new xdp.c file and moves XDP related code into it, and generalizes
      the code to support XDP TX for XDP redirect, such as the xdp tx sq
      structures and xdp counters.
      
      XDP redirect support:
      Add implementation for the ndo_xdp_xmit callback.
      
      Dedicate a new set of XDP-SQ instances to satisfy the XDP_REDIRECT
      requests.  These instances are totally separated from the existing
      XDP-SQ objects that satisfy local XDP_TX actions.
      
      Performance tests:
      
      xdp_redirect_map from ConnectX-5 to ConnectX-5.
      CPU: Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz
      Packet-rate of 64B packets.
      
      Single queue: 7 Mpps.
      Multi queue: 55 Mpps.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ecbcd689
    • Jakub Kicinski's avatar
      netdevsim: make debug dirs' dentries static · f61b6db3
      Jakub Kicinski authored
      The root directories of netdevsim should only be used by the core
      to create per-device subdirectories, so limit their visibility to
      the core file.
      Signed-off-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
      Reviewed-by: default avatarQuentin Monnet <quentin.monnet@netronome.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f61b6db3
    • David S. Miller's avatar
      Merge branch 'docs-net-Convert-netdev-FAQ-to-RST' · 472f5975
      David S. Miller authored
      Tobin C. Harding says:
      
      ====================
      docs: net: Convert netdev-FAQ to RST
      
      Jon answered all the tree questions on v1 so if you will please take
      this through your tree that would be awesome.
      
      v2:
       - Fix typo 'canonical_path_format' (thanks Edward)
       - Add patch fixing references netdev-FAQ
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      472f5975
    • Tobin C. Harding's avatar
      docs: Update references to netdev-FAQ · 287f4fa9
      Tobin C. Harding authored
      File 'Documentation/networking/netdev-FAQ.txt' has been converted to RST
      format.  We should update all links/references to point to the new file.
      
      Update references to netdev-FAQ
      Signed-off-by: default avatarTobin C. Harding <me@tobin.cc>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      287f4fa9
    • Tobin C. Harding's avatar
      docs: net: Convert netdev-FAQ to restructured text · 96398ddf
      Tobin C. Harding authored
      Preferred kernel docs format is now restructured text.  Convert
      netdev-FAQ.txt to restructured text.
      
       - Add SPDX license identifier.
      
       - Change file heading 'Information you need to know about netdev' to
        'netdev FAQ' to better suit displayed index (in HTML).
      
       - Change question/answer layout to suit rst.  Copy format in
         Documentation/bpf/bpf_devel_QA.rst
      
       - Fix indentation of code snippets
      
       - If multiple consecutive URLs appear put them in a list (to maintain
        whitespace).
      
       - Use uniform spelling of 'bug fix' throughout document (not bugfix or
         bug-fix).
      
       - Add double back ticks to 'net' and 'net-next' when referring to the
         trees.
      
       - Use rst references for Documentation/ links.
      
       - Add rst label 'netdev-FAQ' for referencing by other docs files.
      
       - Remove stale entry from Documentation/networking/00-INDEX
      Signed-off-by: default avatarTobin C. Harding <me@tobin.cc>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      96398ddf
    • Tobin C. Harding's avatar
      docs: Add rest label the_canonical_patch_format · f58252cd
      Tobin C. Harding authored
      In preparation to convert Documentation/network/netdev-FAQ.rst to
      restructured text format.  We would like to be able to reference 'the
      canonical patch format' section.
      
      Add rest label: 'the_canonical_patch_format'.
      Signed-off-by: default avatarTobin C. Harding <me@tobin.cc>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f58252cd
    • Jia-Ju Bai's avatar
      net: adaptec: Replace mdelay() with msleep() in starfire_init_one() · d8ad2f31
      Jia-Ju Bai authored
      starfire_init_one() is never called in atomic context.
      It calls mdelay() to busily wait, which is not necessary.
      mdelay() can be replaced with msleep().
      
      This is found by a static analysis tool named DCNS written by myself.
      Signed-off-by: default avatarJia-Ju Bai <baijiaju1990@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d8ad2f31
    • Jia-Ju Bai's avatar
      isdn: hisax: config: Replace GFP_ATOMIC with GFP_KERNEL · 055d624f
      Jia-Ju Bai authored
      hisax_cs_new() and hisax_cs_setup() are never called in atomic context.
      They call kmalloc() and kzalloc() with GFP_ATOMIC, which is not necessary.
      GFP_ATOMIC can be replaced with GFP_KERNEL.
      
      This is found by a static analysis tool named DCNS written by myself.
      Signed-off-by: default avatarJia-Ju Bai <baijiaju1990@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      055d624f
    • Jia-Ju Bai's avatar
      isdn: hisax: callc: Replace GFP_ATOMIC with GFP_KERNEL in init_PStack() · 87935aa7
      Jia-Ju Bai authored
      init_PStack() is never called in atomic context.
      It calls kmalloc() with GFP_ATOMIC, which is not necessary.
      GFP_ATOMIC can be replaced with GFP_KERNEL.
      
      This is found by a static analysis tool named DCNS written by myself.
      Signed-off-by: default avatarJia-Ju Bai <baijiaju1990@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      87935aa7
    • Jia-Ju Bai's avatar
      isdn: mISDN: netjet: Replace GFP_ATOMIC with GFP_KERNEL in nj_probe() · 9d8009de
      Jia-Ju Bai authored
      nj_probe() is never called in atomic context.
      It calls kzalloc() with GFP_ATOMIC, which is not necessary.
      GFP_ATOMIC can be replaced with GFP_KERNEL.
      
      This is found by a static analysis tool named DCNS written by myself.
      Signed-off-by: default avatarJia-Ju Bai <baijiaju1990@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9d8009de
    • Jia-Ju Bai's avatar
      isdn: mISDN: hfcpci: Replace GFP_ATOMIC with GFP_KERNEL in hfc_probe() · 8c957d66
      Jia-Ju Bai authored
      hfc_probe() is never called in atomic context.
      It calls kzalloc() with GFP_ATOMIC, which is not necessary.
      GFP_ATOMIC can be replaced with GFP_KERNEL.
      
      This is found by a static analysis tool named DCNS written by myself.
      Signed-off-by: default avatarJia-Ju Bai <baijiaju1990@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8c957d66
    • YueHaibing's avatar
      net: hns: make hns_dsaf_roce_reset non static · ff7b9126
      YueHaibing authored
      hns_dsaf_roce_reset is exported and used in hns_roce_hw_v1.c
      In commit 336a443b ("net: hns: Make many functions static") I make
      it static wrongly.
      
      drivers/infiniband/hw/hns/hns_roce_hw_v1.o: In function `hns_roce_v1_reset':
      hns_roce_hw_v1.c:(.text+0x37ac): undefined reference to `hns_dsaf_roce_reset'
      hns_roce_hw_v1.c:(.text+0x37cc): undefined reference to `hns_dsaf_roce_reset'
      
      Fixes: 336a443b ("net: hns: Make many functions static")
      Signed-off-by: default avatarYueHaibing <yuehaibing@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ff7b9126
  2. 26 Jul, 2018 17 commits