qcacld-3.0: Remove the support for setwpaie ioctl

qcacld-2.0 to qcacld-3.0 propagation.

This ioctl gets call during the start of SAP/hostapd with wext
interface and which is obsolete, currently using nl80211 interface
for the same

Remove the code related to setwpaie ioctl

CRs-Fixed: 1000913
Change-Id: Ia45860d7143639aa62d02afe8c08e283e20ba27a
(cherry picked from commit faa23a5a51fcad2cd38e4f4a41c10d8acdd42d36)
This commit is contained in:
Anurag Chouhan
2016-09-03 16:24:08 +05:30
committed by qcabuildsw
szülő 05d124f8cb
commit f00931b6fb
2 fájl változott, egészen pontosan 0 új sor hozzáadva és 630 régi sor törölve

Fájl megtekintése

@@ -137,7 +137,6 @@ typedef struct {
#define QCSAP_IOCTL_SET_NONE_GET_THREE (SIOCIWFIRSTPRIV + 3) #define QCSAP_IOCTL_SET_NONE_GET_THREE (SIOCIWFIRSTPRIV + 3)
#define WE_GET_TSF 1 #define WE_GET_TSF 1
#define QCSAP_IOCTL_GET_STAWPAIE (SIOCIWFIRSTPRIV + 4) #define QCSAP_IOCTL_GET_STAWPAIE (SIOCIWFIRSTPRIV + 4)
#define QCSAP_IOCTL_SETWPAIE (SIOCIWFIRSTPRIV + 5)
#define QCSAP_IOCTL_STOPBSS (SIOCIWFIRSTPRIV + 6) #define QCSAP_IOCTL_STOPBSS (SIOCIWFIRSTPRIV + 6)
#define QCSAP_IOCTL_VERSION (SIOCIWFIRSTPRIV + 7) #define QCSAP_IOCTL_VERSION (SIOCIWFIRSTPRIV + 7)
#define QCSAP_IOCTL_GET_WPS_PBC_PROBE_REQ_IES (SIOCIWFIRSTPRIV + 8) #define QCSAP_IOCTL_GET_WPS_PBC_PROBE_REQ_IES (SIOCIWFIRSTPRIV + 8)

Fájl megtekintése

@@ -4687,630 +4687,6 @@ static int iw_get_mode(struct net_device *dev,
return ret; return ret;
} }
static int
__iw_softap_setwpsie(struct net_device *dev,
struct iw_request_info *info,
union iwreq_data *wrqu, char *extra)
{
hdd_adapter_t *pHostapdAdapter = (netdev_priv(dev));
#ifndef WLAN_FEATURE_MBSSID
v_CONTEXT_t cds_ctx;
#endif
hdd_hostapd_state_t *pHostapdState;
QDF_STATUS qdf_ret_status = QDF_STATUS_SUCCESS;
uint8_t *wps_genie;
uint8_t *fwps_genie;
uint8_t *pos;
tpSap_WPSIE pSap_WPSIe;
uint8_t WPSIeType;
uint16_t length;
struct iw_point s_priv_data;
hdd_context_t *hdd_ctx;
int ret;
ENTER_DEV(dev);
if (!capable(CAP_NET_ADMIN)) {
hdd_err("permission check failed");
return -EPERM;
}
hdd_ctx = WLAN_HDD_GET_CTX(pHostapdAdapter);
ret = wlan_hdd_validate_context(hdd_ctx);
if (0 != ret)
return ret;
#ifndef WLAN_FEATURE_MBSSID
cds_ctx = hdd_ctx->pcds_context;
if (NULL == cds_ctx) {
hdd_err("HDD context is not valid ");
return -EINVAL;
}
#endif
/* helper function to get iwreq_data with compat handling. */
if (hdd_priv_get_data(&s_priv_data, wrqu)) {
return -EINVAL;
}
if ((NULL == s_priv_data.pointer) ||
(s_priv_data.length < QCSAP_MAX_WSC_IE)) {
return -EINVAL;
}
wps_genie = mem_alloc_copy_from_user_helper(s_priv_data.pointer,
s_priv_data.length);
if (NULL == wps_genie) {
hdd_notice("failed to alloc mem and copy data");
return -EFAULT;
}
fwps_genie = wps_genie;
pSap_WPSIe = qdf_mem_malloc(sizeof(tSap_WPSIE));
if (NULL == pSap_WPSIe) {
hdd_err("QDF unable to allocate memory");
kfree(fwps_genie);
return -ENOMEM;
}
qdf_mem_zero(pSap_WPSIe, sizeof(tSap_WPSIE));
hdd_notice("WPS IE type[0x%X] IE[0x%X], LEN[%d]",
wps_genie[0], wps_genie[1], wps_genie[2]);
WPSIeType = wps_genie[0];
if (wps_genie[0] == eQC_WPS_BEACON_IE) {
pSap_WPSIe->sapWPSIECode = eSAP_WPS_BEACON_IE;
wps_genie = wps_genie + 1;
switch (wps_genie[0]) {
case DOT11F_EID_WPA:
if (wps_genie[1] < 2 + 4) {
ret = -EINVAL;
goto exit;
} else if (memcmp(&wps_genie[2],
"\x00\x50\xf2\x04", 4) == 0) {
hdd_notice("Set WPS BEACON IE(len %d)",
wps_genie[1] + 2);
pos = &wps_genie[6];
while (((size_t) pos -
(size_t) &wps_genie[6]) <
(wps_genie[1] - 4)) {
switch ((uint16_t) (*pos << 8) |
*(pos + 1)) {
case HDD_WPS_ELEM_VERSION:
pos += 4;
pSap_WPSIe->sapwpsie.
sapWPSBeaconIE.Version =
*pos;
hdd_notice("WPS version %d",
pSap_WPSIe->sapwpsie.
sapWPSBeaconIE.Version);
pSap_WPSIe->sapwpsie.
sapWPSBeaconIE.
FieldPresent |=
WPS_BEACON_VER_PRESENT;
pos += 1;
break;
case HDD_WPS_ELEM_WPS_STATE:
pos += 4;
pSap_WPSIe->sapwpsie.
sapWPSBeaconIE.wpsState =
*pos;
hdd_notice("WPS State %d",
pSap_WPSIe->sapwpsie.
sapWPSBeaconIE.wpsState);
pSap_WPSIe->sapwpsie.
sapWPSBeaconIE.
FieldPresent |=
WPS_BEACON_STATE_PRESENT;
pos += 1;
break;
case HDD_WPS_ELEM_APSETUPLOCK:
pos += 4;
pSap_WPSIe->sapwpsie.
sapWPSBeaconIE.
APSetupLocked = *pos;
hdd_notice("AP setup lock %d",
pSap_WPSIe->sapwpsie.
sapWPSBeaconIE.
APSetupLocked);
pSap_WPSIe->sapwpsie.
sapWPSBeaconIE.
FieldPresent |=
WPS_BEACON_APSETUPLOCK_PRESENT;
pos += 1;
break;
case HDD_WPS_ELEM_SELECTEDREGISTRA:
pos += 4;
pSap_WPSIe->sapwpsie.
sapWPSBeaconIE.
SelectedRegistra = *pos;
hdd_notice("Selected Registra %d",
pSap_WPSIe->sapwpsie.
sapWPSBeaconIE.
SelectedRegistra);
pSap_WPSIe->sapwpsie.
sapWPSBeaconIE.
FieldPresent |=
WPS_BEACON_SELECTEDREGISTRA_PRESENT;
pos += 1;
break;
case HDD_WPS_ELEM_DEVICE_PASSWORD_ID:
pos += 4;
pSap_WPSIe->sapwpsie.
sapWPSBeaconIE.
DevicePasswordID =
(*pos << 8) | *(pos + 1);
hdd_notice("Password ID: %x",
pSap_WPSIe->sapwpsie.
sapWPSBeaconIE.
DevicePasswordID);
pSap_WPSIe->sapwpsie.
sapWPSBeaconIE.
FieldPresent |=
WPS_BEACON_DEVICEPASSWORDID_PRESENT;
pos += 2;
break;
case HDD_WPS_ELEM_REGISTRA_CONF_METHODS:
pos +=
4;
pSap_WPSIe->sapwpsie.
sapWPSBeaconIE.
SelectedRegistraCfgMethod =
(*pos << 8) | *(pos + 1);
hdd_notice("Select Registra Config Methods: %x",
pSap_WPSIe->sapwpsie.
sapWPSBeaconIE.
SelectedRegistraCfgMethod);
pSap_WPSIe->sapwpsie.
sapWPSBeaconIE.
FieldPresent |=
WPS_BEACON_SELECTEDREGISTRACFGMETHOD_PRESENT;
pos += 2;
break;
case HDD_WPS_ELEM_UUID_E:
pos += 2;
length = *pos << 8 | *(pos + 1);
pos += 2;
if (length >
sizeof(pSap_WPSIe->sapwpsie.
sapWPSBeaconIE.UUID_E)) {
ret = -EINVAL;
goto exit;
}
qdf_mem_copy(pSap_WPSIe->
sapwpsie.
sapWPSBeaconIE.
UUID_E, pos,
length);
pSap_WPSIe->sapwpsie.
sapWPSBeaconIE.
FieldPresent |=
WPS_BEACON_UUIDE_PRESENT;
pos += length;
break;
case HDD_WPS_ELEM_RF_BANDS:
pos += 4;
pSap_WPSIe->sapwpsie.
sapWPSBeaconIE.RFBand =
*pos;
hdd_notice("RF band: %d",
pSap_WPSIe->sapwpsie.
sapWPSBeaconIE.RFBand);
pSap_WPSIe->sapwpsie.
sapWPSBeaconIE.
FieldPresent |=
WPS_BEACON_RF_BANDS_PRESENT;
pos += 1;
break;
default:
hdd_warn("UNKNOWN TLV in WPS IE(%x)",
(*pos << 8 |
*(pos + 1)));
ret = -EINVAL;
goto exit;
}
}
} else {
hdd_err("WPS IE Mismatch %X",
wps_genie[0]);
}
break;
default:
hdd_err("Set UNKNOWN IE %X", wps_genie[0]);
ret = -EINVAL;
goto exit;
}
} else if (wps_genie[0] == eQC_WPS_PROBE_RSP_IE) {
pSap_WPSIe->sapWPSIECode = eSAP_WPS_PROBE_RSP_IE;
wps_genie = wps_genie + 1;
switch (wps_genie[0]) {
case DOT11F_EID_WPA:
if (wps_genie[1] < 2 + 4) {
ret = -EINVAL;
goto exit;
} else if (memcmp(&wps_genie[2], "\x00\x50\xf2\x04", 4)
== 0) {
hdd_notice("Set WPS PROBE RSP IE(len %d)",
wps_genie[1] + 2);
pos = &wps_genie[6];
while (((size_t) pos -
(size_t) &wps_genie[6]) <
(wps_genie[1] - 4)) {
switch ((uint16_t) (*pos << 8) |
*(pos + 1)) {
case HDD_WPS_ELEM_VERSION:
pos += 4;
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.Version =
*pos;
hdd_notice("WPS version %d",
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
Version);
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
FieldPresent |=
WPS_PROBRSP_VER_PRESENT;
pos += 1;
break;
case HDD_WPS_ELEM_WPS_STATE:
pos += 4;
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.wpsState =
*pos;
hdd_notice("WPS State %d",
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
wpsState);
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
FieldPresent |=
WPS_PROBRSP_STATE_PRESENT;
pos += 1;
break;
case HDD_WPS_ELEM_APSETUPLOCK:
pos += 4;
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
APSetupLocked = *pos;
hdd_notice("AP setup lock %d",
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
APSetupLocked);
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
FieldPresent |=
WPS_PROBRSP_APSETUPLOCK_PRESENT;
pos += 1;
break;
case HDD_WPS_ELEM_SELECTEDREGISTRA:
pos += 4;
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
SelectedRegistra = *pos;
hdd_notice("Selected Registra %d",
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
SelectedRegistra);
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
FieldPresent |=
WPS_PROBRSP_SELECTEDREGISTRA_PRESENT;
pos += 1;
break;
case HDD_WPS_ELEM_DEVICE_PASSWORD_ID:
pos += 4;
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
DevicePasswordID =
(*pos << 8) | *(pos + 1);
hdd_notice("Password ID: %d",
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
DevicePasswordID);
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
FieldPresent |=
WPS_PROBRSP_DEVICEPASSWORDID_PRESENT;
pos += 2;
break;
case HDD_WPS_ELEM_REGISTRA_CONF_METHODS:
pos +=
4;
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
SelectedRegistraCfgMethod =
(*pos << 8) | *(pos + 1);
hdd_notice("Select Registra Config Methods: %x",
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
SelectedRegistraCfgMethod);
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
FieldPresent |=
WPS_PROBRSP_SELECTEDREGISTRACFGMETHOD_PRESENT;
pos += 2;
break;
case HDD_WPS_ELEM_RSP_TYPE:
pos += 4;
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
ResponseType = *pos;
hdd_notice("Config Methods: %d",
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
ResponseType);
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
FieldPresent |=
WPS_PROBRSP_RESPONSETYPE_PRESENT;
pos += 1;
break;
case HDD_WPS_ELEM_UUID_E:
pos += 2;
length = *pos << 8 | *(pos + 1);
pos += 2;
if (length >
(sizeof(pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.UUID_E))) {
ret = -EINVAL;
goto exit;
}
qdf_mem_copy(pSap_WPSIe->
sapwpsie.
sapWPSProbeRspIE.
UUID_E, pos,
length);
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
FieldPresent |=
WPS_PROBRSP_UUIDE_PRESENT;
pos += length;
break;
case HDD_WPS_ELEM_MANUFACTURER:
pos += 2;
length = *pos << 8 | *(pos + 1);
pos += 2;
if (length >
(sizeof(pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.Manufacture.name))) {
ret = -EINVAL;
goto exit;
}
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
Manufacture.num_name =
length;
qdf_mem_copy(pSap_WPSIe->
sapwpsie.
sapWPSProbeRspIE.
Manufacture.name,
pos, length);
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
FieldPresent |=
WPS_PROBRSP_MANUFACTURE_PRESENT;
pos += length;
break;
case HDD_WPS_ELEM_MODEL_NAME:
pos += 2;
length = *pos << 8 | *(pos + 1);
pos += 2;
if (length >
(sizeof(pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.ModelName.text))) {
ret = -EINVAL;
goto exit;
}
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.ModelName.
num_text = length;
qdf_mem_copy(pSap_WPSIe->
sapwpsie.
sapWPSProbeRspIE.
ModelName.text,
pos, length);
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
FieldPresent |=
WPS_PROBRSP_MODELNAME_PRESENT;
pos += length;
break;
case HDD_WPS_ELEM_MODEL_NUM:
pos += 2;
length = *pos << 8 | *(pos + 1);
pos += 2;
if (length >
(sizeof(pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.ModelNumber.text))) {
ret = -EINVAL;
goto exit;
}
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
ModelNumber.num_text =
length;
qdf_mem_copy(pSap_WPSIe->
sapwpsie.
sapWPSProbeRspIE.
ModelNumber.text,
pos, length);
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
FieldPresent |=
WPS_PROBRSP_MODELNUMBER_PRESENT;
pos += length;
break;
case HDD_WPS_ELEM_SERIAL_NUM:
pos += 2;
length = *pos << 8 | *(pos + 1);
pos += 2;
if (length >
(sizeof(pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.SerialNumber.text))) {
ret = -EINVAL;
goto exit;
}
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
SerialNumber.num_text =
length;
qdf_mem_copy(pSap_WPSIe->
sapwpsie.
sapWPSProbeRspIE.
SerialNumber.text,
pos, length);
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
FieldPresent |=
WPS_PROBRSP_SERIALNUMBER_PRESENT;
pos += length;
break;
case HDD_WPS_ELEM_PRIMARY_DEVICE_TYPE:
pos += 4;
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
PrimaryDeviceCategory =
(*pos << 8 | *(pos + 1));
hdd_notice("primary dev category: %d",
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
PrimaryDeviceCategory);
pos += 2;
qdf_mem_copy(pSap_WPSIe->
sapwpsie.
sapWPSProbeRspIE.
PrimaryDeviceOUI,
pos,
HDD_WPS_DEVICE_OUI_LEN);
hdd_notice("primary dev oui: %02x, %02x, %02x, %02x",
pos[0], pos[1], pos[2],
pos[3]);
pos += 4;
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
DeviceSubCategory =
(*pos << 8 | *(pos + 1));
hdd_notice("primary dev sub category: %d",
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
DeviceSubCategory);
pos += 2;
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
FieldPresent |=
WPS_PROBRSP_PRIMARYDEVICETYPE_PRESENT;
break;
case HDD_WPS_ELEM_DEVICE_NAME:
pos += 2;
length = *pos << 8 | *(pos + 1);
pos += 2;
if (length >
(sizeof(pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.DeviceName.text))) {
ret = -EINVAL;
goto exit;
}
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.DeviceName.
num_text = length;
qdf_mem_copy(pSap_WPSIe->
sapwpsie.
sapWPSProbeRspIE.
DeviceName.text,
pos, length);
pos += length;
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
FieldPresent |=
WPS_PROBRSP_DEVICENAME_PRESENT;
break;
case HDD_WPS_ELEM_CONFIG_METHODS:
pos += 4;
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
ConfigMethod =
(*pos << 8) | *(pos + 1);
hdd_notice("Config Methods: %d",
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
SelectedRegistraCfgMethod);
pos += 2;
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
FieldPresent |=
WPS_PROBRSP_CONFIGMETHODS_PRESENT;
break;
case HDD_WPS_ELEM_RF_BANDS:
pos += 4;
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.RFBand =
*pos;
hdd_notice("RF band: %d",
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.RFBand);
pos += 1;
pSap_WPSIe->sapwpsie.
sapWPSProbeRspIE.
FieldPresent |=
WPS_PROBRSP_RF_BANDS_PRESENT;
break;
} /* switch */
}
} else {
hdd_err("WPS IE Mismatch %X", wps_genie[0]);
}
} /* switch */
}
#ifdef WLAN_FEATURE_MBSSID
qdf_ret_status =
wlansap_set_wps_ie(WLAN_HDD_GET_SAP_CTX_PTR(pHostapdAdapter),
pSap_WPSIe);
#else
qdf_ret_status = wlansap_set_wps_ie(p_cds_context, pSap_WPSIe);
#endif
if (qdf_ret_status != QDF_STATUS_SUCCESS)
ret = -EINVAL;
pHostapdState = WLAN_HDD_GET_HOSTAP_STATE_PTR(pHostapdAdapter);
if (pHostapdState->bCommit && WPSIeType == eQC_WPS_PROBE_RSP_IE) {
#ifdef WLAN_FEATURE_MBSSID
wlansap_update_wps_ie(WLAN_HDD_GET_SAP_CTX_PTR(pHostapdAdapter));
#else
wlansap_update_wps_ie(p_cds_context);
#endif
}
exit:
qdf_mem_free(pSap_WPSIe);
kfree(fwps_genie);
EXIT();
return ret;
}
static int iw_softap_setwpsie(struct net_device *dev,
struct iw_request_info *info,
union iwreq_data *wrqu,
char *extra)
{
int ret;
cds_ssr_protect(__func__);
ret = __iw_softap_setwpsie(dev, info, wrqu, extra);
cds_ssr_unprotect(__func__);
return ret;
}
static int static int
__iw_softap_stopbss(struct net_device *dev, __iw_softap_stopbss(struct net_device *dev,
struct iw_request_info *info, struct iw_request_info *info,
@@ -6027,10 +5403,6 @@ static const struct iw_priv_args hostapd_private_args[] = {
QCSAP_IOCTL_GET_STAWPAIE, QCSAP_IOCTL_GET_STAWPAIE,
0, IW_PRIV_TYPE_BYTE | DOT11F_IE_RSN_MAX_LEN, 0, IW_PRIV_TYPE_BYTE | DOT11F_IE_RSN_MAX_LEN,
"get_staWPAIE" "get_staWPAIE"
}, {
QCSAP_IOCTL_SETWPAIE,
IW_PRIV_TYPE_BYTE | QCSAP_MAX_WSC_IE |
IW_PRIV_SIZE_FIXED, 0, "setwpaie"
}, { }, {
QCSAP_IOCTL_STOPBSS, IW_PRIV_TYPE_BYTE | IW_PRIV_SIZE_FIXED, 0, QCSAP_IOCTL_STOPBSS, IW_PRIV_TYPE_BYTE | IW_PRIV_SIZE_FIXED, 0,
"stopbss" "stopbss"
@@ -6203,7 +5575,6 @@ static const iw_handler hostapd_private[] = {
iw_softap_get_three, iw_softap_get_three,
/* get station genIE */ /* get station genIE */
[QCSAP_IOCTL_GET_STAWPAIE - SIOCIWFIRSTPRIV] = iw_get_genie, [QCSAP_IOCTL_GET_STAWPAIE - SIOCIWFIRSTPRIV] = iw_get_genie,
[QCSAP_IOCTL_SETWPAIE - SIOCIWFIRSTPRIV] = iw_softap_setwpsie,
/* stop bss */ /* stop bss */
[QCSAP_IOCTL_STOPBSS - SIOCIWFIRSTPRIV] = iw_softap_stopbss, [QCSAP_IOCTL_STOPBSS - SIOCIWFIRSTPRIV] = iw_softap_stopbss,
/* get driver version */ /* get driver version */