summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPitani Venkata Rajesh Kumar <vpitan@codeaurora.org>2014-07-11 16:19:56 +0530
committerPitani Venkata Rajesh Kumar <vpitan@codeaurora.org>2014-07-11 16:21:24 +0530
commit818f2328ff7deb00ea735eb81177bad409e76fdf (patch)
tree5394472ffce4e12712464a60d45c2c566a56d37b
parent2b7a3e6547661cefc82f067c016fc30e44e7f168 (diff)
parente371ce7ce3b2ee06fa6584a259d39f70259557d3 (diff)
Release 1.0.0.143 QCACLD WLAN Driver
Merge remote-tracking branch 'origin/caf/caf-wlan/master' * origin/caf/caf-wlan/master: Cafstaging Release 1.0.0.143 qcacld: fix unwanted f/w logs after ssr qcacld: Enable athdiag to dump Target memory for Rome 2.2 version. qcacld: CL 1002509 1004055 1008605 - update fw cmn interface files qcacld: Fix for DUT not honouring 5 GHz preference during roaming qcacld: WMA: Fix tlv header for extscan api's qcacld: drop the encrypted BC/MC management frames wlan: Fix the correct BYTE-offset value for fw_desc in RX_FRAG_IND Change-Id: Ia5b1b538050de803912a5c4f182846a20dbfb448
-rw-r--r--CORE/CLD_TXRX/HTT/htt.h2
-rw-r--r--CORE/CLD_TXRX/HTT/htt_t2h.c2
-rw-r--r--CORE/CLD_TXRX/TLSHIM/tl_shim.c9
-rw-r--r--CORE/HDD/src/wlan_hdd_early_suspend.c37
-rwxr-xr-xCORE/HDD/src/wlan_hdd_main.c2
-rw-r--r--CORE/MAC/inc/qwlan_version.h4
-rw-r--r--CORE/MAC/src/pe/lim/limSendSmeRspMessages.c18
-rw-r--r--CORE/SERVICES/COMMON/targaddrs.h1
-rw-r--r--CORE/SERVICES/COMMON/wmi_services.h2
-rw-r--r--CORE/SERVICES/COMMON/wmi_tlv_defs.h18
-rw-r--r--CORE/SERVICES/COMMON/wmi_unified.h38
-rw-r--r--CORE/SERVICES/WMA/wma.c28
-rw-r--r--CORE/SERVICES/WMI/wmi_unified.c1
-rw-r--r--tools/athdiag/athdiag.c23
14 files changed, 156 insertions, 29 deletions
diff --git a/CORE/CLD_TXRX/HTT/htt.h b/CORE/CLD_TXRX/HTT/htt.h
index 23fc87e8ca3a..c5cc56fbae05 100644
--- a/CORE/CLD_TXRX/HTT/htt.h
+++ b/CORE/CLD_TXRX/HTT/htt.h
@@ -3527,7 +3527,7 @@ typedef struct {
*/
#define HTT_RX_FRAG_IND_HDR_PREFIX_SIZE32 2
-#define HTT_RX_FRAG_IND_FW_DESC_BYTE_OFFSET 3
+#define HTT_RX_FRAG_IND_FW_DESC_BYTE_OFFSET 12
#define HTT_RX_FRAG_IND_EXT_TID_SET HTT_RX_IND_EXT_TID_SET
#define HTT_RX_FRAG_IND_EXT_TID_GET HTT_RX_IND_EXT_TID_GET
diff --git a/CORE/CLD_TXRX/HTT/htt_t2h.c b/CORE/CLD_TXRX/HTT/htt_t2h.c
index c53233f9ae9d..fc22499891ca 100644
--- a/CORE/CLD_TXRX/HTT/htt_t2h.c
+++ b/CORE/CLD_TXRX/HTT/htt_t2h.c
@@ -127,7 +127,7 @@ static void HTT_RX_FRAG_SET_LAST_MSDU(
adf_nbuf_set_pktlen(msdu, HTT_RX_BUF_SIZE);
adf_nbuf_unmap(pdev->osdev, msdu, ADF_OS_DMA_FROM_DEVICE);
rx_desc = htt_rx_desc(msdu);
- rx_desc->fw_desc.u.val.u.val = *p_fw_msdu_rx_desc;
+ *((u_int8_t *) &rx_desc->fw_desc.u.val) = *p_fw_msdu_rx_desc;
rx_desc->msdu_end.last_msdu = 1;
adf_nbuf_map(pdev->osdev, msdu, ADF_OS_DMA_FROM_DEVICE);
}
diff --git a/CORE/CLD_TXRX/TLSHIM/tl_shim.c b/CORE/CLD_TXRX/TLSHIM/tl_shim.c
index 75af0a8e5f44..5f53453ea9e1 100644
--- a/CORE/CLD_TXRX/TLSHIM/tl_shim.c
+++ b/CORE/CLD_TXRX/TLSHIM/tl_shim.c
@@ -621,6 +621,15 @@ static int tlshim_mgmt_rx_process(void *context, u_int8_t *data,
{
if ((wh)->i_fc[1] & IEEE80211_FC1_WEP)
{
+ if (IEEE80211_IS_BROADCAST(wh->i_addr1) ||
+ IEEE80211_IS_MULTICAST(wh->i_addr1))
+ {
+ TLSHIM_LOGE("Encrypted BC/MC frame"
+ " dropping the frame");
+ vos_pkt_return_packet(rx_pkt);
+ return 0;
+ }
+
orig_hdr = (u_int8_t*) adf_nbuf_data(wbuf);
/* Strip privacy headers (and trailer)
diff --git a/CORE/HDD/src/wlan_hdd_early_suspend.c b/CORE/HDD/src/wlan_hdd_early_suspend.c
index c60e782d89e2..e8caf7b16df2 100644
--- a/CORE/HDD/src/wlan_hdd_early_suspend.c
+++ b/CORE/HDD/src/wlan_hdd_early_suspend.c
@@ -2248,24 +2248,29 @@ VOS_STATUS hdd_wlan_re_init(void *hif_sc)
WMI_DBGLOG_MODULE_DISABLE,
pHddCtx->fw_log_settings.enable, DBG_CMD);
}
- process_wma_set_command(pAdapter->sessionId,
- WMI_DBGLOG_TYPE,
- pHddCtx->fw_log_settings.dl_type, DBG_CMD);
- process_wma_set_command(pAdapter->sessionId,
- WMI_DBGLOG_REPORT_ENABLE,
- pHddCtx->fw_log_settings.dl_report, DBG_CMD);
- process_wma_set_command(pAdapter->sessionId,
- WMI_DBGLOG_LOG_LEVEL,
- pHddCtx->fw_log_settings.dl_loglevel, DBG_CMD);
- for (i = 0; i < MAX_MOD_LOGLEVEL; i++) {
- if (pHddCtx->fw_log_settings.dl_mod_loglevel[i] != 0) {
- process_wma_set_command(pAdapter->sessionId,
- WMI_DBGLOG_MOD_LOG_LEVEL,
- pHddCtx->fw_log_settings.dl_mod_loglevel[i],
- DBG_CMD);
+ if (pHddCtx->fw_log_settings.dl_report != 0) {
+
+ process_wma_set_command(pAdapter->sessionId,
+ WMI_DBGLOG_REPORT_ENABLE,
+ pHddCtx->fw_log_settings.dl_report, DBG_CMD);
+
+ process_wma_set_command(pAdapter->sessionId,
+ WMI_DBGLOG_TYPE,
+ pHddCtx->fw_log_settings.dl_type, DBG_CMD);
+
+ process_wma_set_command(pAdapter->sessionId,
+ WMI_DBGLOG_LOG_LEVEL,
+ pHddCtx->fw_log_settings.dl_loglevel, DBG_CMD);
+
+ for (i = 0; i < MAX_MOD_LOGLEVEL; i++) {
+ if (pHddCtx->fw_log_settings.dl_mod_loglevel[i] != 0) {
+ process_wma_set_command(pAdapter->sessionId,
+ WMI_DBGLOG_MOD_LOG_LEVEL,
+ pHddCtx->fw_log_settings.dl_mod_loglevel[i],
+ DBG_CMD);
+ }
}
}
-
/* end of f/w log config after ssr */
pHddCtx->isLogpInProgress = FALSE;
vos_set_logp_in_progress(VOS_MODULE_ID_VOSS, FALSE);
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c
index 28893dd34f93..66614a23387e 100755
--- a/CORE/HDD/src/wlan_hdd_main.c
+++ b/CORE/HDD/src/wlan_hdd_main.c
@@ -11437,7 +11437,7 @@ int hdd_wlan_startup(struct device *dev, v_VOID_t *hif_sc)
/* Initialize struct for saving f/w log setting will be used
after ssr */
- pHddCtx->fw_log_settings.enable = 0;
+ pHddCtx->fw_log_settings.enable = pHddCtx->cfg_ini->enablefwlog;
pHddCtx->fw_log_settings.dl_type = 0;
pHddCtx->fw_log_settings.dl_report = 0;
pHddCtx->fw_log_settings.dl_loglevel = 0;
diff --git a/CORE/MAC/inc/qwlan_version.h b/CORE/MAC/inc/qwlan_version.h
index bdade53f343c..40a1d705d763 100644
--- a/CORE/MAC/inc/qwlan_version.h
+++ b/CORE/MAC/inc/qwlan_version.h
@@ -42,9 +42,9 @@ BRIEF DESCRIPTION:
#define QWLAN_VERSION_MINOR 0
#define QWLAN_VERSION_PATCH 0
#define QWLAN_VERSION_EXTRA ""
-#define QWLAN_VERSION_BUILD 142
+#define QWLAN_VERSION_BUILD 143
-#define QWLAN_VERSIONSTR "1.0.0.142"
+#define QWLAN_VERSIONSTR "1.0.0.143"
#ifdef QCA_WIFI_2_0
diff --git a/CORE/MAC/src/pe/lim/limSendSmeRspMessages.c b/CORE/MAC/src/pe/lim/limSendSmeRspMessages.c
index 762fe984bebf..19d43d6cd7e9 100644
--- a/CORE/MAC/src/pe/lim/limSendSmeRspMessages.c
+++ b/CORE/MAC/src/pe/lim/limSendSmeRspMessages.c
@@ -939,6 +939,8 @@ limSendSmeLfrScanRsp(tpAniSirGlobal pMac, tANI_U16 length,
tANI_U8 *pbBuf;
tSirBssDescription *pDesc;
tANI_S16 scanEntriesLeft = 0;
+ tANI_U8 *currentBssid =
+ pMac->roam.roamSession[smesessionId].connectedProfile.bssid;
PELOG1(limLog(pMac, LOG1,
FL("Sending message SME_SCAN_RSP with length=%d reasonCode %s\n"),
@@ -970,6 +972,14 @@ limSendSmeLfrScanRsp(tpAniSirGlobal pMac, tANI_U16 length,
ptemp = pMac->lim.gLimCachedLfrScanHashTable[i];
while(ptemp)
{
+ if (vos_mem_compare(ptemp->bssDescription.bssId,
+ currentBssid,
+ sizeof(tSirMacAddr)))
+ {
+ ptemp = ptemp->next;
+ continue;
+ }
+
pbBuf = ((tANI_U8 *)pSirSmeScanRsp) + msgLen;
if(0 == bssCount)
{
@@ -1043,6 +1053,14 @@ limSendSmeLfrScanRsp(tpAniSirGlobal pMac, tANI_U16 length,
(tANI_U8 *) &pSsid->length,
(tANI_U8) (pSsid->length + 1)))
{
+ if (vos_mem_compare(ptemp->bssDescription.bssId,
+ currentBssid,
+ sizeof(tSirMacAddr)))
+ {
+ ptemp = ptemp->next;
+ continue;
+ }
+
pbBuf = ((tANI_U8 *)pSirSmeScanRsp) + msgLen;
if(0 == bssCount)
{
diff --git a/CORE/SERVICES/COMMON/targaddrs.h b/CORE/SERVICES/COMMON/targaddrs.h
index 8aa816ee93d5..ffa3cfad56e8 100644
--- a/CORE/SERVICES/COMMON/targaddrs.h
+++ b/CORE/SERVICES/COMMON/targaddrs.h
@@ -359,6 +359,7 @@ PREPACK64 struct host_interest_s {
(!(HOST_INTEREST->hi_option_flag2 & HI_OPTION_DISABLE_CDC_MAX_PERF_WAR))
#define HI_OPTION_USE_EXT_LDO 0x40 /* use LDO27 for 1.1V instead of PMU */
+#define HI_OPTION_DBUART_SUPPORT 0x80 /* Enable uart debug support */
/* hi_reset_flag */
#define HI_RESET_FLAG_PRESERVE_APP_START 0x01 /* preserve App Start address */
diff --git a/CORE/SERVICES/COMMON/wmi_services.h b/CORE/SERVICES/COMMON/wmi_services.h
index 4f4ee13ef275..b1edf4c8ea2f 100644
--- a/CORE/SERVICES/COMMON/wmi_services.h
+++ b/CORE/SERVICES/COMMON/wmi_services.h
@@ -107,6 +107,8 @@ typedef enum {
WMI_SERVICE_IBSS_PWRSAVE, /* IBSS power save support */
WMI_SERVICE_LPASS, /*Service to support LPASS*/
WMI_SERVICE_EXTSCAN, /* Extended Scans */
+ WMI_SERVICE_D0WOW, /* D0-WOW Support */
+ WMI_SERVICE_HSOFFLOAD, /* Hotspot offload feature Support */
WMI_MAX_SERVICE=128 /* max service */
} WMI_SERVICE;
diff --git a/CORE/SERVICES/COMMON/wmi_tlv_defs.h b/CORE/SERVICES/COMMON/wmi_tlv_defs.h
index 07bad20faa2b..f39215c716ac 100644
--- a/CORE/SERVICES/COMMON/wmi_tlv_defs.h
+++ b/CORE/SERVICES/COMMON/wmi_tlv_defs.h
@@ -486,6 +486,8 @@ typedef enum {
WMITLV_TAG_STRUC_wmi_extscan_cache_capabilities_event_fixed_param,
WMITLV_TAG_STRUC_wmi_extscan_wlan_change_monitor_capabilities_event_fixed_param,
WMITLV_TAG_STRUC_wmi_extscan_hotlist_monitor_capabilities_event_fixed_param,
+ WMITLV_TAG_STRUC_wmi_d0_wow_enable_disable_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_d0_wow_disable_ack_event_fixed_param,
} WMITLV_TAG_ID;
/*
@@ -663,7 +665,8 @@ typedef enum {
OP(WMI_EXTSCAN_GET_CACHED_RESULTS_CMDID) \
OP(WMI_EXTSCAN_GET_WLAN_CHANGE_RESULTS_CMDID) \
OP(WMI_EXTSCAN_SET_CAPABILITIES_CMDID) \
- OP(WMI_EXTSCAN_GET_CAPABILITIES_CMDID)
+ OP(WMI_EXTSCAN_GET_CAPABILITIES_CMDID) \
+ OP(WMI_D0_WOW_ENABLE_DISABLE_CMDID)
/*
@@ -746,7 +749,8 @@ typedef enum {
OP(WMI_EXTSCAN_CACHED_RESULTS_EVENTID) \
OP(WMI_EXTSCAN_WLAN_CHANGE_RESULTS_EVENTID) \
OP(WMI_EXTSCAN_HOTLIST_MATCH_EVENTID) \
- OP(WMI_EXTSCAN_CAPABILITIES_EVENTID)
+ OP(WMI_EXTSCAN_CAPABILITIES_EVENTID) \
+ OP(WMI_D0_WOW_DISABLE_ACK_EVENTID)
/* TLV definitions of WMI commands */
@@ -1814,6 +1818,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_HOST_AUTO_SHUTDOWN_CFG_CMDID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_chan_avoid_update_cmd_param, wmi_chan_avoid_update_cmd_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_CHAN_AVOID_UPDATE_CMDID);
+/* D0-WOW Enable Disable Cmd */
+#define WMITLV_TABLE_WMI_D0_WOW_ENABLE_DISABLE_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_d0_wow_enable_disable_cmd_fixed_param, wmi_d0_wow_enable_disable_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_D0_WOW_ENABLE_DISABLE_CMDID);
+
/************************** TLV definitions of WMI events *******************************/
/* Service Ready event */
@@ -2241,6 +2250,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_HOST_AUTO_SHUTDOWN_EVENTID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_state_event_fixed_param, wmi_peer_state_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_PEER_STATE_EVENTID);
+/* D0-WOW Disable Ack event */
+#define WMITLV_TABLE_WMI_D0_WOW_DISABLE_ACK_EVENTID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_d0_wow_disable_ack_event_fixed_param, wmi_d0_wow_disable_ack_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_D0_WOW_DISABLE_ACK_EVENTID);
+
#ifdef __cplusplus
}
#endif
diff --git a/CORE/SERVICES/COMMON/wmi_unified.h b/CORE/SERVICES/COMMON/wmi_unified.h
index 72de951bb729..675bc6e32a82 100644
--- a/CORE/SERVICES/COMMON/wmi_unified.h
+++ b/CORE/SERVICES/COMMON/wmi_unified.h
@@ -442,6 +442,8 @@ typedef enum {
WMI_WOW_ACER_IOAC_ADD_WAKE_PATTERN_CMDID,
/* Acer IOAC deleta a wake pattern */
WMI_WOW_ACER_IOAC_DEL_WAKE_PATTERN_CMDID,
+ /* D0-WOW enable or disable cmd */
+ WMI_D0_WOW_ENABLE_DISABLE_CMDID,
/* RTT measurement related cmd */
/** reques to make an RTT measurement */
@@ -768,6 +770,7 @@ typedef enum {
/** WOW wake up host event.generated in response to WMI_WOW_HOSTWAKEUP_FROM_SLEEP_CMDID.
will cary wake reason */
WMI_WOW_WAKEUP_HOST_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_WOW),
+ WMI_D0_WOW_DISABLE_ACK_EVENTID,
/*RTT related event ID*/
/** RTT measurement report */
@@ -5252,6 +5255,7 @@ typedef enum event_type_e {
WOW_ACER_IOAC_SHORT_EVENT,
WOW_ACER_IOAC_EXTEND_EVENT,
WOW_ACER_IOAC_TIMER_EVENT,
+ WOW_DFS_PHYERR_RADAR_EVENT,
}WOW_WAKE_EVENT_TYPE;
typedef enum wake_reason_e {
@@ -5280,6 +5284,7 @@ typedef enum wake_reason_e {
WOW_REASON_ACER_IOAC_SHORT_EVENT,
WOW_REASON_ACER_IOAC_EXTEND_EVENT,
WOW_REASON_ACER_IOAC_TIMER_EVENT,
+ WOW_REASON_DFS_PHYERR_RADADR_EVENT,
WOW_REASON_DEBUG_TEST = 0xFF,
}WOW_WAKE_REASON_TYPE;
@@ -5446,6 +5451,33 @@ typedef struct wow_event_info_section_bitmap_s {
A_UINT32 org_len; /*The length of the orginal packet.*/
}WOW_EVENT_INFO_SECTION_BITMAP;
+/**
+ * This command is sent from WLAN host driver to firmware to
+ * enable or disable D0-WOW. D0-WOW means APSS suspend with
+ * PCIe link and DDR being active.
+ *
+ *
+ * Entering D0-WOW Mode (based on kernel suspend request):
+ * host->target: WMI_DO_WOW_ENABLE_DISABLE_CMDID (enable = 1)
+ * target: Take action (e.g. dbglog suspend)
+ * target->host: HTC_ACK (HTC_MSG_SEND_SUSPEND_COMPLETE message)
+ *
+ * Exiting D0-WOW mode (based on kernel resume OR target->host message received)
+ * host->target: WMI_DO_WOW_ENABLE_DISABLE_CMDID (enable = 0)
+ * target: Take action (e.g. dbglog resume)
+ * target->host: WMI_D0_WOW_DISABLE_ACK_EVENTID
+ *
+ * This command is applicable only on the PCIE LL systems
+ * Host can enter either D0-WOW or WOW mode, but NOT both at same time
+ * Decision to enter D0-WOW or WOW is based on active interfaces
+ *
+ */
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_d0_wow_enable_disable_cmd_fixed_param */
+ A_UINT32 enable; /* 1 = enable, 0 = disable */
+} wmi_d0_wow_enable_disable_cmd_fixed_param;
+
+
#define WMI_RXERR_CRC 0x01 /* CRC error on frame */
#define WMI_RXERR_DECRYPT 0x08 /* non-Michael decrypt error */
#define WMI_RXERR_MIC 0x10 /* Michael MIC decrypt error */
@@ -8121,6 +8153,12 @@ typedef struct {
*/
} wmi_extscan_capabilities_event_fixed_param;
+/* WMI_D0_WOW_DISABLE_ACK_EVENTID */
+typedef struct{
+ A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_d0_wow_disable_ack_event_fixed_param */
+ A_UINT32 reserved0; /* for future need */
+} wmi_d0_wow_disable_ack_event_fixed_param;
+
#ifdef __cplusplus
}
#endif
diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c
index a427e9142a81..c815dad1ed08 100644
--- a/CORE/SERVICES/WMA/wma.c
+++ b/CORE/SERVICES/WMA/wma.c
@@ -2002,6 +2002,7 @@ static int wma_extscan_capabilities_event_handler (void *handle,
dest_capab->scanBuckets = src_cache->max_buckets;
dest_capab->scanCacheSize = src_cache->scan_cache_entry_size;
dest_capab->maxHotlistAPs = src_hotlist->max_hotlist_entries;
+ dest_capab->status = 0;
WMA_LOGD("%s: Capabilities: scanBuckets: %d,"
"maxHotlistAPs: %d,scanCacheSize: %d",
@@ -19660,6 +19661,7 @@ VOS_STATUS wma_extscan_stop_hotlist_monitor(tp_wma_handle wma,
wmi_buf_t wmi_buf;
uint32_t len;
u_int8_t *buf_ptr;
+ int hotlist_entries = 0;
if (!wma || !wma->wmi_handle) {
WMA_LOGE("%s: WMA is closed, can not issue cmd",
@@ -19678,6 +19680,11 @@ VOS_STATUS wma_extscan_stop_hotlist_monitor(tp_wma_handle wma,
return VOS_STATUS_E_FAILURE;
}
len = sizeof(*cmd);
+
+ /* reset bssid hotlist with tlv set to 0 */
+ len += WMI_TLV_HDR_SIZE;
+ len += hotlist_entries * sizeof(wmi_extscan_hotlist_entry);
+
wmi_buf = wmi_buf_alloc(wma->wmi_handle, len);
if (!wmi_buf) {
WMA_LOGE("%s: wmi_buf_alloc failed", __func__);
@@ -19696,6 +19703,13 @@ VOS_STATUS wma_extscan_stop_hotlist_monitor(tp_wma_handle wma,
cmd->vdev_id = photlist_reset->sessionId;
cmd->mode = 0;
+ buf_ptr += sizeof(*cmd);
+ WMITLV_SET_HDR(buf_ptr,
+ WMITLV_TAG_ARRAY_STRUC,
+ hotlist_entries * sizeof(wmi_extscan_hotlist_entry));
+ buf_ptr += WMI_TLV_HDR_SIZE +
+ (hotlist_entries * sizeof(wmi_extscan_hotlist_entry));
+
if (wmi_unified_cmd_send(wma->wmi_handle, wmi_buf, len,
WMI_EXTSCAN_CONFIGURE_HOTLIST_MONITOR_CMDID)) {
WMA_LOGE("%s: failed to command", __func__);
@@ -19820,6 +19834,7 @@ VOS_STATUS wma_extscan_stop_change_monitor(tp_wma_handle wma,
wmi_buf_t wmi_buf;
uint32_t len;
u_int8_t *buf_ptr;
+ int change_list = 0;
if (!wma || !wma->wmi_handle) {
WMA_LOGE("%s: WMA is closed, can not issue cmd",
@@ -19833,6 +19848,11 @@ VOS_STATUS wma_extscan_stop_change_monitor(tp_wma_handle wma,
return VOS_STATUS_E_FAILURE;
}
len = sizeof(*cmd);
+
+ /* reset significant change tlv is set to 0 */
+ len += WMI_TLV_HDR_SIZE;
+ len += change_list *
+ sizeof(wmi_extscan_wlan_change_bssid_param);
wmi_buf = wmi_buf_alloc(wma->wmi_handle, len);
if (!wmi_buf) {
WMA_LOGE("%s: wmi_buf_alloc failed", __func__);
@@ -19850,6 +19870,14 @@ VOS_STATUS wma_extscan_stop_change_monitor(tp_wma_handle wma,
cmd->vdev_id = pResetReq->sessionId;
cmd->mode = 0;
+ buf_ptr += sizeof(*cmd);
+ WMITLV_SET_HDR(buf_ptr,
+ WMITLV_TAG_ARRAY_STRUC,
+ change_list *
+ sizeof(wmi_extscan_wlan_change_bssid_param));
+ buf_ptr += WMI_TLV_HDR_SIZE + (change_list *
+ sizeof(wmi_extscan_wlan_change_bssid_param));
+
if (wmi_unified_cmd_send(wma->wmi_handle, wmi_buf, len,
WMI_EXTSCAN_CONFIGURE_WLAN_CHANGE_MONITOR_CMDID)) {
WMA_LOGE("%s: failed to command", __func__);
diff --git a/CORE/SERVICES/WMI/wmi_unified.c b/CORE/SERVICES/WMI/wmi_unified.c
index ec678e969417..d2a08d00000a 100644
--- a/CORE/SERVICES/WMI/wmi_unified.c
+++ b/CORE/SERVICES/WMI/wmi_unified.c
@@ -564,6 +564,7 @@ static u_int8_t* get_wmi_cmd_string(WMI_CMD_ID wmi_command)
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
CASE_RETURN_STRING(WMI_ROAM_SYNCH_COMPLETE);
#endif
+ CASE_RETURN_STRING(WMI_D0_WOW_ENABLE_DISABLE_CMDID);
}
return "Invalid WMI cmd";
}
diff --git a/tools/athdiag/athdiag.c b/tools/athdiag/athdiag.c
index bbbb0165be8f..c0f13da6af0f 100644
--- a/tools/athdiag/athdiag.c
+++ b/tools/athdiag/athdiag.c
@@ -93,14 +93,12 @@
#define TARGET_FLAG 0x1000
#define PATH_FLAG 0x2000
-
/* Limit malloc size when reading/writing file */
#define MAX_BUF (8*1024)
#define DUMP_DRAM_START_ADDR 0x400000
#define DUMP_DRAM_LEN 0x50000
-
#define PEREGRINE_REG_PART1_START_ADDR 0x4000
#define PEREGRINE_REG_PART1_LEN 0x2000
#define PEREGRINE_REG_PART2_START_ADDR 0x8000
@@ -111,6 +109,12 @@
#define AR6320V1_REG_PART2_START_ADDR 0x27000 /*STEREO_BASE_ADDRESS*/
#define AR6320V1_REG_PART2_LEN (0x60000 - 0x27000) /*USB_BASE_ADDRESS - STEREO_BASE_ADDRESS*/
+#define AR6320V2_DRAM_START_ADDR 0x400000 // dram start
+#define AR6320V2_DUMP_DRAM_LEN 0x70000 // dram length
+#define AR6320V2_IRAM_START_ADDR 0x980000 // iram start
+#define AR6320V2_IRAM_LEN 0x38000 // iram length
+#define AR6320V2_AXI_START_ADDR 0xa0000 // axi start
+#define AR6320V2_AXI_LEN 0x18000 // axi length
struct ath_target_reg_info {
A_UINT32 reg_start;
@@ -133,10 +137,16 @@ static const struct ath_target_reg_info reg_ar6320_v1[] = {
{0, 0, 0, 0}
};
+static const struct ath_target_reg_info reg_ar6320_v2[] = {
+ {AR6320V2_DRAM_START_ADDR, AR6320V2_DUMP_DRAM_LEN, "DRAM", "fwdump_rome_v2_dram"},
+ {AR6320V2_IRAM_START_ADDR, AR6320V2_IRAM_LEN, "IRAM", "fwdump_rome_v2_iram"},
+ {AR6320V2_AXI_START_ADDR, AR6320V2_AXI_LEN, "AXI", "fwdump_rome_v2_axi"},
+ {0, 0, 0, 0}
+};
#define INVALID_TARGET_INDEX 0xffff
#define MIN_TARGET_INDEX 0
-#define MAX_TARGET_INDEX 2
+#define MAX_TARGET_INDEX 3
struct ath_target_info {
const char *name;
@@ -146,6 +156,7 @@ struct ath_target_info {
static const struct ath_target_info target_info[] = {
{"AR9888_v2", reg_ar9888_v2},
{"AR6320_v1", reg_ar6320_v1},
+ {"AR6320_v2", reg_ar6320_v2},
};
@@ -410,7 +421,7 @@ DumpTargetMem(int dev, unsigned int target_idx, char *pathname)
A_UINT8 *buffer;
unsigned int i, address, length, remaining;
- if ((target_idx < MIN_TARGET_INDEX) || (target_idx >= MAX_TARGET_INDEX))
+ if (target_idx >= MAX_TARGET_INDEX)
return;
buffer = (A_UINT8 *)MALLOC(MAX_BUF);
@@ -443,7 +454,7 @@ DumpTargetMem(int dev, unsigned int target_idx, char *pathname)
address+length);
}
- nqprintf("DIAG Read Target (address: 0x%x, length: %d, filename: %s)\n",
+ nqprintf("DIAG Read Target (address: 0x%x, length: 0x%x, filename: %s)\n",
address, length, filename);
while (remaining) {
@@ -488,7 +499,7 @@ parse_target_index(char *optarg)
unsigned int i, index = INVALID_TARGET_INDEX;
for (i = 0; i < sizeof(target_info)/sizeof(target_info[0]); i++) {
- if (strncmp(optarg, target_info[i].name, sizeof(target_info[i].name)) == 0) {
+ if (strncmp(optarg, target_info[i].name, strlen(target_info[i].name)) == 0) {
/* found */
index = i;
break;