struct be_queue_info *txq = &adapter->tx_obj.q;
        struct be_eth_tx_compl *txcp;
        u16 end_idx, cmpl = 0, timeo = 0;
+       struct sk_buff **sent_skbs = adapter->tx_obj.sent_skb_list;
+       struct sk_buff *sent_skb;
+       bool dummy_wrb;
 
        /* Wait for a max of 200ms for all the tx-completions to arrive. */
        do {
        if (atomic_read(&txq->used))
                dev_err(&adapter->pdev->dev, "%d pending tx-completions\n",
                        atomic_read(&txq->used));
+
+       /* free posted tx for which compls will never arrive */
+       while (atomic_read(&txq->used)) {
+               sent_skb = sent_skbs[txq->tail];
+               end_idx = txq->tail;
+               index_adv(&end_idx,
+                       wrb_cnt_for_skb(sent_skb, &dummy_wrb) - 1, txq->len);
+               be_tx_compl_process(adapter, end_idx);
+       }
 }
 
 static void be_mcc_queues_destroy(struct be_adapter *adapter)