qcacmn: Mangle napi_poll return value when rescheduling

4.4 kernel NAPI implementation requires drivers to
return full work when they ask to be re-scheduled
or napi_complete and re-start with a fresh interrupt
Also takes care of the expectation that when not rescheduling
you return strictly less than budget.

Change-Id: I31b024d80b9941c539a9c9f89799a30dac2f5dfe
CRs-Fixed: 1017058
diff --git a/hif/src/hif_napi.c b/hif/src/hif_napi.c
index 07f3853..45735c0 100644
--- a/hif/src/hif_napi.c
+++ b/hif/src/hif_napi.c
@@ -477,6 +477,9 @@
 
 		hif_record_ce_desc_event(hif, ce_state->id, NAPI_COMPLETE,
 					 NULL, NULL, 0);
+		if (normalized >= budget)
+			normalized = budget - 1;
+
 		/* enable interrupts */
 		napi_complete(napi);
 		if (NULL != hif) {
@@ -488,6 +491,12 @@
 
 		NAPI_DEBUG("%s:%d: napi_complete + enabling the interrupts",
 			   __func__, __LINE__);
+	} else {
+		/* 4.4 kernel NAPI implementation requires drivers to
+		 * return full work when they ask to be re-scheduled,
+		 * or napi_complete and re-start with a fresh interrupt
+		 */
+		normalized = budget;
 	}
 
 	hif_record_ce_desc_event(hif, NAPI_ID2PIPE(napi_info->id),