>+ /* synchronize_rcu() needed for pending XDP buffers to drain */ >+ for (queue = 0; queue < rx_queues_cnt; queue++) { >+ rx_q = &priv->rx_queue[queue]; >+ if (rx_q->xsk_pool) { >+ synchronize_rcu(); > >Are you sure this is safe here, especially via the ->ndo_setup_tc() code path? > Thanks for the feedback. Will fix this in v2 by introducing below: Introduce __stmmac_disable_all_queues() to contain the original code that does napi_disable() and then make stmmac_setup_tc_block_cb(0 to call this. Add stmmac_disable_all_queues() to perform synchronize_rcu() if there is preregistered XSK pool before subsequently call __stmmac_disable_all_queues() to perform napi_disable(). After this, both stmmac_release() and stmmac_suspend() will use stmmac_disable_all_queues(). Thx