Lines Matching defs:param

45 static int wpa_set_encryption(struct net_device *dev, struct ieee_param *param, u32 param_len)
55 param->u.crypt.err = 0;
56 param->u.crypt.alg[IEEE_CRYPT_ALG_NAME_LEN - 1] = '\0';
58 if (param_len < (u32)((u8 *)param->u.crypt.key - (u8 *)param) + param->u.crypt.key_len) {
63 if (param->sta_addr[0] != 0xff || param->sta_addr[1] != 0xff ||
64 param->sta_addr[2] != 0xff || param->sta_addr[3] != 0xff ||
65 param->sta_addr[4] != 0xff || param->sta_addr[5] != 0xff) {
70 if (strcmp(param->u.crypt.alg, "WEP") == 0)
75 if (param->u.crypt.idx > max_idx) {
76 netdev_err(dev, "Error crypt.idx %d > %d\n", param->u.crypt.idx, max_idx);
81 if (strcmp(param->u.crypt.alg, "WEP") == 0) {
86 wep_key_idx = param->u.crypt.idx;
87 wep_key_len = param->u.crypt.key_len;
114 memcpy(pwep->key_material, param->u.crypt.key, pwep->key_length);
116 if (param->u.crypt.set_tx) {
146 if (strcmp(param->u.crypt.alg, "none") != 0)
154 if (param->u.crypt.set_tx == 1) { /* pairwise key */
155 memcpy(psta->dot118021x_UncstKey.skey, param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 : param->u.crypt.key_len));
157 if (strcmp(param->u.crypt.alg, "TKIP") == 0) { /* set mic key */
158 /* DEBUG_ERR(("\nset key length :param->u.crypt.key_len =%d\n", param->u.crypt.key_len)); */
159 memcpy(psta->dot11tkiptxmickey.skey, &param->u.crypt.key[16], 8);
160 memcpy(psta->dot11tkiprxmickey.skey, &param->u.crypt.key[24], 8);
168 if (strcmp(param->u.crypt.alg, "TKIP") == 0 || strcmp(param->u.crypt.alg, "CCMP") == 0) {
169 memcpy(padapter->securitypriv.dot118021XGrpKey[param->u.crypt.idx].skey, param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 : param->u.crypt.key_len));
171 if (param->u.crypt.key_len > 16) {
172 memcpy(padapter->securitypriv.dot118021XGrptxmickey[param->u.crypt.idx].skey, &param->u.crypt.key[16], 8);
173 memcpy(padapter->securitypriv.dot118021XGrprxmickey[param->u.crypt.idx].skey, &param->u.crypt.key[24], 8);
177 padapter->securitypriv.dot118021XGrpKeyid = param->u.crypt.idx;
179 rtw_set_key(padapter, &padapter->securitypriv, param->u.crypt.idx, 1, true);
180 } else if (strcmp(param->u.crypt.alg, "BIP") == 0) {
181 /* printk("BIP key_len =%d , index =%d @@@@@@@@@@@@@@@@@@\n", param->u.crypt.key_len, param->u.crypt.idx); */
183 memcpy(padapter->securitypriv.dot11wBIPKey[param->u.crypt.idx].skey, param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 : param->u.crypt.key_len));
186 printk(" %02x ", padapter->securitypriv.dot11wBIPKey[param->u.crypt.idx].skey[no]);
188 padapter->securitypriv.dot11wBIPKeyid = param->u.crypt.idx;
199 if (strcmp(param->u.crypt.alg, "none") != 0)
464 struct ieee_param *param;
472 param = rtw_malloc(p->length);
473 if (!param)
476 if (copy_from_user(param, p->pointer, p->length)) {
477 kfree(param);
481 switch (param->cmd) {
483 ret = wpa_set_param(dev, param->u.wpa_param.name, param->u.wpa_param.value);
487 /* ret = wpa_set_wpa_ie(dev, param, p->length); */
488 ret = rtw_set_wpa_ie(rtw_netdev_priv(dev), (char *)param->u.wpa_ie.data, (u16)param->u.wpa_ie.len);
492 ret = wpa_set_encryption(dev, param, p->length);
496 ret = wpa_mlme(dev, param->u.mlme.command, param->u.mlme.reason_code);
504 if (ret == 0 && copy_to_user(p->pointer, param, p->length))
507 kfree(param);
513 static int rtw_set_encryption(struct net_device *dev, struct ieee_param *param, u32 param_len)
523 char *txkey = padapter->securitypriv.dot118021XGrptxmickey[param->u.crypt.idx].skey;
524 char *rxkey = padapter->securitypriv.dot118021XGrprxmickey[param->u.crypt.idx].skey;
525 char *grpkey = psecuritypriv->dot118021XGrpKey[param->u.crypt.idx].skey;
527 param->u.crypt.err = 0;
528 param->u.crypt.alg[IEEE_CRYPT_ALG_NAME_LEN - 1] = '\0';
531 /* if (param_len != (u32) ((u8 *) param->u.crypt.key - (u8 *) param) + param->u.crypt.key_len) */
532 if (param_len != sizeof(struct ieee_param) + param->u.crypt.key_len) {
537 if (param->sta_addr[0] == 0xff && param->sta_addr[1] == 0xff &&
538 param->sta_addr[2] == 0xff && param->sta_addr[3] == 0xff &&
539 param->sta_addr[4] == 0xff && param->sta_addr[5] == 0xff) {
540 if (param->u.crypt.idx >= WEP_KEYS) {
545 psta = rtw_get_stainfo(pstapriv, param->sta_addr);
551 if (strcmp(param->u.crypt.alg, "none") == 0 && !psta) {
562 if (strcmp(param->u.crypt.alg, "WEP") == 0 && !psta) {
563 wep_key_idx = param->u.crypt.idx;
564 wep_key_len = param->u.crypt.key_len;
585 memcpy(pwep->key_material, param->u.crypt.key, pwep->key_length);
587 if (param->u.crypt.set_tx) {
620 if (param->u.crypt.set_tx == 1) {
621 if (strcmp(param->u.crypt.alg, "WEP") == 0) {
622 memcpy(grpkey, param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 : param->u.crypt.key_len));
625 if (param->u.crypt.key_len == 13)
628 } else if (strcmp(param->u.crypt.alg, "TKIP") == 0) {
631 memcpy(grpkey, param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 : param->u.crypt.key_len));
633 /* DEBUG_ERR("set key length :param->u.crypt.key_len =%d\n", param->u.crypt.key_len); */
635 memcpy(txkey, &param->u.crypt.key[16], 8);
636 memcpy(psecuritypriv->dot118021XGrprxmickey[param->u.crypt.idx].skey, &param->u.crypt.key[24], 8);
640 } else if (strcmp(param->u.crypt.alg, "CCMP") == 0) {
643 memcpy(grpkey, param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 : param->u.crypt.key_len));
648 psecuritypriv->dot118021XGrpKeyid = param->u.crypt.idx;
654 rtw_ap_set_group_key(padapter, param->u.crypt.key, psecuritypriv->dot118021XGrpPrivacy, param->u.crypt.idx);
668 if (param->u.crypt.set_tx == 1) {
669 memcpy(psta->dot118021x_UncstKey.skey, param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 : param->u.crypt.key_len));
671 if (strcmp(param->u.crypt.alg, "WEP") == 0) {
673 if (param->u.crypt.key_len == 13)
675 } else if (strcmp(param->u.crypt.alg, "TKIP") == 0) {
678 /* DEBUG_ERR("set key length :param->u.crypt.key_len =%d\n", param->u.crypt.key_len); */
680 memcpy(psta->dot11tkiptxmickey.skey, &param->u.crypt.key[16], 8);
681 memcpy(psta->dot11tkiprxmickey.skey, &param->u.crypt.key[24], 8);
685 } else if (strcmp(param->u.crypt.alg, "CCMP") == 0) {
696 if (strcmp(param->u.crypt.alg, "WEP") == 0) {
697 memcpy(grpkey, param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 : param->u.crypt.key_len));
700 if (param->u.crypt.key_len == 13)
702 } else if (strcmp(param->u.crypt.alg, "TKIP") == 0) {
705 memcpy(grpkey, param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 : param->u.crypt.key_len));
707 /* DEBUG_ERR("set key length :param->u.crypt.key_len =%d\n", param->u.crypt.key_len); */
709 memcpy(txkey, &param->u.crypt.key[16], 8);
710 memcpy(rxkey, &param->u.crypt.key[24], 8);
714 } else if (strcmp(param->u.crypt.alg, "CCMP") == 0) {
717 memcpy(grpkey, param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 : param->u.crypt.key_len));
722 psecuritypriv->dot118021XGrpKeyid = param->u.crypt.idx;
728 rtw_ap_set_group_key(padapter, param->u.crypt.key, psecuritypriv->dot118021XGrpPrivacy, param->u.crypt.idx);
745 static int rtw_set_beacon(struct net_device *dev, struct ieee_param *param, int len)
751 unsigned char *pbuf = param->u.bcn_ie.buf;
756 memcpy(&pstapriv->max_num_sta, param->u.bcn_ie.reserved, 2);
761 if (rtw_check_beacon_data(padapter, pbuf, (len - 12 - 2)) == _SUCCESS)/* 12 = param header, 2:no packed */
782 static int rtw_add_sta(struct net_device *dev, struct ieee_param *param)
793 if (param->sta_addr[0] == 0xff && param->sta_addr[1] == 0xff &&
794 param->sta_addr[2] == 0xff && param->sta_addr[3] == 0xff &&
795 param->sta_addr[4] == 0xff && param->sta_addr[5] == 0xff) {
800 psta = rtw_get_stainfo(pstapriv, param->sta_addr);
808 /* psta = rtw_alloc_stainfo(pstapriv, param->sta_addr); */
809 psta = rtw_get_stainfo(pstapriv, param->sta_addr);
811 int flags = param->u.add_sta.flags;
813 psta->aid = param->u.add_sta.aid;/* aid = 1~2007 */
815 memcpy(psta->bssrateset, param->u.add_sta.tx_supp_rates, 16);
830 memcpy((void *)&psta->htpriv.ht_cap, (void *)&param->u.add_sta.ht_cap, sizeof(struct ieee80211_ht_cap));
847 static int rtw_del_sta(struct net_device *dev, struct ieee_param *param)
858 if (param->sta_addr[0] == 0xff && param->sta_addr[1] == 0xff &&
859 param->sta_addr[2] == 0xff && param->sta_addr[3] == 0xff &&
860 param->sta_addr[4] == 0xff && param->sta_addr[5] == 0xff) {
864 psta = rtw_get_stainfo(pstapriv, param->sta_addr);
884 static int rtw_ioctl_get_sta_data(struct net_device *dev, struct ieee_param *param, int len)
891 struct ieee_param_ex *param_ex = (struct ieee_param_ex *)param;
943 static int rtw_get_sta_wpaie(struct net_device *dev, struct ieee_param *param)
954 if (param->sta_addr[0] == 0xff && param->sta_addr[1] == 0xff &&
955 param->sta_addr[2] == 0xff && param->sta_addr[3] == 0xff &&
956 param->sta_addr[4] == 0xff && param->sta_addr[5] == 0xff) {
960 psta = rtw_get_stainfo(pstapriv, param->sta_addr);
970 param->u.wpa_ie.len = copy_len;
972 memcpy(param->u.wpa_ie.reserved, psta->wpa_ie, copy_len);
981 static int rtw_set_wps_beacon(struct net_device *dev, struct ieee_param *param, int len)
993 ie_len = len - 12 - 2;/* 12 = param header, 2:no packed */
1004 memcpy(pmlmepriv->wps_beacon_ie, param->u.bcn_ie.buf, ie_len);
1014 static int rtw_set_wps_probe_resp(struct net_device *dev, struct ieee_param *param, int len)
1024 ie_len = len - 12 - 2;/* 12 = param header, 2:no packed */
1035 memcpy(pmlmepriv->wps_probe_resp_ie, param->u.bcn_ie.buf, ie_len);
1041 static int rtw_set_wps_assoc_resp(struct net_device *dev, struct ieee_param *param, int len)
1051 ie_len = len - 12 - 2;/* 12 = param header, 2:no packed */
1062 memcpy(pmlmepriv->wps_assoc_resp_ie, param->u.bcn_ie.buf, ie_len);
1068 static int rtw_set_hidden_ssid(struct net_device *dev, struct ieee_param *param, int len)
1084 if (param->u.bcn_ie.reserved[0] != 0xea)
1087 mlmeinfo->hidden_ssid_mode = ignore_broadcast_ssid = param->u.bcn_ie.reserved[1];
1089 ie_len = len - 12 - 2;/* 12 = param header, 2:no packed */
1090 ssid_ie = rtw_get_ie(param->u.bcn_ie.buf, WLAN_EID_SSID, &ssid_len, ie_len);
1108 static int rtw_ioctl_acl_remove_sta(struct net_device *dev, struct ieee_param *param, int len)
1116 if (param->sta_addr[0] == 0xff && param->sta_addr[1] == 0xff &&
1117 param->sta_addr[2] == 0xff && param->sta_addr[3] == 0xff &&
1118 param->sta_addr[4] == 0xff && param->sta_addr[5] == 0xff) {
1122 rtw_acl_remove_sta(padapter, param->sta_addr);
1126 static int rtw_ioctl_acl_add_sta(struct net_device *dev, struct ieee_param *param, int len)
1134 if (param->sta_addr[0] == 0xff && param->sta_addr[1] == 0xff &&
1135 param->sta_addr[2] == 0xff && param->sta_addr[3] == 0xff &&
1136 param->sta_addr[4] == 0xff && param->sta_addr[5] == 0xff) {
1140 return rtw_acl_add_sta(padapter, param->sta_addr);
1143 static int rtw_ioctl_set_macaddr_acl(struct net_device *dev, struct ieee_param *param, int len)
1152 rtw_set_macaddr_acl(padapter, param->u.mlme.command);
1159 struct ieee_param *param;
1171 if (!p->pointer || p->length != sizeof(*param))
1174 param = rtw_malloc(p->length);
1175 if (!param)
1178 if (copy_from_user(param, p->pointer, p->length)) {
1179 kfree(param);
1183 switch (param->cmd) {
1192 ret = rtw_add_sta(dev, param);
1198 ret = rtw_del_sta(dev, param);
1204 ret = rtw_set_beacon(dev, param, p->length);
1210 ret = rtw_set_encryption(dev, param, p->length);
1216 ret = rtw_get_sta_wpaie(dev, param);
1222 ret = rtw_set_wps_beacon(dev, param, p->length);
1228 ret = rtw_set_wps_probe_resp(dev, param, p->length);
1234 ret = rtw_set_wps_assoc_resp(dev, param, p->length);
1240 ret = rtw_set_hidden_ssid(dev, param, p->length);
1246 ret = rtw_ioctl_get_sta_data(dev, param, p->length);
1252 ret = rtw_ioctl_set_macaddr_acl(dev, param, p->length);
1258 ret = rtw_ioctl_acl_add_sta(dev, param, p->length);
1264 ret = rtw_ioctl_acl_remove_sta(dev, param, p->length);
1273 if (ret == 0 && copy_to_user(p->pointer, param, p->length))
1276 kfree(param);