Skip to content

Commit 6439a0e

Browse files
committed
Merge tag 'net-6.17-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Pull networking fixes from Jakub Kicinski: "Including fixes from Bluetooth. Current release - fix to a fix: - usb: asix_devices: fix PHY address mask in MDIO bus initialization Current release - regressions: - Bluetooth: fixes for the split between BIS_LINK and PA_LINK - Revert "net: cadence: macb: sama7g5_emac: Remove USARIO CLKEN flag", breaks compatibility with some existing device tree blobs - dsa: b53: fix reserved register access in b53_fdb_dump() Current release - new code bugs: - sched: dualpi2: run probability update timer in BH to avoid deadlock - eth: libwx: fix the size in RSS hash key population - pse-pd: pd692x0: improve power budget error paths and handling Previous releases - regressions: - tls: fix handling of zero-length records on the rx_list - hsr: reject HSR frame if skb can't hold tag - bonding: fix negotiation flapping in 802.3ad passive mode Previous releases - always broken: - gso: forbid IPv6 TSO with extensions on devices with only IPV6_CSUM - sched: make cake_enqueue return NET_XMIT_CN when past buffer_limit, avoid packet drops with low buffer_limit, remove unnecessary WARN() - sched: fix backlog accounting after modifying config of a qdisc in the middle of the hierarchy - mptcp: improve handling of skb extension allocation failures - eth: mlx5: - fixes for the "HW Steering" flow management method - fixes for QoS and device buffer management" * tag 'net-6.17-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (81 commits) netfilter: nf_reject: don't leak dst refcount for loopback packets net/mlx5e: Preserve shared buffer capacity during headroom updates net/mlx5e: Query FW for buffer ownership net/mlx5: Restore missing scheduling node cleanup on vport enable failure net/mlx5: Fix QoS reference leak in vport enable error path net/mlx5: Destroy vport QoS element when no configuration remains net/mlx5e: Preserve tc-bw during parent changes net/mlx5: Remove default QoS group and attach vports directly to root TSAR net/mlx5: Base ECVF devlink port attrs from 0 net: pse-pd: pd692x0: Skip power budget configuration when undefined net: pse-pd: pd692x0: Fix power budget leak in manager setup error path Octeontx2-af: Skip overlap check for SPI field selftests: tls: add tests for zero-length records tls: fix handling of zero-length records on the rx_list net: airoha: ppe: Do not invalid PPE entries in case of SW hash collision selftests: bonding: add test for passive LACP mode bonding: send LACPDUs periodically in passive mode after receiving partner's LACPDU bonding: update LACP activity flag after setting lacp_active Revert "net: cadence: macb: sama7g5_emac: Remove USARIO CLKEN flag" ipv6: sr: Fix MAC comparison to be constant-time ...
2 parents 1c656b1 + 91a79b7 commit 6439a0e

Some content is hidden

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

92 files changed

+1434
-397
lines changed

Documentation/networking/mptcp-sysctl.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ add_addr_timeout - INTEGER (seconds)
1212
resent to an MPTCP peer that has not acknowledged a previous
1313
ADD_ADDR message.
1414

15+
Do not retransmit if set to 0.
16+
1517
The default value matches TCP_RTO_MAX. This is a per-namespace
1618
sysctl.
1719

MAINTAINERS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22174,7 +22174,7 @@ F: arch/s390/mm
2217422174

2217522175
S390 NETWORK DRIVERS
2217622176
M: Alexandra Winter <[email protected]>
22177-
M: Thorsten Winkler <twinkler@linux.ibm.com>
22177+
R: Aswin Karuvally <aswin@linux.ibm.com>
2217822178
2217922179
2218022180
S: Supported

drivers/bluetooth/btmtk.c

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -642,12 +642,7 @@ static int btmtk_usb_hci_wmt_sync(struct hci_dev *hdev,
642642
* WMT command.
643643
*/
644644
err = wait_on_bit_timeout(&data->flags, BTMTK_TX_WAIT_VND_EVT,
645-
TASK_INTERRUPTIBLE, HCI_INIT_TIMEOUT);
646-
if (err == -EINTR) {
647-
bt_dev_err(hdev, "Execution of wmt command interrupted");
648-
clear_bit(BTMTK_TX_WAIT_VND_EVT, &data->flags);
649-
goto err_free_wc;
650-
}
645+
TASK_UNINTERRUPTIBLE, HCI_INIT_TIMEOUT);
651646

