1. 09 May, 2022 8 commits
  2. 08 May, 2022 19 commits
  3. 07 May, 2022 5 commits
    • Jakub Kicinski's avatar
      Merge branch 'simplify-migration-of-host-filtered-addresses-in-felix-driver' · 8fc0b699
      Jakub Kicinski authored
      Vladimir Oltean says:
      
      ====================
      Simplify migration of host filtered addresses in Felix driver
      
      The purpose of this patch set is to remove the functions
      dsa_port_walk_fdbs() and dsa_port_walk_mdbs() from the DSA core, which
      were introduced when the Felix driver gained support for unicast
      filtering on standalone ports. They get called when changing the tagging
      protocol back and forth between "ocelot" and "ocelot-8021q".
      I did not realize we could get away without having them.
      
      The patch set was regression-tested using the local_termination.sh
      selftest using both tagging protocols.
      ====================
      
      Link: https://lore.kernel.org/r/20220505162213.307684-1-vladimir.oltean@nxp.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      8fc0b699
    • Vladimir Oltean's avatar
      net: dsa: delete dsa_port_walk_{fdbs,mdbs} · fe5233b0
      Vladimir Oltean authored
      All the users of these functions are gone, delete them before they gain
      new ones.
      Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      fe5233b0
    • Vladimir Oltean's avatar
      net: dsa: felix: perform MDB migration based on ocelot->multicast list · 28de0f9f
      Vladimir Oltean authored
      The felix driver is the only user of dsa_port_walk_mdbs(), and there
      isn't even a good reason for it, considering that the host MDB entries
      are already saved by the ocelot switch lib in the ocelot->multicast list.
      
      Rewrite the multicast entry migration procedure around the
      ocelot->multicast list so we can delete dsa_port_walk_mdbs().
      Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      28de0f9f
    • Vladimir Oltean's avatar
      net: dsa: felix: stop migrating FDBs back and forth on tag proto change · a51c1c3f
      Vladimir Oltean authored
      I just realized we don't need to migrate the host-filtered FDB entries
      when the tagging protocol changes from "ocelot" to "ocelot-8021q".
      
      Host-filtered addresses are learned towards the PGID_CPU "multicast"
      port group, reserved by software, which contains BIT(ocelot->num_phys_ports).
      That is the "special" port entry in the analyzer block for the CPU port
      module.
      
      In "ocelot" mode, the CPU port module's packets are redirected to the
      NPI port.
      
      In "ocelot-8021q" mode, felix_8021q_cpu_port_init() does something funny
      anyway, and changes PGID_CPU to stop pointing at the CPU port module and
      start pointing at the physical port where the DSA master is attached.
      
      The fact that we can alter the destination of packets learned towards
      PGID_CPU without altering the MAC table entries themselves means that it
      is pointless to walk through the FDB entries, forget that they were
      learned towards PGID_CPU, and re-learn them towards the "unicast" PGID
      associated with the physical port connected to the DSA master. We can
      let the PGID_CPU value change simply alter the destination of the
      host-filtered unicast packets in one fell swoop.
      Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      a51c1c3f
    • Vladimir Oltean's avatar
      net: dsa: felix: use PGID_CPU for FDB entry migration on NPI port · 2c110abc
      Vladimir Oltean authored
      ocelot_fdb_add() redirects FDB entries installed on the NPI port towards
      the special reserved PGID_CPU used for host-filtered addresses. PGID_CPU
      contains BIT(ocelot->num_phys_ports) in the destination port mask, which
      is code name for the CPU port module.
      
      Whereas felix_migrate_fdbs_to_*_port() uses the ocelot->num_phys_ports
      PGID directly, and it appears that this works too. Even if this PGID is
      set to zero, apparently its number is special and packets still reach
      the CPU port module.
      
      Nonetheless, in the end, these addresses end up in the same place
      regardless of whether they go through an extra indirection layer or not.
      Use PGID_CPU across to have more uniformity.
      Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      2c110abc
  4. 06 May, 2022 8 commits
    • David Thompson's avatar
      mlxbf_gige: increase MDIO polling rate to 5us · 0a02e282
      David Thompson authored
      This patch increases the polling rate used by the
      mlxbf_gige driver on the MDIO bus.  The previous
      polling rate was every 100us, and the new rate is
      every 5us.  With this change the amount of time
      spent waiting for the MDIO BUSY signal to de-assert
      drops from ~100us to ~27us for each operation.
      Signed-off-by: default avatarDavid Thompson <davthompson@nvidia.com>
      Signed-off-by: default avatarAsmaa Mnebhi <asmaa@nvidia.com>
      Link: https://lore.kernel.org/r/20220505162309.20050-1-davthompson@nvidia.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      0a02e282
    • Jakub Kicinski's avatar
      Merge branch '10GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue · 53e2cb3b
      Jakub Kicinski authored
      Tony Nguyen says:
      
      ====================
      10GbE Intel Wired LAN Driver Updates 2022-05-05
      
      This series contains updates to ixgbe and igb drivers.
      
      Jeff Daly adjusts type for 'allow_unsupported_sfp' to match the
      associated struct value for ixgbe.
      
      Alaa Mohamed converts, deprecated, kmap() call to kmap_local_page() for
      igb.
      
      * '10GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue:
        igb: Convert kmap() to kmap_local_page()
        ixgbe: Fix module_param allow_unsupported_sfp type
      ====================
      
      Link: https://lore.kernel.org/r/20220505155651.2606195-1-anthony.l.nguyen@intel.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      53e2cb3b
    • David S. Miller's avatar
      Merge branch 'tso-gso-limit-split' · 95730d65
      David S. Miller authored
      Jakub Kicinski says:
      
      ====================
      net: disambiguate the TSO and GSO limits
      
      This series separates the device-reported TSO limitations
      from the user space-controlled GSO limits. It used to be that
      we only had the former (HW limits) but they were named GSO.
      This probably lead to confusion and letting user override them.
      
      The problem came up in the BIG TCP discussion between Eric and
      Alex, and seems like something we should address.
      
      Targeting net-next because (a) nobody is reporting problems;
      and (b) there is a tiny but non-zero chance that some actually
      wants to lift the HW limitations.
      ====================
      Reviewed-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      95730d65
    • Jakub Kicinski's avatar
      net: move netif_set_gso_max helpers · 744d49da
      Jakub Kicinski authored
      These are now internal to the core, no need to expose them.
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      744d49da
    • Jakub Kicinski's avatar
      net: make drivers set the TSO limit not the GSO limit · ee8b7a11
      Jakub Kicinski authored
      Drivers should call the TSO setting helper, GSO is controllable
      by user space.
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ee8b7a11
    • Jakub Kicinski's avatar
      net: don't allow user space to lift the device limits · 14d7b812
      Jakub Kicinski authored
      Up until commit 46e6b992 ("rtnetlink: allow GSO maximums to
      be set on device creation") the gso_max_segs and gso_max_size
      of a device were not controlled from user space.
      
      The quoted commit added the ability to control them because of
      the following setup:
      
       netns A  |  netns B
           veth<->veth   eth0
      
      If eth0 has TSO limitations and user wants to efficiently forward
      traffic between eth0 and the veths they should copy the TSO
      limitations of eth0 onto the veths. This would happen automatically
      for macvlans or ipvlan but veth users are not so lucky (given the
      loose coupling).
      
      Unfortunately the commit in question allowed users to also override
      the limits on real HW devices.
      
      It may be useful to control the max GSO size and someone may be using
      that ability (not that I know of any user), so create a separate set
      of knobs to reliably record the TSO limitations. Validate the user
      requests.
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      14d7b812
    • Jakub Kicinski's avatar
      net: add netif_inherit_tso_max() · 6df6398f
      Jakub Kicinski authored
      To make later patches smaller create a helper for inheriting
      the TSO limitations of a lower device. The TSO in the name
      is not an accident, subsequent patches will replace GSO
      with TSO in more names.
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6df6398f
    • David S. Miller's avatar
      Merge branch 'nfp-flower-rework' · beb21e3e
      David S. Miller authored
      Simon Horman says:
      
      ====================
      nfp: flower: decap neighbour table rework
      
      Louis Peens says:
      
      This patch series reworks the way in which flow rules that outputs to
      OVS internal ports gets handled by the nfp driver.
      
      Previously this made use of a small pre_tun_table, but this only used
      destination MAC addresses, and made the implicit assumption that there is
      only a single source MAC":"destination MAC" mapping per tunnel. In
      hindsight this seems to be a pretty obvious oversight, but this was hidden
      in plain sight for quite some time.
      
      This series changes the implementation to make use of the same Neighbour
      table for decap that is in use for the tunnel encap solution. It stores
      any new Neighbour updates in this table. Previously this path was only
      triggered for encapsulation candidates, and the entries were send and
      forget, not saved on the host as it is after this series. It also keeps
      track of any flow rule that outputs to OVS internal ports (and some
      other criteria not worth mentioning here), very similar to how it was
      done previously, except now these flows are kept track of in a list.
      
      When a new Neighbour entry gets added this list gets iterated for
      potential matches, in which case the table gets updated with a reference
      to the flow, and the Neighbour entry on the card gets updated with the
      relevant host_ctx. The same happens when a new qualifying flow gets
      added - the Neighbour table gets iterated for applicable matches, and
      once again the firmware gets updated with the host_ctx when any matches
      are found.
      
      Since this also requires a firmware change we add a new capability bit,
      and keep the old behaviour in case of older firmware without this bit
      set.
      
      This series starts by doing some preparation, then adding the new list
      and table entries. Next the functionality to link/unlink these entries
      are added, and finally this new functionality is enabled by adding the
      DECAP_V2 bit to the driver feature list.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      beb21e3e