Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

netdev CI testing #6666

Open
wants to merge 76 commits into
base: bpf-next_base
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
d62b04f
net: sched: fix ets qdisc OOB Indexing
jhsmt Jan 11, 2025
110b43e
NFC: nci: Add bounds checking in nci_hci_create_pipe()
Jan 17, 2025
d31a49d
net: airoha: Fix wrong GDM4 register definition
Ansuel Jan 20, 2025
6bb194d
net/ncsi: wait for the last response to Deselect Package before confi…
paulfertser Jan 16, 2025
ba1af25
dt-bindings: net: qcom,ethqos: Correct fallback compatible for qcom,q…
yijiyang Jan 20, 2025
92e5995
net: hns3: fix oops when unload drivers paralleling
IronShen Jan 18, 2025
a197004
net: phy: marvell-88q2xxx: Fix temperature measurement with reset-gpios
Jan 18, 2025
61dc1fd
net: fec: implement TSO descriptor cleanup
Jan 20, 2025
59e00e8
net: mvneta: fix locking in mvneta_cpu_online()
harshimogalapalli Jan 21, 2025
965adae
selftests/net: packetdrill: more xfail changes (and a correction)
kuba-moo Jan 21, 2025
15a9013
ipmr: do not call mr_mfc_uses_dev() for unres entries
Jan 21, 2025
ffe1a19
net/ncsi: use dev_set_mac_address() for Get MC MAC Address handling
paulfertser Jan 20, 2025
68d89e2
net: stmmac: dwmac-loongson: Set correct {tx,rx}_fifo_size
chenhuacai Jan 21, 2025
e3e6e4f
net: netlink: prevent potential integer overflow in nlmsg_new()
Jan 22, 2025
d1f7596
Bonding: Fix support for gso_partial_features
liuhangbin Jan 22, 2025
62291ab
net: rose: fix timer races against user threads
Jan 22, 2025
fae7f95
net: netdevsim: try to close UDP port harness races
kuba-moo Jan 22, 2025
4aea9ea
net/mlx5e: add missing cpu_to_node to kvzalloc_node in mlx5e_open_xdp…
Jan 23, 2025
a7e098e
ptp: Ensure info->enable callback is always set
t-8ch Jan 23, 2025
625b730
documentation: networking: fix spelling mistakes
Jan 23, 2025
92113f4
selftests: mptcp: extend CFLAGS to keep options from environment
jstancek Jan 23, 2025
976ec28
rxrpc, afs: Fix peer hash locking vs RCU callback
dhowells Jan 23, 2025
f4b377c
net: the appletalk subsystem no longer uses ndo_do_ioctl
Red54 Jan 23, 2025
65c18cd
selftests: net/{lib,openvswitch}: extend CFLAGS to keep options from …
jstancek Jan 23, 2025
71dc2d4
vxlan: Fix uninit-value in vxlan_vnifilter_dump()
Jan 23, 2025
9dddbb8
MAINTAINERS: add Paul Fertser as a NC-SI reviewer
kuba-moo Jan 23, 2025
a0de4f3
xfrm: Don't disable preemption while looking up cache state.
Jan 23, 2025
58325c7
mptcp: consolidate suboption status
Jan 23, 2025
31ee8da
mptcp: pm: only set fullmesh for subflow endp
matttbe Jan 23, 2025
115c81b
mptcp: handle fastopen disconnect correctly
Jan 23, 2025
3f3e4ed
net: davicom: fix UAF in dm9000_drv_remove
WhiteFox-Project Jan 23, 2025
f1624e6
netdevsim: don't assume core pre-populates HDS params on GET
kuba-moo Jan 23, 2025
7be2c30
net: page_pool: don't try to stash the napi id
kuba-moo Jan 23, 2025
017c15b
tools: ynl: c: correct reverse decode of empty attrs
kuba-moo Jan 24, 2025
5b07b04
eth: tg3: fix calling napi_enable() in atomic context
kuba-moo Jan 24, 2025
382a651
eth: forcedeth: remove local wrappers for napi enable/disable
kuba-moo Jan 24, 2025
f9f9e92
eth: forcedeth: fix calling napi_enable() in atomic context
kuba-moo Jan 24, 2025
29bfa07
eth: 8139too: fix calling napi_enable() in atomic context
kuba-moo Jan 24, 2025
4fd96b6
eth: niu: fix calling napi_enable() in atomic context
kuba-moo Jan 24, 2025
6d15c33
eth: via-rhine: fix calling napi_enable() in atomic context
kuba-moo Jan 24, 2025
d4c9bc0
wifi: mt76: move napi_enable() from under BH
kuba-moo Jan 24, 2025
00c55be
net: mv643xx_eth: implement descriptor cleanup in txq_submit_tso
Jan 24, 2025
2b9a98c
vmxnet3: Fix tx queue race condition with XDP
Jan 24, 2025
6405df1
net: usb: rtl8150: enable basic endpoint checking
Jan 24, 2025
65e61c3
net: stmmac: Limit the number of MTL queues to hardware capability
khayash1 Jan 24, 2025
a22133d
net: stmmac: Limit FIFO size by hardware capability
khayash1 Jan 24, 2025
0bb7ed9
net: stmmac: Specify hardware capability value when FIFO size isn't s…
khayash1 Jan 24, 2025
f5e6e15
net: phy: c45-tjaxx: add delay between MDIO write and read in soft_reset
Jan 24, 2025
a4ba5f4
net: ovs: prevent underflow in queue_userspace_packet()
Jan 24, 2025
47eabda
bgmac: reduce max frame size to support just MTU 1500
Jan 24, 2025
016a152
idpf: add read memory barrier when checking descriptor done bit
etantilov Jan 24, 2025
60cb102
idpf: fix transaction timeouts on reset
etantilov Jan 24, 2025
be7dded
idpf: Acquire the lock before accessing the xn->salt
Jan 24, 2025
5704e99
idpf: convert workqueues to unbound
dark Jan 24, 2025
da3941a
idpf: add more info during virtchnl transaction timeout/salt mismatch
Jan 24, 2025
68fb9e3
ice: fix ice_parser_rt::bst_key array size
pkitszel Jan 24, 2025
306a28d
ice: remove invalid parameter of equalizer
halfboy93 Jan 24, 2025
5927af6
iavf: allow changing VLAN state without calling PF
Jan 24, 2025
fe82ebc
ptp: Properly handle compat ioctls
t-8ch Jan 25, 2025
6dfe7fa
usbnet: ipheth: fix possible overflow in DPE length check
Forst Jan 25, 2025
4ab5860
usbnet: ipheth: check that DPE points past NCM header
Forst Jan 25, 2025
4d3fca3
usbnet: ipheth: use static NDP16 location in URB
Forst Jan 25, 2025
ae2dcd5
usbnet: ipheth: refactor NCM datagram loop
Forst Jan 25, 2025
a8f4ed4
usbnet: ipheth: break up NCM header size computation
Forst Jan 25, 2025
ea2fe9e
usbnet: ipheth: fix DPE OoB read
Forst Jan 25, 2025
0038591
usbnet: ipheth: document scope of NCM implementation
Forst Jan 25, 2025
088e1e0
pfifo_tail_enqueue: Drop new packet when sch->limit == 0
quanglex97 Jan 26, 2025
b5ec8a6
selftests/tc-testing: Add a test case for pfifo_head_drop qdisc when …
quanglex97 Jan 26, 2025
33c91f2
netem: update sch->q.qlen before qdisc_tree_reduce_backlog()
Jan 26, 2025
d48a883
selftests/tc-testing: add a test case for qdisc_tree_reduce_backlog()
Jan 26, 2025
95a30b5
forwarding: set timeout to 3 hours
Feb 1, 2024
a9349d3
profile patch
kuba-moo Aug 17, 2024
72ce0b0
tc_action dbg
kuba-moo Aug 30, 2024
4175784
selftests: net: enable profiling
kuba-moo Nov 4, 2024
bbc131f
Revert "mm/kmemleak: fix percpu memory leak detection failure"
Jan 17, 2025
50d4044
Merge branch 'net-next-2025-01-26--09-00' into HEAD
Jan 26, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions Documentation/devicetree/bindings/net/qcom,ethqos.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@ properties:
oneOf:
- items:
- enum:
- qcom,qcs8300-ethqos
- const: qcom,sa8775p-ethqos
- qcom,qcs615-ethqos
- const: qcom,qcs404-ethqos
- items:
- enum:
- qcom,qcs615-ethqos
- const: qcom,sm8150-ethqos
- qcom,qcs8300-ethqos
- const: qcom,sa8775p-ethqos
- enum:
- qcom,qcs404-ethqos
- qcom,sa8775p-ethqos
Expand Down
4 changes: 2 additions & 2 deletions Documentation/networking/can.rst
Original file line number Diff line number Diff line change
Expand Up @@ -699,10 +699,10 @@ RAW socket option CAN_RAW_JOIN_FILTERS

