diff options
| author | Ming-yi Lin <mylin@qca.qualcomm.com> | 2013-12-28 15:49:19 -0800 |
|---|---|---|
| committer | Prakash Dhavali <pdhavali@qca.qualcomm.com> | 2014-01-11 15:17:09 -0800 |
| commit | 11240c4ee35598f0c8665f48dbe44eae79dd7939 (patch) | |
| tree | adc4f0a964572f1a16faf23335a50ad612dcc64e | |
| parent | fd7d50da0aea63c507359e3e1e46d324c27b93ca (diff) | |
qcacld: HDD: RTSCTS protection host API Implmentation
RTSCTS protection STA mode API was not working. Fix it.
Also implement private ioctl api for SAP mode.
Change-Id: I5631d220f20a470fa4e1772ab3dceb7972d5b546
CRs-fixed: 594385
| -rw-r--r-- | CORE/HDD/inc/qc_sap_ioctl.h | 2 | ||||
| -rw-r--r-- | CORE/HDD/inc/wlan_hdd_wext.h | 4 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_hostapd.c | 36 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_wext.c | 8 |
4 files changed, 45 insertions, 5 deletions
diff --git a/CORE/HDD/inc/qc_sap_ioctl.h b/CORE/HDD/inc/qc_sap_ioctl.h index 6869975f270f..fa4b9aa99658 100644 --- a/CORE/HDD/inc/qc_sap_ioctl.h +++ b/CORE/HDD/inc/qc_sap_ioctl.h @@ -260,6 +260,8 @@ typedef struct #ifdef DEBUG #define QCSAP_FW_CRASH_INJECT 39 #endif +#define QCSAP_PARAM_SETRTSCTS 42 +#define QCSAP_PARAM_GETRTSCTS 43 #endif /* QCA_WIFI_2_0 */ enum { diff --git a/CORE/HDD/inc/wlan_hdd_wext.h b/CORE/HDD/inc/wlan_hdd_wext.h index 44c08fdc2d82..28a6ab9e52e6 100644 --- a/CORE/HDD/inc/wlan_hdd_wext.h +++ b/CORE/HDD/inc/wlan_hdd_wext.h @@ -205,7 +205,9 @@ typedef enum #define HDD_WPS_ELEM_DEVICE_NAME 0x1011 #define HDD_WPS_ELEM_REGISTRA_CONF_METHODS 0x1053 - +#define HDD_RTSCTS_EN_MASK 0xF +#define HDD_RTSCTS_ENABLE 1 +#define HDD_CTS_ENABLE 2 #define WPS_OUI_TYPE "\x00\x50\xf2\x04" #define WPS_OUI_TYPE_SIZE 4 diff --git a/CORE/HDD/src/wlan_hdd_hostapd.c b/CORE/HDD/src/wlan_hdd_hostapd.c index 9ac914c705aa..e873a9787739 100644 --- a/CORE/HDD/src/wlan_hdd_hostapd.c +++ b/CORE/HDD/src/wlan_hdd_hostapd.c @@ -1196,6 +1196,23 @@ static iw_softap_setparam(struct net_device *dev, break; } #endif + case QCSAP_PARAM_SETRTSCTS: + { + ret = process_wma_set_command((int)pHostapdAdapter->sessionId, + (int)WMI_VDEV_PARAM_ENABLE_RTSCTS, + set_value, VDEV_CMD); + if (!ret) { + if (ccmCfgSetInt(hHal, WNI_CFG_RTS_THRESHOLD, (tANI_U32)value, + ccmCfgSetCallback, eANI_BOOLEAN_TRUE) != + eHAL_STATUS_SUCCESS) { + + hddLog(LOGE, "FAILED TO SET RTSCTS at SAP"); + ret = -EIO; + break; + } + } + break; + } #endif /* QCA_WIFI_2_0 */ default: hddLog(LOGE, FL("Invalid setparam command %d value %d"), @@ -1265,7 +1282,16 @@ static iw_softap_getparam(struct net_device *dev, *value = (WLAN_HDD_GET_CTX(pHostapdAdapter))->cfg_ini->apAutoChannelSelection; break; } - + case QCSAP_PARAM_GETRTSCTS: + { + hdd_context_t *wmahddCtxt = WLAN_HDD_GET_CTX(pHostapdAdapter); + void *wmapvosContext = wmahddCtxt->pvosContext; + *value = wma_cli_get_command(wmapvosContext, + (int)pHostapdAdapter->sessionId, + (int)WMI_VDEV_PARAM_ENABLE_RTSCTS, + VDEV_CMD); + break; + } default: hddLog(LOGE, FL("Invalid getparam command %d"), sub_cmd); ret = -EINVAL; @@ -3147,6 +3173,14 @@ static const struct iw_priv_args hostapd_private_args[] = { 0, "crash_inject" }, #endif + { QCSAP_PARAM_SETRTSCTS, + IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, + 0, + "enablertscts" }, + { QCSAP_PARAM_GETRTSCTS, 0, + IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, + "get_rtscts" }, + #endif /* QCA_WIFI_2_0 */ { QCSAP_IOCTL_GETPARAM, diff --git a/CORE/HDD/src/wlan_hdd_wext.c b/CORE/HDD/src/wlan_hdd_wext.c index ad9bb2a81bd8..c092193455f6 100644 --- a/CORE/HDD/src/wlan_hdd_wext.c +++ b/CORE/HDD/src/wlan_hdd_wext.c @@ -4619,10 +4619,12 @@ static int iw_setint_getnone(struct net_device *dev, struct iw_request_info *inf { u_int32_t value; - hddLog(LOG1, "WMI_VDEV_PARAM_ENABLE_RTSCTS val %d", set_value); - if (set_value == 1) + hddLog(LOG1, "WMI_VDEV_PARAM_ENABLE_RTSCTS val 0x%x", set_value); + + if ((set_value & HDD_RTSCTS_EN_MASK) == HDD_RTSCTS_ENABLE) value = (WLAN_HDD_GET_CTX(pAdapter))->cfg_ini->RTSThreshold; - else if (set_value == 0) + else if (((set_value & HDD_RTSCTS_EN_MASK) == 0) || + ((set_value & HDD_RTSCTS_EN_MASK) == HDD_CTS_ENABLE)) value = WNI_CFG_RTS_THRESHOLD_STAMAX; else return -EIO; |
