1. 22 Mar, 2021 3 commits
    • Vladimir Oltean's avatar
      net/sched: cls_flower: use ntohs for struct flow_dissector_key_ports · 6215afcb
      Vladimir Oltean authored
      A make W=1 build complains that:
      
      net/sched/cls_flower.c:214:20: warning: cast from restricted __be16
      net/sched/cls_flower.c:214:20: warning: incorrect type in argument 1 (different base types)
      net/sched/cls_flower.c:214:20:    expected unsigned short [usertype] val
      net/sched/cls_flower.c:214:20:    got restricted __be16 [usertype] dst
      
      This is because we use htons on struct flow_dissector_key_ports members
      src and dst, which are defined as __be16, so they are already in network
      byte order, not host. The byte swap function for the other direction
      should have been used.
      
      Because htons and ntohs do the same thing (either both swap, or none
      does), this change has no functional effect except to silence the
      warnings.
      Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6215afcb
    • Vincent Mailhol's avatar
      netdev: add netdev_queue_set_dql_min_limit() · f57bac3c
      Vincent Mailhol authored
      Add a function to set the dynamic queue limit minimum value.
      
      Some specific drivers might have legitimate reasons to configure
      dql.min_limit to a given value. Typically, this is the case when the
      PDU of the protocol is smaller than the packet size to used to
      carry those frames to the device.
      
      Concrete example: a CAN (Control Area Network) device with an USB 2.0
      interface.  The PDU of classical CAN protocol are roughly 16 bytes but
      the USB packet size (which is used to carry the CAN frames to the
      device) might be up to 512 bytes.  Wen small traffic burst occurs, BQL
      algorithm is not able to immediately adjust and this would result in
      having to send many small USB packets (i.e packet of 16 bytes for each
      CAN frame). Filling up the USB packet with CAN frames is relatively
      fast (small latency issue) but the gain of not having to send several
      small USB packets is huge (big throughput increase). In this case,
      forcing dql.min_limit to a given value that would allow to stuff the
      USB packet is always a win.
      
      This function is to be used by network drivers which are able to prove
      through a rationale and through empirical tests on several environment
      (with other applications, heavy context switching, virtualization...),
      that they constantly reach better performances with a specific
      predefined dql.min_limit value with no noticeable latency impact.
      Signed-off-by: default avatarVincent Mailhol <mailhol.vincent@wanadoo.fr>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f57bac3c
    • Alexander Lobakin's avatar
      dsa: simplify Kconfig symbols and dependencies · 227d7206
      Alexander Lobakin authored
      1. Remove CONFIG_HAVE_NET_DSA.
      
      CONFIG_HAVE_NET_DSA is a legacy leftover from the times when drivers
      should have selected CONFIG_NET_DSA manually.
      Currently, all drivers has explicit 'depends on NET_DSA', so this is
      no more needed.
      
      2. CONFIG_HAVE_NET_DSA dependencies became CONFIG_NET_DSA's ones.
      
       - dropped !S390 dependency which was introduced to be sure NET_DSA
         can select CONFIG_PHYLIB. DSA migrated to Phylink almost 3 years
         ago and the PHY library itself doesn't depend on !S390 since
         commit 870a2b5e ("phylib: remove !S390 dependeny from Kconfig");
       - INET dependency is kept to be sure we can select NET_SWITCHDEV;
       - NETDEVICES dependency is kept to be sure we can select PHYLINK.
      
      3. DSA drivers menu now depends on NET_DSA.
      
      Instead on 'depends on NET_DSA' on every single driver, the entire
      menu now depends on it. This eliminates a lot of duplicated lines
      from Kconfig with no loss (when CONFIG_NET_DSA=m, drivers also can
      be only m or n).
      This also has a nice side effect that there's no more empty menu on
      configurations without DSA.
      
      4. Kbuild will now descend into 'drivers/net/dsa' only when
         CONFIG_NET_DSA is y or m.
      
      This is safe since no objects inside this folder can be built without
      DSA core, as well as when CONFIG_NET_DSA=m, no objects can be
      built-in.
      Signed-off-by: default avatarAlexander Lobakin <alobakin@pm.me>
      Reviewed-by: default avatarVladimir Oltean <olteanv@gmail.com>
      Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      227d7206
  2. 21 Mar, 2021 9 commits
    • Vladimir Oltean's avatar
      Revert "net: dsa: sja1105: Clear VLAN filtering offload netdev feature" · a1e6f641
      Vladimir Oltean authored
      This reverts commit e9bf9694.
      
      The topic of the reverted patch is the support for switches with global
      VLAN filtering, added by commit 061f6a50 ("net: dsa: Add
      ndo_vlan_rx_{add, kill}_vid implementation"). Be there a switch with 4
      ports swp0 -> swp3, and the following setup:
      
      ip link add br0 type bridge vlan_filtering 1
      ip link set swp0 master br0
      ip link set swp1 master br0
      
      What would happen with VLAN-tagged traffic received on standalone ports
      swp2 and swp3? Well, it would get dropped, were it not for the
      .ndo_vlan_rx_add_vid and .ndo_vlan_rx_kill_vid implementations (called
      from vlan_vid_add and vlan_vid_del respectively). Basically, for DSA
      switches where VLAN filtering is a global attribute, we enforce the
      standalone ports to have 'rx-vlan-filter: off [fixed]' in their ethtool
      features, which lets the user know that all VLAN-tagged packets that are
      not explicitly added in the RX filtering list are dropped.
      
      As for the sja1105 driver, at the time of the reverted patch, it was
      operating in a pretty handicapped mode when it had ports under a bridge
      with vlan_filtering=1. Specifically, it was unable to terminate traffic
      through the CPU port (for further explanation see "Traffic support" in
      Documentation/networking/dsa/sja1105.rst).
      
      However, since then, the sja1105 driver has made considerable progress,
      and that limitation is no longer as severe now. Specifically, since
      commit 2cafa72e ("net: dsa: sja1105: add a new
      best_effort_vlan_filtering devlink parameter"), the driver is able to
      perform CPU termination even when some ports are under bridges with
      vlan_filtering=1. Then, since commit 8841f6e6 ("net: dsa: sja1105:
      make devlink property best_effort_vlan_filtering true by default"), this
      even became the default operating mode.
      
      So we can now take advantage of the logic in the DSA core.
      Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a1e6f641
    • Heiner Kallweit's avatar
      r8169: add support for ethtool get_ringparam · dc4aa50b
      Heiner Kallweit authored
      Add support for the ethtool get_ringparam operation.
      Signed-off-by: default avatarHeiner Kallweit <hkallweit1@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      dc4aa50b
    • David S. Miller's avatar
      Merge branch 'ipa-cfg-data-updates' · e0e7af0d
      David S. Miller authored
      Alex Elder says:
      
      ====================
      net: ipa: more configuration data updates
      
      This series starts with two patches that should have been included
      in an earlier series.  With these in place, QSB settings are
      programmed from information found in the data files rather than
      being embedded in code.  Support is then added for reprenting
      another QSB property (supported for IPA v4.0+).
      
      The third patch updates the definition of the sequencer type used
      for an endpoint.  Previously a set of 2-byte symbols with fairly
      long names defined the sequencer type, but now those are broken into
      1-byte halves whose names are a little more informative.
      
      The fourth patch moves the sequencer type definition so it only
      applies to TX endpoints (they aren't valid for RX endpoints).  And
      the last makes some minor documentation updates.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e0e7af0d
    • Alex Elder's avatar
      net: ipa: update some comments in "ipa_data.h" · b259cc2a
      Alex Elder authored
      Fix/expand some comments in "ipa_data.h".
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b259cc2a
    • Alex Elder's avatar
      net: ipa: sequencer type is for TX endpoints only · 1690d8a7
      Alex Elder authored
      We only program the sequencer type for TX endpoints.  So move the
      definition of the sequencer type fields into the TX-specific portion
      of the endpoint configuration data.  There's no need to maintain
      this in the IPA structure; we can extract it from the configuration
      data it points to in the one spot it's needed.
      
      We previously specified the sequencer type for RX endpoints with
      INVALID values.  These are no longer needed, so get rid of them.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1690d8a7
    • Alex Elder's avatar
      net: ipa: split sequencer type in two · 8ee5df65
      Alex Elder authored
      An IPA endpoint has a sequencer that must be configured based on how
      the endpoint is to be used.  Currently the IPA code programs the
      sequencer type by splitting a value into four 4-bit nibbles.  Doing
      that doesn't really add much value, and regardless, a better way of
      splitting the sequencer type is into two halves--the lower byte
      describing how normal packet processing is handled, and the next
      byte describing information about processing replicas.
      
      So split the sequencer type into two sub-parts:  the sequencer type
      and the replication sequencer type.  Define the values supported for
      the "main" sequencer type, and define the values supported for the
      replication part separately.
      
      In addition, the sequencer type names are quite verbose, encoding
      what the type includes, but also what it *excludes*.  Rename the
      sequencer types in a way that mainly describes the number of passes
      that a packet takes through the IPA processing pipeline, and how
      many of those passes end by supplying the processed packet to the
      microprocessor.
      
      The result expands the supported types beyond what is required for
      now, but simplifies the way these are defined.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8ee5df65
    • Alex Elder's avatar
      net: ipa: implement MAX_READS_BEATS QSB data · b9aa0805
      Alex Elder authored
      Starting with IPA v4.0, a limit is placed on the number of bytes
      outstanding in a transaction, to reduce latency.  The limit is
      imposed only if this value is non-zero.
      
      We don't use a non-zero value for SC7180, but newer versions of IPA
      do.  Prepare for that by allowing a programmed value to be specified
      in the platform configuration data.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b9aa0805
    • Alex Elder's avatar
      net: ipa: use configuration data for QSB settings · 8a81efac
      Alex Elder authored
      Use the QSB configuration data in ipa_hardware_config_qsb(), rather
      than determining in code what values to use based on IPA version.
      Pass configuration data to ipa_hardware_config() so it can be passed
      to ipa_hardware_config_qsb().
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8a81efac
    • Sai Kalyaan Palla's avatar
      net: decnet: Fixed multiple coding style issues · b29648ad
      Sai Kalyaan Palla authored
      Made changes to coding style as suggested by checkpatch.pl
      changes are of the type:
      	open brace '{' following struct go on the same line
      	do not use assignment in if condition
      Signed-off-by: default avatarSai Kalyaan Palla <saikalyaan63@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b29648ad
  3. 19 Mar, 2021 28 commits