The CAN_RAW socket can set multiple CAN identifier specific filters that
lead to multiple filters in the af_can.c filter processing. These filters
are indenpendent from each other which leads to logical OR'ed filters when
are independent from each other which leads to logical OR'ed filters when
applied (see :ref:`socketcan-rawfilter`).

This socket option joines the given CAN filters in the way that only CAN
This socket option joins the given CAN filters in the way that only CAN
frames are passed to user space that matched *all* given CAN filters. The
semantic for the applied filters is therefore changed to a logical AND.

Expand Down
2 changes: 1 addition & 1 deletion Documentation/networking/napi.rst
Original file line number Diff line number Diff line change
Expand Up @@ -362,7 +362,7 @@ It is expected that ``irq-suspend-timeout`` will be set to a value much larger
than ``gro_flush_timeout`` as ``irq-suspend-timeout`` should suspend IRQs for
the duration of one userland processing cycle.

While it is not stricly necessary to use ``napi_defer_hard_irqs`` and
While it is not strictly necessary to use ``napi_defer_hard_irqs`` and
``gro_flush_timeout`` to use IRQ suspension, their use is strongly
recommended.

Expand Down
1 change: 1 addition & 0 deletions MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -16222,6 +16222,7 @@ F: drivers/scsi/sun3_scsi_vme.c

