Skip to content

Commit db87bd2

Browse files
committed
Merge tag 'net-6.17-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Pull networking fixes from Paolo Abeni: "Including fixes from CAN, netfilter and wireless. We have an IPv6 routing regression with the relevant fix still a WiP. This includes a last-minute revert to avoid more problems. Current release - new code bugs: - wifi: nl80211: completely disable per-link stats for now Previous releases - regressions: - dev_ioctl: take ops lock in hwtstamp lower paths - netfilter: - fix spurious set lookup failures - fix lockdep splat due to missing annotation - genetlink: fix genl_bind() invoking bind() after -EPERM - phy: transfer phy_config_inband() locking responsibility to phylink - can: xilinx_can: fix use-after-free of transmitted SKB - hsr: fix lock warnings - eth: - igb: fix NULL pointer dereference in ethtool loopback test - i40e: fix Jumbo Frame support after iPXE boot - macsec: sync features on RTM_NEWLINK Previous releases - always broken: - tunnels: reset the GSO metadata before reusing the skb - mptcp: make sync_socket_options propagate SOCK_KEEPOPEN - can: j1939: implement NETDEV_UNREGISTER notification hanidler - wifi: ath12k: fix WMI TLV header misalignment" * tag 'net-6.17-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (47 commits) Revert "net: usb: asix: ax88772: drop phylink use in PM to avoid MDIO runtime PM wakeups" hsr: hold rcu and dev lock for hsr_get_port_ndev hsr: use hsr_for_each_port_rtnl in hsr_port_get_hsr hsr: use rtnl lock when iterating over ports wifi: nl80211: completely disable per-link stats for now net: usb: asix: ax88772: drop phylink use in PM to avoid MDIO runtime PM wakeups net: ethtool: fix wrong type used in struct kernel_ethtool_ts_info MAINTAINERS: add Phil as netfilter reviewer netfilter: nf_tables: restart set lookup on base_seq change netfilter: nf_tables: make nft_set_do_lookup available unconditionally netfilter: nf_tables: place base_seq in struct net netfilter: nft_set_rbtree: continue traversal if element is inactive netfilter: nft_set_pipapo: don't check genbit from packetpath lookups netfilter: nft_set_bitmap: fix lockdep splat due to missing annotation can: rcar_can: rcar_can_resume(): fix s2ram with PSCI can: xilinx_can: xcan_write_frame(): fix use-after-free of transmitted SKB can: j1939: j1939_local_ecu_get(): undo increment when j1939_local_ecu_get() fails can: j1939: j1939_sk_bind(): call j1939_priv_put() immediately when j1939_local_ecu_get() failed can: j1939: implement NETDEV_UNREGISTER notification handler selftests: can: enable CONFIG_CAN_VCAN as a module ...
2 parents e59a039 + 63a7965 commit db87bd2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+542
-227
lines changed

Documentation/netlink/specs/mptcp_pm.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ attribute-sets:
256256
type: u32
257257
-
258258
name: if-idx
259-
type: u32
259+
type: s32
260260
-
261261
name: reset-reason
262262
type: u32

Documentation/networking/can.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -742,7 +742,7 @@ The broadcast manager sends responses to user space in the same form:
742742
struct timeval ival1, ival2; /* count and subsequent interval */
743743
canid_t can_id; /* unique can_id for task */
744744
__u32 nframes; /* number of can_frames following */
745-
struct can_frame frames[0];
745+
struct can_frame frames[];
746746
};
747747
748748
The aligned payload 'frames' uses the same basic CAN frame structure defined

Documentation/networking/mptcp.rst

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,10 @@ address announcements. Typically, it is the client side that initiates subflows,
6060
and the server side that announces additional addresses via the ``ADD_ADDR`` and
6161
``REMOVE_ADDR`` options.
6262

