Skip to content

Commit 5ca26d6

Browse files
committed
Merge tag 'net-6.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Pull networking fixes from Jakub Kicinski: "Including fixes from wireless and netfilter. The notable fixes here are the EEE fix which restores boot for many embedded platforms (real and QEMU); WiFi warning suppression and the ICE Kconfig cleanup. Current release - regressions: - phy: multiple fixes for EEE rework - wifi: wext: warn about usage only once - wifi: ath11k: allow system suspend to survive ath11k Current release - new code bugs: - mlx5: Fix memory leak in IPsec RoCE creation - ibmvnic: assign XPS map to correct queue index Previous releases - regressions: - netfilter: ip6t_rpfilter: Fix regression with VRF interfaces - netfilter: ctnetlink: make event listener tracking global - nf_tables: allow to fetch set elements when table has an owner - mlx5: - fix skb leak while fifo resync and push - fix possible ptp queue fifo use-after-free Previous releases - always broken: - sched: fix action bind logic - ptp: vclock: use mutex to fix "sleep on atomic" bug if driver also uses a mutex - netfilter: conntrack: fix rmmod double-free race - netfilter: xt_length: use skb len to match in length_mt6, avoid issues with BIG TCP Misc: - ice: remove unnecessary CONFIG_ICE_GNSS - mlx5e: remove hairpin write debugfs files - sched: act_api: move TCA_EXT_WARN_MSG to the correct hierarchy" * tag 'net-6.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (53 commits) tcp: tcp_check_req() can be called from process context net: phy: c45: fix network interface initialization failures on xtensa, arm:cubieboard xen-netback: remove unused variables pending_idx and index net/sched: act_api: move TCA_EXT_WARN_MSG to the correct hierarchy net: dsa: ocelot_ext: remove unnecessary phylink.h include net: mscc: ocelot: fix duplicate driver name error net: dsa: felix: fix internal MDIO controller resource length net: dsa: seville: ignore mscc-miim read errors from Lynx PCS net/sched: act_sample: fix action bind logic net/sched: act_mpls: fix action bind logic net/sched: act_pedit: fix action bind logic wifi: wext: warn about usage only once wifi: mt76: usb: fix use-after-free in mt76u_free_rx_queue qede: avoid uninitialized entries in coal_entry array nfc: fix memory leak of se_io context in nfc_genl_se_io ice: remove unnecessary CONFIG_ICE_GNSS net/sched: cls_api: Move call to tcf_exts_miss_cookie_base_destroy() ibmvnic: Assign XPS map to correct queue index docs: net: fix inaccuracies in msg_zerocopy.rst tools: net: add __pycache__ to gitignore ...
2 parents 9828184 + 580f98c commit 5ca26d6

Some content is hidden

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

72 files changed

+546
-318
lines changed

Documentation/netlink/specs/netdev.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ definitions:
2828
-
2929
name: hw-offload
3030
doc:
31-
This feature informs if netdev supports XDP hw oflloading.
31+
This feature informs if netdev supports XDP hw offloading.
3232
-
3333
name: rx-sg
3434
doc:

Documentation/networking/msg_zerocopy.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ Opportunity and Caveats
1515

1616
Copying large buffers between user process and kernel can be
1717
expensive. Linux supports various interfaces that eschew copying,
18-
such as sendpage and splice. The MSG_ZEROCOPY flag extends the
18+
such as sendfile and splice. The MSG_ZEROCOPY flag extends the
1919
underlying copy avoidance mechanism to common socket send calls.
2020

2121
Copy avoidance is not a free lunch. As implemented, with page pinning,
@@ -83,8 +83,8 @@ Pass the new flag.
8383
ret = send(fd, buf, sizeof(buf), MSG_ZEROCOPY);
8484

8585
A zerocopy failure will return -1 with errno ENOBUFS. This happens if
86-
the socket option was not set, the socket exceeds its optmem limit or
87-
the user exceeds its ulimit on locked pages.
86+
the socket exceeds its optmem limit or the user exceeds their ulimit on
87+
locked pages.
8888

8989

9090
Mixing copy avoidance and copying