NCSI LIBRARY
M: Samuel Mendoza-Jonas <[email protected]>
R: Paul Fertser <[email protected]>
S: Maintained
F: net/ncsi/

Expand Down
7 changes: 5 additions & 2 deletions drivers/net/bonding/bond_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1598,10 +1598,13 @@ static void bond_compute_features(struct bonding *bond)
}
bond_dev->hard_header_len = max_hard_header_len;

if (gso_partial_features & NETIF_F_GSO_ESP)
if (gso_partial_features & NETIF_F_GSO_ESP) {
bond_dev->gso_partial_features |= NETIF_F_GSO_ESP;
else
bond_dev->features |= NETIF_F_GSO_PARTIAL;
} else {
bond_dev->gso_partial_features &= ~NETIF_F_GSO_ESP;
bond_dev->features &= ~NETIF_F_GSO_PARTIAL;
}

done:
bond_dev->vlan_features = vlan_features;
Expand Down
3 changes: 1 addition & 2 deletions drivers/net/ethernet/broadcom/bgmac.h
Original file line number Diff line number Diff line change
Expand Up @@ -328,8 +328,7 @@
#define BGMAC_RX_FRAME_OFFSET 30 /* There are 2 unused bytes between header and real data */
#define BGMAC_RX_BUF_OFFSET (NET_SKB_PAD + NET_IP_ALIGN - \
BGMAC_RX_FRAME_OFFSET)
/* Jumbo frame size with FCS */
#define BGMAC_RX_MAX_FRAME_SIZE 9724
#define BGMAC_RX_MAX_FRAME_SIZE 1536
#define BGMAC_RX_BUF_SIZE (BGMAC_RX_FRAME_OFFSET + BGMAC_RX_MAX_FRAME_SIZE)
#define BGMAC_RX_ALLOC_SIZE (SKB_DATA_ALIGN(BGMAC_RX_BUF_SIZE + BGMAC_RX_BUF_OFFSET) + \
SKB_DATA_ALIGN(sizeof(struct skb_shared_info)))
Expand Down
35 changes: 31 additions & 4 deletions drivers/net/ethernet/broadcom/tg3.c
Original file line number Diff line number Diff line change
Expand Up @@ -7424,7 +7424,7 @@ static void tg3_napi_enable(struct tg3 *tp)

