mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-09 05:39:54 -04:00
qcacld-3.0: notify reg change event once wifi on from GUI
Add regulatory notify event when wifi ON by GUI. In new framework test, When turning on Wi-Fi, it is expecting driver to indicate NL80211_CMD_[WIPHY]_ REG_CHANGE event with country code to wificond. Change-Id: Icb0bdec097db14905de6234573d05fffbe0e4500 CRs-Fixed: 3186188
This commit is contained in:
parent
225631cd9f
commit
d7655edacc
1 changed files with 39 additions and 4 deletions
|
|
@ -16806,6 +16806,36 @@ void hdd_init_start_completion(void)
|
|||
INIT_COMPLETION(wlan_start_comp);
|
||||
}
|
||||
|
||||
#if defined CFG80211_USER_HINT_CELL_BASE_SELF_MANAGED || \
|
||||
(LINUX_VERSION_CODE >= KERNEL_VERSION(4, 18, 0))
|
||||
static void hdd_inform_wifi_on(void)
|
||||
{
|
||||
int ret;
|
||||
struct hdd_context *hdd_ctx = cds_get_context(QDF_MODULE_ID_HDD);
|
||||
struct osif_psoc_sync *psoc_sync;
|
||||
|
||||
hdd_nofl_debug("inform regdomain for wifi on");
|
||||
ret = wlan_hdd_validate_context(hdd_ctx);
|
||||
if (ret)
|
||||
return;
|
||||
if (!wlan_hdd_validate_modules_state(hdd_ctx))
|
||||
return;
|
||||
if (!hdd_ctx->wiphy)
|
||||
return;
|
||||
ret = osif_psoc_sync_op_start(wiphy_dev(hdd_ctx->wiphy), &psoc_sync);
|
||||
if (ret)
|
||||
return;
|
||||
if (hdd_ctx->wiphy->registered)
|
||||
hdd_send_wiphy_regd_sync_event(hdd_ctx);
|
||||
|
||||
osif_psoc_sync_op_stop(psoc_sync);
|
||||
}
|
||||
#else
|
||||
static void hdd_inform_wifi_on(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
static ssize_t wlan_hdd_state_ctrl_param_write(struct file *filp,
|
||||
const char __user *user_buf,
|
||||
size_t count,
|
||||
|
|
@ -16817,6 +16847,7 @@ static ssize_t wlan_hdd_state_ctrl_param_write(struct file *filp,
|
|||
int ret;
|
||||
unsigned long rc;
|
||||
struct hdd_context *hdd_ctx;
|
||||
bool turning_on = false;
|
||||
|
||||
if (copy_from_user(buf, user_buf, 3)) {
|
||||
pr_err("Failed to read buffer\n");
|
||||
|
|
@ -16824,13 +16855,15 @@ static ssize_t wlan_hdd_state_ctrl_param_write(struct file *filp,
|
|||
}
|
||||
|
||||
if (strncmp(buf, wlan_off_str, strlen(wlan_off_str)) == 0) {
|
||||
pr_debug("Wifi turning off from UI\n");
|
||||
hdd_info("Wifi turning off from UI\n");
|
||||
hdd_inform_wifi_off();
|
||||
goto exit;
|
||||
}
|
||||
|
||||
if (strncmp(buf, wlan_on_str, strlen(wlan_on_str)) == 0)
|
||||
pr_info("Wifi Turning On from UI\n");
|
||||
if (strncmp(buf, wlan_on_str, strlen(wlan_on_str)) == 0) {
|
||||
hdd_info("Wifi Turning On from UI\n");
|
||||
turning_on = true;
|
||||
}
|
||||
|
||||
if (strncmp(buf, wlan_on_str, strlen(wlan_on_str)) != 0) {
|
||||
pr_err("Invalid value received from framework");
|
||||
|
|
@ -16854,8 +16887,10 @@ static ssize_t wlan_hdd_state_ctrl_param_write(struct file *filp,
|
|||
hdd_ctx = cds_get_context(QDF_MODULE_ID_HDD);
|
||||
if (hdd_ctx)
|
||||
hdd_psoc_idle_timer_stop(hdd_ctx);
|
||||
|
||||
exit:
|
||||
if (turning_on)
|
||||
hdd_inform_wifi_on();
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue