]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
authorJakub Kicinski <kuba@kernel.org>
Thu, 14 Nov 2024 19:27:36 +0000 (11:27 -0800)
committerJakub Kicinski <kuba@kernel.org>
Thu, 14 Nov 2024 19:29:15 +0000 (11:29 -0800)
Cross-merge networking fixes after downstream PR (net-6.12-rc8).

Conflicts:

tools/testing/selftests/net/.gitignore
  252e01e68241 ("selftests: net: add netlink-dumps to .gitignore")
  be43a6b23829 ("selftests: ncdevmem: Move ncdevmem under drivers/net/hw")
https://lore.kernel.org/all/20241113122359.1b95180a@canb.auug.org.au/

drivers/net/phy/phylink.c
  671154f174e0 ("net: phylink: ensure PHY momentary link-fails are handled")
  7530ea26c810 ("net: phylink: remove "using_mac_select_pcs"")

Adjacent changes:

drivers/net/ethernet/stmicro/stmmac/dwmac-intel-plat.c
  5b366eae7193 ("stmmac: dwmac-intel-plat: fix call balance of tx_clk handling routines")
  e96321fad3ad ("net: ethernet: Switch back to struct platform_driver::remove()")

Signed-off-by: Jakub Kicinski <kuba@kernel.org>
22 files changed:
1  2 
Documentation/admin-guide/kernel-parameters.txt
MAINTAINERS
drivers/net/bonding/bond_main.c
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
drivers/net/ethernet/stmicro/stmmac/dwmac-intel-plat.c
drivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c
drivers/net/ethernet/ti/icssg/icssg_prueth.c
drivers/net/phy/phylink.c
mm/page_alloc.c
net/core/filter.c
net/core/sock.c
net/ipv6/tcp_ipv6.c
net/mptcp/pm_netlink.c
net/mptcp/protocol.c
net/netlink/af_netlink.c
net/sctp/ipv6.c
net/vmw_vsock/af_vsock.c
tools/testing/selftests/net/.gitignore
tools/testing/selftests/net/Makefile

diff --cc MAINTAINERS
Simple merge
Simple merge
index b1e828a4286d4bdd94c60676a20d4788cb837772,3e9957b6aa148986b45204f696a326d75633f3be..30a654e9835233a061da756786d3745cabde3072
@@@ -78,7 -78,8 +78,7 @@@ struct phylink 
        unsigned int pcs_neg_mode;
        unsigned int pcs_state;
  
-       bool mac_link_dropped;
+       bool link_failed;
 -      bool using_mac_select_pcs;
  
        struct sfp_bus *sfp_bus;
        bool sfp_may_have_phy;