63-
Path managers are controlled by the ``net.mptcp.pm_type`` sysctl knob -- see
64-
mptcp-sysctl.rst. There are two types: the in-kernel one (type ``0``) where the
65-
same rules are applied for all the connections (see: ``ip mptcp``) ; and the
66-
userspace one (type ``1``), controlled by a userspace daemon (i.e. `mptcpd
63+
Path managers are controlled by the ``net.mptcp.path_manager`` sysctl knob --
64+
see mptcp-sysctl.rst. There are two types: the in-kernel one (``kernel``) where
65+
the same rules are applied for all the connections (see: ``ip mptcp``) ; and the
66+
userspace one (``userspace``), controlled by a userspace daemon (i.e. `mptcpd
6767
<https://mptcpd.mptcp.dev/>`_) where different rules can be applied for each
6868
connection. The path managers can be controlled via a Netlink API; see
6969
netlink_spec/mptcp_pm.rst.

MAINTAINERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17479,6 +17479,7 @@ NETFILTER
1747917479
M: Pablo Neira Ayuso <[email protected]>
1748017480
M: Jozsef Kadlecsik <[email protected]>
1748117481
M: Florian Westphal <[email protected]>
17482+
R: Phil Sutter <[email protected]>
1748217483
1748317484
1748417485
S: Maintained

drivers/net/can/rcar/rcar_can.c

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -861,7 +861,6 @@ static int rcar_can_resume(struct device *dev)
861861
{
862862
struct net_device *ndev = dev_get_drvdata(dev);
863863
struct rcar_can_priv *priv = netdev_priv(ndev);
864-
u16 ctlr;
865864
int err;
866865

867866
if (!netif_running(ndev))
@@ -873,12 +872,7 @@ static int rcar_can_resume(struct device *dev)
873872
return err;
874873
}
875874

876-
ctlr = readw(&priv->regs->ctlr);
877-
ctlr &= ~RCAR_CAN_CTLR_SLPM;
878-
writew(ctlr, &priv->regs->ctlr);
879-
ctlr &= ~RCAR_CAN_CTLR_CANM;
880-
writew(ctlr, &priv->regs->ctlr);
881-
priv->can.state = CAN_STATE_ERROR_ACTIVE;
875+
rcar_can_start(ndev);
882876

883877
netif_device_attach(ndev);
884878
netif_start_queue(ndev);

drivers/net/can/xilinx_can.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -690,14 +690,6 @@ static void xcan_write_frame(struct net_device *ndev, struct sk_buff *skb,
690690
dlc |= XCAN_DLCR_EDL_MASK;
691691
}
692692

693-
if (!(priv->devtype.flags & XCAN_FLAG_TX_MAILBOXES) &&
694-
(priv->devtype.flags & XCAN_FLAG_TXFEMP))
695-
can_put_echo_skb(skb, ndev, priv->tx_head % priv->tx_max, 0);
696-
else
697-
can_put_echo_skb(skb, ndev, 0, 0);
698-
699-
priv->tx_head++;
700-
701693
priv->write_reg(priv, XCAN_FRAME_ID_OFFSET(frame_offset), id);
702694
/* If the CAN frame is RTR frame this write triggers transmission
703695
* (not on CAN FD)
@@ -730,6 +722,14 @@ static void xcan_write_frame(struct net_device *ndev, struct sk_buff *skb,
730722
data[1]);
731723
}
732724
}
725+
726+
if (!(priv->devtype.flags & XCAN_FLAG_TX_MAILBOXES) &&
727+
(priv->devtype.flags & XCAN_FLAG_TXFEMP))
728+
can_put_echo_skb(skb, ndev, priv->tx_head % priv->tx_max, 0);
729+
else
730+
can_put_echo_skb(skb, ndev, 0, 0);
731+
732+
priv->tx_head++;
733733
}
734734

735735
/**

drivers/net/dsa/b53/b53_common.c

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1273,9 +1273,15 @@ static int b53_setup(struct dsa_switch *ds)
12731273
*/
12741274
ds->untag_vlan_aware_bridge_pvid = true;
12751275

1276-
/* Ageing time is set in seconds */
1277-
ds->ageing_time_min = 1 * 1000;
1278-
ds->ageing_time_max = AGE_TIME_MAX * 1000;
1276+
if (dev->chip_id == BCM53101_DEVICE_ID) {
1277+
/* BCM53101 uses 0.5 second increments */
1278+
ds->ageing_time_min = 1 * 500;
1279+
ds->ageing_time_max = AGE_TIME_MAX * 500;
1280+
} else {
1281+
/* Everything else uses 1 second increments */
1282+
ds->ageing_time_min = 1 * 1000;
1283+
ds->ageing_time_max = AGE_TIME_MAX * 1000;
1284+
}
12791285

12801286
ret = b53_reset_switch(dev);
12811287
if (ret) {
@@ -2559,7 +2565,10 @@ int b53_set_ageing_time(struct dsa_switch *ds, unsigned int msecs)
25592565
else
25602566
reg = B53_AGING_TIME_CONTROL;
25612567

2562-
atc = DIV_ROUND_CLOSEST(msecs, 1000);
2568+
if (dev->chip_id == BCM53101_DEVICE_ID)
2569+
atc = DIV_ROUND_CLOSEST(msecs, 500);
2570+
else
2571+
atc = DIV_ROUND_CLOSEST(msecs, 1000);
25632572

25642573
if (!is5325(dev) && !is5365(dev))
25652574
atc |= AGE_CHANGE;

drivers/net/ethernet/freescale/fec_main.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2363,7 +2363,8 @@ static void fec_enet_phy_reset_after_clk_enable(struct net_device *ndev)
23632363
*/
23642364
phy_dev = of_phy_find_device(fep->phy_node);
23652365
phy_reset_after_clk_enable(phy_dev);
2366-
put_device(&phy_dev->mdio.dev);
2366+
if (phy_dev)
2367+
put_device(&phy_dev->mdio.dev);
23672368
}
23682369
}
23692370

drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1561,6 +1561,7 @@ I40E_CHECK_CMD_LENGTH(i40e_aq_set_phy_config);
15611561
struct i40e_aq_set_mac_config {
15621562
__le16 max_frame_size;
15631563
u8 params;
1564+
#define I40E_AQ_SET_MAC_CONFIG_CRC_EN BIT(2)
15641565
u8 tx_timer_priority; /* bitmap */
15651566
__le16 tx_timer_value;
15661567
__le16 fc_refresh_threshold;

drivers/net/ethernet/intel/i40e/i40e_common.c

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1189,6 +1189,40 @@ int i40e_set_fc(struct i40e_hw *hw, u8 *aq_failures,
11891189
return status;
11901190
}
11911191

1192+
/**
1193+
* i40e_aq_set_mac_config - Configure MAC settings
1194+
* @hw: pointer to the hw struct
1195+
* @max_frame_size: Maximum Frame Size to be supported by the port
1196+
* @cmd_details: pointer to command details structure or NULL
1197+
*
1198+
* Set MAC configuration (0x0603). Note that max_frame_size must be greater
1199+
* than zero.
1200+
*
1201+
* Return: 0 on success, or a negative error code on failure.
1202+
*/
1203+
int i40e_aq_set_mac_config(struct i40e_hw *hw, u16 max_frame_size,
1204+
struct i40e_asq_cmd_details *cmd_details)
1205+
{
1206+
struct i40e_aq_set_mac_config *cmd;
1207+
struct libie_aq_desc desc;
1208+
1209+
cmd = libie_aq_raw(&desc);
1210+
1211+
if (max_frame_size == 0)
1212+
return -EINVAL;
1213+
1214+
i40e_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_set_mac_config);
1215+
1216+
cmd->max_frame_size = cpu_to_le16(max_frame_size);
1217+
cmd->params = I40E_AQ_SET_MAC_CONFIG_CRC_EN;
1218+
1219+
#define I40E_AQ_SET_MAC_CONFIG_FC_DEFAULT_THRESHOLD 0x7FFF
1220+
cmd->fc_refresh_threshold =
1221+
cpu_to_le16(I40E_AQ_SET_MAC_CONFIG_FC_DEFAULT_THRESHOLD);
1222+
1223+
return i40e_asq_send_command(hw, &desc, NULL, 0, cmd_details);
1224+
}
1225+
11921226
/**
11931227
* i40e_aq_clear_pxe_mode
11941228
* @hw: pointer to the hw struct

0 commit comments

Comments
 (0)