1. 19 Jun, 2019 28 commits
  2. 18 Jun, 2019 12 commits
    • Arnd Bergmann's avatar
      qed: Fix -Wmaybe-uninitialized false positive · 815deee0
      Arnd Bergmann authored
      A previous attempt to shut up the uninitialized variable use
      warning was apparently insufficient. When CONFIG_PROFILE_ANNOTATED_BRANCHES
      is set, gcc-8 still warns, because the unlikely() check in DP_NOTICE()
      causes it to no longer track the state of all variables correctly:
      
      drivers/net/ethernet/qlogic/qed/qed_dev.c: In function 'qed_llh_set_ppfid_affinity':
      drivers/net/ethernet/qlogic/qed/qed_dev.c:798:47: error: 'abs_ppfid' may be used uninitialized in this function [-Werror=maybe-uninitialized]
        addr = NIG_REG_PPF_TO_ENGINE_SEL + abs_ppfid * 0x4;
                                           ~~~~~~~~~~^~~~~
      
      This is not a nice workaround, but always initializing the output from
      qed_llh_abs_ppfid() at least shuts up the false positive reliably.
      
      Fixes: 79284ade ("qed: Add llh ppfid interface and 100g support for offload protocols")
      Fixes: 8e2ea3ea ("qed: Fix static checker warning")
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Acked-by: Michal Kalderon <michal.kalderon@marvell.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      815deee0
    • Geert Uytterhoeven's avatar
      ps3_gelic: Use [] to denote a flexible array member · b594850e
      Geert Uytterhoeven authored
      Flexible array members should be denoted using [] instead of [0], else
      gcc will not warn when they are no longer at the end of a struct.
      Signed-off-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b594850e
    • Denis Kirjanov's avatar
      ipoib: show VF broadcast address · 75345f88
      Denis Kirjanov authored
      in IPoIB case we can't see a VF broadcast address for but
      can see for PF
      
      Before:
      11: ib1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2044 qdisc pfifo_fast
      state UP mode DEFAULT group default qlen 256
          link/infiniband
      80:00:00:66:fe:80:00:00:00:00:00:00:24:8a:07:03:00:a4:3e:7c brd
      00:ff:ff:ff:ff:12:40:1b:ff:ff:00:00:00:00:00:00:ff:ff:ff:ff
          vf 0 MAC 14:80:00:00:66:fe, spoof checking off, link-state disable,
      trust off, query_rss off
      ...
      
      After:
      11: ib1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2044 qdisc pfifo_fast
      state UP mode DEFAULT group default qlen 256
          link/infiniband
      80:00:00:66:fe:80:00:00:00:00:00:00:24:8a:07:03:00:a4:3e:7c brd
      00:ff:ff:ff:ff:12:40:1b:ff:ff:00:00:00:00:00:00:ff:ff:ff:ff
          vf 0     link/infiniband
      80:00:00:66:fe:80:00:00:00:00:00:00:24:8a:07:03:00:a4:3e:7c brd
      00:ff:ff:ff:ff:12:40:1b:ff:ff:00:00:00:00:00:00:ff:ff:ff:ff, spoof
      checking off, link-state disable, trust off, query_rss off
      
      v1->v2: add the IFLA_VF_BROADCAST constant
      v2->v3: put IFLA_VF_BROADCAST at the end
      to avoid KABI breakage and set NLA_REJECT
      dev_setlink
      Signed-off-by: default avatarDenis Kirjanov <kda@linux-powerpc.org>
      Acked-by: default avatarDoug Ledford <dledford@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      75345f88
    • Denis Kirjanov's avatar
      ipoib: correcly show a VF hardware address · 64d701c6
      Denis Kirjanov authored
      in the case of IPoIB with SRIOV enabled hardware
      ip link show command incorrecly prints
      0 instead of a VF hardware address.
      
      Before:
      11: ib1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2044 qdisc pfifo_fast
      state UP mode DEFAULT group default qlen 256
          link/infiniband
      80:00:00:66:fe:80:00:00:00:00:00:00:24:8a:07:03:00:a4:3e:7c brd
      00:ff:ff:ff:ff:12:40:1b:ff:ff:00:00:00:00:00:00:ff:ff:ff:ff
          vf 0 MAC 00:00:00:00:00:00, spoof checking off, link-state disable,
      trust off, query_rss off
      ...
      After:
      11: ib1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2044 qdisc pfifo_fast
      state UP mode DEFAULT group default qlen 256
          link/infiniband
      80:00:00:66:fe:80:00:00:00:00:00:00:24:8a:07:03:00:a4:3e:7c brd
      00:ff:ff:ff:ff:12:40:1b:ff:ff:00:00:00:00:00:00:ff:ff:ff:ff
          vf 0     link/infiniband
      80:00:00:66:fe:80:00:00:00:00:00:00:24:8a:07:03:00:a4:3e:7c brd
      00:ff:ff:ff:ff:12:40:1b:ff:ff:00:00:00:00:00:00:ff:ff:ff:ff, spoof
      checking off, link-state disable, trust off, query_rss off
      
      v1->v2: just copy an address without modifing ifla_vf_mac
      v2->v3: update the changelog
      Signed-off-by: default avatarDenis Kirjanov <kda@linux-powerpc.org>
      Acked-by: default avatarDoug Ledford <dledford@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      64d701c6
    • David S. Miller's avatar
      Merge branch 'mlxsw-Improve-IPv6-route-insertion-rate' · 2ae6b594
      David S. Miller authored
      Ido Schimmel says:
      
      ====================
      mlxsw: Improve IPv6 route insertion rate
      
      Unlike IPv4, an IPv6 multipath route in the kernel is composed from
      multiple sibling routes, each representing a single nexthop.
      
      Therefore, an addition of a multipath route with N nexthops translates
      to N in-kernel notifications. This is inefficient for device drivers
      that need to program the route to the underlying device. Each time a new
      nexthop is appended, a new nexthop group needs to be constructed and the
      old one deleted.
      
      This patchset improves the situation by sending a single notification
      for a multipath route addition / deletion instead of one per-nexthop.
      When adding thousands of multipath routes with 16 nexthops, I measured
      an improvement of about x10 in the insertion rate.
      
      Patches #1-#3 add a flag that indicates that in-kernel notifications
      need to be suppressed and extend the IPv6 FIB notification info with
      information about the number of sibling routes that are being notified.
      
      Patches #4-#5 adjust the two current listeners to these notifications to
      ignore notifications about IPv6 multipath routes.
      
      Patches #6-#7 adds add / delete notifications for IPv6 multipath routes.
      
      Patches #8-#14 do the same for mlxsw.
      
      Patch #15 finally removes the limitations added in patches #4-#5 and
      stops the kernel from sending a notification for each added / deleted
      nexthop.
      
      Patch #16 adds test cases.
      
      v2 (David Ahern):
      * Remove patch adjusting netdevsim to consume resources for each
        fib6_info. Instead, consume one resource for the entire multipath
        route
      * Remove 'multipath_rt' usage in patch #10
      * Remove 'multipath_rt' from 'struct fib6_entry_notifier_info' in patch
        #15. The member is only removed in this patch to prevent drivers from
        processing multipath routes twice during the series
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2ae6b594
    • Ido Schimmel's avatar
      selftests: mlxsw: Add a test for FIB offload indication · 12ee8220
      Ido Schimmel authored
      Test that the offload indication for unicast routes is correctly set in
      different scenarios. IPv4 support will be added in the future.
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      12ee8220
    • Ido Schimmel's avatar
      ipv6: Stop sending in-kernel notifications for each nexthop · d5382fef
      Ido Schimmel authored
      Both listeners - mlxsw and netdevsim - of IPv6 FIB notifications are now
      ready to handle IPv6 multipath notifications.
      
      Therefore, stop ignoring such notifications in both drivers and stop
      sending notification for each added / deleted nexthop.
      
      v2:
      * Remove 'multipath_rt' from 'struct fib6_entry_notifier_info'
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
      Reviewed-by: default avatarDavid Ahern <dsahern@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d5382fef
    • Ido Schimmel's avatar
      mlxsw: spectrum_router: Create IPv6 multipath routes in one go · 2d9dd7ec
      Ido Schimmel authored
      Allow the driver to create an IPv6 multipath route in one go by passing
      an array of sibling routes and iterating over them.
      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>
      2d9dd7ec
    • Ido Schimmel's avatar
      mlxsw: spectrum_router: Add / delete multiple IPv6 nexthops · d21afd30
      Ido Schimmel authored
      Currently, the functions that take care of populating IPv6 nexthop
      groups only add / delete a single nexthop.
      
      Prepare them to handle multiple routes in one notification by passing an
      array of routes and adding / deleting all of them.
      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>
      d21afd30
    • Ido Schimmel's avatar
      mlxsw: spectrum_router: Pass array of routes to route handling functions · 921bc539
      Ido Schimmel authored
      Prepare the driver to handle multiple routes in a single notification by
      passing an array of routes to the functions that actually add / delete a
      route.
      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>
      921bc539
    • Ido Schimmel's avatar
      mlxsw: spectrum_router: Adjust IPv6 replace logic to new notifications · 94d628d1
      Ido Schimmel authored
      Previously, IPv6 replace notifications were only sent from
      fib6_add_rt2node(). The function only emitted such notifications if a
      route actually replaced another route.
      
      A previous patch added another call site in ip6_route_multipath_add()
      from which such notification can be emitted even if a route was merely
      added and did not replace another route.
      
      Adjust the driver to take this into account and potentially set the
      'replace' flag to 'false' if the notified route did not replace an
      existing route.
      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>
      94d628d1
    • Ido Schimmel's avatar
      mlxsw: spectrum_router: Pass multiple routes to work item · 928c0b53
      Ido Schimmel authored
      Prepare the driver to process IPv6 multipath notifications by passing an
      array of 'struct fib6_info' instead of just one route.
      
      A reference is taken on each sibling route in order to prevent them from
      being freed until they are processed by the workqueue.
      
      v2:
      * Remove 'multipath_rt' usage
      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>
      928c0b53