Skip to content

Commit 1f87478

Browse files
committed
Merge tag 'net-6.7-rc9' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Pull networking fixes from Jakub Kicinski: "Including fixes from wireless and netfilter. We haven't accumulated much over the break. If it wasn't for the uninterrupted stream of fixes for Intel drivers this PR would be very slim. There was a handful of user reports, however, either they stood out because of the lower traffic or users have had more time to test over the break. The ones which are v6.7-relevant should be wrapped up. Current release - regressions: - Revert "net: ipv6/addrconf: clamp preferred_lft to the minimum required", it caused issues on networks where routers send prefixes with preferred_lft=0 - wifi: - iwlwifi: pcie: don't synchronize IRQs from IRQ, prevent deadlock - mac80211: fix re-adding debugfs entries during reconfiguration Current release - new code bugs: - tcp: print AO/MD5 messages only if there are any keys Previous releases - regressions: - virtio_net: fix missing dma unmap for resize, prevent OOM Previous releases - always broken: - mptcp: prevent tcp diag from closing listener subflows - nf_tables: - set transport header offset for egress hook, fix IPv4 mangling - skip set commit for deleted/destroyed sets, avoid double deactivation - nat: make sure action is set for all ct states, fix openvswitch matching on ICMP packets in related state - eth: mlxbf_gige: fix receive hang under heavy traffic - eth: r8169: fix PCI error on system resume for RTL8168FP - net: add missing getsockopt(SO_TIMESTAMPING_NEW) and cmsg handling" * tag 'net-6.7-rc9' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (52 commits) net/tcp: Only produce AO/MD5 logs if there are any keys net: Implement missing SO_TIMESTAMPING_NEW cmsg support bnxt_en: Remove mis-applied code from bnxt_cfg_ntp_filters() net: ravb: Wait for operating mode to be applied asix: Add check for usbnet_get_endpoints octeontx2-af: Re-enable MAC TX in otx2_stop processing octeontx2-af: Always configure NIX TX link credits based on max frame size net/smc: fix invalid link access in dumping SMC-R connections net/qla3xxx: fix potential memleak in ql_alloc_buffer_queues virtio_net: fix missing dma unmap for resize igc: Fix hicredit calculation ice: fix Get link status data length i40e: Restore VF MSI-X state during PCI reset i40e: fix use-after-free in i40e_aqc_add_filters() net: Save and restore msg_namelen in sock_sendmsg netfilter: nft_immediate: drop chain reference counter on error netfilter: nf_nat: fix action not being set for all ct states net: bcmgenet: Fix FCS generation for fragmented skbuffs mptcp: prevent tcp diag from closing listener subflows MAINTAINERS: add Geliang as reviewer for MPTCP ...
2 parents a476aae + 4c8530d commit 1f87478

File tree

53 files changed

+373
-260
lines changed

Some content is hidden

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

53 files changed

+373
-260
lines changed

Documentation/networking/ip-sysctl.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2511,7 +2511,7 @@ temp_valid_lft - INTEGER
25112511
temp_prefered_lft - INTEGER
25122512
Preferred lifetime (in seconds) for temporary addresses. If
25132513
temp_prefered_lft is less than the minimum required lifetime (typically
2514-
5 seconds), the preferred lifetime is the minimum required. If
2514+
5 seconds), temporary addresses will not be created. If
25152515
temp_prefered_lft is greater than temp_valid_lft, the preferred lifetime
25162516
is temp_valid_lft.
25172517

MAINTAINERS

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4127,7 +4127,6 @@ M: Franky Lin <franky.lin@broadcom.com>
41274127
M: Hante Meuleman <hante.meuleman@broadcom.com>
41284128
L: linux-wireless@vger.kernel.org
41294129
L: brcm80211-dev-list.pdl@broadcom.com
4130-
L: SHA-cyfmac-dev-list@infineon.com
41314130
S: Supported
41324131
F: drivers/net/wireless/broadcom/brcm80211/
41334132

@@ -12824,7 +12823,7 @@ S: Maintained
1282412823
F: drivers/net/ethernet/marvell/mvneta.*
1282512824

1282612825
MARVELL MVPP2 ETHERNET DRIVER
12827-
M: Marcin Wojtas <mw@semihalf.com>
12826+
M: Marcin Wojtas <marcin.s.wojtas@gmail.com>
1282812827
M: Russell King <linux@armlinux.org.uk>
1282912828
L: netdev@vger.kernel.org
1283012829
S: Maintained
@@ -15087,6 +15086,7 @@ K: \bmdo_
1508715086
NETWORKING [MPTCP]
1508815087
M: Matthieu Baerts <matttbe@kernel.org>
1508915088
M: Mat Martineau <martineau@kernel.org>
15089+
R: Geliang Tang <geliang.tang@linux.dev>
1509015090
L: netdev@vger.kernel.org
1509115091
L: mptcp@lists.linux.dev
1509215092
S: Maintained
@@ -15434,7 +15434,7 @@ F: Documentation/devicetree/bindings/net/bluetooth/nxp,88w8987-bt.yaml
1543415434
F: drivers/bluetooth/btnxpuart.c
1543515435

1543615436
NXP C45 TJA11XX PHY DRIVER
15437-
M: Radu Pirea <radu-nicolae.pirea@oss.nxp.com>
15437+
M: Andrei Botila <andrei.botila@oss.nxp.com>
1543815438
L: netdev@vger.kernel.org
1543915439
S: Maintained
1544015440
F: drivers/net/phy/nxp-c45-tja11xx.c

drivers/connector/cn_proc.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,9 @@ static inline void send_msg(struct cn_msg *msg)
108108
filter_data[1] = 0;
109109
}
110110

111-
cn_netlink_send_mult(msg, msg->len, 0, CN_IDX_PROC, GFP_NOWAIT,
112-
cn_filter, (void *)filter_data);
111+
if (cn_netlink_send_mult(msg, msg->len, 0, CN_IDX_PROC, GFP_NOWAIT,
112+
cn_filter, (void *)filter_data) == -ESRCH)
113+
atomic_set(&proc_event_num_listeners, 0);
113114

114115
local_unlock(&local_event.lock);
115116
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12093,6 +12093,8 @@ static void bnxt_sp_task(struct work_struct *work)
1209312093
bnxt_cfg_ntp_filters(bp);
1209412094
if (test_and_clear_bit(BNXT_HWRM_EXEC_FWD_REQ_SP_EVENT, &bp->sp_event))
1209512095
bnxt_hwrm_exec_fwd_req(bp);
12096+
if (test_and_clear_bit(BNXT_HWRM_PF_UNLOAD_SP_EVENT, &bp->sp_event))
12097+
netdev_info(bp->dev, "Receive PF driver unload event!\n");
1209612098
if (test_and_clear_bit(BNXT_PERIODIC_STATS_SP_EVENT, &bp->sp_event)) {
1209712099
bnxt_hwrm_port_qstats(bp, 0);
1209812100
bnxt_hwrm_port_qstats_ext(bp, 0);
@@ -13093,8 +13095,6 @@ static void bnxt_cfg_ntp_filters(struct bnxt *bp)
1309313095
}
1309413096
}
1309513097
}
13096-
if (test_and_clear_bit(BNXT_HWRM_PF_UNLOAD_SP_EVENT, &bp->sp_event))
13097-
netdev_info(bp->dev, "Receive PF driver unload event!\n");
1309813098
}
1309913099

1310013100
#else

