The LE workaround in firmware is not atomic and fw_ofld_connection_wrs must not interleave.
Therefore, when the workaround is enabled, we need to send all ctrlq WRs on a single ctrl queue.
Based on original work by Santosh Rastapur <santosh@chelsio.com>
Signed-off-by: Kumar Sanghvi <kumaras@chelsio.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
 {
        unsigned int idx = skb_txq(skb);
 
-       if (unlikely(is_ctrl_pkt(skb)))
+       if (unlikely(is_ctrl_pkt(skb))) {
+               /* Single ctrl queue is a requirement for LE workaround path */
+               if (adap->tids.nsftids)
+                       idx = 0;
                return ctrl_xmit(&adap->sge.ctrlq[idx], skb);
+       }
        return ofld_xmit(&adap->sge.ofldtxq[idx], skb);
 }