Loading core/cds/inc/cds_concurrency.h +18 −0 Original line number Diff line number Diff line Loading @@ -936,6 +936,24 @@ QDF_STATUS cds_set_hw_mode_on_channel_switch(uint8_t session_id); void cds_set_do_hw_mode_change_flag(bool flag); bool cds_is_hw_mode_change_after_vdev_up(void); void cds_checkn_update_hw_mode_single_mac_mode(uint8_t channel); /** * cds_check_and_stop_opportunistic_timer() - Stop dbs opportunistic timer * * Stop dbs opportunistic timer and depending on the current connections change * hw_mode to single mac mode. * * Return: None */ void cds_check_and_stop_opportunistic_timer(void); /** * cds_set_opportunistic_update() - Set opportunistic update event * * Return: QDF_STATUS */ QDF_STATUS cds_set_opportunistic_update(void); void cds_dump_connection_status_info(void); /** * cds_mode_specific_vdev_id() - provides the Loading core/cds/inc/cds_sched.h +1 −0 Original line number Diff line number Diff line Loading @@ -376,6 +376,7 @@ typedef struct _cds_context_type { qdf_event_t connection_update_done_evt; qdf_mutex_t qdf_conc_list_lock; qdf_mc_timer_t dbs_opportunistic_timer; qdf_event_t opportunistic_update_done_evt; #ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH void (*sap_restart_chan_switch_cb)(struct hdd_adapter_s *, uint32_t, uint32_t); Loading core/cds/src/cds_concurrency.c +83 −5 Original line number Diff line number Diff line Loading @@ -2683,19 +2683,19 @@ static void cds_pdev_set_hw_mode_cb(uint32_t status, cds_ctx = cds_get_context(QDF_MODULE_ID_QDF); if (!cds_ctx) { cds_err("Invalid CDS Context"); return; goto set_done_event; } cds_set_hw_mode_change_in_progress(CDS_HW_MODE_NOT_IN_PROGRESS); if (status != SET_HW_MODE_STATUS_OK) { cds_err("Set HW mode failed with status %d", status); return; goto set_done_event; } if (!vdev_mac_map) { cds_err("vdev_mac_map is NULL"); return; goto set_done_event; } cds_debug("cfgd_hw_mode_index=%d", cfgd_hw_mode_index); Loading @@ -2708,7 +2708,7 @@ static void cds_pdev_set_hw_mode_cb(uint32_t status, ret = wma_get_hw_mode_from_idx(cfgd_hw_mode_index, &hw_mode); if (ret != QDF_STATUS_SUCCESS) { cds_err("Get HW mode failed: %d", ret); return; goto set_done_event; } cds_debug("MAC0: TxSS:%d, RxSS:%d, Bw:%d", Loading Loading @@ -2736,7 +2736,10 @@ static void cds_pdev_set_hw_mode_cb(uint32_t status, if (cds_ctx->mode_change_cb) cds_ctx->mode_change_cb(); return; set_done_event: ret = cds_set_opportunistic_update(); if (!QDF_IS_STATUS_SUCCESS(ret)) cds_err("ERROR: set opportunistic_update event failed"); } /** Loading Loading @@ -4403,6 +4406,14 @@ QDF_STATUS cds_deinit_policy_mgr(void) return QDF_STATUS_E_FAILURE; } /* Destroy opportunistic_update_done_evt */ status = qdf_event_destroy(&cds_ctx->opportunistic_update_done_evt); if (!QDF_IS_STATUS_SUCCESS(status)) { cds_err("Failed to destroy opportunistic_update_done_evt"); status = QDF_STATUS_E_FAILURE; QDF_ASSERT(0); } if (!QDF_IS_STATUS_SUCCESS(qdf_event_destroy (&cds_ctx->connection_update_done_evt))) { cds_err("Failed to destroy connection_update_done_evt"); Loading Loading @@ -4507,6 +4518,12 @@ QDF_STATUS cds_init_policy_mgr(struct cds_sme_cbacks *sme_cbacks) return QDF_STATUS_E_FAILURE; } status = qdf_event_create(&cds_ctx->opportunistic_update_done_evt); if (!QDF_IS_STATUS_SUCCESS(status)) { cds_err("opportunistic_update_done_evt init failed"); return status; } return QDF_STATUS_SUCCESS; } Loading Loading @@ -11096,6 +11113,67 @@ void cds_checkn_update_hw_mode_single_mac_mode(uint8_t channel) cds_dbs_opportunistic_timer_handler((void *)cds_ctx); } QDF_STATUS cds_set_opportunistic_update(void) { QDF_STATUS status; cds_context_type *cds_ctx; cds_ctx = cds_get_context(QDF_MODULE_ID_QDF); if (!cds_ctx) { cds_err("Invalid CDS Context"); return QDF_STATUS_E_FAILURE; } status = qdf_event_set(&cds_ctx->opportunistic_update_done_evt); if (!QDF_IS_STATUS_SUCCESS(status)) { cds_err("set event failed"); return QDF_STATUS_E_FAILURE; } return QDF_STATUS_SUCCESS; } void cds_check_and_stop_opportunistic_timer(void) { cds_context_type *cds_ctx; enum cds_conc_next_action action = CDS_NOP; QDF_STATUS status = QDF_STATUS_E_FAILURE; cds_ctx = cds_get_context(QDF_MODULE_ID_QDF); if (!cds_ctx) { cds_err("Invalid CDS Context"); return; } if (cds_ctx->dbs_opportunistic_timer.state != QDF_TIMER_STATE_RUNNING) return; qdf_mc_timer_stop(&cds_ctx->dbs_opportunistic_timer); action = cds_need_opportunistic_upgrade(); if (!action) return; qdf_event_reset(&cds_ctx->opportunistic_update_done_evt); /* * lets call for action, session id is being used only * in hidden ssid case for now. So, session id 0 is ok here. */ status = cds_next_actions(0, action, SIR_UPDATE_REASON_OPPORTUNISTIC); if (!QDF_IS_STATUS_SUCCESS(status)) { cds_err("Failed in cds_next_actions"); return; } status = qdf_wait_single_event(&cds_ctx->opportunistic_update_done_evt, CONNECTION_UPDATE_TIMEOUT); if (!QDF_IS_STATUS_SUCCESS(status)) { cds_err("wait on opportunistic_update_done_evt is failed"); return; } } /** * cds_set_do_hw_mode_change_flag() - Set flag to indicate hw mode change * @flag: Indicate if hw mode change is required or not Loading core/dp/txrx/ol_txrx.c +1 −0 Original line number Diff line number Diff line Loading @@ -6163,6 +6163,7 @@ ol_txrx_mon_rx_data_cb(void *ppdev, void *nbuf_list, uint8_t vdev_id, /* clear IEEE80211_RADIOTAP_F_FCS flag*/ rx_status.rtap_flags &= ~(BIT(4)); rx_status.rtap_flags &= ~(BIT(2)); /* * convert 802.3 header format into 802.11 format Loading core/hdd/inc/wlan_hdd_cfg.h +5 −5 Original line number Diff line number Diff line Loading @@ -11368,8 +11368,8 @@ enum restart_beaconing_on_ch_avoid_rule { * <ini> * gAutoBmpsTimerValue - Set Auto BMPS Timer value * @Min: 0 * @Max: 120 * @Default: 90 * @Max: 1000 * @Default: 600 * * This ini is used to set Auto BMPS Timer value in seconds * Loading @@ -11383,8 +11383,8 @@ enum restart_beaconing_on_ch_avoid_rule { */ #define CFG_AUTO_PS_ENABLE_TIMER_NAME "gAutoBmpsTimerValue" #define CFG_AUTO_PS_ENABLE_TIMER_MIN (0) #define CFG_AUTO_PS_ENABLE_TIMER_MAX (120) #define CFG_AUTO_PS_ENABLE_TIMER_DEFAULT (90) #define CFG_AUTO_PS_ENABLE_TIMER_MAX (1000) #define CFG_AUTO_PS_ENABLE_TIMER_DEFAULT (600) #ifdef WLAN_ICMP_DISABLE_PS /* Loading Loading @@ -12675,7 +12675,7 @@ enum hw_filter_mode { * </ini> */ #define CFG_ACTION_OUI_SWITCH_TO_11N_MODE_NAME "gActionOUISwitchTo11nMode" #define CFG_ACTION_OUI_SWITCH_TO_11N_MODE_DEFAULT "00904C 03 0418BF E0 21 40" #define CFG_ACTION_OUI_SWITCH_TO_11N_MODE_DEFAULT "00904C 05 0418BF0CB2 F8 21 40" /* * <ini> Loading Loading
core/cds/inc/cds_concurrency.h +18 −0 Original line number Diff line number Diff line Loading @@ -936,6 +936,24 @@ QDF_STATUS cds_set_hw_mode_on_channel_switch(uint8_t session_id); void cds_set_do_hw_mode_change_flag(bool flag); bool cds_is_hw_mode_change_after_vdev_up(void); void cds_checkn_update_hw_mode_single_mac_mode(uint8_t channel); /** * cds_check_and_stop_opportunistic_timer() - Stop dbs opportunistic timer * * Stop dbs opportunistic timer and depending on the current connections change * hw_mode to single mac mode. * * Return: None */ void cds_check_and_stop_opportunistic_timer(void); /** * cds_set_opportunistic_update() - Set opportunistic update event * * Return: QDF_STATUS */ QDF_STATUS cds_set_opportunistic_update(void); void cds_dump_connection_status_info(void); /** * cds_mode_specific_vdev_id() - provides the Loading
core/cds/inc/cds_sched.h +1 −0 Original line number Diff line number Diff line Loading @@ -376,6 +376,7 @@ typedef struct _cds_context_type { qdf_event_t connection_update_done_evt; qdf_mutex_t qdf_conc_list_lock; qdf_mc_timer_t dbs_opportunistic_timer; qdf_event_t opportunistic_update_done_evt; #ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH void (*sap_restart_chan_switch_cb)(struct hdd_adapter_s *, uint32_t, uint32_t); Loading
core/cds/src/cds_concurrency.c +83 −5 Original line number Diff line number Diff line Loading @@ -2683,19 +2683,19 @@ static void cds_pdev_set_hw_mode_cb(uint32_t status, cds_ctx = cds_get_context(QDF_MODULE_ID_QDF); if (!cds_ctx) { cds_err("Invalid CDS Context"); return; goto set_done_event; } cds_set_hw_mode_change_in_progress(CDS_HW_MODE_NOT_IN_PROGRESS); if (status != SET_HW_MODE_STATUS_OK) { cds_err("Set HW mode failed with status %d", status); return; goto set_done_event; } if (!vdev_mac_map) { cds_err("vdev_mac_map is NULL"); return; goto set_done_event; } cds_debug("cfgd_hw_mode_index=%d", cfgd_hw_mode_index); Loading @@ -2708,7 +2708,7 @@ static void cds_pdev_set_hw_mode_cb(uint32_t status, ret = wma_get_hw_mode_from_idx(cfgd_hw_mode_index, &hw_mode); if (ret != QDF_STATUS_SUCCESS) { cds_err("Get HW mode failed: %d", ret); return; goto set_done_event; } cds_debug("MAC0: TxSS:%d, RxSS:%d, Bw:%d", Loading Loading @@ -2736,7 +2736,10 @@ static void cds_pdev_set_hw_mode_cb(uint32_t status, if (cds_ctx->mode_change_cb) cds_ctx->mode_change_cb(); return; set_done_event: ret = cds_set_opportunistic_update(); if (!QDF_IS_STATUS_SUCCESS(ret)) cds_err("ERROR: set opportunistic_update event failed"); } /** Loading Loading @@ -4403,6 +4406,14 @@ QDF_STATUS cds_deinit_policy_mgr(void) return QDF_STATUS_E_FAILURE; } /* Destroy opportunistic_update_done_evt */ status = qdf_event_destroy(&cds_ctx->opportunistic_update_done_evt); if (!QDF_IS_STATUS_SUCCESS(status)) { cds_err("Failed to destroy opportunistic_update_done_evt"); status = QDF_STATUS_E_FAILURE; QDF_ASSERT(0); } if (!QDF_IS_STATUS_SUCCESS(qdf_event_destroy (&cds_ctx->connection_update_done_evt))) { cds_err("Failed to destroy connection_update_done_evt"); Loading Loading @@ -4507,6 +4518,12 @@ QDF_STATUS cds_init_policy_mgr(struct cds_sme_cbacks *sme_cbacks) return QDF_STATUS_E_FAILURE; } status = qdf_event_create(&cds_ctx->opportunistic_update_done_evt); if (!QDF_IS_STATUS_SUCCESS(status)) { cds_err("opportunistic_update_done_evt init failed"); return status; } return QDF_STATUS_SUCCESS; } Loading Loading @@ -11096,6 +11113,67 @@ void cds_checkn_update_hw_mode_single_mac_mode(uint8_t channel) cds_dbs_opportunistic_timer_handler((void *)cds_ctx); } QDF_STATUS cds_set_opportunistic_update(void) { QDF_STATUS status; cds_context_type *cds_ctx; cds_ctx = cds_get_context(QDF_MODULE_ID_QDF); if (!cds_ctx) { cds_err("Invalid CDS Context"); return QDF_STATUS_E_FAILURE; } status = qdf_event_set(&cds_ctx->opportunistic_update_done_evt); if (!QDF_IS_STATUS_SUCCESS(status)) { cds_err("set event failed"); return QDF_STATUS_E_FAILURE; } return QDF_STATUS_SUCCESS; } void cds_check_and_stop_opportunistic_timer(void) { cds_context_type *cds_ctx; enum cds_conc_next_action action = CDS_NOP; QDF_STATUS status = QDF_STATUS_E_FAILURE; cds_ctx = cds_get_context(QDF_MODULE_ID_QDF); if (!cds_ctx) { cds_err("Invalid CDS Context"); return; } if (cds_ctx->dbs_opportunistic_timer.state != QDF_TIMER_STATE_RUNNING) return; qdf_mc_timer_stop(&cds_ctx->dbs_opportunistic_timer); action = cds_need_opportunistic_upgrade(); if (!action) return; qdf_event_reset(&cds_ctx->opportunistic_update_done_evt); /* * lets call for action, session id is being used only * in hidden ssid case for now. So, session id 0 is ok here. */ status = cds_next_actions(0, action, SIR_UPDATE_REASON_OPPORTUNISTIC); if (!QDF_IS_STATUS_SUCCESS(status)) { cds_err("Failed in cds_next_actions"); return; } status = qdf_wait_single_event(&cds_ctx->opportunistic_update_done_evt, CONNECTION_UPDATE_TIMEOUT); if (!QDF_IS_STATUS_SUCCESS(status)) { cds_err("wait on opportunistic_update_done_evt is failed"); return; } } /** * cds_set_do_hw_mode_change_flag() - Set flag to indicate hw mode change * @flag: Indicate if hw mode change is required or not Loading
core/dp/txrx/ol_txrx.c +1 −0 Original line number Diff line number Diff line Loading @@ -6163,6 +6163,7 @@ ol_txrx_mon_rx_data_cb(void *ppdev, void *nbuf_list, uint8_t vdev_id, /* clear IEEE80211_RADIOTAP_F_FCS flag*/ rx_status.rtap_flags &= ~(BIT(4)); rx_status.rtap_flags &= ~(BIT(2)); /* * convert 802.3 header format into 802.11 format Loading
core/hdd/inc/wlan_hdd_cfg.h +5 −5 Original line number Diff line number Diff line Loading @@ -11368,8 +11368,8 @@ enum restart_beaconing_on_ch_avoid_rule { * <ini> * gAutoBmpsTimerValue - Set Auto BMPS Timer value * @Min: 0 * @Max: 120 * @Default: 90 * @Max: 1000 * @Default: 600 * * This ini is used to set Auto BMPS Timer value in seconds * Loading @@ -11383,8 +11383,8 @@ enum restart_beaconing_on_ch_avoid_rule { */ #define CFG_AUTO_PS_ENABLE_TIMER_NAME "gAutoBmpsTimerValue" #define CFG_AUTO_PS_ENABLE_TIMER_MIN (0) #define CFG_AUTO_PS_ENABLE_TIMER_MAX (120) #define CFG_AUTO_PS_ENABLE_TIMER_DEFAULT (90) #define CFG_AUTO_PS_ENABLE_TIMER_MAX (1000) #define CFG_AUTO_PS_ENABLE_TIMER_DEFAULT (600) #ifdef WLAN_ICMP_DISABLE_PS /* Loading Loading @@ -12675,7 +12675,7 @@ enum hw_filter_mode { * </ini> */ #define CFG_ACTION_OUI_SWITCH_TO_11N_MODE_NAME "gActionOUISwitchTo11nMode" #define CFG_ACTION_OUI_SWITCH_TO_11N_MODE_DEFAULT "00904C 03 0418BF E0 21 40" #define CFG_ACTION_OUI_SWITCH_TO_11N_MODE_DEFAULT "00904C 05 0418BF0CB2 F8 21 40" /* * <ini> Loading