for (i = 0; i < tp->irq_cnt; i++) {
tnapi = &tp->napi[i];
napi_enable(&tnapi->napi);
napi_enable_locked(&tnapi->napi);
if (tnapi->tx_buffers) {
netif_queue_set_napi(tp->dev, txq_idx,
NETDEV_QUEUE_TYPE_TX,
Expand All @@ -7445,9 +7445,10 @@ static void tg3_napi_init(struct tg3 *tp)
int i;

for (i = 0; i < tp->irq_cnt; i++) {
netif_napi_add(tp->dev, &tp->napi[i].napi,
i ? tg3_poll_msix : tg3_poll);
netif_napi_set_irq(&tp->napi[i].napi, tp->napi[i].irq_vec);
netif_napi_add_locked(tp->dev, &tp->napi[i].napi,
i ? tg3_poll_msix : tg3_poll);
netif_napi_set_irq_locked(&tp->napi[i].napi,
tp->napi[i].irq_vec);
}
}

Expand Down Expand Up @@ -11259,6 +11260,8 @@ static void tg3_timer_stop(struct tg3 *tp)
static int tg3_restart_hw(struct tg3 *tp, bool reset_phy)
__releases(tp->lock)
__acquires(tp->lock)
__releases(tp->dev->lock)
__acquires(tp->dev->lock)
{
int err;

Expand All @@ -11271,7 +11274,9 @@ static int tg3_restart_hw(struct tg3 *tp, bool reset_phy)
tg3_timer_stop(tp);
tp->irq_sync = 0;
tg3_napi_enable(tp);
netdev_unlock(tp->dev);
dev_close(tp->dev);
netdev_lock(tp->dev);
tg3_full_lock(tp, 0);
}
return err;
Expand Down Expand Up @@ -11299,6 +11304,7 @@ static void tg3_reset_task(struct work_struct *work)

tg3_netif_stop(tp);

netdev_lock(tp->dev);
tg3_full_lock(tp, 1);

if (tg3_flag(tp, TX_RECOVERY_PENDING)) {
Expand All @@ -11318,12 +11324,14 @@ static void tg3_reset_task(struct work_struct *work)
* call cancel_work_sync() and wait forever.
*/
tg3_flag_clear(tp, RESET_TASK_PENDING);
netdev_unlock(tp->dev);
dev_close(tp->dev);
goto out;
}

tg3_netif_start(tp);
tg3_full_unlock(tp);
netdev_unlock(tp->dev);
tg3_phy_start(tp);
tg3_flag_clear(tp, RESET_TASK_PENDING);
out:
Expand Down Expand Up @@ -11683,9 +11691,11 @@ static int tg3_start(struct tg3 *tp, bool reset_phy, bool test_irq,
if (err)
goto out_ints_fini;

netdev_lock(dev);
tg3_napi_init(tp);

tg3_napi_enable(tp);
netdev_unlock(dev);

for (i = 0; i < tp->irq_cnt; i++) {
err = tg3_request_irq(tp, i);
Expand Down Expand Up @@ -12569,6 +12579,7 @@ static int tg3_set_ringparam(struct net_device *dev,
irq_sync = 1;
}

netdev_lock(dev);
tg3_full_lock(tp, irq_sync);

tp->rx_pending = ering->rx_pending;
Expand Down Expand Up @@ -12597,6 +12608,7 @@ static int tg3_set_ringparam(struct net_device *dev,
}

tg3_full_unlock(tp);
netdev_unlock(dev);

if (irq_sync && !err)
tg3_phy_start(tp);
Expand Down Expand Up @@ -12678,6 +12690,7 @@ static int tg3_set_pauseparam(struct net_device *dev, struct ethtool_pauseparam
irq_sync = 1;
}

netdev_lock(dev);
tg3_full_lock(tp, irq_sync);

if (epause->autoneg)
Expand Down Expand Up @@ -12707,6 +12720,7 @@ static int tg3_set_pauseparam(struct net_device *dev, struct ethtool_pauseparam
}

tg3_full_unlock(tp);
netdev_unlock(dev);
}

tp->phy_flags |= TG3_PHYFLG_USER_CONFIGURED;
Expand Down Expand Up @@ -13911,6 +13925,7 @@ static void tg3_self_test(struct net_device *dev, struct ethtool_test *etest,
data[TG3_INTERRUPT_TEST] = 1;
}

netdev_lock(dev);
tg3_full_lock(tp, 0);

tg3_halt(tp, RESET_KIND_SHUTDOWN, 1);
Expand All @@ -13922,6 +13937,7 @@ static void tg3_self_test(struct net_device *dev, struct ethtool_test *etest,
}

tg3_full_unlock(tp);
netdev_unlock(dev);

if (irq_sync && !err2)
tg3_phy_start(tp);
Expand Down Expand Up @@ -14365,6 +14381,7 @@ static int tg3_change_mtu(struct net_device *dev, int new_mtu)

tg3_set_mtu(dev, tp, new_mtu);

netdev_lock(dev);
tg3_full_lock(tp, 1);

tg3_halt(tp, RESET_KIND_SHUTDOWN, 1);
Expand All @@ -14384,6 +14401,7 @@ static int tg3_change_mtu(struct net_device *dev, int new_mtu)
tg3_netif_start(tp);

tg3_full_unlock(tp);
netdev_unlock(dev);

if (!err)
tg3_phy_start(tp);
Expand Down Expand Up @@ -18164,6 +18182,7 @@ static int tg3_resume(struct device *device)

netif_device_attach(dev);

netdev_lock(dev);
tg3_full_lock(tp, 0);

tg3_ape_driver_state_change(tp, RESET_KIND_INIT);
Expand All @@ -18180,6 +18199,7 @@ static int tg3_resume(struct device *device)

out:
tg3_full_unlock(tp);
netdev_unlock(dev);

if (!err)
tg3_phy_start(tp);
Expand Down Expand Up @@ -18260,7 +18280,9 @@ static pci_ers_result_t tg3_io_error_detected(struct pci_dev *pdev,
done:
if (state == pci_channel_io_perm_failure) {
if (netdev) {
netdev_lock(netdev);
tg3_napi_enable(tp);
netdev_unlock(netdev);
dev_close(netdev);
}
err = PCI_ERS_RESULT_DISCONNECT;
Expand Down Expand Up @@ -18314,7 +18336,9 @@ static pci_ers_result_t tg3_io_slot_reset(struct pci_dev *pdev)

done:
if (rc != PCI_ERS_RESULT_RECOVERED && netdev && netif_running(netdev)) {
netdev_lock(netdev);
tg3_napi_enable(tp);
netdev_unlock(netdev);
dev_close(netdev);
}
rtnl_unlock();
Expand All @@ -18340,12 +18364,14 @@ static void tg3_io_resume(struct pci_dev *pdev)
if (!netdev || !netif_running(netdev))
goto done;

netdev_lock(netdev);
tg3_full_lock(tp, 0);
tg3_ape_driver_state_change(tp, RESET_KIND_INIT);
tg3_flag_set(tp, INIT_COMPLETE);
err = tg3_restart_hw(tp, true);
if (err) {
tg3_full_unlock(tp);
netdev_unlock(netdev);
netdev_err(netdev, "Cannot restart hardware after reset.\n");
goto done;
}
Expand All @@ -18357,6 +18383,7 @@ static void tg3_io_resume(struct pci_dev *pdev)
tg3_netif_start(tp);

tg3_full_unlock(tp);
netdev_unlock(netdev);

tg3_phy_start(tp);

Expand Down
3 changes: 2 additions & 1 deletion drivers/net/ethernet/davicom/dm9000.c
Original file line number Diff line number Diff line change
Expand Up @@ -1777,10 +1777,11 @@ static void dm9000_drv_remove(struct platform_device *pdev)

unregister_netdev(ndev);
dm9000_release_board(pdev, dm);
free_netdev(ndev); /* free device structure */
if (dm->power_supply)
regulator_disable(dm->power_supply);

free_netdev(ndev); /* free device structure */

dev_dbg(&pdev->dev, "released and freed device\n");
}

Expand Down
31 changes: 30 additions & 1 deletion drivers/net/ethernet/freescale/fec_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -840,6 +840,8 @@ static int fec_enet_txq_submit_tso(struct fec_enet_priv_tx_q *txq,
struct fec_enet_private *fep = netdev_priv(ndev);
int hdr_len, total_len, data_left;
struct bufdesc *bdp = txq->bd.cur;
struct bufdesc *tmp_bdp;
struct bufdesc_ex *ebdp;
struct tso_t tso;
unsigned int index = 0;
int ret;
Expand Down Expand Up @@ -913,7 +915,34 @@ static int fec_enet_txq_submit_tso(struct fec_enet_priv_tx_q *txq,
return 0;

err_release:
/* TODO: Release all used data descriptors for TSO */
/* Release all used data descriptors for TSO */
tmp_bdp = txq->bd.cur;

while (tmp_bdp != bdp) {
/* Unmap data buffers */
if (tmp_bdp->cbd_bufaddr &&
!IS_TSO_HEADER(txq, fec32_to_cpu(tmp_bdp->cbd_bufaddr)))
dma_unmap_single(&fep->pdev->dev,
fec32_to_cpu(tmp_bdp->cbd_bufaddr),
fec16_to_cpu(tmp_bdp->cbd_datlen),
DMA_TO_DEVICE);

/* Clear standard buffer descriptor fields */
tmp_bdp->cbd_sc = 0;
tmp_bdp->cbd_datlen = 0;
tmp_bdp->cbd_bufaddr = 0;

/* Handle extended descriptor if enabled */
if (fep->bufdesc_ex) {
ebdp = (struct bufdesc_ex *)tmp_bdp;
ebdp->cbd_esc = 0;
}

tmp_bdp = fec_enet_get_nextdesc(tmp_bdp, &txq->bd);
}

dev_kfree_skb_any(skb);

return ret;
}

Expand Down
15 changes: 15 additions & 0 deletions drivers/net/ethernet/hisilicon/hns3/hnae3.c
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,21 @@ EXPORT_SYMBOL(hnae3_unregister_ae_algo_prepare);
*/
static DEFINE_MUTEX(hnae3_common_lock);

/* ensure the drivers being unloaded one by one */
static DEFINE_MUTEX(hnae3_unload_lock);

void hnae3_acquire_unload_lock(void)
{
mutex_lock(&hnae3_unload_lock);
}
EXPORT_SYMBOL(hnae3_acquire_unload_lock);

void hnae3_release_unload_lock(void)
{
mutex_unlock(&hnae3_unload_lock);
}
EXPORT_SYMBOL(hnae3_release_unload_lock);

static bool hnae3_client_match(enum hnae3_client_type client_type)
{
if (client_type == HNAE3_CLIENT_KNIC ||
Expand Down
2 changes: 2 additions & 0 deletions drivers/net/ethernet/hisilicon/hns3/hnae3.h
Original file line number Diff line number Diff line change
Expand Up @@ -963,4 +963,6 @@ int hnae3_register_client(struct hnae3_client *client);
void hnae3_set_client_init_flag(struct hnae3_client *client,
struct hnae3_ae_dev *ae_dev,
unsigned int inited);
void hnae3_acquire_unload_lock(void);
void hnae3_release_unload_lock(void);
#endif
2 changes: 2 additions & 0 deletions drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
Original file line number Diff line number Diff line change
Expand Up @@ -6002,9 +6002,11 @@ module_init(hns3_init_module);
*/
static void __exit hns3_exit_module(void)
{
hnae3_acquire_unload_lock();
pci_unregister_driver(&hns3_driver);
hnae3_unregister_client(&client);
hns3_dbg_unregister_debugfs();
hnae3_release_unload_lock();
}
module_exit(hns3_exit_module);

Expand Down
2 changes: 2 additions & 0 deletions drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -12919,9 +12919,11 @@ static int __init hclge_init(void)

static void __exit hclge_exit(void)
{
hnae3_acquire_unload_lock();
hnae3_unregister_ae_algo_prepare(&ae_algo);
hnae3_unregister_ae_algo(&ae_algo);
destroy_workqueue(hclge_wq);
hnae3_release_unload_lock();
}
module_init(hclge_init);
module_exit(hclge_exit);
Expand Down
2 changes: 2 additions & 0 deletions drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -3410,8 +3410,10 @@ static int __init hclgevf_init(void)

static void __exit hclgevf_exit(void)
{
hnae3_acquire_unload_lock();
hnae3_unregister_ae_algo(&ae_algovf);
destroy_workqueue(hclgevf_wq);
hnae3_release_unload_lock();
}
module_init(hclgevf_init);
module_exit(hclgevf_exit);
Expand Down
Loading
Loading