1. 13 Apr, 2024 29 commits
  2. 12 Apr, 2024 11 commits
    • David S. Miller's avatar
      Merge branch 'nfp-minor-improvements' · 982a73c7
      David S. Miller authored
      Louis Peens says:
      
      ====================
      nfp: series of minor driver improvements
      
      This short series bundles now only includes a small update to add a
      board part number to devlink. Previously some dim patches also formed
      part of this series, these were dropped in v5.
      
      Patch1: Add new define for devlink string "board.part_number"
      Patch2: Make use of this field in the nfp driver
      
      Changes since V4:
      - Dropped the dim patches, as there is a more significant rework in
        progress to make it more flexible, as mentioned in the V4 review:
        https://lore.kernel.org/all/1712547870-112976-2-git-send-email-hengqi@linux.alibaba.com/
      - Updated the devlink description of 'board.part_number'
      
      Changes since V3:
      - Fixed: Documentation/networking/devlink/devlink-info.rst:150:
          WARNING: Title underline too short.
      
      Changes since V2:
      - After some discussion on the previous series it was agreed that only
        the "board.part_number" field makes sense in the common code. The
        "board.model" field which was moved to devlink common code in V1 is
        now kept in the driver. The field is specific to the nfp driver,
        exposing the codename of the board.
      - In summary, add "board.part_number" to devlink, and populate it
        in the the nfp driver.
      
      Changes since V1:
      - Move nfp local defines to devlink common code as it is quite generic.
      - Add new 'dim' profile instead of using driver local overrides, as this
        allows use of the 'dim' helpers.
      - This expanded 2 patches to 4, as the common code changes are split
        into seperate patches.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      982a73c7
    • Fei Qin's avatar
      nfp: update devlink device info output · 8910f93b
      Fei Qin authored
      Newer NIC will introduce a new part number, now add it
      into devlink device info.
      
      This patch also updates the information of "board.id" in
      nfp.rst to match the devlink-info.rst.
      Signed-off-by: default avatarFei Qin <fei.qin@corigine.com>
      Signed-off-by: default avatarLouis Peens <louis.peens@corigine.com>
      Reviewed-by: default avatarJacob Keller <jacob.e.keller@intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8910f93b
    • Fei Qin's avatar
      devlink: add a new info version tag · 3bb946c9
      Fei Qin authored
      Add definition and documentation for the new generic
      info "board.part_number".
      
      The new one is for part number specific use, and board.id
      is modified to match the documentation in devlink-info.
      Signed-off-by: default avatarFei Qin <fei.qin@corigine.com>
      Signed-off-by: default avatarLouis Peens <louis.peens@corigine.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3bb946c9
    • Hechao Li's avatar
      tcp: increase the default TCP scaling ratio · 697a6c8c
      Hechao Li authored
      After commit dfa2f048 ("tcp: get rid of sysctl_tcp_adv_win_scale"),
      we noticed an application-level timeout due to reduced throughput.
      
      Before the commit, for a client that sets SO_RCVBUF to 65k, it takes
      around 22 seconds to transfer 10M data. After the commit, it takes 40
      seconds. Because our application has a 30-second timeout, this
      regression broke the application.
      
      The reason that it takes longer to transfer data is that
      tp->scaling_ratio is initialized to a value that results in ~0.25 of
      rcvbuf. In our case, SO_RCVBUF is set to 65536 by the application, which
      translates to 2 * 65536 = 131,072 bytes in rcvbuf and hence a ~28k
      initial receive window.
      
      Later, even though the scaling_ratio is updated to a more accurate
      skb->len/skb->truesize, which is ~0.66 in our environment, the window
      stays at ~0.25 * rcvbuf. This is because tp->window_clamp does not
      change together with the tp->scaling_ratio update when autotuning is
      disabled due to SO_RCVBUF. As a result, the window size is capped at the
      initial window_clamp, which is also ~0.25 * rcvbuf, and never grows
      bigger.
      
      Most modern applications let the kernel do autotuning, and benefit from
      the increased scaling_ratio. But there are applications such as kafka
      that has a default setting of SO_RCVBUF=64k.
      
      This patch increases the initial scaling_ratio from ~25% to 50% in order
      to make it backward compatible with the original default
      sysctl_tcp_adv_win_scale for applications setting SO_RCVBUF.
      
      Fixes: dfa2f048 ("tcp: get rid of sysctl_tcp_adv_win_scale")
      Signed-off-by: default avatarHechao Li <hli@netflix.com>
      Reviewed-by: default avatarTycho Andersen <tycho@tycho.pizza>
      Reviewed-by: default avatarEric Dumazet <edumazet@google.com>
      Link: https://lore.kernel.org/netdev/20240402215405.432863-1-hli@netflix.com/Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      697a6c8c
    • David S. Miller's avatar
      Merge branch 'rtl8226b-serdes-switching' · c31bd5b6
      David S. Miller authored
      Eric Woudstra says:
      
      ====================
      rtl8226b/8221b add C45 instances and SerDes switching
      
      Based on the comments in [PATCH net-next]
      "Realtek RTL822x PHY rework to c45 and SerDes interface switching"
      
      Adds SerDes switching interface between 2500base-x and sgmii for
      rtl8221b and rtl8226b.
      
      Add get_rate_matching() for rtl8226b and rtl8221b, reading the serdes
      mode from phy.
      
      Driver instances are added for rtl8226b and rtl8221b for Clause 45
      access only. The existing code is not touched, they use newly added
      functions. They also use the same rtl822xb_config_init() and
      rtl822xb_get_rate_matching() as these functions also can be used for
      direct Clause 45 access. Also Adds definition of MMC 31 registers,
      which cannot be used through C45-over-C22, only when phydev->is_c45
      is set.
      
      Change rtlgen_get_speed() so the register value is passed as argument.
      Using Clause 45 access, this value is retrieved differently.
      Rename it to rtlgen_decode_speed() and add a call to it in
      rtl822x_c45_read_status().
      
      Add rtl822x_c45_get_features() to set supported port for rtl8221b.
      
      Then 1 quirk is added for sfp modules known to have a rtl8221b
      behind RollBall, Clause 45 only, protocol.
      
      Changed in PATCH v4:
      * Changed switch to if statement in rtl822xb_get_rate_matching()
      * Removed setting ETHTOOL_LINK_MODE_MII_BIT in rtl822x_c45_get_features()
      
      Changed in PATCH v3:
      * Only apply to rtl8221b and rtl8226b phy's
      * Set phydev->rate_matching in .config_init()
      * Removed OEM SFP fixup for now, as there are modules with the same
        vendor name/PN, but with different PHY's. We found rtl8221b, but
        also the ty8821, which is not yet supported.
      
      Changed in PATCH v2:
      * Set author to Marek for the commit of the new C45 instances
      * Separate commit for setting supported ports
      * Renamed rtlgen_get_speed to rtlgen_decode_speed
      * Always fill in possible interfaces
      * Renamed sfp_fixup_oem_2_5g to sfp_fixup_oem_2_5gbaset
      * Only update phydev->interface when link is up
      
      Alexander Couzens (1):
        net: phy: realtek: configure SerDes mode for rtl822xb PHYs
      
      Eric Woudstra (3):
        net: phy: realtek: add get_rate_matching() for rtl822xb PHYs
        net: phy: realtek: Change rtlgen_get_speed() to rtlgen_decode_speed()
        net: phy: realtek: add rtl822x_c45_get_features() to set supported
          port
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c31bd5b6
    • Marek Behún's avatar
      net: sfp: add quirk for another multigig RollBall transceiver · 1c77c721
      Marek Behún authored
      Add quirk for another RollBall copper transceiver: Turris RTSFP-2.5G,
      containing 2.5g capable RTL8221B PHY.
      Signed-off-by: default avatarMarek Behún <kabel@kernel.org>
      Signed-off-by: default avatarEric Woudstra <ericwouds@gmail.com>
      Reviewed-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1c77c721
    • Eric Woudstra's avatar
      net: phy: realtek: add rtl822x_c45_get_features() to set supported port · 2d9ce648
      Eric Woudstra authored
      Sets ETHTOOL_LINK_MODE_TP_BIT in phydev->supported.
      Signed-off-by: default avatarEric Woudstra <ericwouds@gmail.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2d9ce648
    • Eric Woudstra's avatar
      net: phy: realtek: Change rtlgen_get_speed() to rtlgen_decode_speed() · 2e4ea707
      Eric Woudstra authored
      The value of the register to determine the speed, is retrieved
      differently when using Clause 45 only. To use the rtlgen_get_speed()
      function in this case, pass the value of the register as argument to
      rtlgen_get_speed(). The function would then always return 0, so change it
      to void. A better name for this function now is rtlgen_decode_speed().
      
      Replace a call to genphy_read_status() followed by rtlgen_get_speed()
      with a call to rtlgen_read_status() in rtl822x_read_status().
      
      Add reading speed to rtl822x_c45_read_status().
      Signed-off-by: default avatarEric Woudstra <ericwouds@gmail.com>
      Reviewed-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2e4ea707
    • Marek Behún's avatar
      net: phy: realtek: Add driver instances for rtl8221b via Clause 45 · ad5ce743
      Marek Behún authored
      Collected from several commits in [PATCH net-next]
      "Realtek RTL822x PHY rework to c45 and SerDes interface switching"
      
      The instances are used by Clause 45 only accessible PHY's on several sfp
      modules, which are using RollBall protocol.
      Signed-off-by: default avatarMarek Behún <kabel@kernel.org>
      [ Added matching functions to differentiate C45 instances ]
      Signed-off-by: default avatarEric Woudstra <ericwouds@gmail.com>
      Reviewed-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ad5ce743
    • Eric Woudstra's avatar
      net: phy: realtek: add get_rate_matching() for rtl822xb PHYs · c189dbd7
      Eric Woudstra authored
      Uses vendor register to determine if SerDes is setup in rate-matching mode.
      
      Rate-matching only supported when SerDes is set to 2500base-x.
      Signed-off-by: default avatarEric Woudstra <ericwouds@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c189dbd7
    • Alexander Couzens's avatar
      net: phy: realtek: configure SerDes mode for rtl822xb PHYs · deb8af52
      Alexander Couzens authored
      The rtl8221b and rtl8226b series support switching SerDes mode between
      2500base-x and sgmii based on the negotiated copper speed.
      
      Configure this switching mode according to SerDes modes supported by
      host.
      
      There is an additional datasheet for RTL8226B/RTL8221B called
      "SERDES MODE SETTING FLOW APPLICATION NOTE" where a sequence is
      described to setup interface and rate adapter mode.
      
      However, there is no documentation about the meaning of registers
      and bits, it's literally just magic numbers and pseudo-code.
      Signed-off-by: default avatarAlexander Couzens <lynxis@fe80.eu>
      [ refactored, dropped HiSGMII mode and changed commit message ]
      Signed-off-by: default avatarMarek Behún <kabel@kernel.org>
      [ changed rtl822x_update_interface() to use vendor register ]
      [ always fill in possible interfaces ]
      [ only apply to rtl8221b and rtl8226b phy's ]
      [ set phydev->rate_matching in .config_init() ]
      Signed-off-by: default avatarEric Woudstra <ericwouds@gmail.com>
      Reviewed-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
      Reviewed-by: should come before them, without any blank lines. As the
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      deb8af52