ionic: Honor sq_sig_all for signaled completions

The sq_sig_all attribute from QP creation was not being propagated
to the provider QP, so work requests were only signaled when
IBV_SEND_SIGNALED was explicitly set. Store sq_sig_all in the QP
and check it in the send path to generate completions for all
send work requests when requested.

Fixes: 6d82ac7bac3b ("ionic: Add ionic provider")
Signed-off-by: Abhijit Gangurde <abhijit.gangurde@amd.com>
diff --git a/providers/ionic/ionic.h b/providers/ionic/ionic.h
index d618645..a51d790 100644
--- a/providers/ionic/ionic.h
+++ b/providers/ionic/ionic.h
@@ -201,6 +201,7 @@
 
 	struct ionic_sq		sq;
 	struct ionic_rq		rq;
+	bool			sig_all;
 };
 
 struct ionic_ah {
diff --git a/providers/ionic/ionic_verbs.c b/providers/ionic/ionic_verbs.c
index 4817230..6452894 100644
--- a/providers/ionic/ionic_verbs.c
+++ b/providers/ionic/ionic_verbs.c
@@ -1693,6 +1693,7 @@
 	qp->has_sq = true;
 	qp->has_rq = true;
 	qp->lockfree = false;
+	qp->sig_all = ex->sq_sig_all;
 
 	list_node_init(&qp->cq_poll_sq);
 	list_node_init(&qp->cq_poll_rq);
@@ -2111,7 +2112,7 @@
 	if (wr->send_flags & IBV_SEND_SOLICITED)
 		wqe->base.flags |= htobe16(IONIC_V1_FLAG_SOL);
 
-	if (wr->send_flags & IBV_SEND_SIGNALED) {
+	if (qp->sig_all || (wr->send_flags & IBV_SEND_SIGNALED)) {
 		wqe->base.flags |= htobe16(IONIC_V1_FLAG_SIG);
 		meta->signal = true;
 	}