summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2016-11-04 06:00:04 -0600
committerLinux Build Service Account <lnxbuild@localhost>2016-11-04 06:00:04 -0600
commit2f4e4ecc1aafb3ea54108614797d7612de742656 (patch)
tree2e21f58cd45f0e74fd85f5771d2068f21e03c89e
parent00bff1f57c3bf975ba2a383e5ab0c9d583834cc2 (diff)
parent3e29339afbb1b303c29a6d678941f61808953f5e (diff)
Promotion of wlan-cmn.driver.lnx.1.0-00094.
CRs Change ID Subject -------------------------------------------------------------------------------------------------------------- 1084912 Iafe31850872cac3eaff35eeb57ab271b4409ef18 qcacmn: Add wmi_roam_scan_mode_fixed_param TLV alone for 688141 Iada7edb98c10e32f286749a0062881f8f6fcd6bd Release 5.1.0.25A 688141 I7ca549a30090c0abc66f857f5403ed6495c31b3c Release 5.1.0.25B 990726 Ib36e1a9f34eb9054b12f0e8ba54a86ace7d6c8f8 qcacmn: improve mboxping TX t-put for SDIO project 1078139 1084912 Iafe31850872cac3eaff35eeb57ab271b4409ef18 qcacmn: Add wmi_roam_scan_mode_fixed_param TLV alone for Change-Id: Idb3259f612c285c80a1a465c9eb70dfbb48c9846 CRs-Fixed: 688141, 1084912, 1078139, 990726
-rw-r--r--VERSION.txt2
-rw-r--r--htc/htc.c1
-rw-r--r--htc/htc_api.h13
-rw-r--r--htc/htc_internal.h6
-rw-r--r--htc/htc_send.c27
-rw-r--r--wmi/src/wmi_unified_tlv.c11
6 files changed, 54 insertions, 6 deletions
diff --git a/VERSION.txt b/VERSION.txt
index 7454a56a50bd..82b8fe1f8ae3 100644
--- a/VERSION.txt
+++ b/VERSION.txt
@@ -1,2 +1,2 @@
-Current Component wlan-cmn.driver.lnx.1.0 version 5.1.0.25
+Current Component wlan-cmn.driver.lnx.1.0 version 5.1.0.25B
Matches Component wlan-cld3.driver.lnx.1.1 version 5.1.0.22C
diff --git a/htc/htc.c b/htc/htc.c
index 63442bddef5b..ea3a210f2cf1 100644
--- a/htc/htc.c
+++ b/htc/htc.c
@@ -266,6 +266,7 @@ HTC_HANDLE htc_create(void *ol_sc, HTC_INIT_INFO *pInfo, qdf_device_t osdev,
qdf_spinlock_create(&target->HTCRxLock);
qdf_spinlock_create(&target->HTCTxLock);
qdf_spinlock_create(&target->HTCCreditLock);
+ target->is_nodrop_pkt = false;
do {
qdf_mem_copy(&target->HTCInitInfo, pInfo,
diff --git a/htc/htc_api.h b/htc/htc_api.h
index 5adc278bf87d..dac72bc3001b 100644
--- a/htc/htc_api.h
+++ b/htc/htc_api.h
@@ -638,6 +638,19 @@ bool htc_is_endpoint_active(HTC_HANDLE HTCHandle,
HTC_ENDPOINT_ID Endpoint);
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ @desc: Set up nodrop pkt flag for mboxping nodrop pkt
+ @function name: htc_set_nodrop_pkt
+ @input: HTCHandle - HTC handle
+ isNodropPkt - indicates whether it is nodrop pkt
+ @output:
+ @return:
+ @notes:
+ @example:
+ @see also:
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+void htc_set_nodrop_pkt(HTC_HANDLE HTCHandle, A_BOOL isNodropPkt);
+
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
@desc: Get the number of recv buffers currently queued into an HTC endpoint
@function name: htc_get_num_recv_buffers
@input: HTCHandle - HTC handle
diff --git a/htc/htc_internal.h b/htc/htc_internal.h
index ccabdb699027..596628cead6a 100644
--- a/htc/htc_internal.h
+++ b/htc/htc_internal.h
@@ -201,6 +201,12 @@ typedef struct _HTC_TARGET {
#endif
uint32_t con_mode;
+
+ /*
+ * This flag is from the mboxping tool. It indicates that we cannot
+ * drop it. Besides, nodrop pkts have higher priority than normal pkts.
+ */
+ A_BOOL is_nodrop_pkt;
} HTC_TARGET;
#if defined ENABLE_BUNDLE_TX
diff --git a/htc/htc_send.c b/htc/htc_send.c
index d6b87946e4ee..d08e7b75d42b 100644
--- a/htc/htc_send.c
+++ b/htc/htc_send.c
@@ -1112,11 +1112,22 @@ static HTC_SEND_QUEUE_RESULT htc_try_send(HTC_TARGET *target,
LOCK_HTC_TX(target);
if (!HTC_QUEUE_EMPTY(&sendQueue)) {
- /* transfer packets to tail */
- HTC_PACKET_QUEUE_TRANSFER_TO_TAIL(&pEndpoint->TxQueue,
- &sendQueue);
- A_ASSERT(HTC_QUEUE_EMPTY(&sendQueue));
- INIT_HTC_PACKET_QUEUE(&sendQueue);
+ if (target->is_nodrop_pkt) {
+ /*
+ * nodrop pkts have higher priority than normal pkts,
+ * insert nodrop pkt to head for proper
+ * start/termination of test.
+ */
+ HTC_PACKET_QUEUE_TRANSFER_TO_HEAD(&pEndpoint->TxQueue,
+ &sendQueue);
+ target->is_nodrop_pkt = false;
+ } else {
+ /* transfer packets to tail */
+ HTC_PACKET_QUEUE_TRANSFER_TO_TAIL(&pEndpoint->TxQueue,
+ &sendQueue);
+ A_ASSERT(HTC_QUEUE_EMPTY(&sendQueue));
+ INIT_HTC_PACKET_QUEUE(&sendQueue);
+ }
}
/* increment tx processing count on entry */
@@ -2015,6 +2026,12 @@ bool htc_is_endpoint_active(HTC_HANDLE HTCHandle, HTC_ENDPOINT_ID Endpoint)
return true;
}
+void htc_set_nodrop_pkt(HTC_HANDLE HTCHandle, A_BOOL isNodropPkt)
+{
+ HTC_TARGET *target = GET_HTC_TARGET_FROM_HANDLE(HTCHandle);
+ target->is_nodrop_pkt = isNodropPkt;
+}
+
/**
* htc_process_credit_rpt() - process credit report, call distribution function
* @target: pointer to HTC_TARGET
diff --git a/wmi/src/wmi_unified_tlv.c b/wmi/src/wmi_unified_tlv.c
index 049c11ca3efc..83b4a8be28f4 100644
--- a/wmi/src/wmi_unified_tlv.c
+++ b/wmi/src/wmi_unified_tlv.c
@@ -4226,6 +4226,10 @@ QDF_STATUS send_roam_scan_offload_mode_cmd_tlv(wmi_unified_t wmi_handle,
}
#endif /* WLAN_FEATURE_ROAM_OFFLOAD */
+ if (roam_req->mode == (WMI_ROAM_SCAN_MODE_NONE
+ |WMI_ROAM_SCAN_MODE_ROAMOFFLOAD))
+ len = sizeof(wmi_roam_scan_mode_fixed_param);
+
buf = wmi_buf_alloc(wmi_handle, len);
if (!buf) {
WMI_LOGE("%s : wmi_buf_alloc failed", __func__);
@@ -4242,8 +4246,13 @@ QDF_STATUS send_roam_scan_offload_mode_cmd_tlv(wmi_unified_t wmi_handle,
roam_scan_mode_fp->roam_scan_mode = roam_req->mode;
roam_scan_mode_fp->vdev_id = roam_req->vdev_id;
+ if (roam_req->mode == (WMI_ROAM_SCAN_MODE_NONE
+ |WMI_ROAM_SCAN_MODE_ROAMOFFLOAD))
+ goto send_roam_scan_mode_cmd;
+
/* Fill in scan parameters suitable for roaming scan */
buf_ptr += sizeof(wmi_roam_scan_mode_fixed_param);
+
qdf_mem_copy(buf_ptr, scan_cmd_fp,
sizeof(wmi_start_scan_cmd_fixed_param));
/* Ensure there is no additional IEs */
@@ -4453,6 +4462,8 @@ QDF_STATUS send_roam_scan_offload_mode_cmd_tlv(wmi_unified_t wmi_handle,
WMITLV_GET_STRUCT_TLVLEN(0));
}
#endif /* WLAN_FEATURE_ROAM_OFFLOAD */
+
+send_roam_scan_mode_cmd:
status = wmi_unified_cmd_send(wmi_handle, buf,
len, WMI_ROAM_SCAN_MODE);
if (QDF_IS_STATUS_ERROR(status)) {