net/sfc: support runtime Tx queue setup
[dpdk.git] / drivers / net / sfc / sfc_tx.c
index 6d42a1a..8af08b3 100644 (file)
@@ -421,6 +421,7 @@ sfc_tx_qstart(struct sfc_adapter *sa, unsigned int sw_index)
 
        txq = txq_info->txq;
 
+       SFC_ASSERT(txq != NULL);
        SFC_ASSERT(txq->state == SFC_TXQ_INITIALIZED);
 
        evq = txq->evq;
@@ -501,7 +502,7 @@ sfc_tx_qstop(struct sfc_adapter *sa, unsigned int sw_index)
 
        txq = txq_info->txq;
 
-       if (txq->state == SFC_TXQ_INITIALIZED)
+       if (txq == NULL || txq->state == SFC_TXQ_INITIALIZED)
                return;
 
        SFC_ASSERT(txq->state & SFC_TXQ_STARTED);
@@ -578,8 +579,9 @@ sfc_tx_start(struct sfc_adapter *sa)
                goto fail_efx_tx_init;
 
        for (sw_index = 0; sw_index < sa->txq_count; ++sw_index) {
-               if (!(sa->txq_info[sw_index].deferred_start) ||
-                   sa->txq_info[sw_index].deferred_started) {
+               if (sa->txq_info[sw_index].txq != NULL &&
+                   (!(sa->txq_info[sw_index].deferred_start) ||
+                    sa->txq_info[sw_index].deferred_started)) {
                        rc = sfc_tx_qstart(sa, sw_index);
                        if (rc != 0)
                                goto fail_tx_qstart;