From 7bebb68631204f95f736e5bfbe257d7295262ce5 Mon Sep 17 00:00:00 2001 From: Skrilax_CZ Date: Sun, 12 Apr 2015 17:51:17 +0200 Subject: [PATCH] Implement wifi_qsap_set_tx_power Used by radio proprietary binaries from Motorola. Change-Id: I9fd49cbba6001a4c7ddadf5cb88df06d6146f01a --- softap/sdk/qsap.c | 42 ++++++++++++++++++++++++++++++++++++++++++ softap/sdk/qsap.h | 2 ++ softap/sdk/qsap_api.h | 3 ++- 3 files changed, 46 insertions(+), 1 deletion(-) diff --git a/softap/sdk/qsap.c b/softap/sdk/qsap.c index 290774e..d021985 100644 --- a/softap/sdk/qsap.c +++ b/softap/sdk/qsap.c @@ -713,3 +713,45 @@ int qsap_is_fst_enabled() { return is_fst_enabled(); } + +s32 wifi_qsap_set_tx_power(s32 tx_power) +{ +#define QCSAP_IOCTL_SET_MAX_TX_POWER (SIOCIWFIRSTPRIV + 22) + s32 sock; + s32 ret = eERR_SET_TX_POWER; + s8 interface[128]; + s8 *iface; + s32 len = 128; + struct iwreq wrq; + + if(NULL == (iface = qsap_get_config_value(CONFIG_FILE, &qsap_str[STR_INTERFACE], interface, (u32*)&len))) { + ALOGE("%s :interface error \n", __func__); + return ret; + } + + /* Issue QCSAP_IOCTL_SET_MAX_TX_POWER ioctl */ + sock = socket(AF_INET, SOCK_DGRAM, 0); + + if (sock < 0) { + ALOGE("%s :socket error \n", __func__); + return eERR_SET_TX_POWER; + } + + strlcpy(wrq.ifr_name, iface, sizeof(wrq.ifr_name)); + wrq.u.data.length = sizeof(s32); + wrq.u.data.pointer = &tx_power; + wrq.u.data.flags = 0; + + ret = ioctl(sock, QCSAP_IOCTL_SET_MAX_TX_POWER, &wrq); + close(sock); + + if (ret) { + ALOGE("%s :IOCTL set tx power failed: %ld\n", __func__, ret); + ret = eERR_SET_TX_POWER; + } else { + ALOGD("%s :IOCTL set tx power issued\n", __func__); + ret = eSUCCESS; + } + + return ret; +} diff --git a/softap/sdk/qsap.h b/softap/sdk/qsap.h index caf8302..15e62e3 100644 --- a/softap/sdk/qsap.h +++ b/softap/sdk/qsap.h @@ -54,6 +54,8 @@ s32 wifi_qsap_start_softap_in_concurrency(void); s32 wifi_qsap_stop_softap_in_concurrency(void); #endif +s32 wifi_qsap_set_tx_power(s32); + #if __cplusplus }; // extern "C" #endif diff --git a/softap/sdk/qsap_api.h b/softap/sdk/qsap_api.h index d90fc1b..484cbb3 100755 --- a/softap/sdk/qsap_api.h +++ b/softap/sdk/qsap_api.h @@ -77,7 +77,8 @@ enum error_val { eERR_LOAD_FAILED_SDIOIF, eERR_LOAD_FAILED_SOFTAP, eERR_SET_CHAN_RANGE, - eERR_GET_AUTO_CHAN + eERR_GET_AUTO_CHAN, + eERR_SET_TX_POWER }; #ifndef WIFI_DRIVER_CONF_FILE