drivers/net/ethernet/broadcom/genet/bcmgenet.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2132,8 +2132,10 @@ static netdev_tx_t bcmgenet_xmit(struct sk_buff *skb, struct net_device *dev)
21322132
/* Note: if we ever change from DMA_TX_APPEND_CRC below we
21332133
* will need to restore software padding of "runt" packets
21342134
*/
2135+
len_stat |= DMA_TX_APPEND_CRC;
2136+
21352137
if (!i) {
2136-
len_stat |= DMA_TX_APPEND_CRC | DMA_SOP;
2138+
len_stat |= DMA_SOP;
21372139
if (skb->ip_summed == CHECKSUM_PARTIAL)
21382140
len_stat |= DMA_TX_DO_CSUM;
21392141
}

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,12 +107,18 @@ static struct workqueue_struct *i40e_wq;
107107
static void netdev_hw_addr_refcnt(struct i40e_mac_filter *f,
108108
struct net_device *netdev, int delta)
109109
{
110+
struct netdev_hw_addr_list *ha_list;
110111
struct netdev_hw_addr *ha;
111112

112113
if (!f || !netdev)
113114
return;
114115

115-
netdev_for_each_mc_addr(ha, netdev) {
116+
if (is_unicast_ether_addr(f->macaddr) || is_link_local_ether_addr(f->macaddr))
117+
ha_list = &netdev->uc;
118+
else
119+
ha_list = &netdev->mc;
120+
121+
netdev_hw_addr_list_for_each(ha, ha_list) {
116122
if (ether_addr_equal(ha->addr, f->macaddr)) {
117123
ha->refcount += delta;
118124
if (ha->refcount <= 0)
@@ -16512,6 +16518,9 @@ static void i40e_pci_error_reset_done(struct pci_dev *pdev)
1651216518
return;
1651316519

1651416520
i40e_reset_and_rebuild(pf, false, false);
16521+
#ifdef CONFIG_PCI_IOV
16522+
i40e_restore_all_vfs_msi_state(pdev);
16523+
#endif /* CONFIG_PCI_IOV */
1651516524
}
1651616525

1651716526
/**

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

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,32 @@ void i40e_vc_notify_reset(struct i40e_pf *pf)
154154
(u8 *)&pfe, sizeof(struct virtchnl_pf_event));
155155
}
156156

157+
#ifdef CONFIG_PCI_IOV
158+
void i40e_restore_all_vfs_msi_state(struct pci_dev *pdev)
159+
{
160+
u16 vf_id;
161+
u16 pos;
162+
163+
/* Continue only if this is a PF */
164+
if (!pdev->is_physfn)
165+
return;
166+
167+
if (!pci_num_vf(pdev))
168+
return;
169+
170+
pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_SRIOV);
171+
if (pos) {
172+
struct pci_dev *vf_dev = NULL;
173+
174+
pci_read_config_word(pdev, pos + PCI_SRIOV_VF_DID, &vf_id);
175+
while ((vf_dev = pci_get_device(pdev->vendor, vf_id, vf_dev))) {
176+
if (vf_dev->is_virtfn && vf_dev->physfn == pdev)
177+
pci_restore_msi_state(vf_dev);
178+
}
179+
}
180+
}
181+
#endif /* CONFIG_PCI_IOV */
182+
157183
/**
158184
* i40e_vc_notify_vf_reset
159185
* @vf: pointer to the VF structure
@@ -3521,16 +3547,16 @@ static int i40e_validate_cloud_filter(struct i40e_vf *vf,
35213547
bool found = false;
35223548
int bkt;
35233549

3524-
if (!tc_filter->action) {
3550+
if (tc_filter->action != VIRTCHNL_ACTION_TC_REDIRECT) {
35253551
dev_info(&pf->pdev->dev,
3526-
"VF %d: Currently ADq doesn't support Drop Action\n",
3527-
vf->vf_id);
3552+
"VF %d: ADQ doesn't support this action (%d)\n",
3553+
vf->vf_id, tc_filter->action);
35283554
goto err;
35293555
}
35303556

35313557
/* action_meta is TC number here to which the filter is applied */
35323558
if (!tc_filter->action_meta ||
3533-
tc_filter->action_meta > I40E_MAX_VF_VSI) {
3559+
tc_filter->action_meta > vf->num_tc) {
35343560
dev_info(&pf->pdev->dev, "VF %d: Invalid TC number %u\n",
35353561
vf->vf_id, tc_filter->action_meta);
35363562
goto err;

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,9 @@ int i40e_ndo_set_vf_spoofchk(struct net_device *netdev, int vf_id, bool enable);
137137

138138
void i40e_vc_notify_link_state(struct i40e_pf *pf);
139139
void i40e_vc_notify_reset(struct i40e_pf *pf);
140+
#ifdef CONFIG_PCI_IOV
141+
void i40e_restore_all_vfs_msi_state(struct pci_dev *pdev);
142+
#endif /* CONFIG_PCI_IOV */
140143
int i40e_get_vf_stats(struct net_device *netdev, int vf_id,
141144
struct ifla_vf_stats *vf_stats);
142145

drivers/net/ethernet/intel/ice/ice_adminq_cmd.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1359,8 +1359,9 @@ struct ice_aqc_get_link_status_data {
13591359
u8 lp_flowcontrol;
13601360
#define ICE_AQ_LINK_LP_PAUSE_ADV BIT(0)
13611361
#define ICE_AQ_LINK_LP_ASM_DIR_ADV BIT(1)
1362+
u8 reserved5[5];
13621363
#define ICE_AQC_LS_DATA_SIZE_V2 \
1363-
offsetofend(struct ice_aqc_get_link_status_data, lp_flowcontrol)
1364+
offsetofend(struct ice_aqc_get_link_status_data, reserved5)
13641365
} __packed;
13651366

13661367
/* Set event mask command (direct 0x0613) */

drivers/net/ethernet/intel/ice/ice_common.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5332,7 +5332,6 @@ ice_aq_get_cgu_dpll_status(struct ice_hw *hw, u8 dpll_num, u8 *ref_state,
53325332
u8 *eec_mode)
53335333
{
53345334
struct ice_aqc_get_cgu_dpll_status *cmd;
5335-
const s64 nsec_per_psec = 1000LL;
53365335
struct ice_aq_desc desc;
53375336
int status;
53385337

@@ -5348,8 +5347,7 @@ ice_aq_get_cgu_dpll_status(struct ice_hw *hw, u8 dpll_num, u8 *ref_state,
53485347
*phase_offset = le32_to_cpu(cmd->phase_offset_h);
53495348
*phase_offset <<= 32;
53505349
*phase_offset += le32_to_cpu(cmd->phase_offset_l);
5351-
*phase_offset = div64_s64(sign_extend64(*phase_offset, 47),
5352-
nsec_per_psec);
5350+
*phase_offset = sign_extend64(*phase_offset, 47);
53535351
*eec_mode = cmd->eec_mode;
53545352
}
53555353

0 commit comments

Comments
 (0)