@@@ -1458,65 -1475,78 +1458,65 @@@ static void phylink_resolve(struct work
                cur_link_state = pl->old_link_state;
  
        if (pl->phylink_disable_state) {
-               pl->mac_link_dropped = false;
+               pl->link_failed = false;
                link_state.link = false;
-       } else if (pl->mac_link_dropped) {
+       } else if (pl->link_failed) {
                link_state.link = false;
                retrigger = true;
 +      } else if (pl->cur_link_an_mode == MLO_AN_FIXED) {
 +              phylink_get_fixed_state(pl, &link_state);
 +              mac_config = link_state.link;
 +      } else if (pl->cur_link_an_mode == MLO_AN_PHY) {
 +              link_state = pl->phy_state;
 +              mac_config = link_state.link;
        } else {
 -              switch (pl->cur_link_an_mode) {
 -              case MLO_AN_PHY:
 -                      link_state = pl->phy_state;
 -                      phylink_apply_manual_flow(pl, &link_state);
 -                      mac_config = link_state.link;
 -                      break;
 +              phylink_mac_pcs_get_state(pl, &link_state);
  
 -              case MLO_AN_FIXED:
 -                      phylink_get_fixed_state(pl, &link_state);
 -                      mac_config = link_state.link;
 -                      break;
 +              /* The PCS may have a latching link-fail indicator. If the link
 +               * was up, bring the link down and re-trigger the resolve.
 +               * Otherwise, re-read the PCS state to get the current status
 +               * of the link.
 +               */
 +              if (!link_state.link) {
 +                      if (cur_link_state)
 +                              retrigger = true;
 +                      else
 +                              phylink_mac_pcs_get_state(pl, &link_state);
 +              }
  
 -              case MLO_AN_INBAND:
 -                      phylink_mac_pcs_get_state(pl, &link_state);
 +              /* If we have a phy, the "up" state is the union of both the
 +               * PHY and the MAC
 +               */
 +              if (pl->phydev)
 +                      link_state.link &= pl->phy_state.link;
  
 -                      /* The PCS may have a latching link-fail indicator.
 -                       * If the link was up, bring the link down and
 -                       * re-trigger the resolve. Otherwise, re-read the
 -                       * PCS state to get the current status of the link.
 +              /* Only update if the PHY link is up */
 +              if (pl->phydev && pl->phy_state.link) {
 +                      /* If the interface has changed, force a link down
 +                       * event if the link isn't already down, and re-resolve.
                         */
 -                      if (!link_state.link) {
 -                              if (cur_link_state)
 -                                      retrigger = true;
 -                              else
 -                                      phylink_mac_pcs_get_state(pl,
 -                                                                &link_state);
 +                      if (link_state.interface != pl->phy_state.interface) {
 +                              retrigger = true;
 +                              link_state.link = false;
                        }
  
 -                      /* If we have a phy, the "up" state is the union of
 -                       * both the PHY and the MAC
 +                      link_state.interface = pl->phy_state.interface;
 +
 +                      /* If we are doing rate matching, then the link
 +                       * speed/duplex comes from the PHY
                         */
 -                      if (pl->phydev)
 -                              link_state.link &= pl->phy_state.link;
 -
 -                      /* Only update if the PHY link is up */
 -                      if (pl->phydev && pl->phy_state.link) {
 -                              /* If the interface has changed, force a
 -                               * link down event if the link isn't already
 -                               * down, and re-resolve.
 -                               */
 -                              if (link_state.interface !=
 -                                  pl->phy_state.interface) {
 -                                      retrigger = true;
 -                                      link_state.link = false;
 -                              }
 -                              link_state.interface = pl->phy_state.interface;
 -
 -                              /* If we are doing rate matching, then the
 -                               * link speed/duplex comes from the PHY
 -                               */
 -                              if (pl->phy_state.rate_matching) {
 -                                      link_state.rate_matching =
 -                                              pl->phy_state.rate_matching;
 -                                      link_state.speed = pl->phy_state.speed;
 -                                      link_state.duplex =
 -                                              pl->phy_state.duplex;
 -                              }
 -
 -                              /* If we have a PHY, we need to update with
 -                               * the PHY flow control bits.
 -                               */
 -                              link_state.pause = pl->phy_state.pause;
 -                              mac_config = true;
 +                      if (pl->phy_state.rate_matching) {
 +                              link_state.rate_matching =
 +                                      pl->phy_state.rate_matching;
 +                              link_state.speed = pl->phy_state.speed;
 +                              link_state.duplex = pl->phy_state.duplex;
                        }
 -                      phylink_apply_manual_flow(pl, &link_state);
 -                      break;
 +
 +                      /* If we have a PHY, we need to update with the PHY
 +                       * flow control bits.
 +                       */
 +                      link_state.pause = pl->phy_state.pause;
 +                      mac_config = true;
                }
        }
  
diff --cc mm/page_alloc.c
Simple merge
Simple merge
diff --cc net/core/sock.c
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc net/sctp/ipv6.c
Simple merge
Simple merge
index 48973e78d46bed688aa8d51f58e0bd3fbdf538b4,59fe07ee2df9d9b48b6d3b704d605601d14d404e..28a715a8ef2b18cadbde5abbd576fb98727131e0
@@@ -19,6 -18,8 +19,7 @@@ ipv6_flowlabel_mg
  log.txt
  msg_oob
  msg_zerocopy
 -ncdevmem
+ netlink-dumps
  nettest
  psock_fanout
  psock_snd
Simple merge