Index: sys/dev/bnxt/bnxt_en/bnxt.h =================================================================== --- sys/dev/bnxt/bnxt_en/bnxt.h +++ sys/dev/bnxt/bnxt_en/bnxt.h @@ -1337,6 +1337,7 @@ #define MIN_VALID_TIMESTAMP 946684800 /* 2000-01-01 */ struct callout time_sync_callout; uint16_t ts_retry_count; + bool tx_softirqs_enabled; }; struct bnxt_filter_info { Index: sys/dev/bnxt/bnxt_en/if_bnxt.c =================================================================== --- sys/dev/bnxt/bnxt_en/if_bnxt.c +++ sys/dev/bnxt/bnxt_en/if_bnxt.c @@ -2824,6 +2824,7 @@ iflib_irq_free(ctx, &softc->rx_cp_rings[i].irq); } + softc->tx_softirqs_enabled = false; iflib_dma_free(&softc->vnic_info.mc_list); iflib_dma_free(&softc->vnic_info.rss_hash_key_tbl); iflib_dma_free(&softc->vnic_info.rss_grp_tbl); @@ -3928,8 +3929,11 @@ } } - for (i=0; iscctx->isc_ntxqsets; i++) - iflib_softirq_alloc_generic(ctx, NULL, IFLIB_INTR_TX, NULL, i, "tx_cp"); + if (!softc->tx_softirqs_enabled) { + for (i=0; iscctx->isc_ntxqsets; i++) + iflib_softirq_alloc_generic(ctx, NULL, IFLIB_INTR_TX, NULL, i, "tx_cp"); + softc->tx_softirqs_enabled = true; + } return rc;