> +static void airoha_remove(struct platform_device *pdev) > +{ > + struct airoha_eth *eth = platform_get_drvdata(pdev); > + int i; > + > + debugfs_remove(eth->debugfs_dir); > + > + airoha_qdma_for_each_q_rx(eth, i) { > + struct airoha_queue *q = ð->q_rx[i]; > + > + netif_napi_del(&q->napi); > + airoha_qdma_clenaup_rx_queue(q); > + page_pool_destroy(q->page_pool); > + } > + > + for (i = 0; i < ARRAY_SIZE(eth->q_tx_irq); i++) > + netif_napi_del(ð->q_tx_irq[i].napi); > + for (i = 0; i < ARRAY_SIZE(eth->q_tx); i++) > + airoha_qdma_clenaup_tx_queue(ð->q_tx[i]); > +} You don't appear to unregister the netdev. remove() should basically be the reverse of probe(). Andrew