qcacld-3.0: Consolidate SIOCGIWRTS and SIOCGIWFRAG ioctls

Currently for both SIOCGIWRTS and SIOCGIWFRAG there are two separate
but identical handlers, one for STA-like interfaces and one for
SAP-like interfaces. For each ioctl consolidate the code into a single
handler. This is a prerequisite for further ioctl cleanup.

Change-Id: I4d4f288198bed2124ec96cf3ca1929e89705d4de
CRs-Fixed: 2004191
This commit is contained in:
Jeff Johnson
2017-02-07 10:00:37 -08:00
committed by qcabuildsw
parent f25ac10144
commit 5b907621fa
3 changed files with 58 additions and 209 deletions

View File

@@ -304,10 +304,6 @@ typedef struct ccp_freq_chan_map_s {
extern int hdd_unregister_wext(struct net_device *dev);
extern int hdd_register_wext(struct net_device *dev);
extern int hdd_wlan_get_freq(uint32_t chan, uint32_t *freq);
extern int hdd_wlan_get_rts_threshold(hdd_adapter_t *pAdapter,
union iwreq_data *wrqu);
extern int hdd_wlan_get_frag_threshold(hdd_adapter_t *pAdapter,
union iwreq_data *wrqu);
extern void hdd_wlan_get_version(hdd_context_t *hdd_ctx,
union iwreq_data *wrqu, char *extra);
@@ -316,6 +312,14 @@ extern void hdd_wlan_get_stats(hdd_adapter_t *pAdapter, uint16_t *length,
extern void hdd_wlan_list_fw_profile(uint16_t *length,
char *buffer, uint16_t buf_len);
int iw_get_rts_threshold(struct net_device *dev,
struct iw_request_info *info,
union iwreq_data *wrqu, char *extra);
int iw_get_frag_threshold(struct net_device *dev,
struct iw_request_info *info,
union iwreq_data *wrqu, char *extra);
extern int iw_set_essid(struct net_device *dev,
struct iw_request_info *info,
union iwreq_data *wrqu, char *extra);

View File

@@ -4555,109 +4555,6 @@ static int iw_set_ap_mlme(struct net_device *dev,
return ret;
}
/**
* __iw_get_ap_rts_threshold() - get ap rts threshold
* @dev - Pointer to the net device.
* @info - Pointer to the iw_request_info.
* @wrqu - Pointer to the iwreq_data.
* @extra - Pointer to the data.
*
* Return: 0 for success, non zero for failure.
*/
static int __iw_get_ap_rts_threshold(struct net_device *dev,
struct iw_request_info *info,
union iwreq_data *wrqu, char *extra) {
hdd_adapter_t *pHostapdAdapter = netdev_priv(dev);
int ret;
hdd_context_t *hdd_ctx;
ENTER_DEV(dev);
hdd_ctx = WLAN_HDD_GET_CTX(pHostapdAdapter);
ret = wlan_hdd_validate_context(hdd_ctx);
if (0 != ret)
return ret;
ret = hdd_wlan_get_rts_threshold(pHostapdAdapter, wrqu);
return ret;
}
/**
* iw_get_ap_rts_threshold() - Wrapper function to protect
* __iw_get_ap_rts_threshold from the SSR.
* @dev - Pointer to the net device.
* @info - Pointer to the iw_request_info.
* @wrqu - Pointer to the iwreq_data.
* @extra - Pointer to the data.
*
* Return: 0 for success, non zero for failure.
*/
static int iw_get_ap_rts_threshold(struct net_device *dev,
struct iw_request_info *info,
union iwreq_data *wrqu, char *extra)
{
int ret;
cds_ssr_protect(__func__);
ret = __iw_get_ap_rts_threshold(dev, info, wrqu, extra);
cds_ssr_unprotect(__func__);
return ret;
}
/**
* __iw_get_ap_frag_threshold() - get ap fragmentation threshold
* @dev - Pointer to the net device.
* @info - Pointer to the iw_request_info.
* @wrqu - Pointer to the iwreq_data.
* @extra - Pointer to the data.
*
* Return: 0 for success, non zero for failure.
*/
static int __iw_get_ap_frag_threshold(struct net_device *dev,
struct iw_request_info *info,
union iwreq_data *wrqu, char *extra) {
hdd_adapter_t *pHostapdAdapter = netdev_priv(dev);
hdd_context_t *hdd_ctx;
int ret = 0;
ENTER_DEV(dev);
hdd_ctx = WLAN_HDD_GET_CTX(pHostapdAdapter);
ret = wlan_hdd_validate_context(hdd_ctx);
if (0 != ret)
return ret;
ret = hdd_wlan_get_frag_threshold(pHostapdAdapter, wrqu);
return ret;
}
/**
* iw_get_ap_frag_threshold() - Wrapper function to protect
* __iw_get_ap_frag_threshold from the SSR.
* @dev - Pointer to the net device.
* @info - Pointer to the iw_request_info.
* @wrqu - Pointer to the iwreq_data.
* @extra - Pointer to the data.
*
* Return: 0 for success, non zero for failure.
*/
static int iw_get_ap_frag_threshold(struct net_device *dev,
struct iw_request_info *info,
union iwreq_data *wrqu, char *extra)
{
int ret;
cds_ssr_protect(__func__);
ret = __iw_get_ap_frag_threshold(dev, info, wrqu, extra);
cds_ssr_unprotect(__func__);
return ret;
}
/**
* __iw_get_ap_freq() - get ap frequency
* @dev - Pointer to the net device.
@@ -5206,9 +5103,9 @@ static const iw_handler hostapd_handler[] = {
(iw_handler) NULL, /* SIOCSIWRATE */
(iw_handler) NULL, /* SIOCGIWRATE */
(iw_handler) NULL, /* SIOCSIWRTS */
(iw_handler) iw_get_ap_rts_threshold, /* SIOCGIWRTS */
(iw_handler) iw_get_rts_threshold, /* SIOCGIWRTS */
(iw_handler) NULL, /* SIOCSIWFRAG */
(iw_handler) iw_get_ap_frag_threshold, /* SIOCGIWFRAG */
(iw_handler) iw_get_frag_threshold, /* SIOCGIWFRAG */
(iw_handler) NULL, /* SIOCSIWTXPOW */
(iw_handler) NULL, /* SIOCGIWTXPOW */
(iw_handler) NULL, /* SIOCSIWRETRY */

View File

@@ -1532,92 +1532,6 @@ static QDF_STATUS hdd_wlan_get_ibss_peer_info_all(hdd_adapter_t *pAdapter)
return status;
}
/**
* hdd_wlan_get_rts_threshold() - Get RTS threshold
* @pAdapter: adapter upon which the request was received
* @wrqu: pointer to the ioctl request
*
* This function retrieves the current RTS threshold value and stores
* it in the ioctl request structure
*
* Return: 0 if valid data was returned, non-zero on error
*/
int hdd_wlan_get_rts_threshold(hdd_adapter_t *pAdapter, union iwreq_data *wrqu)
{
tHalHandle hHal = WLAN_HDD_GET_HAL_CTX(pAdapter);
uint32_t threshold = 0;
hdd_context_t *hdd_ctx;
int ret = 0;
ENTER();
if (NULL == pAdapter) {
hdd_err("Adapter is NULL");
return -EINVAL;
}
hdd_ctx = WLAN_HDD_GET_CTX(pAdapter);
ret = wlan_hdd_validate_context(hdd_ctx);
if (0 != ret)
return ret;
if (QDF_STATUS_SUCCESS !=
sme_cfg_get_int(hHal, WNI_CFG_RTS_THRESHOLD, &threshold)) {
hdd_warn("failed to get ini parameter, WNI_CFG_RTS_THRESHOLD");
return -EIO;
}
wrqu->rts.value = threshold;
hdd_notice("Rts-Threshold=%d!!", wrqu->rts.value);
EXIT();
return 0;
}
/**
* hdd_wlan_get_frag_threshold() - Get fragmentation threshold
* @pAdapter: adapter upon which the request was received
* @wrqu: pointer to the ioctl request
*
* This function retrieves the current fragmentation threshold value
* and stores it in the ioctl request structure
*
* Return: 0 if valid data was returned, non-zero on error
*/
int hdd_wlan_get_frag_threshold(hdd_adapter_t *pAdapter,
union iwreq_data *wrqu)
{
tHalHandle hHal = WLAN_HDD_GET_HAL_CTX(pAdapter);
uint32_t threshold = 0, status = 0;
hdd_context_t *hdd_ctx;
ENTER();
if (NULL == pAdapter) {
hdd_err("Adapter is NULL");
return -EINVAL;
}
hdd_ctx = WLAN_HDD_GET_CTX(pAdapter);
status = wlan_hdd_validate_context(hdd_ctx);
if (0 != status)
return status;
if (sme_cfg_get_int(hHal, WNI_CFG_FRAGMENTATION_THRESHOLD, &threshold)
!= QDF_STATUS_SUCCESS) {
hdd_warn("failed to get ini parameter, WNI_CFG_FRAGMENTATION_THRESHOLD");
return -EIO;
}
wrqu->frag.value = threshold;
hdd_notice("Frag-Threshold=%d!!", wrqu->frag.value);
EXIT();
return 0;
}
/**
* hdd_wlan_get_freq() - Convert channel to frequency
* @channel: channel to be converted
@@ -3686,14 +3600,31 @@ static int __iw_get_rts_threshold(struct net_device *dev,
struct iw_request_info *info,
union iwreq_data *wrqu, char *extra)
{
hdd_adapter_t *pAdapter = WLAN_HDD_GET_PRIV_PTR(dev);
uint32_t status = 0;
hdd_adapter_t *adapter = WLAN_HDD_GET_PRIV_PTR(dev);
tHalHandle hal = WLAN_HDD_GET_HAL_CTX(adapter);
uint32_t threshold = 0;
hdd_context_t *hdd_ctx;
int ret;
ENTER_DEV(dev);
status = hdd_wlan_get_rts_threshold(pAdapter, wrqu);
hdd_ctx = WLAN_HDD_GET_CTX(adapter);
ret = wlan_hdd_validate_context(hdd_ctx);
if (0 != ret)
return ret;
return status;
if (QDF_STATUS_SUCCESS !=
sme_cfg_get_int(hal, WNI_CFG_RTS_THRESHOLD, &threshold)) {
hdd_warn("failed to get ini parameter, WNI_CFG_RTS_THRESHOLD");
return -EIO;
}
wrqu->rts.value = threshold;
hdd_notice("Rts-Threshold=%d!!", wrqu->rts.value);
EXIT();
return 0;
}
/**
@@ -3746,9 +3677,9 @@ static int __iw_set_rts_threshold(struct net_device *dev,
*
* Return: 0 on success, error number otherwise
*/
static int iw_get_rts_threshold(struct net_device *dev,
struct iw_request_info *info,
union iwreq_data *wrqu, char *extra)
int iw_get_rts_threshold(struct net_device *dev,
struct iw_request_info *info,
union iwreq_data *wrqu, char *extra)
{
int ret;
@@ -3794,14 +3725,31 @@ static int __iw_get_frag_threshold(struct net_device *dev,
struct iw_request_info *info,
union iwreq_data *wrqu, char *extra)
{
hdd_adapter_t *pAdapter = WLAN_HDD_GET_PRIV_PTR(dev);
uint32_t status = 0;
hdd_adapter_t *adapter = WLAN_HDD_GET_PRIV_PTR(dev);
tHalHandle hal = WLAN_HDD_GET_HAL_CTX(adapter);
uint32_t threshold = 0;
hdd_context_t *hdd_ctx;
int ret;
ENTER_DEV(dev);
status = hdd_wlan_get_frag_threshold(pAdapter, wrqu);
hdd_ctx = WLAN_HDD_GET_CTX(adapter);
ret = wlan_hdd_validate_context(hdd_ctx);
if (0 != ret)
return ret;
return status;
if (sme_cfg_get_int(hal, WNI_CFG_FRAGMENTATION_THRESHOLD, &threshold)
!= QDF_STATUS_SUCCESS) {
hdd_warn("failed to get ini parameter, WNI_CFG_FRAGMENTATION_THRESHOLD");
return -EIO;
}
wrqu->frag.value = threshold;
hdd_notice("Frag-Threshold=%d!!", wrqu->frag.value);
EXIT();
return 0;
}
/**
@@ -3813,9 +3761,9 @@ static int __iw_get_frag_threshold(struct net_device *dev,
*
* Return: 0 on success, error number otherwise
*/
static int iw_get_frag_threshold(struct net_device *dev,
struct iw_request_info *info,
union iwreq_data *wrqu, char *extra)
int iw_get_frag_threshold(struct net_device *dev,
struct iw_request_info *info,
union iwreq_data *wrqu, char *extra)
{
int ret;