diff options
| author | Sumathi Mandipati <sumathi@qti.qualcomm.com> | 2014-01-13 20:27:16 +0530 |
|---|---|---|
| committer | Akash Patel <c_akashp@qca.qualcomm.com> | 2014-02-13 21:04:06 -0800 |
| commit | 5d4f450a226ae480f29c9c778ec04fba0ab53d7b (patch) | |
| tree | a3922a0e681d2c10bb473f3614b13cbf5f6ca215 | |
| parent | 7354e033618b2a3e09bcc7ce6bbc7654c0c635b2 (diff) | |
qcacld: support for Soft TRP iw commands.
In SAP mode the support for iwpriv commands set11NRates,
and set11ACRates features is added.
CRs-Fixed: 594430
Change-Id: I5e1674b256f97a9b0b8d81364c48df30b2cd80a3
| -rw-r--r-- | CORE/HDD/inc/qc_sap_ioctl.h | 2 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_hostapd.c | 105 |
2 files changed, 105 insertions, 2 deletions
diff --git a/CORE/HDD/inc/qc_sap_ioctl.h b/CORE/HDD/inc/qc_sap_ioctl.h index 5c2ea9372a20..190df8549620 100644 --- a/CORE/HDD/inc/qc_sap_ioctl.h +++ b/CORE/HDD/inc/qc_sap_ioctl.h @@ -276,6 +276,8 @@ typedef struct #define QCASAP_SET_VHT_RATE 45 #define QCASAP_SET_SHORT_GI 46 #define QCASAP_GET_SHORT_GI 47 +#define QCSAP_SET_11N_RATE 48 +#define QCSAP_SET_VHT_RATE 49 #endif /* QCA_WIFI_2_0 */ enum { diff --git a/CORE/HDD/src/wlan_hdd_hostapd.c b/CORE/HDD/src/wlan_hdd_hostapd.c index e09772125427..255cc9e2d9c6 100644 --- a/CORE/HDD/src/wlan_hdd_hostapd.c +++ b/CORE/HDD/src/wlan_hdd_hostapd.c @@ -100,6 +100,11 @@ extern int process_wma_set_command(int sessid, int paramid, */ #define WE_SAP_MAX_STA_INFO 0x7FF +#define RC_2_RATE_IDX(_rc) ((_rc) & 0x7) +#define HT_RC_2_STREAMS(_rc) ((((_rc) & 0x78) >> 3) + 1) +#define RC_2_RATE_IDX_11AC(_rc) ((_rc) & 0xf) +#define HT_RC_2_STREAMS_11AC(_rc) ((((_rc) & 0x30) >> 4) + 1) + #define SAP_24GHZ_CH_COUNT (14) /*--------------------------------------------------------------------------- @@ -1557,6 +1562,101 @@ static iw_softap_setparam(struct net_device *dev, break; } + case QCASAP_SET_TXRX_FWSTATS: + { + hddLog(LOG1, "WE_SET_TXRX_FWSTATS val %d", set_value); + ret = process_wma_set_command((int)pHostapdAdapter->sessionId, + (int)WMA_VDEV_TXRX_FWSTATS_ENABLE_CMDID, + set_value, VDEV_CMD); + break; + } + case QCASAP_TXRX_FWSTATS_RESET: + { + hddLog(LOG1, "WE_TXRX_FWSTATS_RESET val %d", set_value); + ret = process_wma_set_command((int)pHostapdAdapter->sessionId, + (int)WMA_VDEV_TXRX_FWSTATS_RESET_CMDID, + set_value, VDEV_CMD); + break; + } + + 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; + } + case QCASAP_SET_11N_RATE: + { + u_int8_t preamble, nss, rix; + hddLog(LOG1, "SAP WE_SET_11N_RATE val %d", set_value); + + rix = RC_2_RATE_IDX(set_value); + if (set_value & 0x80) { + preamble = WMI_RATE_PREAMBLE_HT; + nss = HT_RC_2_STREAMS(set_value) -1; + } else { + nss = 0; + rix = RC_2_RATE_IDX(set_value); + if (set_value & 0x10) { + preamble = WMI_RATE_PREAMBLE_CCK; + if (rix != 0x3) + /* Enable Short preamble always for CCK except 1mbps*/ + rix |= 0x4; + } else + preamble = WMI_RATE_PREAMBLE_OFDM; + } + + hddLog(LOG1, "SAP WMI_VDEV_PARAM_FIXED_RATE val %d rix %d " + "preamble %x nss %d", set_value, rix, preamble, nss); + + set_value = (preamble << 6) | (nss << 4) | rix; + ret = process_wma_set_command((int)pHostapdAdapter->sessionId, + (int)WMI_VDEV_PARAM_FIXED_RATE, + set_value, VDEV_CMD); + break; + } + case QCASAP_SET_VHT_RATE: + { + u_int8_t preamble, nss, rix; + hddLog(LOG1, "SAP WE_SET_11AC_RATE val %d", set_value); + + rix = RC_2_RATE_IDX_11AC(set_value); + preamble = WMI_RATE_PREAMBLE_VHT; + nss = HT_RC_2_STREAMS_11AC(set_value) -1; + + hddLog(LOG1, "SAP WMI_VDEV_PARAM_FIXED_RATE val %d rix %d " + "preamble %x nss %d", set_value, rix, preamble, nss); + + set_value = (preamble << 6) | (nss << 4) | rix; + ret = process_wma_set_command((int)pHostapdAdapter->sessionId, + (int)WMI_VDEV_PARAM_FIXED_RATE, + set_value, VDEV_CMD); + break; + } + + case QCASAP_SET_SHORT_GI: + { + hddLog(LOG1, "QCASAP_SET_SHORT_GI val %d", set_value); + + ret = sme_UpdateHTConfig(hHal, pHostapdAdapter->sessionId, + WNI_CFG_HT_CAP_INFO_SHORT_GI_20MHZ, /* same as 40MHZ */ + set_value); + if (ret) + hddLog(LOGE, "Failed to set ShortGI value ret(%d)", ret); + break; + } + #endif /* QCA_WIFI_2_0 */ default: hddLog(LOGE, FL("Invalid setparam command %d value %d"), @@ -1794,12 +1894,13 @@ static iw_softap_set_tx_power(struct net_device *dev, "%s: Invalid SAP pointer from pvosGCtx", __func__); return VOS_STATUS_E_FAULT; } - vos_mem_copy(bssid, pHostapdAdapter->macAddressCurrent.bytes, VOS_MAC_ADDR_SIZE); + set_value = value[0]; if (eHAL_STATUS_SUCCESS != sme_SetTxPower(hHal, pSapCtx->sessionId, bssid, - pHostapdAdapter->device_mode, set_value)) + pHostapdAdapter->device_mode, + set_value)) { hddLog(VOS_TRACE_LEVEL_ERROR, "%s: Setting tx power failed", __func__); |