drivers/mfd/ocelot-core.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ static const struct mfd_cell vsc7512_devs[] = {
177177
.num_resources = ARRAY_SIZE(vsc7512_miim1_resources),
178178
.resources = vsc7512_miim1_resources,
179179
}, {
180-
.name = "ocelot-switch",
180+
.name = "ocelot-ext-switch",
181181
.of_compatible = "mscc,vsc7512-switch",
182182
.num_resources = ARRAY_SIZE(vsc7512_switch_resources),
183183
.resources = vsc7512_switch_resources,

drivers/net/dsa/ocelot/felix_vsc9959.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -554,7 +554,7 @@ static const char * const vsc9959_resource_names[TARGET_MAX] = {
554554
* SGMII/QSGMII MAC PCS can be found.
555555
*/
556556
static const struct resource vsc9959_imdio_res =
557-
DEFINE_RES_MEM_NAMED(0x8030, 0x8040, "imdio");
557+
DEFINE_RES_MEM_NAMED(0x8030, 0x10, "imdio");
558558

559559
static const struct reg_field vsc9959_regfields[REGFIELD_MAX] = {
560560
[ANA_ADVLEARN_VLAN_CHK] = REG_FIELD(ANA_ADVLEARN, 6, 6),

drivers/net/dsa/ocelot/ocelot_ext.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
*/
55

66
#include <linux/mfd/ocelot.h>
7-
#include <linux/phylink.h>
87
#include <linux/platform_device.h>
98
#include <linux/regmap.h>
109
#include <soc/mscc/ocelot.h>
@@ -149,7 +148,7 @@ MODULE_DEVICE_TABLE(of, ocelot_ext_switch_of_match);
149148

150149
static struct platform_driver ocelot_ext_switch_driver = {
151150
.driver = {
152-
.name = "ocelot-switch",
151+
.name = "ocelot-ext-switch",
153152
.of_match_table = of_match_ptr(ocelot_ext_switch_of_match),
154153
},
155154
.probe = ocelot_ext_probe,

drivers/net/dsa/ocelot/seville_vsc9953.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -893,8 +893,8 @@ static int vsc9953_mdio_bus_alloc(struct ocelot *ocelot)
893893

894894
rc = mscc_miim_setup(dev, &bus, "VSC9953 internal MDIO bus",
895895
ocelot->targets[GCB],
896-
ocelot->map[GCB][GCB_MIIM_MII_STATUS & REG_MASK]);
897-
896+
ocelot->map[GCB][GCB_MIIM_MII_STATUS & REG_MASK],
897+
true);
898898
if (rc) {
899899
dev_err(dev, "failed to setup MDIO bus\n");
900900
return rc;

drivers/net/ethernet/ibm/ibmvnic.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -296,10 +296,10 @@ static void ibmvnic_set_affinity(struct ibmvnic_adapter *adapter)
296296

297297
rc = __netif_set_xps_queue(adapter->netdev,
298298
cpumask_bits(queue->affinity_mask),
299-
i, XPS_CPUS);
299+
i_txqs - 1, XPS_CPUS);
300300
if (rc)
301301
netdev_warn(adapter->netdev, "%s: Set XPS on queue %d failed, rc = %d.\n",
302-
__func__, i, rc);
302+
__func__, i_txqs - 1, rc);
303303
}
304304

305305
out:

drivers/net/ethernet/intel/Kconfig

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,7 @@ config ICE
296296
default n
297297
depends on PCI_MSI
298298
depends on PTP_1588_CLOCK_OPTIONAL
299+
depends on GNSS || GNSS = n
299300
select AUXILIARY_BUS
300301
select DIMLIB
301302
select NET_DEVLINK
@@ -337,9 +338,6 @@ config ICE_HWTS
337338
the PTP clock driver precise cross-timestamp ioctl
338339
(PTP_SYS_OFFSET_PRECISE).
339340

340-
config ICE_GNSS
341-
def_bool GNSS = y || GNSS = ICE
342-
343341
config FM10K
344342
tristate "Intel(R) FM10000 Ethernet Switch Host Interface Support"
345343
default n

drivers/net/ethernet/intel/ice/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,4 @@ ice-$(CONFIG_DCB) += ice_dcb.o ice_dcb_nl.o ice_dcb_lib.o
4747
ice-$(CONFIG_RFS_ACCEL) += ice_arfs.o
4848
ice-$(CONFIG_XDP_SOCKETS) += ice_xsk.o
4949
ice-$(CONFIG_ICE_SWITCHDEV) += ice_eswitch.o
50-
ice-$(CONFIG_ICE_GNSS) += ice_gnss.o
50+
ice-$(CONFIG_GNSS) += ice_gnss.o

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ struct gnss_serial {
4545
struct list_head queue;
4646
};
4747

48-
#if IS_ENABLED(CONFIG_ICE_GNSS)
48+
#if IS_ENABLED(CONFIG_GNSS)
4949
void ice_gnss_init(struct ice_pf *pf);
5050
void ice_gnss_exit(struct ice_pf *pf);
5151
bool ice_gnss_is_gps_present(struct ice_hw *hw);
@@ -56,5 +56,5 @@ static inline bool ice_gnss_is_gps_present(struct ice_hw *hw)
5656
{
5757
return false;
5858
}
59-
#endif /* IS_ENABLED(CONFIG_ICE_GNSS) */
59+
#endif /* IS_ENABLED(CONFIG_GNSS) */
6060
#endif /* _ICE_GNSS_H_ */

drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -793,7 +793,7 @@ static int otx2_prepare_ipv6_flow(struct ethtool_rx_flow_spec *fsp,
793793

794794
/* NPC profile doesn't extract AH/ESP header fields */
795795
if ((ah_esp_mask->spi & ah_esp_hdr->spi) ||
796-
(ah_esp_mask->tclass & ah_esp_mask->tclass))
796+
(ah_esp_mask->tclass & ah_esp_hdr->tclass))
797797
return -EOPNOTSUPP;
798798

799799
if (flow_type == AH_V6_FLOW)

drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c

Lines changed: 57 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include <net/tso.h>
1111
#include <linux/bpf.h>
1212
#include <linux/bpf_trace.h>
13+
#include <net/ip6_checksum.h>
1314

1415
#include "otx2_reg.h"
1516
#include "otx2_common.h"
@@ -699,7 +700,7 @@ static void otx2_sqe_add_ext(struct otx2_nic *pfvf, struct otx2_snd_queue *sq,
699700

700701
static void otx2_sqe_add_mem(struct otx2_snd_queue *sq, int *offset,
701702
int alg, u64 iova, int ptp_offset,
702-
u64 base_ns, int udp_csum)
703+
u64 base_ns, bool udp_csum_crt)
703704
{
704705
struct nix_sqe_mem_s *mem;
705706

@@ -711,7 +712,7 @@ static void otx2_sqe_add_mem(struct otx2_snd_queue *sq, int *offset,
711712

712713
if (ptp_offset) {
713714
mem->start_offset = ptp_offset;
714-
mem->udp_csum_crt = udp_csum;
715+
mem->udp_csum_crt = !!udp_csum_crt;
715716
mem->base_ns = base_ns;
716717
mem->step_type = 1;
717718
}
@@ -986,10 +987,11 @@ static bool otx2_validate_network_transport(struct sk_buff *skb)
986987
return false;
987988
}
988989

989-
static bool otx2_ptp_is_sync(struct sk_buff *skb, int *offset, int *udp_csum)
990+
static bool otx2_ptp_is_sync(struct sk_buff *skb, int *offset, bool *udp_csum_crt)
990991
{
991992
struct ethhdr *eth = (struct ethhdr *)(skb->data);
992993
u16 nix_offload_hlen = 0, inner_vhlen = 0;
994+
bool udp_hdr_present = false, is_sync;
993995
u8 *data = skb->data, *msgtype;
994996
__be16 proto = eth->h_proto;
995997
int network_depth = 0;
@@ -1029,45 +1031,81 @@ static bool otx2_ptp_is_sync(struct sk_buff *skb, int *offset, int *udp_csum)
10291031
if (!otx2_validate_network_transport(skb))
10301032
return false;
10311033

1032-
*udp_csum = 1;
10331034
*offset = nix_offload_hlen + skb_transport_offset(skb) +
10341035
sizeof(struct udphdr);
1036+
udp_hdr_present = true;
1037+
10351038
}
10361039

10371040
msgtype = data + *offset;
1038-
10391041
/* Check PTP messageId is SYNC or not */
1040-
return (*msgtype & 0xf) == 0;
1042+
is_sync = !(*msgtype & 0xf);
1043+
if (is_sync)
1044+
*udp_csum_crt = udp_hdr_present;
1045+
else
1046+
*offset = 0;
1047+
1048+
return is_sync;
10411049
}
10421050

10431051
static void otx2_set_txtstamp(struct otx2_nic *pfvf, struct sk_buff *skb,
10441052
struct otx2_snd_queue *sq, int *offset)
10451053
{
1054+
struct ethhdr *eth = (struct ethhdr *)(skb->data);
10461055
struct ptpv2_tstamp *origin_tstamp;
1047-
int ptp_offset = 0, udp_csum = 0;
1056+
bool udp_csum_crt = false;
1057+
unsigned int udphoff;
10481058
struct timespec64 ts;
1059+
int ptp_offset = 0;
1060+
__wsum skb_csum;
10491061
u64 iova;
10501062

10511063
if (unlikely(!skb_shinfo(skb)->gso_size &&
10521064
(skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP))) {
1053-
if (unlikely(pfvf->flags & OTX2_FLAG_PTP_ONESTEP_SYNC)) {
1054-
if (otx2_ptp_is_sync(skb, &ptp_offset, &udp_csum)) {
1055-
origin_tstamp = (struct ptpv2_tstamp *)
1056-
((u8 *)skb->data + ptp_offset +
1057-
PTP_SYNC_SEC_OFFSET);
1058-
ts = ns_to_timespec64(pfvf->ptp->tstamp);
1059-
origin_tstamp->seconds_msb = htons((ts.tv_sec >> 32) & 0xffff);
1060-
origin_tstamp->seconds_lsb = htonl(ts.tv_sec & 0xffffffff);
1061-
origin_tstamp->nanoseconds = htonl(ts.tv_nsec);
1062-
/* Point to correction field in PTP packet */
1063-
ptp_offset += 8;
1065+
if (unlikely(pfvf->flags & OTX2_FLAG_PTP_ONESTEP_SYNC &&
1066+
otx2_ptp_is_sync(skb, &ptp_offset, &udp_csum_crt))) {
1067+
origin_tstamp = (struct ptpv2_tstamp *)
1068+
((u8 *)skb->data + ptp_offset +
1069+
PTP_SYNC_SEC_OFFSET);
1070+
ts = ns_to_timespec64(pfvf->ptp->tstamp);
1071+
origin_tstamp->seconds_msb = htons((ts.tv_sec >> 32) & 0xffff);
1072+
origin_tstamp->seconds_lsb = htonl(ts.tv_sec & 0xffffffff);
1073+
origin_tstamp->nanoseconds = htonl(ts.tv_nsec);
1074+
/* Point to correction field in PTP packet */
1075+
ptp_offset += 8;
1076+
1077+
/* When user disables hw checksum, stack calculates the csum,
1078+
* but it does not cover ptp timestamp which is added later.
1079+
* Recalculate the checksum manually considering the timestamp.
1080+
*/
1081+
if (udp_csum_crt) {
1082+
struct udphdr *uh = udp_hdr(skb);
1083+
1084+
if (skb->ip_summed != CHECKSUM_PARTIAL && uh->check != 0) {
1085+
udphoff = skb_transport_offset(skb);
1086+
uh->check = 0;
1087+
skb_csum = skb_checksum(skb, udphoff, skb->len - udphoff,
1088+
0);
1089+
if (ntohs(eth->h_proto) == ETH_P_IPV6)
1090+
uh->check = csum_ipv6_magic(&ipv6_hdr(skb)->saddr,
1091+
&ipv6_hdr(skb)->daddr,
1092+
skb->len - udphoff,
1093+
ipv6_hdr(skb)->nexthdr,
1094+
skb_csum);
1095+
else
1096+
uh->check = csum_tcpudp_magic(ip_hdr(skb)->saddr,
1097+
ip_hdr(skb)->daddr,
1098+
skb->len - udphoff,
1099+
IPPROTO_UDP,
1100+
skb_csum);
1101+
}
10641102
}
10651103
} else {
10661104
skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;
10671105
}
10681106
iova = sq->timestamps->iova + (sq->head * sizeof(u64));
10691107
otx2_sqe_add_mem(sq, offset, NIX_SENDMEMALG_E_SETTSTMP, iova,
1070-
ptp_offset, pfvf->ptp->base_ns, udp_csum);
1108+
ptp_offset, pfvf->ptp->base_ns, udp_csum_crt);
10711109
} else {
10721110
skb_tx_timestamp(skb);
10731111
}

drivers/net/ethernet/mellanox/mlx5/core/ecpf.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,4 +98,8 @@ void mlx5_ec_cleanup(struct mlx5_core_dev *dev)
9898
err = mlx5_wait_for_pages(dev, &dev->priv.page_counters[MLX5_HOST_PF]);
9999
if (err)
100100
mlx5_core_warn(dev, "Timeout reclaiming external host PF pages err(%d)\n", err);
101+
102+
err = mlx5_wait_for_pages(dev, &dev->priv.page_counters[MLX5_VF]);
103+
if (err)
104+
mlx5_core_warn(dev, "Timeout reclaiming external host VFs pages err(%d)\n", err);
101105
}

drivers/net/ethernet/mellanox/mlx5/core/en/ptp.c

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,19 @@ static bool mlx5e_ptp_ts_cqe_drop(struct mlx5e_ptpsq *ptpsq, u16 skb_cc, u16 skb
8686
return (ptpsq->ts_cqe_ctr_mask && (skb_cc != skb_id));
8787
}
8888

89-
static void mlx5e_ptp_skb_fifo_ts_cqe_resync(struct mlx5e_ptpsq *ptpsq, u16 skb_cc, u16 skb_id)
89+
static bool mlx5e_ptp_ts_cqe_ooo(struct mlx5e_ptpsq *ptpsq, u16 skb_id)
90+
{
91+
u16 skb_cc = PTP_WQE_CTR2IDX(ptpsq->skb_fifo_cc);
92+
u16 skb_pc = PTP_WQE_CTR2IDX(ptpsq->skb_fifo_pc);
93+
94+
if (PTP_WQE_CTR2IDX(skb_id - skb_cc) >= PTP_WQE_CTR2IDX(skb_pc - skb_cc))
95+
return true;
96+
97+
return false;
98+
}
99+
100+
static void mlx5e_ptp_skb_fifo_ts_cqe_resync(struct mlx5e_ptpsq *ptpsq, u16 skb_cc,
101+
u16 skb_id, int budget)
90102
{
91103
struct skb_shared_hwtstamps hwts = {};
92104
struct sk_buff *skb;
@@ -98,6 +110,7 @@ static void mlx5e_ptp_skb_fifo_ts_cqe_resync(struct mlx5e_ptpsq *ptpsq, u16 skb_
98110
hwts.hwtstamp = mlx5e_skb_cb_get_hwts(skb)->cqe_hwtstamp;
99111
skb_tstamp_tx(skb, &hwts);
100112
ptpsq->cq_stats->resync_cqe++;
113+
napi_consume_skb(skb, budget);
101114
skb_cc = PTP_WQE_CTR2IDX(ptpsq->skb_fifo_cc);
102115
}
103116
}
@@ -118,8 +131,14 @@ static void mlx5e_ptp_handle_ts_cqe(struct mlx5e_ptpsq *ptpsq,
118131
goto out;
119132
}
120133

121-
if (mlx5e_ptp_ts_cqe_drop(ptpsq, skb_cc, skb_id))
122-
mlx5e_ptp_skb_fifo_ts_cqe_resync(ptpsq, skb_cc, skb_id);
134+
if (mlx5e_ptp_ts_cqe_drop(ptpsq, skb_cc, skb_id)) {
135+
if (mlx5e_ptp_ts_cqe_ooo(ptpsq, skb_id)) {
136+
/* already handled by a previous resync */
137+
ptpsq->cq_stats->ooo_cqe_drop++;
138+
return;
139+
}
140+
mlx5e_ptp_skb_fifo_ts_cqe_resync(ptpsq, skb_cc, skb_id, budget);
141+
}
123142

124143
skb = mlx5e_skb_fifo_pop(&ptpsq->skb_fifo);
125144
hwtstamp = mlx5e_cqe_ts_to_ns(sq->ptp_cyc2time, sq->clock, get_cqe_ts(cqe));

drivers/net/ethernet/mellanox/mlx5/core/en/rep/tc.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -710,8 +710,7 @@ void mlx5e_rep_tc_receive(struct mlx5_cqe64 *cqe, struct mlx5e_rq *rq,
710710
else
711711
napi_gro_receive(rq->cq.napi, skb);
712712

713-
if (tc_priv.fwd_dev)
714-
dev_put(tc_priv.fwd_dev);
713+
dev_put(tc_priv.fwd_dev);
715714

716715
return;
717716

drivers/net/ethernet/mellanox/mlx5/core/en/tc/act_stats.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ mlx5e_tc_act_stats_create(void)
3737
int err;
3838

3939
handle = kvzalloc(sizeof(*handle), GFP_KERNEL);
40-
if (IS_ERR(handle))
40+
if (!handle)
4141
return ERR_PTR(-ENOMEM);
4242

4343
err = rhashtable_init(&handle->ht, &act_counters_ht_params);

drivers/net/ethernet/mellanox/mlx5/core/en/txrx.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ void mlx5e_free_txqsq_descs(struct mlx5e_txqsq *sq);
8686
static inline bool
8787
mlx5e_skb_fifo_has_room(struct mlx5e_skb_fifo *fifo)
8888
{
89-
return (*fifo->pc - *fifo->cc) < fifo->mask;
89+
return (u16)(*fifo->pc - *fifo->cc) < fifo->mask;
9090
}
9191

9292
static inline bool
@@ -302,6 +302,8 @@ void mlx5e_skb_fifo_push(struct mlx5e_skb_fifo *fifo, struct sk_buff *skb)
302302
static inline
303303
struct sk_buff *mlx5e_skb_fifo_pop(struct mlx5e_skb_fifo *fifo)
304304
{
305+
WARN_ON_ONCE(*fifo->pc == *fifo->cc);
306+
305307
return *mlx5e_skb_fifo_get(fifo, (*fifo->cc)++);
306308
}
307309

drivers/net/ethernet/mellanox/mlx5/core/en_stats.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2138,6 +2138,7 @@ static const struct counter_desc ptp_cq_stats_desc[] = {
21382138
{ MLX5E_DECLARE_PTP_CQ_STAT(struct mlx5e_ptp_cq_stats, abort_abs_diff_ns) },
21392139
{ MLX5E_DECLARE_PTP_CQ_STAT(struct mlx5e_ptp_cq_stats, resync_cqe) },
21402140
{ MLX5E_DECLARE_PTP_CQ_STAT(struct mlx5e_ptp_cq_stats, resync_event) },
2141+
{ MLX5E_DECLARE_PTP_CQ_STAT(struct mlx5e_ptp_cq_stats, ooo_cqe_drop) },
21412142
};
21422143

21432144
static const struct counter_desc ptp_rq_stats_desc[] = {

drivers/net/ethernet/mellanox/mlx5/core/en_stats.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -461,6 +461,7 @@ struct mlx5e_ptp_cq_stats {
461461
u64 abort_abs_diff_ns;
462462
u64 resync_cqe;
463463
u64 resync_event;
464+
u64 ooo_cqe_drop;
464465
};
465466

466467
struct mlx5e_rep_stats {

0 commit comments

Comments
 (0)