|
@@ -5802,6 +5802,7 @@ static int mvpp2_txq_init(struct mvpp2_port *port,
|
|
|
txq_pcpu->reserved_num = 0;
|
|
|
txq_pcpu->txq_put_index = 0;
|
|
|
txq_pcpu->txq_get_index = 0;
|
|
|
+ txq_pcpu->tso_headers = NULL;
|
|
|
|
|
|
txq_pcpu->stop_threshold = txq->size - MVPP2_MAX_SKB_DESCS;
|
|
|
txq_pcpu->wake_threshold = txq_pcpu->stop_threshold / 2;
|
|
@@ -5829,10 +5830,13 @@ static void mvpp2_txq_deinit(struct mvpp2_port *port,
|
|
|
txq_pcpu = per_cpu_ptr(txq->pcpu, cpu);
|
|
|
kfree(txq_pcpu->buffs);
|
|
|
|
|
|
- dma_free_coherent(port->dev->dev.parent,
|
|
|
- txq_pcpu->size * TSO_HEADER_SIZE,
|
|
|
- txq_pcpu->tso_headers,
|
|
|
- txq_pcpu->tso_headers_dma);
|
|
|
+ if (txq_pcpu->tso_headers)
|
|
|
+ dma_free_coherent(port->dev->dev.parent,
|
|
|
+ txq_pcpu->size * TSO_HEADER_SIZE,
|
|
|
+ txq_pcpu->tso_headers,
|
|
|
+ txq_pcpu->tso_headers_dma);
|
|
|
+
|
|
|
+ txq_pcpu->tso_headers = NULL;
|
|
|
}
|
|
|
|
|
|
if (txq->descs)
|