for (i = 0; i < lif->nxqs; i++) {
                ionic_lif_qcq_deinit(lif, lif->txqcqs[i].qcq);
                ionic_tx_flush(&lif->txqcqs[i].qcq->cq);
+               ionic_tx_empty(&lif->txqcqs[i].qcq->q);
 
                ionic_lif_qcq_deinit(lif, lif->rxqcqs[i].qcq);
                ionic_rx_flush(&lif->rxqcqs[i].qcq->cq);
 
                                   work_done, 0);
 }
 
+void ionic_tx_empty(struct ionic_queue *q)
+{
+       struct ionic_desc_info *desc_info;
+       int done = 0;
+
+       /* walk the not completed tx entries, if any */
+       while (q->head != q->tail) {
+               desc_info = q->tail;
+               q->tail = desc_info->next;
+               ionic_tx_clean(q, desc_info, NULL, desc_info->cb_arg);
+               desc_info->cb = NULL;
+               desc_info->cb_arg = NULL;
+               done++;
+       }
+}
+
 static int ionic_tx_tcp_inner_pseudo_csum(struct sk_buff *skb)
 {
        int err;
 
 
 void ionic_rx_fill(struct ionic_queue *q);
 void ionic_rx_empty(struct ionic_queue *q);
+void ionic_tx_empty(struct ionic_queue *q);
 int ionic_rx_napi(struct napi_struct *napi, int budget);
 netdev_tx_t ionic_start_xmit(struct sk_buff *skb, struct net_device *netdev);