652647
if (err) {
653648
bt_dev_err(hdev, "Execution of wmt command timed out");

drivers/bluetooth/btnxpuart.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -543,10 +543,10 @@ static int ps_setup(struct hci_dev *hdev)
543543
}
544544

545545
if (psdata->wakeup_source) {
546-
ret = devm_request_irq(&serdev->dev, psdata->irq_handler,
547-
ps_host_wakeup_irq_handler,
548-
IRQF_ONESHOT | IRQF_TRIGGER_FALLING,
549-
dev_name(&serdev->dev), nxpdev);
546+
ret = devm_request_threaded_irq(&serdev->dev, psdata->irq_handler,
547+
NULL, ps_host_wakeup_irq_handler,
548+
IRQF_ONESHOT,
549+
dev_name(&serdev->dev), nxpdev);
550550
if (ret)
551551
bt_dev_info(hdev, "error setting wakeup IRQ handler, ignoring\n");
552552
disable_irq(psdata->irq_handler);

drivers/net/bonding/bond_3ad.c

Lines changed: 49 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -95,13 +95,13 @@ static int ad_marker_send(struct port *port, struct bond_marker *marker);
9595
static void ad_mux_machine(struct port *port, bool *update_slave_arr);
9696
static void ad_rx_machine(struct lacpdu *lacpdu, struct port *port);
9797
static void ad_tx_machine(struct port *port);
98-
static void ad_periodic_machine(struct port *port, struct bond_params *bond_params);
98+
static void ad_periodic_machine(struct port *port);
9999
static void ad_port_selection_logic(struct port *port, bool *update_slave_arr);
100100
static void ad_agg_selection_logic(struct aggregator *aggregator,
101101
bool *update_slave_arr);
102102
static void ad_clear_agg(struct aggregator *aggregator);
103103
static void ad_initialize_agg(struct aggregator *aggregator);
104-
static void ad_initialize_port(struct port *port, int lacp_fast);
104+
static void ad_initialize_port(struct port *port, const struct bond_params *bond_params);
105105
static void ad_enable_collecting(struct port *port);
106106
static void ad_disable_distributing(struct port *port,
107107
bool *update_slave_arr);
@@ -1307,10 +1307,16 @@ static void ad_rx_machine(struct lacpdu *lacpdu, struct port *port)
13071307
* case of EXPIRED even if LINK_DOWN didn't arrive for
13081308
* the port.
13091309
*/
1310-
port->partner_oper.port_state &= ~LACP_STATE_SYNCHRONIZATION;
13111310
port->sm_vars &= ~AD_PORT_MATCHED;
1311+
/* Based on IEEE 8021AX-2014, Figure 6-18 - Receive
1312+
* machine state diagram, the statue should be
1313+
* Partner_Oper_Port_State.Synchronization = FALSE;
1314+
* Partner_Oper_Port_State.LACP_Timeout = Short Timeout;
1315+
* start current_while_timer(Short Timeout);
1316+
* Actor_Oper_Port_State.Expired = TRUE;
1317+
*/
1318+
port->partner_oper.port_state &= ~LACP_STATE_SYNCHRONIZATION;
13121319
port->partner_oper.port_state |= LACP_STATE_LACP_TIMEOUT;
1313-
port->partner_oper.port_state |= LACP_STATE_LACP_ACTIVITY;
13141320
port->sm_rx_timer_counter = __ad_timer_to_ticks(AD_CURRENT_WHILE_TIMER, (u16)(AD_SHORT_TIMEOUT));
13151321
port->actor_oper_port_state |= LACP_STATE_EXPIRED;
13161322
port->sm_vars |= AD_PORT_CHURNED;
@@ -1417,11 +1423,10 @@ static void ad_tx_machine(struct port *port)
14171423
/**
14181424
* ad_periodic_machine - handle a port's periodic state machine
14191425
* @port: the port we're looking at
1420-
* @bond_params: bond parameters we will use
14211426
*
14221427
* Turn ntt flag on priodically to perform periodic transmission of lacpdu's.
14231428
*/
1424-
static void ad_periodic_machine(struct port *port, struct bond_params *bond_params)
1429+
static void ad_periodic_machine(struct port *port)
14251430
{
14261431
periodic_states_t last_state;
14271432

@@ -1430,8 +1435,7 @@ static void ad_periodic_machine(struct port *port, struct bond_params *bond_para
14301435

14311436
/* check if port was reinitialized */
14321437
if (((port->sm_vars & AD_PORT_BEGIN) || !(port->sm_vars & AD_PORT_LACP_ENABLED) || !port->is_enabled) ||
1433-
(!(port->actor_oper_port_state & LACP_STATE_LACP_ACTIVITY) && !(port->partner_oper.port_state & LACP_STATE_LACP_ACTIVITY)) ||
1434-
!bond_params->lacp_active) {
1438+
(!(port->actor_oper_port_state & LACP_STATE_LACP_ACTIVITY) && !(port->partner_oper.port_state & LACP_STATE_LACP_ACTIVITY))) {
14351439
port->sm_periodic_state = AD_NO_PERIODIC;
14361440
}
14371441
/* check if state machine should change state */
@@ -1955,16 +1959,16 @@ static void ad_initialize_agg(struct aggregator *aggregator)
19551959
/**
19561960
* ad_initialize_port - initialize a given port's parameters
19571961
* @port: the port we're looking at
1958-
* @lacp_fast: boolean. whether fast periodic should be used
1962+
* @bond_params: bond parameters we will use
19591963
*/
1960-
static void ad_initialize_port(struct port *port, int lacp_fast)
1964+
static void ad_initialize_port(struct port *port, const struct bond_params *bond_params)
19611965
{
19621966
static const struct port_params tmpl = {
19631967
.system_priority = 0xffff,
19641968
.key = 1,
19651969
.port_number = 1,
19661970
.port_priority = 0xff,
1967-
.port_state = 1,
1971+
.port_state = 0,
19681972
};
19691973
static const struct lacpdu lacpdu = {
19701974
.subtype = 0x01,
@@ -1982,12 +1986,14 @@ static void ad_initialize_port(struct port *port, int lacp_fast)
19821986
port->actor_port_priority = 0xff;
19831987
port->actor_port_aggregator_identifier = 0;
19841988
port->ntt = false;
1985-
port->actor_admin_port_state = LACP_STATE_AGGREGATION |
1986-
LACP_STATE_LACP_ACTIVITY;
1987-
port->actor_oper_port_state = LACP_STATE_AGGREGATION |
1988-
LACP_STATE_LACP_ACTIVITY;
1989+
port->actor_admin_port_state = LACP_STATE_AGGREGATION;
1990+
port->actor_oper_port_state = LACP_STATE_AGGREGATION;
1991+
if (bond_params->lacp_active) {
1992+
port->actor_admin_port_state |= LACP_STATE_LACP_ACTIVITY;
1993+
port->actor_oper_port_state |= LACP_STATE_LACP_ACTIVITY;
1994+
}
19891995

1990-
if (lacp_fast)
1996+
if (bond_params->lacp_fast)
19911997
port->actor_oper_port_state |= LACP_STATE_LACP_TIMEOUT;
19921998

19931999
memcpy(&port->partner_admin, &tmpl, sizeof(tmpl));
@@ -2201,7 +2207,7 @@ void bond_3ad_bind_slave(struct slave *slave)
22012207
/* port initialization */
22022208
port = &(SLAVE_AD_INFO(slave)->port);
22032209

2204-
ad_initialize_port(port, bond->params.lacp_fast);
2210+
ad_initialize_port(port, &bond->params);
22052211

22062212
port->slave = slave;
22072213
port->actor_port_number = SLAVE_AD_INFO(slave)->id;
@@ -2513,7 +2519,7 @@ void bond_3ad_state_machine_handler(struct work_struct *work)
25132519
}
25142520

25152521
ad_rx_machine(NULL, port);
2516-
ad_periodic_machine(port, &bond->params);
2522+
ad_periodic_machine(port);
25172523
ad_port_selection_logic(port, &update_slave_arr);
25182524
ad_mux_machine(port, &update_slave_arr);
25192525
ad_tx_machine(port);
@@ -2883,6 +2889,31 @@ void bond_3ad_update_lacp_rate(struct bonding *bond)
28832889
spin_unlock_bh(&bond->mode_lock);
28842890
}
28852891

2892+
/**
2893+
* bond_3ad_update_lacp_active - change the lacp active
2894+
* @bond: bonding struct
2895+
*
2896+
* Update actor_oper_port_state when lacp_active is modified.
2897+
*/
2898+
void bond_3ad_update_lacp_active(struct bonding *bond)
2899+
{
2900+
struct port *port = NULL;
2901+
struct list_head *iter;
2902+
struct slave *slave;
2903+
int lacp_active;
2904+
2905+
lacp_active = bond->params.lacp_active;
2906+
spin_lock_bh(&bond->mode_lock);
2907+
bond_for_each_slave(bond, slave, iter) {
2908+
port = &(SLAVE_AD_INFO(slave)->port);
2909+
if (lacp_active)
2910+
port->actor_oper_port_state |= LACP_STATE_LACP_ACTIVITY;
2911+
else
2912+
port->actor_oper_port_state &= ~LACP_STATE_LACP_ACTIVITY;
2913+
}
2914+
spin_unlock_bh(&bond->mode_lock);
2915+
}
2916+
28862917
size_t bond_3ad_stats_size(void)
28872918
{
28882919
return nla_total_size_64bit(sizeof(u64)) + /* BOND_3AD_STAT_LACPDU_RX */

drivers/net/bonding/bond_options.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1660,6 +1660,7 @@ static int bond_option_lacp_active_set(struct bonding *bond,
16601660
netdev_dbg(bond->dev, "Setting LACP active to %s (%llu)\n",
16611661
newval->string, newval->value);
16621662
bond->params.lacp_active = newval->value;
1663+
bond_3ad_update_lacp_active(bond);
16631664

16641665
return 0;
16651666
}

drivers/net/dsa/b53/b53_common.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2078,7 +2078,7 @@ int b53_fdb_dump(struct dsa_switch *ds, int port,
20782078

20792079
/* Start search operation */
20802080
reg = ARL_SRCH_STDN;
2081-
b53_write8(priv, offset, B53_ARL_SRCH_CTL, reg);
2081+
b53_write8(priv, B53_ARLIO_PAGE, offset, reg);
20822082

20832083
do {
20842084
ret = b53_arl_search_wait(priv);

drivers/net/dsa/microchip/ksz_common.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2457,6 +2457,12 @@ static void ksz_update_port_member(struct ksz_device *dev, int port)
24572457
dev->dev_ops->cfg_port_member(dev, i, val | cpu_port);
24582458
}
24592459

2460+
/* HSR ports are setup once so need to use the assigned membership
2461+
* when the port is enabled.
2462+
*/
2463+
if (!port_member && p->stp_state == BR_STATE_FORWARDING &&
2464+
(dev->hsr_ports & BIT(port)))
2465+
port_member = dev->hsr_ports;
24602466
dev->dev_ops->cfg_port_member(dev, port, port_member | cpu_port);
24612467
}
24622468

drivers/net/ethernet/airoha/airoha_ppe.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -736,10 +736,8 @@ static void airoha_ppe_foe_insert_entry(struct airoha_ppe *ppe,
736736
continue;
737737
}
738738

739-
if (commit_done || !airoha_ppe_foe_compare_entry(e, hwe)) {
740-
e->hash = 0xffff;
739+
if (!airoha_ppe_foe_compare_entry(e, hwe))
741740
continue;
742-
}
743741

744742
airoha_ppe_foe_commit_entry(ppe, &e->data, hash);
745743
commit_done = true;

drivers/net/ethernet/broadcom/bnxt/bnxt.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5332,7 +5332,7 @@ static void bnxt_free_ntp_fltrs(struct bnxt *bp, bool all)
53325332
{
53335333
int i;
53345334

5335-
netdev_assert_locked(bp->dev);
5335+
netdev_assert_locked_or_invisible(bp->dev);
53365336

53375337
/* Under netdev instance lock and all our NAPIs have been disabled.
53385338
* It's safe to delete the hash table.

0 commit comments

Comments
 (0)