diff options
| author | Pitani Venkata Rajesh Kumar <vpitan@codeaurora.org> | 2014-07-11 16:19:56 +0530 |
|---|---|---|
| committer | Pitani Venkata Rajesh Kumar <vpitan@codeaurora.org> | 2014-07-11 16:21:24 +0530 |
| commit | 818f2328ff7deb00ea735eb81177bad409e76fdf (patch) | |
| tree | 5394472ffce4e12712464a60d45c2c566a56d37b | |
| parent | 2b7a3e6547661cefc82f067c016fc30e44e7f168 (diff) | |
| parent | e371ce7ce3b2ee06fa6584a259d39f70259557d3 (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.h | 2 | ||||
| -rw-r--r-- | CORE/CLD_TXRX/HTT/htt_t2h.c | 2 | ||||
| -rw-r--r-- | CORE/CLD_TXRX/TLSHIM/tl_shim.c | 9 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_early_suspend.c | 37 | ||||
| -rwxr-xr-x | CORE/HDD/src/wlan_hdd_main.c | 2 | ||||
| -rw-r--r-- | CORE/MAC/inc/qwlan_version.h | 4 | ||||
| -rw-r--r-- | CORE/MAC/src/pe/lim/limSendSmeRspMessages.c | 18 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/targaddrs.h | 1 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_services.h | 2 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_tlv_defs.h | 18 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_unified.h | 38 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/wma.c | 28 | ||||
| -rw-r--r-- | CORE/SERVICES/WMI/wmi_unified.c | 1 | ||||
| -rw-r--r-- | tools/athdiag/athdiag.c | 23 |
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; |
