From: kernel test robot <lkp@intel.com>
To: Phillip Potter <phil@philpotter.co.uk>, gregkh@linuxfoundation.org
Cc: kbuild-all@lists.01.org, dan.carpenter@oracle.com,
Larry.Finger@lwfinger.net, straube.linux@gmail.com,
martin@kaiser.cx, linux-staging@lists.linux.dev,
linux-kernel@vger.kernel.org, paskripkin@gmail.com
Subject: Re: [PATCH 03/10] staging: r8188eu: remove DBG_88E calls from core/rtw_mlme_ext.c
Date: Tue, 25 Jan 2022 15:22:56 +0800 [thread overview]
Message-ID: <202201251504.QbCNelqi-lkp@intel.com> (raw)
In-Reply-To: <20220124224415.831-4-phil@philpotter.co.uk>
Hi Phillip,
I love your patch! Perhaps something to improve:
[auto build test WARNING on staging/staging-testing]
[also build test WARNING on v5.17-rc1 next-20220124]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Phillip-Potter/Cleanup-and-removal-of-DBG_88E-macro/20220125-125206
base: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git fa783154524a71ab74e293cd8251155e5971952b
config: arc-allyesconfig (https://download.01.org/0day-ci/archive/20220125/202201251504.QbCNelqi-lkp@intel.com/config)
compiler: arceb-elf-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/8b7efc8d3123ad5411beb88fc84fab8141f8b60f
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Phillip-Potter/Cleanup-and-removal-of-DBG_88E-macro/20220125-125206
git checkout 8b7efc8d3123ad5411beb88fc84fab8141f8b60f
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=arc SHELL=/bin/bash drivers/staging/r8188eu/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
drivers/staging/r8188eu/core/rtw_mlme_ext.c: In function 'OnAssocReq':
>> drivers/staging/r8188eu/core/rtw_mlme_ext.c:919:33: warning: variable 'reassoc' set but not used [-Wunused-but-set-variable]
919 | unsigned char reassoc, *p, *pos, *wpa_ie;
| ^~~~~~~
drivers/staging/r8188eu/core/rtw_mlme_ext.c: In function 'OnAction_back':
>> drivers/staging/r8188eu/core/rtw_mlme_ext.c:1580:38: warning: variable 'reason_code' set but not used [-Wunused-but-set-variable]
1580 | unsigned short tid, status, reason_code = 0;
| ^~~~~~~~~~~
vim +/reassoc +919 drivers/staging/r8188eu/core/rtw_mlme_ext.c
15865124feed88 Phillip Potter 2021-07-28 913
15865124feed88 Phillip Potter 2021-07-28 914 unsigned int OnAssocReq(struct adapter *padapter, struct recv_frame *precv_frame)
15865124feed88 Phillip Potter 2021-07-28 915 {
15865124feed88 Phillip Potter 2021-07-28 916 u16 capab_info;
15865124feed88 Phillip Potter 2021-07-28 917 struct rtw_ieee802_11_elems elems;
15865124feed88 Phillip Potter 2021-07-28 918 struct sta_info *pstat;
15865124feed88 Phillip Potter 2021-07-28 @919 unsigned char reassoc, *p, *pos, *wpa_ie;
15865124feed88 Phillip Potter 2021-07-28 920 unsigned char WMM_IE[] = {0x00, 0x50, 0xf2, 0x02, 0x00, 0x01};
15865124feed88 Phillip Potter 2021-07-28 921 int i, ie_len, wpa_ie_len, left;
15865124feed88 Phillip Potter 2021-07-28 922 unsigned char supportRate[16];
15865124feed88 Phillip Potter 2021-07-28 923 int supportRateNum;
15865124feed88 Phillip Potter 2021-07-28 924 unsigned short status = _STATS_SUCCESSFUL_;
15865124feed88 Phillip Potter 2021-07-28 925 unsigned short frame_type, ie_offset = 0;
15865124feed88 Phillip Potter 2021-07-28 926 struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
15865124feed88 Phillip Potter 2021-07-28 927 struct security_priv *psecuritypriv = &padapter->securitypriv;
15865124feed88 Phillip Potter 2021-07-28 928 struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
3b522a11b50476 Michael Straube 2021-08-09 929 struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
3b522a11b50476 Michael Straube 2021-08-09 930 struct wlan_bssid_ex *cur = &pmlmeinfo->network;
15865124feed88 Phillip Potter 2021-07-28 931 struct sta_priv *pstapriv = &padapter->stapriv;
15865124feed88 Phillip Potter 2021-07-28 932 u8 *pframe = precv_frame->rx_data;
15865124feed88 Phillip Potter 2021-07-28 933 uint pkt_len = precv_frame->len;
3b522a11b50476 Michael Straube 2021-08-09 934 struct wifidirect_info *pwdinfo = &padapter->wdinfo;
15865124feed88 Phillip Potter 2021-07-28 935 u8 p2p_status_code = P2P_STATUS_SUCCESS;
15865124feed88 Phillip Potter 2021-07-28 936 u8 *p2pie;
15865124feed88 Phillip Potter 2021-07-28 937 u32 p2pielen = 0;
15865124feed88 Phillip Potter 2021-07-28 938
15865124feed88 Phillip Potter 2021-07-28 939 if ((pmlmeinfo->state & 0x03) != WIFI_FW_AP_STATE)
15865124feed88 Phillip Potter 2021-07-28 940 return _FAIL;
15865124feed88 Phillip Potter 2021-07-28 941
15865124feed88 Phillip Potter 2021-07-28 942 frame_type = GetFrameSubType(pframe);
15865124feed88 Phillip Potter 2021-07-28 943 if (frame_type == WIFI_ASSOCREQ) {
15865124feed88 Phillip Potter 2021-07-28 944 reassoc = 0;
15865124feed88 Phillip Potter 2021-07-28 945 ie_offset = _ASOCREQ_IE_OFFSET_;
15865124feed88 Phillip Potter 2021-07-28 946 } else { /* WIFI_REASSOCREQ */
15865124feed88 Phillip Potter 2021-07-28 947 reassoc = 1;
15865124feed88 Phillip Potter 2021-07-28 948 ie_offset = _REASOCREQ_IE_OFFSET_;
15865124feed88 Phillip Potter 2021-07-28 949 }
15865124feed88 Phillip Potter 2021-07-28 950
8b7efc8d3123ad Phillip Potter 2022-01-24 951 if (pkt_len < IEEE80211_3ADDR_LEN + ie_offset)
15865124feed88 Phillip Potter 2021-07-28 952 return _FAIL;
15865124feed88 Phillip Potter 2021-07-28 953
15865124feed88 Phillip Potter 2021-07-28 954 pstat = rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe));
15865124feed88 Phillip Potter 2021-07-28 955 if (pstat == (struct sta_info *)NULL) {
15865124feed88 Phillip Potter 2021-07-28 956 status = _RSON_CLS2_;
15865124feed88 Phillip Potter 2021-07-28 957 goto asoc_class2_error;
15865124feed88 Phillip Potter 2021-07-28 958 }
15865124feed88 Phillip Potter 2021-07-28 959
15865124feed88 Phillip Potter 2021-07-28 960 capab_info = get_unaligned_le16(pframe + WLAN_HDR_A3_LEN);
15865124feed88 Phillip Potter 2021-07-28 961
15865124feed88 Phillip Potter 2021-07-28 962 left = pkt_len - (IEEE80211_3ADDR_LEN + ie_offset);
15865124feed88 Phillip Potter 2021-07-28 963 pos = pframe + (IEEE80211_3ADDR_LEN + ie_offset);
15865124feed88 Phillip Potter 2021-07-28 964
15865124feed88 Phillip Potter 2021-07-28 965 /* check if this stat has been successfully authenticated/assocated */
15865124feed88 Phillip Potter 2021-07-28 966 if (!((pstat->state) & WIFI_FW_AUTH_SUCCESS)) {
15865124feed88 Phillip Potter 2021-07-28 967 if (!((pstat->state) & WIFI_FW_ASSOC_SUCCESS)) {
15865124feed88 Phillip Potter 2021-07-28 968 status = _RSON_CLS2_;
15865124feed88 Phillip Potter 2021-07-28 969 goto asoc_class2_error;
15865124feed88 Phillip Potter 2021-07-28 970 } else {
15865124feed88 Phillip Potter 2021-07-28 971 pstat->state &= (~WIFI_FW_ASSOC_SUCCESS);
15865124feed88 Phillip Potter 2021-07-28 972 pstat->state |= WIFI_FW_ASSOC_STATE;
15865124feed88 Phillip Potter 2021-07-28 973 }
15865124feed88 Phillip Potter 2021-07-28 974 } else {
15865124feed88 Phillip Potter 2021-07-28 975 pstat->state &= (~WIFI_FW_AUTH_SUCCESS);
15865124feed88 Phillip Potter 2021-07-28 976 pstat->state |= WIFI_FW_ASSOC_STATE;
15865124feed88 Phillip Potter 2021-07-28 977 }
15865124feed88 Phillip Potter 2021-07-28 978 pstat->capability = capab_info;
15865124feed88 Phillip Potter 2021-07-28 979 /* now parse all ieee802_11 ie to point to elems */
15865124feed88 Phillip Potter 2021-07-28 980 if (rtw_ieee802_11_parse_elems(pos, left, &elems, 1) == ParseFailed ||
15865124feed88 Phillip Potter 2021-07-28 981 !elems.ssid) {
15865124feed88 Phillip Potter 2021-07-28 982 status = _STATS_FAILURE_;
15865124feed88 Phillip Potter 2021-07-28 983 goto OnAssocReqFail;
15865124feed88 Phillip Potter 2021-07-28 984 }
15865124feed88 Phillip Potter 2021-07-28 985
15865124feed88 Phillip Potter 2021-07-28 986 /* now we should check all the fields... */
15865124feed88 Phillip Potter 2021-07-28 987 /* checking SSID */
15865124feed88 Phillip Potter 2021-07-28 988 p = rtw_get_ie(pframe + WLAN_HDR_A3_LEN + ie_offset, _SSID_IE_, &ie_len,
15865124feed88 Phillip Potter 2021-07-28 989 pkt_len - WLAN_HDR_A3_LEN - ie_offset);
552838fdcaef2c Michael Straube 2021-08-01 990 if (!p)
15865124feed88 Phillip Potter 2021-07-28 991 status = _STATS_FAILURE_;
15865124feed88 Phillip Potter 2021-07-28 992
15865124feed88 Phillip Potter 2021-07-28 993 if (ie_len == 0) { /* broadcast ssid, however it is not allowed in assocreq */
15865124feed88 Phillip Potter 2021-07-28 994 status = _STATS_FAILURE_;
15865124feed88 Phillip Potter 2021-07-28 995 } else {
15865124feed88 Phillip Potter 2021-07-28 996 /* check if ssid match */
15865124feed88 Phillip Potter 2021-07-28 997 if (memcmp((void *)(p + 2), cur->Ssid.Ssid, cur->Ssid.SsidLength))
15865124feed88 Phillip Potter 2021-07-28 998 status = _STATS_FAILURE_;
15865124feed88 Phillip Potter 2021-07-28 999
15865124feed88 Phillip Potter 2021-07-28 1000 if (ie_len != cur->Ssid.SsidLength)
15865124feed88 Phillip Potter 2021-07-28 1001 status = _STATS_FAILURE_;
15865124feed88 Phillip Potter 2021-07-28 1002 }
15865124feed88 Phillip Potter 2021-07-28 1003
15865124feed88 Phillip Potter 2021-07-28 1004 if (_STATS_SUCCESSFUL_ != status)
15865124feed88 Phillip Potter 2021-07-28 1005 goto OnAssocReqFail;
15865124feed88 Phillip Potter 2021-07-28 1006
15865124feed88 Phillip Potter 2021-07-28 1007 /* check if the supported rate is ok */
15865124feed88 Phillip Potter 2021-07-28 1008 p = rtw_get_ie(pframe + WLAN_HDR_A3_LEN + ie_offset, _SUPPORTEDRATES_IE_, &ie_len, pkt_len - WLAN_HDR_A3_LEN - ie_offset);
552838fdcaef2c Michael Straube 2021-08-01 1009 if (!p) {
15865124feed88 Phillip Potter 2021-07-28 1010 /* use our own rate set as statoin used */
15865124feed88 Phillip Potter 2021-07-28 1011 /* memcpy(supportRate, AP_BSSRATE, AP_BSSRATE_LEN); */
15865124feed88 Phillip Potter 2021-07-28 1012 /* supportRateNum = AP_BSSRATE_LEN; */
15865124feed88 Phillip Potter 2021-07-28 1013
15865124feed88 Phillip Potter 2021-07-28 1014 status = _STATS_FAILURE_;
15865124feed88 Phillip Potter 2021-07-28 1015 goto OnAssocReqFail;
15865124feed88 Phillip Potter 2021-07-28 1016 } else {
15865124feed88 Phillip Potter 2021-07-28 1017 memcpy(supportRate, p + 2, ie_len);
15865124feed88 Phillip Potter 2021-07-28 1018 supportRateNum = ie_len;
15865124feed88 Phillip Potter 2021-07-28 1019
15865124feed88 Phillip Potter 2021-07-28 1020 p = rtw_get_ie(pframe + WLAN_HDR_A3_LEN + ie_offset, _EXT_SUPPORTEDRATES_IE_, &ie_len,
15865124feed88 Phillip Potter 2021-07-28 1021 pkt_len - WLAN_HDR_A3_LEN - ie_offset);
552838fdcaef2c Michael Straube 2021-08-01 1022 if (p) {
15865124feed88 Phillip Potter 2021-07-28 1023 if (supportRateNum <= sizeof(supportRate)) {
15865124feed88 Phillip Potter 2021-07-28 1024 memcpy(supportRate + supportRateNum, p + 2, ie_len);
15865124feed88 Phillip Potter 2021-07-28 1025 supportRateNum += ie_len;
15865124feed88 Phillip Potter 2021-07-28 1026 }
15865124feed88 Phillip Potter 2021-07-28 1027 }
15865124feed88 Phillip Potter 2021-07-28 1028 }
15865124feed88 Phillip Potter 2021-07-28 1029
15865124feed88 Phillip Potter 2021-07-28 1030 /* todo: mask supportRate between AP & STA -> move to update raid */
15865124feed88 Phillip Potter 2021-07-28 1031 /* get_matched_rate(pmlmeext, supportRate, &supportRateNum, 0); */
15865124feed88 Phillip Potter 2021-07-28 1032
15865124feed88 Phillip Potter 2021-07-28 1033 /* update station supportRate */
15865124feed88 Phillip Potter 2021-07-28 1034 pstat->bssratelen = supportRateNum;
15865124feed88 Phillip Potter 2021-07-28 1035 memcpy(pstat->bssrateset, supportRate, supportRateNum);
15865124feed88 Phillip Potter 2021-07-28 1036 UpdateBrateTblForSoftAP(pstat->bssrateset, pstat->bssratelen);
15865124feed88 Phillip Potter 2021-07-28 1037
15865124feed88 Phillip Potter 2021-07-28 1038 /* check RSN/WPA/WPS */
15865124feed88 Phillip Potter 2021-07-28 1039 pstat->dot8021xalg = 0;
15865124feed88 Phillip Potter 2021-07-28 1040 pstat->wpa_psk = 0;
15865124feed88 Phillip Potter 2021-07-28 1041 pstat->wpa_group_cipher = 0;
15865124feed88 Phillip Potter 2021-07-28 1042 pstat->wpa2_group_cipher = 0;
15865124feed88 Phillip Potter 2021-07-28 1043 pstat->wpa_pairwise_cipher = 0;
15865124feed88 Phillip Potter 2021-07-28 1044 pstat->wpa2_pairwise_cipher = 0;
15865124feed88 Phillip Potter 2021-07-28 1045 memset(pstat->wpa_ie, 0, sizeof(pstat->wpa_ie));
15865124feed88 Phillip Potter 2021-07-28 1046 if ((psecuritypriv->wpa_psk & BIT(1)) && elems.rsn_ie) {
15865124feed88 Phillip Potter 2021-07-28 1047 int group_cipher = 0, pairwise_cipher = 0;
15865124feed88 Phillip Potter 2021-07-28 1048
15865124feed88 Phillip Potter 2021-07-28 1049 wpa_ie = elems.rsn_ie;
15865124feed88 Phillip Potter 2021-07-28 1050 wpa_ie_len = elems.rsn_ie_len;
15865124feed88 Phillip Potter 2021-07-28 1051
15865124feed88 Phillip Potter 2021-07-28 1052 if (rtw_parse_wpa2_ie(wpa_ie - 2, wpa_ie_len + 2, &group_cipher, &pairwise_cipher, NULL) == _SUCCESS) {
15865124feed88 Phillip Potter 2021-07-28 1053 pstat->dot8021xalg = 1;/* psk, todo:802.1x */
15865124feed88 Phillip Potter 2021-07-28 1054 pstat->wpa_psk |= BIT(1);
15865124feed88 Phillip Potter 2021-07-28 1055
15865124feed88 Phillip Potter 2021-07-28 1056 pstat->wpa2_group_cipher = group_cipher & psecuritypriv->wpa2_group_cipher;
15865124feed88 Phillip Potter 2021-07-28 1057 pstat->wpa2_pairwise_cipher = pairwise_cipher & psecuritypriv->wpa2_pairwise_cipher;
15865124feed88 Phillip Potter 2021-07-28 1058
15865124feed88 Phillip Potter 2021-07-28 1059 if (!pstat->wpa2_group_cipher)
15865124feed88 Phillip Potter 2021-07-28 1060 status = WLAN_STATUS_GROUP_CIPHER_NOT_VALID;
15865124feed88 Phillip Potter 2021-07-28 1061
15865124feed88 Phillip Potter 2021-07-28 1062 if (!pstat->wpa2_pairwise_cipher)
15865124feed88 Phillip Potter 2021-07-28 1063 status = WLAN_STATUS_PAIRWISE_CIPHER_NOT_VALID;
15865124feed88 Phillip Potter 2021-07-28 1064 } else {
15865124feed88 Phillip Potter 2021-07-28 1065 status = WLAN_STATUS_INVALID_IE;
15865124feed88 Phillip Potter 2021-07-28 1066 }
15865124feed88 Phillip Potter 2021-07-28 1067 } else if ((psecuritypriv->wpa_psk & BIT(0)) && elems.wpa_ie) {
15865124feed88 Phillip Potter 2021-07-28 1068 int group_cipher = 0, pairwise_cipher = 0;
15865124feed88 Phillip Potter 2021-07-28 1069
15865124feed88 Phillip Potter 2021-07-28 1070 wpa_ie = elems.wpa_ie;
15865124feed88 Phillip Potter 2021-07-28 1071 wpa_ie_len = elems.wpa_ie_len;
15865124feed88 Phillip Potter 2021-07-28 1072
15865124feed88 Phillip Potter 2021-07-28 1073 if (rtw_parse_wpa_ie(wpa_ie - 2, wpa_ie_len + 2, &group_cipher, &pairwise_cipher, NULL) == _SUCCESS) {
15865124feed88 Phillip Potter 2021-07-28 1074 pstat->dot8021xalg = 1;/* psk, todo:802.1x */
15865124feed88 Phillip Potter 2021-07-28 1075 pstat->wpa_psk |= BIT(0);
15865124feed88 Phillip Potter 2021-07-28 1076
15865124feed88 Phillip Potter 2021-07-28 1077 pstat->wpa_group_cipher = group_cipher & psecuritypriv->wpa_group_cipher;
15865124feed88 Phillip Potter 2021-07-28 1078 pstat->wpa_pairwise_cipher = pairwise_cipher & psecuritypriv->wpa_pairwise_cipher;
15865124feed88 Phillip Potter 2021-07-28 1079
15865124feed88 Phillip Potter 2021-07-28 1080 if (!pstat->wpa_group_cipher)
15865124feed88 Phillip Potter 2021-07-28 1081 status = WLAN_STATUS_GROUP_CIPHER_NOT_VALID;
15865124feed88 Phillip Potter 2021-07-28 1082
15865124feed88 Phillip Potter 2021-07-28 1083 if (!pstat->wpa_pairwise_cipher)
15865124feed88 Phillip Potter 2021-07-28 1084 status = WLAN_STATUS_PAIRWISE_CIPHER_NOT_VALID;
15865124feed88 Phillip Potter 2021-07-28 1085 } else {
15865124feed88 Phillip Potter 2021-07-28 1086 status = WLAN_STATUS_INVALID_IE;
15865124feed88 Phillip Potter 2021-07-28 1087 }
15865124feed88 Phillip Potter 2021-07-28 1088 } else {
15865124feed88 Phillip Potter 2021-07-28 1089 wpa_ie = NULL;
15865124feed88 Phillip Potter 2021-07-28 1090 wpa_ie_len = 0;
15865124feed88 Phillip Potter 2021-07-28 1091 }
15865124feed88 Phillip Potter 2021-07-28 1092
15865124feed88 Phillip Potter 2021-07-28 1093 if (_STATS_SUCCESSFUL_ != status)
15865124feed88 Phillip Potter 2021-07-28 1094 goto OnAssocReqFail;
15865124feed88 Phillip Potter 2021-07-28 1095
15865124feed88 Phillip Potter 2021-07-28 1096 pstat->flags &= ~(WLAN_STA_WPS | WLAN_STA_MAYBE_WPS);
552838fdcaef2c Michael Straube 2021-08-01 1097 if (!wpa_ie) {
8b7efc8d3123ad Phillip Potter 2022-01-24 1098 if (elems.wps_ie)
15865124feed88 Phillip Potter 2021-07-28 1099 pstat->flags |= WLAN_STA_WPS;
15865124feed88 Phillip Potter 2021-07-28 1100 /* wpabuf_free(sta->wps_ie); */
15865124feed88 Phillip Potter 2021-07-28 1101 /* sta->wps_ie = wpabuf_alloc_copy(elems.wps_ie + 4, */
15865124feed88 Phillip Potter 2021-07-28 1102 /* elems.wps_ie_len - 4); */
8b7efc8d3123ad Phillip Potter 2022-01-24 1103 else
15865124feed88 Phillip Potter 2021-07-28 1104 pstat->flags |= WLAN_STA_MAYBE_WPS;
15865124feed88 Phillip Potter 2021-07-28 1105
15865124feed88 Phillip Potter 2021-07-28 1106 /* AP support WPA/RSN, and sta is going to do WPS, but AP is not ready */
15865124feed88 Phillip Potter 2021-07-28 1107 /* that the selected registrar of AP is _FLASE */
15865124feed88 Phillip Potter 2021-07-28 1108 if ((psecuritypriv->wpa_psk > 0) && (pstat->flags & (WLAN_STA_WPS | WLAN_STA_MAYBE_WPS))) {
15865124feed88 Phillip Potter 2021-07-28 1109 if (pmlmepriv->wps_beacon_ie) {
15865124feed88 Phillip Potter 2021-07-28 1110 u8 selected_registrar = 0;
15865124feed88 Phillip Potter 2021-07-28 1111
15865124feed88 Phillip Potter 2021-07-28 1112 rtw_get_wps_attr_content(pmlmepriv->wps_beacon_ie, pmlmepriv->wps_beacon_ie_len, WPS_ATTR_SELECTED_REGISTRAR, &selected_registrar, NULL);
15865124feed88 Phillip Potter 2021-07-28 1113
15865124feed88 Phillip Potter 2021-07-28 1114 if (!selected_registrar) {
15865124feed88 Phillip Potter 2021-07-28 1115 status = _STATS_UNABLE_HANDLE_STA_;
15865124feed88 Phillip Potter 2021-07-28 1116
15865124feed88 Phillip Potter 2021-07-28 1117 goto OnAssocReqFail;
15865124feed88 Phillip Potter 2021-07-28 1118 }
15865124feed88 Phillip Potter 2021-07-28 1119 }
15865124feed88 Phillip Potter 2021-07-28 1120 }
15865124feed88 Phillip Potter 2021-07-28 1121 } else {
15865124feed88 Phillip Potter 2021-07-28 1122 int copy_len;
15865124feed88 Phillip Potter 2021-07-28 1123
15865124feed88 Phillip Potter 2021-07-28 1124 if (psecuritypriv->wpa_psk == 0) {
15865124feed88 Phillip Potter 2021-07-28 1125 status = WLAN_STATUS_INVALID_IE;
15865124feed88 Phillip Potter 2021-07-28 1126
15865124feed88 Phillip Potter 2021-07-28 1127 goto OnAssocReqFail;
15865124feed88 Phillip Potter 2021-07-28 1128 }
15865124feed88 Phillip Potter 2021-07-28 1129
15865124feed88 Phillip Potter 2021-07-28 1130 if (elems.wps_ie) {
15865124feed88 Phillip Potter 2021-07-28 1131 pstat->flags |= WLAN_STA_WPS;
15865124feed88 Phillip Potter 2021-07-28 1132 copy_len = 0;
15865124feed88 Phillip Potter 2021-07-28 1133 } else {
15865124feed88 Phillip Potter 2021-07-28 1134 copy_len = ((wpa_ie_len + 2) > sizeof(pstat->wpa_ie)) ? (sizeof(pstat->wpa_ie)) : (wpa_ie_len + 2);
15865124feed88 Phillip Potter 2021-07-28 1135 }
15865124feed88 Phillip Potter 2021-07-28 1136 if (copy_len > 0)
15865124feed88 Phillip Potter 2021-07-28 1137 memcpy(pstat->wpa_ie, wpa_ie - 2, copy_len);
15865124feed88 Phillip Potter 2021-07-28 1138 }
15865124feed88 Phillip Potter 2021-07-28 1139 /* check if there is WMM IE & support WWM-PS */
15865124feed88 Phillip Potter 2021-07-28 1140 pstat->flags &= ~WLAN_STA_WME;
15865124feed88 Phillip Potter 2021-07-28 1141 pstat->qos_option = 0;
15865124feed88 Phillip Potter 2021-07-28 1142 pstat->qos_info = 0;
15865124feed88 Phillip Potter 2021-07-28 1143 pstat->has_legacy_ac = true;
15865124feed88 Phillip Potter 2021-07-28 1144 pstat->uapsd_vo = 0;
15865124feed88 Phillip Potter 2021-07-28 1145 pstat->uapsd_vi = 0;
15865124feed88 Phillip Potter 2021-07-28 1146 pstat->uapsd_be = 0;
15865124feed88 Phillip Potter 2021-07-28 1147 pstat->uapsd_bk = 0;
15865124feed88 Phillip Potter 2021-07-28 1148 if (pmlmepriv->qospriv.qos_option) {
15865124feed88 Phillip Potter 2021-07-28 1149 p = pframe + WLAN_HDR_A3_LEN + ie_offset; ie_len = 0;
15865124feed88 Phillip Potter 2021-07-28 1150 for (;;) {
15865124feed88 Phillip Potter 2021-07-28 1151 p = rtw_get_ie(p, _VENDOR_SPECIFIC_IE_, &ie_len, pkt_len - WLAN_HDR_A3_LEN - ie_offset);
552838fdcaef2c Michael Straube 2021-08-01 1152 if (p) {
15865124feed88 Phillip Potter 2021-07-28 1153 if (!memcmp(p + 2, WMM_IE, 6)) {
15865124feed88 Phillip Potter 2021-07-28 1154 pstat->flags |= WLAN_STA_WME;
15865124feed88 Phillip Potter 2021-07-28 1155
15865124feed88 Phillip Potter 2021-07-28 1156 pstat->qos_option = 1;
15865124feed88 Phillip Potter 2021-07-28 1157 pstat->qos_info = *(p + 8);
15865124feed88 Phillip Potter 2021-07-28 1158
15865124feed88 Phillip Potter 2021-07-28 1159 pstat->max_sp_len = (pstat->qos_info >> 5) & 0x3;
15865124feed88 Phillip Potter 2021-07-28 1160
15865124feed88 Phillip Potter 2021-07-28 1161 if ((pstat->qos_info & 0xf) != 0xf)
15865124feed88 Phillip Potter 2021-07-28 1162 pstat->has_legacy_ac = true;
15865124feed88 Phillip Potter 2021-07-28 1163 else
15865124feed88 Phillip Potter 2021-07-28 1164 pstat->has_legacy_ac = false;
15865124feed88 Phillip Potter 2021-07-28 1165
15865124feed88 Phillip Potter 2021-07-28 1166 if (pstat->qos_info & 0xf) {
15865124feed88 Phillip Potter 2021-07-28 1167 if (pstat->qos_info & BIT(0))
15865124feed88 Phillip Potter 2021-07-28 1168 pstat->uapsd_vo = BIT(0) | BIT(1);
15865124feed88 Phillip Potter 2021-07-28 1169 else
15865124feed88 Phillip Potter 2021-07-28 1170 pstat->uapsd_vo = 0;
15865124feed88 Phillip Potter 2021-07-28 1171
15865124feed88 Phillip Potter 2021-07-28 1172 if (pstat->qos_info & BIT(1))
15865124feed88 Phillip Potter 2021-07-28 1173 pstat->uapsd_vi = BIT(0) | BIT(1);
15865124feed88 Phillip Potter 2021-07-28 1174 else
15865124feed88 Phillip Potter 2021-07-28 1175 pstat->uapsd_vi = 0;
15865124feed88 Phillip Potter 2021-07-28 1176
15865124feed88 Phillip Potter 2021-07-28 1177 if (pstat->qos_info & BIT(2))
15865124feed88 Phillip Potter 2021-07-28 1178 pstat->uapsd_bk = BIT(0) | BIT(1);
15865124feed88 Phillip Potter 2021-07-28 1179 else
15865124feed88 Phillip Potter 2021-07-28 1180 pstat->uapsd_bk = 0;
15865124feed88 Phillip Potter 2021-07-28 1181
15865124feed88 Phillip Potter 2021-07-28 1182 if (pstat->qos_info & BIT(3))
15865124feed88 Phillip Potter 2021-07-28 1183 pstat->uapsd_be = BIT(0) | BIT(1);
15865124feed88 Phillip Potter 2021-07-28 1184 else
15865124feed88 Phillip Potter 2021-07-28 1185 pstat->uapsd_be = 0;
15865124feed88 Phillip Potter 2021-07-28 1186 }
15865124feed88 Phillip Potter 2021-07-28 1187 break;
15865124feed88 Phillip Potter 2021-07-28 1188 }
15865124feed88 Phillip Potter 2021-07-28 1189 } else {
15865124feed88 Phillip Potter 2021-07-28 1190 break;
15865124feed88 Phillip Potter 2021-07-28 1191 }
15865124feed88 Phillip Potter 2021-07-28 1192 p = p + ie_len + 2;
15865124feed88 Phillip Potter 2021-07-28 1193 }
15865124feed88 Phillip Potter 2021-07-28 1194 }
15865124feed88 Phillip Potter 2021-07-28 1195
15865124feed88 Phillip Potter 2021-07-28 1196 /* save HT capabilities in the sta object */
15865124feed88 Phillip Potter 2021-07-28 1197 memset(&pstat->htpriv.ht_cap, 0, sizeof(struct ieee80211_ht_cap));
15865124feed88 Phillip Potter 2021-07-28 1198 if (elems.ht_capabilities && elems.ht_capabilities_len >= sizeof(struct ieee80211_ht_cap)) {
15865124feed88 Phillip Potter 2021-07-28 1199 pstat->flags |= WLAN_STA_HT;
15865124feed88 Phillip Potter 2021-07-28 1200
15865124feed88 Phillip Potter 2021-07-28 1201 pstat->flags |= WLAN_STA_WME;
15865124feed88 Phillip Potter 2021-07-28 1202
15865124feed88 Phillip Potter 2021-07-28 1203 memcpy(&pstat->htpriv.ht_cap, elems.ht_capabilities, sizeof(struct ieee80211_ht_cap));
15865124feed88 Phillip Potter 2021-07-28 1204 } else {
15865124feed88 Phillip Potter 2021-07-28 1205 pstat->flags &= ~WLAN_STA_HT;
15865124feed88 Phillip Potter 2021-07-28 1206 }
15865124feed88 Phillip Potter 2021-07-28 1207 if ((!pmlmepriv->htpriv.ht_option) && (pstat->flags & WLAN_STA_HT)) {
15865124feed88 Phillip Potter 2021-07-28 1208 status = _STATS_FAILURE_;
15865124feed88 Phillip Potter 2021-07-28 1209 goto OnAssocReqFail;
15865124feed88 Phillip Potter 2021-07-28 1210 }
15865124feed88 Phillip Potter 2021-07-28 1211
15865124feed88 Phillip Potter 2021-07-28 1212 pstat->flags |= WLAN_STA_NONERP;
15865124feed88 Phillip Potter 2021-07-28 1213 for (i = 0; i < pstat->bssratelen; i++) {
15865124feed88 Phillip Potter 2021-07-28 1214 if ((pstat->bssrateset[i] & 0x7f) > 22) {
15865124feed88 Phillip Potter 2021-07-28 1215 pstat->flags &= ~WLAN_STA_NONERP;
15865124feed88 Phillip Potter 2021-07-28 1216 break;
15865124feed88 Phillip Potter 2021-07-28 1217 }
15865124feed88 Phillip Potter 2021-07-28 1218 }
15865124feed88 Phillip Potter 2021-07-28 1219
15865124feed88 Phillip Potter 2021-07-28 1220 if (pstat->capability & WLAN_CAPABILITY_SHORT_PREAMBLE)
15865124feed88 Phillip Potter 2021-07-28 1221 pstat->flags |= WLAN_STA_SHORT_PREAMBLE;
15865124feed88 Phillip Potter 2021-07-28 1222 else
15865124feed88 Phillip Potter 2021-07-28 1223 pstat->flags &= ~WLAN_STA_SHORT_PREAMBLE;
15865124feed88 Phillip Potter 2021-07-28 1224
15865124feed88 Phillip Potter 2021-07-28 1225 if (status != _STATS_SUCCESSFUL_)
15865124feed88 Phillip Potter 2021-07-28 1226 goto OnAssocReqFail;
15865124feed88 Phillip Potter 2021-07-28 1227
15865124feed88 Phillip Potter 2021-07-28 1228 pstat->is_p2p_device = false;
15865124feed88 Phillip Potter 2021-07-28 1229 if (rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO)) {
15865124feed88 Phillip Potter 2021-07-28 1230 p2pie = rtw_get_p2p_ie(pframe + WLAN_HDR_A3_LEN + ie_offset, pkt_len - WLAN_HDR_A3_LEN - ie_offset, NULL, &p2pielen);
15865124feed88 Phillip Potter 2021-07-28 1231 if (p2pie) {
15865124feed88 Phillip Potter 2021-07-28 1232 pstat->is_p2p_device = true;
15865124feed88 Phillip Potter 2021-07-28 1233 p2p_status_code = (u8)process_assoc_req_p2p_ie(pwdinfo, pframe, pkt_len, pstat);
15865124feed88 Phillip Potter 2021-07-28 1234 if (p2p_status_code > 0) {
15865124feed88 Phillip Potter 2021-07-28 1235 pstat->p2p_status_code = p2p_status_code;
15865124feed88 Phillip Potter 2021-07-28 1236 status = _STATS_CAP_FAIL_;
15865124feed88 Phillip Potter 2021-07-28 1237 goto OnAssocReqFail;
15865124feed88 Phillip Potter 2021-07-28 1238 }
15865124feed88 Phillip Potter 2021-07-28 1239 }
15865124feed88 Phillip Potter 2021-07-28 1240 }
15865124feed88 Phillip Potter 2021-07-28 1241 pstat->p2p_status_code = p2p_status_code;
15865124feed88 Phillip Potter 2021-07-28 1242
15865124feed88 Phillip Potter 2021-07-28 1243 /* TODO: identify_proprietary_vendor_ie(); */
15865124feed88 Phillip Potter 2021-07-28 1244 /* Realtek proprietary IE */
15865124feed88 Phillip Potter 2021-07-28 1245 /* identify if this is Broadcom sta */
15865124feed88 Phillip Potter 2021-07-28 1246 /* identify if this is ralink sta */
15865124feed88 Phillip Potter 2021-07-28 1247 /* Customer proprietary IE */
15865124feed88 Phillip Potter 2021-07-28 1248
15865124feed88 Phillip Potter 2021-07-28 1249 /* get a unique AID */
8b7efc8d3123ad Phillip Potter 2022-01-24 1250 if (pstat->aid == 0) {
15865124feed88 Phillip Potter 2021-07-28 1251 for (pstat->aid = 1; pstat->aid <= NUM_STA; pstat->aid++)
552838fdcaef2c Michael Straube 2021-08-01 1252 if (!pstapriv->sta_aid[pstat->aid - 1])
15865124feed88 Phillip Potter 2021-07-28 1253 break;
15865124feed88 Phillip Potter 2021-07-28 1254
15865124feed88 Phillip Potter 2021-07-28 1255 /* if (pstat->aid > NUM_STA) { */
15865124feed88 Phillip Potter 2021-07-28 1256 if (pstat->aid > pstapriv->max_num_sta) {
15865124feed88 Phillip Potter 2021-07-28 1257 pstat->aid = 0;
15865124feed88 Phillip Potter 2021-07-28 1258
15865124feed88 Phillip Potter 2021-07-28 1259 status = WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA;
15865124feed88 Phillip Potter 2021-07-28 1260
15865124feed88 Phillip Potter 2021-07-28 1261 goto OnAssocReqFail;
15865124feed88 Phillip Potter 2021-07-28 1262 } else {
15865124feed88 Phillip Potter 2021-07-28 1263 pstapriv->sta_aid[pstat->aid - 1] = pstat;
15865124feed88 Phillip Potter 2021-07-28 1264 }
15865124feed88 Phillip Potter 2021-07-28 1265 }
15865124feed88 Phillip Potter 2021-07-28 1266
15865124feed88 Phillip Potter 2021-07-28 1267 pstat->state &= (~WIFI_FW_ASSOC_STATE);
15865124feed88 Phillip Potter 2021-07-28 1268 pstat->state |= WIFI_FW_ASSOC_SUCCESS;
15865124feed88 Phillip Potter 2021-07-28 1269
15865124feed88 Phillip Potter 2021-07-28 1270 spin_lock_bh(&pstapriv->auth_list_lock);
15865124feed88 Phillip Potter 2021-07-28 1271 if (!list_empty(&pstat->auth_list)) {
15865124feed88 Phillip Potter 2021-07-28 1272 list_del_init(&pstat->auth_list);
15865124feed88 Phillip Potter 2021-07-28 1273 pstapriv->auth_list_cnt--;
15865124feed88 Phillip Potter 2021-07-28 1274 }
15865124feed88 Phillip Potter 2021-07-28 1275 spin_unlock_bh(&pstapriv->auth_list_lock);
15865124feed88 Phillip Potter 2021-07-28 1276
15865124feed88 Phillip Potter 2021-07-28 1277 spin_lock_bh(&pstapriv->asoc_list_lock);
15865124feed88 Phillip Potter 2021-07-28 1278 if (list_empty(&pstat->asoc_list)) {
15865124feed88 Phillip Potter 2021-07-28 1279 pstat->expire_to = pstapriv->expire_to;
15865124feed88 Phillip Potter 2021-07-28 1280 list_add_tail(&pstat->asoc_list, &pstapriv->asoc_list);
15865124feed88 Phillip Potter 2021-07-28 1281 pstapriv->asoc_list_cnt++;
15865124feed88 Phillip Potter 2021-07-28 1282 }
15865124feed88 Phillip Potter 2021-07-28 1283 spin_unlock_bh(&pstapriv->asoc_list_lock);
15865124feed88 Phillip Potter 2021-07-28 1284
15865124feed88 Phillip Potter 2021-07-28 1285 /* now the station is qualified to join our BSS... */
15865124feed88 Phillip Potter 2021-07-28 1286 if (pstat && (pstat->state & WIFI_FW_ASSOC_SUCCESS) && (_STATS_SUCCESSFUL_ == status)) {
15865124feed88 Phillip Potter 2021-07-28 1287 /* 1 bss_cap_update & sta_info_update */
15865124feed88 Phillip Potter 2021-07-28 1288 bss_cap_update_on_sta_join(padapter, pstat);
15865124feed88 Phillip Potter 2021-07-28 1289 sta_info_update(padapter, pstat);
15865124feed88 Phillip Potter 2021-07-28 1290
15865124feed88 Phillip Potter 2021-07-28 1291 /* issue assoc rsp before notify station join event. */
15865124feed88 Phillip Potter 2021-07-28 1292 if (frame_type == WIFI_ASSOCREQ)
15865124feed88 Phillip Potter 2021-07-28 1293 issue_asocrsp(padapter, status, pstat, WIFI_ASSOCRSP);
15865124feed88 Phillip Potter 2021-07-28 1294 else
15865124feed88 Phillip Potter 2021-07-28 1295 issue_asocrsp(padapter, status, pstat, WIFI_REASSOCRSP);
15865124feed88 Phillip Potter 2021-07-28 1296
15865124feed88 Phillip Potter 2021-07-28 1297 /* 2 - report to upper layer */
15865124feed88 Phillip Potter 2021-07-28 1298 rtw_indicate_sta_assoc_event(padapter, pstat);
15865124feed88 Phillip Potter 2021-07-28 1299
15865124feed88 Phillip Potter 2021-07-28 1300 /* 3-(1) report sta add event */
15865124feed88 Phillip Potter 2021-07-28 1301 report_add_sta_event(padapter, pstat->hwaddr, pstat->aid);
15865124feed88 Phillip Potter 2021-07-28 1302 }
15865124feed88 Phillip Potter 2021-07-28 1303
15865124feed88 Phillip Potter 2021-07-28 1304 return _SUCCESS;
15865124feed88 Phillip Potter 2021-07-28 1305
15865124feed88 Phillip Potter 2021-07-28 1306 asoc_class2_error:
15865124feed88 Phillip Potter 2021-07-28 1307
15865124feed88 Phillip Potter 2021-07-28 1308 issue_deauth(padapter, (void *)GetAddr2Ptr(pframe), status);
15865124feed88 Phillip Potter 2021-07-28 1309
15865124feed88 Phillip Potter 2021-07-28 1310 return _FAIL;
15865124feed88 Phillip Potter 2021-07-28 1311
15865124feed88 Phillip Potter 2021-07-28 1312 OnAssocReqFail:
15865124feed88 Phillip Potter 2021-07-28 1313
15865124feed88 Phillip Potter 2021-07-28 1314 pstat->aid = 0;
15865124feed88 Phillip Potter 2021-07-28 1315 if (frame_type == WIFI_ASSOCREQ)
15865124feed88 Phillip Potter 2021-07-28 1316 issue_asocrsp(padapter, status, pstat, WIFI_ASSOCRSP);
15865124feed88 Phillip Potter 2021-07-28 1317 else
15865124feed88 Phillip Potter 2021-07-28 1318 issue_asocrsp(padapter, status, pstat, WIFI_REASSOCRSP);
15865124feed88 Phillip Potter 2021-07-28 1319
15865124feed88 Phillip Potter 2021-07-28 1320 return _FAIL;
15865124feed88 Phillip Potter 2021-07-28 1321 }
15865124feed88 Phillip Potter 2021-07-28 1322
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH 03/10] staging: r8188eu: remove DBG_88E calls from core/rtw_mlme_ext.c
Date: Tue, 25 Jan 2022 15:22:56 +0800 [thread overview]
Message-ID: <202201251504.QbCNelqi-lkp@intel.com> (raw)
In-Reply-To: <20220124224415.831-4-phil@philpotter.co.uk>
[-- Attachment #1: Type: text/plain, Size: 34979 bytes --]
Hi Phillip,
I love your patch! Perhaps something to improve:
[auto build test WARNING on staging/staging-testing]
[also build test WARNING on v5.17-rc1 next-20220124]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Phillip-Potter/Cleanup-and-removal-of-DBG_88E-macro/20220125-125206
base: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git fa783154524a71ab74e293cd8251155e5971952b
config: arc-allyesconfig (https://download.01.org/0day-ci/archive/20220125/202201251504.QbCNelqi-lkp(a)intel.com/config)
compiler: arceb-elf-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/8b7efc8d3123ad5411beb88fc84fab8141f8b60f
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Phillip-Potter/Cleanup-and-removal-of-DBG_88E-macro/20220125-125206
git checkout 8b7efc8d3123ad5411beb88fc84fab8141f8b60f
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=arc SHELL=/bin/bash drivers/staging/r8188eu/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
drivers/staging/r8188eu/core/rtw_mlme_ext.c: In function 'OnAssocReq':
>> drivers/staging/r8188eu/core/rtw_mlme_ext.c:919:33: warning: variable 'reassoc' set but not used [-Wunused-but-set-variable]
919 | unsigned char reassoc, *p, *pos, *wpa_ie;
| ^~~~~~~
drivers/staging/r8188eu/core/rtw_mlme_ext.c: In function 'OnAction_back':
>> drivers/staging/r8188eu/core/rtw_mlme_ext.c:1580:38: warning: variable 'reason_code' set but not used [-Wunused-but-set-variable]
1580 | unsigned short tid, status, reason_code = 0;
| ^~~~~~~~~~~
vim +/reassoc +919 drivers/staging/r8188eu/core/rtw_mlme_ext.c
15865124feed88 Phillip Potter 2021-07-28 913
15865124feed88 Phillip Potter 2021-07-28 914 unsigned int OnAssocReq(struct adapter *padapter, struct recv_frame *precv_frame)
15865124feed88 Phillip Potter 2021-07-28 915 {
15865124feed88 Phillip Potter 2021-07-28 916 u16 capab_info;
15865124feed88 Phillip Potter 2021-07-28 917 struct rtw_ieee802_11_elems elems;
15865124feed88 Phillip Potter 2021-07-28 918 struct sta_info *pstat;
15865124feed88 Phillip Potter 2021-07-28 @919 unsigned char reassoc, *p, *pos, *wpa_ie;
15865124feed88 Phillip Potter 2021-07-28 920 unsigned char WMM_IE[] = {0x00, 0x50, 0xf2, 0x02, 0x00, 0x01};
15865124feed88 Phillip Potter 2021-07-28 921 int i, ie_len, wpa_ie_len, left;
15865124feed88 Phillip Potter 2021-07-28 922 unsigned char supportRate[16];
15865124feed88 Phillip Potter 2021-07-28 923 int supportRateNum;
15865124feed88 Phillip Potter 2021-07-28 924 unsigned short status = _STATS_SUCCESSFUL_;
15865124feed88 Phillip Potter 2021-07-28 925 unsigned short frame_type, ie_offset = 0;
15865124feed88 Phillip Potter 2021-07-28 926 struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
15865124feed88 Phillip Potter 2021-07-28 927 struct security_priv *psecuritypriv = &padapter->securitypriv;
15865124feed88 Phillip Potter 2021-07-28 928 struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
3b522a11b50476 Michael Straube 2021-08-09 929 struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
3b522a11b50476 Michael Straube 2021-08-09 930 struct wlan_bssid_ex *cur = &pmlmeinfo->network;
15865124feed88 Phillip Potter 2021-07-28 931 struct sta_priv *pstapriv = &padapter->stapriv;
15865124feed88 Phillip Potter 2021-07-28 932 u8 *pframe = precv_frame->rx_data;
15865124feed88 Phillip Potter 2021-07-28 933 uint pkt_len = precv_frame->len;
3b522a11b50476 Michael Straube 2021-08-09 934 struct wifidirect_info *pwdinfo = &padapter->wdinfo;
15865124feed88 Phillip Potter 2021-07-28 935 u8 p2p_status_code = P2P_STATUS_SUCCESS;
15865124feed88 Phillip Potter 2021-07-28 936 u8 *p2pie;
15865124feed88 Phillip Potter 2021-07-28 937 u32 p2pielen = 0;
15865124feed88 Phillip Potter 2021-07-28 938
15865124feed88 Phillip Potter 2021-07-28 939 if ((pmlmeinfo->state & 0x03) != WIFI_FW_AP_STATE)
15865124feed88 Phillip Potter 2021-07-28 940 return _FAIL;
15865124feed88 Phillip Potter 2021-07-28 941
15865124feed88 Phillip Potter 2021-07-28 942 frame_type = GetFrameSubType(pframe);
15865124feed88 Phillip Potter 2021-07-28 943 if (frame_type == WIFI_ASSOCREQ) {
15865124feed88 Phillip Potter 2021-07-28 944 reassoc = 0;
15865124feed88 Phillip Potter 2021-07-28 945 ie_offset = _ASOCREQ_IE_OFFSET_;
15865124feed88 Phillip Potter 2021-07-28 946 } else { /* WIFI_REASSOCREQ */
15865124feed88 Phillip Potter 2021-07-28 947 reassoc = 1;
15865124feed88 Phillip Potter 2021-07-28 948 ie_offset = _REASOCREQ_IE_OFFSET_;
15865124feed88 Phillip Potter 2021-07-28 949 }
15865124feed88 Phillip Potter 2021-07-28 950
8b7efc8d3123ad Phillip Potter 2022-01-24 951 if (pkt_len < IEEE80211_3ADDR_LEN + ie_offset)
15865124feed88 Phillip Potter 2021-07-28 952 return _FAIL;
15865124feed88 Phillip Potter 2021-07-28 953
15865124feed88 Phillip Potter 2021-07-28 954 pstat = rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe));
15865124feed88 Phillip Potter 2021-07-28 955 if (pstat == (struct sta_info *)NULL) {
15865124feed88 Phillip Potter 2021-07-28 956 status = _RSON_CLS2_;
15865124feed88 Phillip Potter 2021-07-28 957 goto asoc_class2_error;
15865124feed88 Phillip Potter 2021-07-28 958 }
15865124feed88 Phillip Potter 2021-07-28 959
15865124feed88 Phillip Potter 2021-07-28 960 capab_info = get_unaligned_le16(pframe + WLAN_HDR_A3_LEN);
15865124feed88 Phillip Potter 2021-07-28 961
15865124feed88 Phillip Potter 2021-07-28 962 left = pkt_len - (IEEE80211_3ADDR_LEN + ie_offset);
15865124feed88 Phillip Potter 2021-07-28 963 pos = pframe + (IEEE80211_3ADDR_LEN + ie_offset);
15865124feed88 Phillip Potter 2021-07-28 964
15865124feed88 Phillip Potter 2021-07-28 965 /* check if this stat has been successfully authenticated/assocated */
15865124feed88 Phillip Potter 2021-07-28 966 if (!((pstat->state) & WIFI_FW_AUTH_SUCCESS)) {
15865124feed88 Phillip Potter 2021-07-28 967 if (!((pstat->state) & WIFI_FW_ASSOC_SUCCESS)) {
15865124feed88 Phillip Potter 2021-07-28 968 status = _RSON_CLS2_;
15865124feed88 Phillip Potter 2021-07-28 969 goto asoc_class2_error;
15865124feed88 Phillip Potter 2021-07-28 970 } else {
15865124feed88 Phillip Potter 2021-07-28 971 pstat->state &= (~WIFI_FW_ASSOC_SUCCESS);
15865124feed88 Phillip Potter 2021-07-28 972 pstat->state |= WIFI_FW_ASSOC_STATE;
15865124feed88 Phillip Potter 2021-07-28 973 }
15865124feed88 Phillip Potter 2021-07-28 974 } else {
15865124feed88 Phillip Potter 2021-07-28 975 pstat->state &= (~WIFI_FW_AUTH_SUCCESS);
15865124feed88 Phillip Potter 2021-07-28 976 pstat->state |= WIFI_FW_ASSOC_STATE;
15865124feed88 Phillip Potter 2021-07-28 977 }
15865124feed88 Phillip Potter 2021-07-28 978 pstat->capability = capab_info;
15865124feed88 Phillip Potter 2021-07-28 979 /* now parse all ieee802_11 ie to point to elems */
15865124feed88 Phillip Potter 2021-07-28 980 if (rtw_ieee802_11_parse_elems(pos, left, &elems, 1) == ParseFailed ||
15865124feed88 Phillip Potter 2021-07-28 981 !elems.ssid) {
15865124feed88 Phillip Potter 2021-07-28 982 status = _STATS_FAILURE_;
15865124feed88 Phillip Potter 2021-07-28 983 goto OnAssocReqFail;
15865124feed88 Phillip Potter 2021-07-28 984 }
15865124feed88 Phillip Potter 2021-07-28 985
15865124feed88 Phillip Potter 2021-07-28 986 /* now we should check all the fields... */
15865124feed88 Phillip Potter 2021-07-28 987 /* checking SSID */
15865124feed88 Phillip Potter 2021-07-28 988 p = rtw_get_ie(pframe + WLAN_HDR_A3_LEN + ie_offset, _SSID_IE_, &ie_len,
15865124feed88 Phillip Potter 2021-07-28 989 pkt_len - WLAN_HDR_A3_LEN - ie_offset);
552838fdcaef2c Michael Straube 2021-08-01 990 if (!p)
15865124feed88 Phillip Potter 2021-07-28 991 status = _STATS_FAILURE_;
15865124feed88 Phillip Potter 2021-07-28 992
15865124feed88 Phillip Potter 2021-07-28 993 if (ie_len == 0) { /* broadcast ssid, however it is not allowed in assocreq */
15865124feed88 Phillip Potter 2021-07-28 994 status = _STATS_FAILURE_;
15865124feed88 Phillip Potter 2021-07-28 995 } else {
15865124feed88 Phillip Potter 2021-07-28 996 /* check if ssid match */
15865124feed88 Phillip Potter 2021-07-28 997 if (memcmp((void *)(p + 2), cur->Ssid.Ssid, cur->Ssid.SsidLength))
15865124feed88 Phillip Potter 2021-07-28 998 status = _STATS_FAILURE_;
15865124feed88 Phillip Potter 2021-07-28 999
15865124feed88 Phillip Potter 2021-07-28 1000 if (ie_len != cur->Ssid.SsidLength)
15865124feed88 Phillip Potter 2021-07-28 1001 status = _STATS_FAILURE_;
15865124feed88 Phillip Potter 2021-07-28 1002 }
15865124feed88 Phillip Potter 2021-07-28 1003
15865124feed88 Phillip Potter 2021-07-28 1004 if (_STATS_SUCCESSFUL_ != status)
15865124feed88 Phillip Potter 2021-07-28 1005 goto OnAssocReqFail;
15865124feed88 Phillip Potter 2021-07-28 1006
15865124feed88 Phillip Potter 2021-07-28 1007 /* check if the supported rate is ok */
15865124feed88 Phillip Potter 2021-07-28 1008 p = rtw_get_ie(pframe + WLAN_HDR_A3_LEN + ie_offset, _SUPPORTEDRATES_IE_, &ie_len, pkt_len - WLAN_HDR_A3_LEN - ie_offset);
552838fdcaef2c Michael Straube 2021-08-01 1009 if (!p) {
15865124feed88 Phillip Potter 2021-07-28 1010 /* use our own rate set as statoin used */
15865124feed88 Phillip Potter 2021-07-28 1011 /* memcpy(supportRate, AP_BSSRATE, AP_BSSRATE_LEN); */
15865124feed88 Phillip Potter 2021-07-28 1012 /* supportRateNum = AP_BSSRATE_LEN; */
15865124feed88 Phillip Potter 2021-07-28 1013
15865124feed88 Phillip Potter 2021-07-28 1014 status = _STATS_FAILURE_;
15865124feed88 Phillip Potter 2021-07-28 1015 goto OnAssocReqFail;
15865124feed88 Phillip Potter 2021-07-28 1016 } else {
15865124feed88 Phillip Potter 2021-07-28 1017 memcpy(supportRate, p + 2, ie_len);
15865124feed88 Phillip Potter 2021-07-28 1018 supportRateNum = ie_len;
15865124feed88 Phillip Potter 2021-07-28 1019
15865124feed88 Phillip Potter 2021-07-28 1020 p = rtw_get_ie(pframe + WLAN_HDR_A3_LEN + ie_offset, _EXT_SUPPORTEDRATES_IE_, &ie_len,
15865124feed88 Phillip Potter 2021-07-28 1021 pkt_len - WLAN_HDR_A3_LEN - ie_offset);
552838fdcaef2c Michael Straube 2021-08-01 1022 if (p) {
15865124feed88 Phillip Potter 2021-07-28 1023 if (supportRateNum <= sizeof(supportRate)) {
15865124feed88 Phillip Potter 2021-07-28 1024 memcpy(supportRate + supportRateNum, p + 2, ie_len);
15865124feed88 Phillip Potter 2021-07-28 1025 supportRateNum += ie_len;
15865124feed88 Phillip Potter 2021-07-28 1026 }
15865124feed88 Phillip Potter 2021-07-28 1027 }
15865124feed88 Phillip Potter 2021-07-28 1028 }
15865124feed88 Phillip Potter 2021-07-28 1029
15865124feed88 Phillip Potter 2021-07-28 1030 /* todo: mask supportRate between AP & STA -> move to update raid */
15865124feed88 Phillip Potter 2021-07-28 1031 /* get_matched_rate(pmlmeext, supportRate, &supportRateNum, 0); */
15865124feed88 Phillip Potter 2021-07-28 1032
15865124feed88 Phillip Potter 2021-07-28 1033 /* update station supportRate */
15865124feed88 Phillip Potter 2021-07-28 1034 pstat->bssratelen = supportRateNum;
15865124feed88 Phillip Potter 2021-07-28 1035 memcpy(pstat->bssrateset, supportRate, supportRateNum);
15865124feed88 Phillip Potter 2021-07-28 1036 UpdateBrateTblForSoftAP(pstat->bssrateset, pstat->bssratelen);
15865124feed88 Phillip Potter 2021-07-28 1037
15865124feed88 Phillip Potter 2021-07-28 1038 /* check RSN/WPA/WPS */
15865124feed88 Phillip Potter 2021-07-28 1039 pstat->dot8021xalg = 0;
15865124feed88 Phillip Potter 2021-07-28 1040 pstat->wpa_psk = 0;
15865124feed88 Phillip Potter 2021-07-28 1041 pstat->wpa_group_cipher = 0;
15865124feed88 Phillip Potter 2021-07-28 1042 pstat->wpa2_group_cipher = 0;
15865124feed88 Phillip Potter 2021-07-28 1043 pstat->wpa_pairwise_cipher = 0;
15865124feed88 Phillip Potter 2021-07-28 1044 pstat->wpa2_pairwise_cipher = 0;
15865124feed88 Phillip Potter 2021-07-28 1045 memset(pstat->wpa_ie, 0, sizeof(pstat->wpa_ie));
15865124feed88 Phillip Potter 2021-07-28 1046 if ((psecuritypriv->wpa_psk & BIT(1)) && elems.rsn_ie) {
15865124feed88 Phillip Potter 2021-07-28 1047 int group_cipher = 0, pairwise_cipher = 0;
15865124feed88 Phillip Potter 2021-07-28 1048
15865124feed88 Phillip Potter 2021-07-28 1049 wpa_ie = elems.rsn_ie;
15865124feed88 Phillip Potter 2021-07-28 1050 wpa_ie_len = elems.rsn_ie_len;
15865124feed88 Phillip Potter 2021-07-28 1051
15865124feed88 Phillip Potter 2021-07-28 1052 if (rtw_parse_wpa2_ie(wpa_ie - 2, wpa_ie_len + 2, &group_cipher, &pairwise_cipher, NULL) == _SUCCESS) {
15865124feed88 Phillip Potter 2021-07-28 1053 pstat->dot8021xalg = 1;/* psk, todo:802.1x */
15865124feed88 Phillip Potter 2021-07-28 1054 pstat->wpa_psk |= BIT(1);
15865124feed88 Phillip Potter 2021-07-28 1055
15865124feed88 Phillip Potter 2021-07-28 1056 pstat->wpa2_group_cipher = group_cipher & psecuritypriv->wpa2_group_cipher;
15865124feed88 Phillip Potter 2021-07-28 1057 pstat->wpa2_pairwise_cipher = pairwise_cipher & psecuritypriv->wpa2_pairwise_cipher;
15865124feed88 Phillip Potter 2021-07-28 1058
15865124feed88 Phillip Potter 2021-07-28 1059 if (!pstat->wpa2_group_cipher)
15865124feed88 Phillip Potter 2021-07-28 1060 status = WLAN_STATUS_GROUP_CIPHER_NOT_VALID;
15865124feed88 Phillip Potter 2021-07-28 1061
15865124feed88 Phillip Potter 2021-07-28 1062 if (!pstat->wpa2_pairwise_cipher)
15865124feed88 Phillip Potter 2021-07-28 1063 status = WLAN_STATUS_PAIRWISE_CIPHER_NOT_VALID;
15865124feed88 Phillip Potter 2021-07-28 1064 } else {
15865124feed88 Phillip Potter 2021-07-28 1065 status = WLAN_STATUS_INVALID_IE;
15865124feed88 Phillip Potter 2021-07-28 1066 }
15865124feed88 Phillip Potter 2021-07-28 1067 } else if ((psecuritypriv->wpa_psk & BIT(0)) && elems.wpa_ie) {
15865124feed88 Phillip Potter 2021-07-28 1068 int group_cipher = 0, pairwise_cipher = 0;
15865124feed88 Phillip Potter 2021-07-28 1069
15865124feed88 Phillip Potter 2021-07-28 1070 wpa_ie = elems.wpa_ie;
15865124feed88 Phillip Potter 2021-07-28 1071 wpa_ie_len = elems.wpa_ie_len;
15865124feed88 Phillip Potter 2021-07-28 1072
15865124feed88 Phillip Potter 2021-07-28 1073 if (rtw_parse_wpa_ie(wpa_ie - 2, wpa_ie_len + 2, &group_cipher, &pairwise_cipher, NULL) == _SUCCESS) {
15865124feed88 Phillip Potter 2021-07-28 1074 pstat->dot8021xalg = 1;/* psk, todo:802.1x */
15865124feed88 Phillip Potter 2021-07-28 1075 pstat->wpa_psk |= BIT(0);
15865124feed88 Phillip Potter 2021-07-28 1076
15865124feed88 Phillip Potter 2021-07-28 1077 pstat->wpa_group_cipher = group_cipher & psecuritypriv->wpa_group_cipher;
15865124feed88 Phillip Potter 2021-07-28 1078 pstat->wpa_pairwise_cipher = pairwise_cipher & psecuritypriv->wpa_pairwise_cipher;
15865124feed88 Phillip Potter 2021-07-28 1079
15865124feed88 Phillip Potter 2021-07-28 1080 if (!pstat->wpa_group_cipher)
15865124feed88 Phillip Potter 2021-07-28 1081 status = WLAN_STATUS_GROUP_CIPHER_NOT_VALID;
15865124feed88 Phillip Potter 2021-07-28 1082
15865124feed88 Phillip Potter 2021-07-28 1083 if (!pstat->wpa_pairwise_cipher)
15865124feed88 Phillip Potter 2021-07-28 1084 status = WLAN_STATUS_PAIRWISE_CIPHER_NOT_VALID;
15865124feed88 Phillip Potter 2021-07-28 1085 } else {
15865124feed88 Phillip Potter 2021-07-28 1086 status = WLAN_STATUS_INVALID_IE;
15865124feed88 Phillip Potter 2021-07-28 1087 }
15865124feed88 Phillip Potter 2021-07-28 1088 } else {
15865124feed88 Phillip Potter 2021-07-28 1089 wpa_ie = NULL;
15865124feed88 Phillip Potter 2021-07-28 1090 wpa_ie_len = 0;
15865124feed88 Phillip Potter 2021-07-28 1091 }
15865124feed88 Phillip Potter 2021-07-28 1092
15865124feed88 Phillip Potter 2021-07-28 1093 if (_STATS_SUCCESSFUL_ != status)
15865124feed88 Phillip Potter 2021-07-28 1094 goto OnAssocReqFail;
15865124feed88 Phillip Potter 2021-07-28 1095
15865124feed88 Phillip Potter 2021-07-28 1096 pstat->flags &= ~(WLAN_STA_WPS | WLAN_STA_MAYBE_WPS);
552838fdcaef2c Michael Straube 2021-08-01 1097 if (!wpa_ie) {
8b7efc8d3123ad Phillip Potter 2022-01-24 1098 if (elems.wps_ie)
15865124feed88 Phillip Potter 2021-07-28 1099 pstat->flags |= WLAN_STA_WPS;
15865124feed88 Phillip Potter 2021-07-28 1100 /* wpabuf_free(sta->wps_ie); */
15865124feed88 Phillip Potter 2021-07-28 1101 /* sta->wps_ie = wpabuf_alloc_copy(elems.wps_ie + 4, */
15865124feed88 Phillip Potter 2021-07-28 1102 /* elems.wps_ie_len - 4); */
8b7efc8d3123ad Phillip Potter 2022-01-24 1103 else
15865124feed88 Phillip Potter 2021-07-28 1104 pstat->flags |= WLAN_STA_MAYBE_WPS;
15865124feed88 Phillip Potter 2021-07-28 1105
15865124feed88 Phillip Potter 2021-07-28 1106 /* AP support WPA/RSN, and sta is going to do WPS, but AP is not ready */
15865124feed88 Phillip Potter 2021-07-28 1107 /* that the selected registrar of AP is _FLASE */
15865124feed88 Phillip Potter 2021-07-28 1108 if ((psecuritypriv->wpa_psk > 0) && (pstat->flags & (WLAN_STA_WPS | WLAN_STA_MAYBE_WPS))) {
15865124feed88 Phillip Potter 2021-07-28 1109 if (pmlmepriv->wps_beacon_ie) {
15865124feed88 Phillip Potter 2021-07-28 1110 u8 selected_registrar = 0;
15865124feed88 Phillip Potter 2021-07-28 1111
15865124feed88 Phillip Potter 2021-07-28 1112 rtw_get_wps_attr_content(pmlmepriv->wps_beacon_ie, pmlmepriv->wps_beacon_ie_len, WPS_ATTR_SELECTED_REGISTRAR, &selected_registrar, NULL);
15865124feed88 Phillip Potter 2021-07-28 1113
15865124feed88 Phillip Potter 2021-07-28 1114 if (!selected_registrar) {
15865124feed88 Phillip Potter 2021-07-28 1115 status = _STATS_UNABLE_HANDLE_STA_;
15865124feed88 Phillip Potter 2021-07-28 1116
15865124feed88 Phillip Potter 2021-07-28 1117 goto OnAssocReqFail;
15865124feed88 Phillip Potter 2021-07-28 1118 }
15865124feed88 Phillip Potter 2021-07-28 1119 }
15865124feed88 Phillip Potter 2021-07-28 1120 }
15865124feed88 Phillip Potter 2021-07-28 1121 } else {
15865124feed88 Phillip Potter 2021-07-28 1122 int copy_len;
15865124feed88 Phillip Potter 2021-07-28 1123
15865124feed88 Phillip Potter 2021-07-28 1124 if (psecuritypriv->wpa_psk == 0) {
15865124feed88 Phillip Potter 2021-07-28 1125 status = WLAN_STATUS_INVALID_IE;
15865124feed88 Phillip Potter 2021-07-28 1126
15865124feed88 Phillip Potter 2021-07-28 1127 goto OnAssocReqFail;
15865124feed88 Phillip Potter 2021-07-28 1128 }
15865124feed88 Phillip Potter 2021-07-28 1129
15865124feed88 Phillip Potter 2021-07-28 1130 if (elems.wps_ie) {
15865124feed88 Phillip Potter 2021-07-28 1131 pstat->flags |= WLAN_STA_WPS;
15865124feed88 Phillip Potter 2021-07-28 1132 copy_len = 0;
15865124feed88 Phillip Potter 2021-07-28 1133 } else {
15865124feed88 Phillip Potter 2021-07-28 1134 copy_len = ((wpa_ie_len + 2) > sizeof(pstat->wpa_ie)) ? (sizeof(pstat->wpa_ie)) : (wpa_ie_len + 2);
15865124feed88 Phillip Potter 2021-07-28 1135 }
15865124feed88 Phillip Potter 2021-07-28 1136 if (copy_len > 0)
15865124feed88 Phillip Potter 2021-07-28 1137 memcpy(pstat->wpa_ie, wpa_ie - 2, copy_len);
15865124feed88 Phillip Potter 2021-07-28 1138 }
15865124feed88 Phillip Potter 2021-07-28 1139 /* check if there is WMM IE & support WWM-PS */
15865124feed88 Phillip Potter 2021-07-28 1140 pstat->flags &= ~WLAN_STA_WME;
15865124feed88 Phillip Potter 2021-07-28 1141 pstat->qos_option = 0;
15865124feed88 Phillip Potter 2021-07-28 1142 pstat->qos_info = 0;
15865124feed88 Phillip Potter 2021-07-28 1143 pstat->has_legacy_ac = true;
15865124feed88 Phillip Potter 2021-07-28 1144 pstat->uapsd_vo = 0;
15865124feed88 Phillip Potter 2021-07-28 1145 pstat->uapsd_vi = 0;
15865124feed88 Phillip Potter 2021-07-28 1146 pstat->uapsd_be = 0;
15865124feed88 Phillip Potter 2021-07-28 1147 pstat->uapsd_bk = 0;
15865124feed88 Phillip Potter 2021-07-28 1148 if (pmlmepriv->qospriv.qos_option) {
15865124feed88 Phillip Potter 2021-07-28 1149 p = pframe + WLAN_HDR_A3_LEN + ie_offset; ie_len = 0;
15865124feed88 Phillip Potter 2021-07-28 1150 for (;;) {
15865124feed88 Phillip Potter 2021-07-28 1151 p = rtw_get_ie(p, _VENDOR_SPECIFIC_IE_, &ie_len, pkt_len - WLAN_HDR_A3_LEN - ie_offset);
552838fdcaef2c Michael Straube 2021-08-01 1152 if (p) {
15865124feed88 Phillip Potter 2021-07-28 1153 if (!memcmp(p + 2, WMM_IE, 6)) {
15865124feed88 Phillip Potter 2021-07-28 1154 pstat->flags |= WLAN_STA_WME;
15865124feed88 Phillip Potter 2021-07-28 1155
15865124feed88 Phillip Potter 2021-07-28 1156 pstat->qos_option = 1;
15865124feed88 Phillip Potter 2021-07-28 1157 pstat->qos_info = *(p + 8);
15865124feed88 Phillip Potter 2021-07-28 1158
15865124feed88 Phillip Potter 2021-07-28 1159 pstat->max_sp_len = (pstat->qos_info >> 5) & 0x3;
15865124feed88 Phillip Potter 2021-07-28 1160
15865124feed88 Phillip Potter 2021-07-28 1161 if ((pstat->qos_info & 0xf) != 0xf)
15865124feed88 Phillip Potter 2021-07-28 1162 pstat->has_legacy_ac = true;
15865124feed88 Phillip Potter 2021-07-28 1163 else
15865124feed88 Phillip Potter 2021-07-28 1164 pstat->has_legacy_ac = false;
15865124feed88 Phillip Potter 2021-07-28 1165
15865124feed88 Phillip Potter 2021-07-28 1166 if (pstat->qos_info & 0xf) {
15865124feed88 Phillip Potter 2021-07-28 1167 if (pstat->qos_info & BIT(0))
15865124feed88 Phillip Potter 2021-07-28 1168 pstat->uapsd_vo = BIT(0) | BIT(1);
15865124feed88 Phillip Potter 2021-07-28 1169 else
15865124feed88 Phillip Potter 2021-07-28 1170 pstat->uapsd_vo = 0;
15865124feed88 Phillip Potter 2021-07-28 1171
15865124feed88 Phillip Potter 2021-07-28 1172 if (pstat->qos_info & BIT(1))
15865124feed88 Phillip Potter 2021-07-28 1173 pstat->uapsd_vi = BIT(0) | BIT(1);
15865124feed88 Phillip Potter 2021-07-28 1174 else
15865124feed88 Phillip Potter 2021-07-28 1175 pstat->uapsd_vi = 0;
15865124feed88 Phillip Potter 2021-07-28 1176
15865124feed88 Phillip Potter 2021-07-28 1177 if (pstat->qos_info & BIT(2))
15865124feed88 Phillip Potter 2021-07-28 1178 pstat->uapsd_bk = BIT(0) | BIT(1);
15865124feed88 Phillip Potter 2021-07-28 1179 else
15865124feed88 Phillip Potter 2021-07-28 1180 pstat->uapsd_bk = 0;
15865124feed88 Phillip Potter 2021-07-28 1181
15865124feed88 Phillip Potter 2021-07-28 1182 if (pstat->qos_info & BIT(3))
15865124feed88 Phillip Potter 2021-07-28 1183 pstat->uapsd_be = BIT(0) | BIT(1);
15865124feed88 Phillip Potter 2021-07-28 1184 else
15865124feed88 Phillip Potter 2021-07-28 1185 pstat->uapsd_be = 0;
15865124feed88 Phillip Potter 2021-07-28 1186 }
15865124feed88 Phillip Potter 2021-07-28 1187 break;
15865124feed88 Phillip Potter 2021-07-28 1188 }
15865124feed88 Phillip Potter 2021-07-28 1189 } else {
15865124feed88 Phillip Potter 2021-07-28 1190 break;
15865124feed88 Phillip Potter 2021-07-28 1191 }
15865124feed88 Phillip Potter 2021-07-28 1192 p = p + ie_len + 2;
15865124feed88 Phillip Potter 2021-07-28 1193 }
15865124feed88 Phillip Potter 2021-07-28 1194 }
15865124feed88 Phillip Potter 2021-07-28 1195
15865124feed88 Phillip Potter 2021-07-28 1196 /* save HT capabilities in the sta object */
15865124feed88 Phillip Potter 2021-07-28 1197 memset(&pstat->htpriv.ht_cap, 0, sizeof(struct ieee80211_ht_cap));
15865124feed88 Phillip Potter 2021-07-28 1198 if (elems.ht_capabilities && elems.ht_capabilities_len >= sizeof(struct ieee80211_ht_cap)) {
15865124feed88 Phillip Potter 2021-07-28 1199 pstat->flags |= WLAN_STA_HT;
15865124feed88 Phillip Potter 2021-07-28 1200
15865124feed88 Phillip Potter 2021-07-28 1201 pstat->flags |= WLAN_STA_WME;
15865124feed88 Phillip Potter 2021-07-28 1202
15865124feed88 Phillip Potter 2021-07-28 1203 memcpy(&pstat->htpriv.ht_cap, elems.ht_capabilities, sizeof(struct ieee80211_ht_cap));
15865124feed88 Phillip Potter 2021-07-28 1204 } else {
15865124feed88 Phillip Potter 2021-07-28 1205 pstat->flags &= ~WLAN_STA_HT;
15865124feed88 Phillip Potter 2021-07-28 1206 }
15865124feed88 Phillip Potter 2021-07-28 1207 if ((!pmlmepriv->htpriv.ht_option) && (pstat->flags & WLAN_STA_HT)) {
15865124feed88 Phillip Potter 2021-07-28 1208 status = _STATS_FAILURE_;
15865124feed88 Phillip Potter 2021-07-28 1209 goto OnAssocReqFail;
15865124feed88 Phillip Potter 2021-07-28 1210 }
15865124feed88 Phillip Potter 2021-07-28 1211
15865124feed88 Phillip Potter 2021-07-28 1212 pstat->flags |= WLAN_STA_NONERP;
15865124feed88 Phillip Potter 2021-07-28 1213 for (i = 0; i < pstat->bssratelen; i++) {
15865124feed88 Phillip Potter 2021-07-28 1214 if ((pstat->bssrateset[i] & 0x7f) > 22) {
15865124feed88 Phillip Potter 2021-07-28 1215 pstat->flags &= ~WLAN_STA_NONERP;
15865124feed88 Phillip Potter 2021-07-28 1216 break;
15865124feed88 Phillip Potter 2021-07-28 1217 }
15865124feed88 Phillip Potter 2021-07-28 1218 }
15865124feed88 Phillip Potter 2021-07-28 1219
15865124feed88 Phillip Potter 2021-07-28 1220 if (pstat->capability & WLAN_CAPABILITY_SHORT_PREAMBLE)
15865124feed88 Phillip Potter 2021-07-28 1221 pstat->flags |= WLAN_STA_SHORT_PREAMBLE;
15865124feed88 Phillip Potter 2021-07-28 1222 else
15865124feed88 Phillip Potter 2021-07-28 1223 pstat->flags &= ~WLAN_STA_SHORT_PREAMBLE;
15865124feed88 Phillip Potter 2021-07-28 1224
15865124feed88 Phillip Potter 2021-07-28 1225 if (status != _STATS_SUCCESSFUL_)
15865124feed88 Phillip Potter 2021-07-28 1226 goto OnAssocReqFail;
15865124feed88 Phillip Potter 2021-07-28 1227
15865124feed88 Phillip Potter 2021-07-28 1228 pstat->is_p2p_device = false;
15865124feed88 Phillip Potter 2021-07-28 1229 if (rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO)) {
15865124feed88 Phillip Potter 2021-07-28 1230 p2pie = rtw_get_p2p_ie(pframe + WLAN_HDR_A3_LEN + ie_offset, pkt_len - WLAN_HDR_A3_LEN - ie_offset, NULL, &p2pielen);
15865124feed88 Phillip Potter 2021-07-28 1231 if (p2pie) {
15865124feed88 Phillip Potter 2021-07-28 1232 pstat->is_p2p_device = true;
15865124feed88 Phillip Potter 2021-07-28 1233 p2p_status_code = (u8)process_assoc_req_p2p_ie(pwdinfo, pframe, pkt_len, pstat);
15865124feed88 Phillip Potter 2021-07-28 1234 if (p2p_status_code > 0) {
15865124feed88 Phillip Potter 2021-07-28 1235 pstat->p2p_status_code = p2p_status_code;
15865124feed88 Phillip Potter 2021-07-28 1236 status = _STATS_CAP_FAIL_;
15865124feed88 Phillip Potter 2021-07-28 1237 goto OnAssocReqFail;
15865124feed88 Phillip Potter 2021-07-28 1238 }
15865124feed88 Phillip Potter 2021-07-28 1239 }
15865124feed88 Phillip Potter 2021-07-28 1240 }
15865124feed88 Phillip Potter 2021-07-28 1241 pstat->p2p_status_code = p2p_status_code;
15865124feed88 Phillip Potter 2021-07-28 1242
15865124feed88 Phillip Potter 2021-07-28 1243 /* TODO: identify_proprietary_vendor_ie(); */
15865124feed88 Phillip Potter 2021-07-28 1244 /* Realtek proprietary IE */
15865124feed88 Phillip Potter 2021-07-28 1245 /* identify if this is Broadcom sta */
15865124feed88 Phillip Potter 2021-07-28 1246 /* identify if this is ralink sta */
15865124feed88 Phillip Potter 2021-07-28 1247 /* Customer proprietary IE */
15865124feed88 Phillip Potter 2021-07-28 1248
15865124feed88 Phillip Potter 2021-07-28 1249 /* get a unique AID */
8b7efc8d3123ad Phillip Potter 2022-01-24 1250 if (pstat->aid == 0) {
15865124feed88 Phillip Potter 2021-07-28 1251 for (pstat->aid = 1; pstat->aid <= NUM_STA; pstat->aid++)
552838fdcaef2c Michael Straube 2021-08-01 1252 if (!pstapriv->sta_aid[pstat->aid - 1])
15865124feed88 Phillip Potter 2021-07-28 1253 break;
15865124feed88 Phillip Potter 2021-07-28 1254
15865124feed88 Phillip Potter 2021-07-28 1255 /* if (pstat->aid > NUM_STA) { */
15865124feed88 Phillip Potter 2021-07-28 1256 if (pstat->aid > pstapriv->max_num_sta) {
15865124feed88 Phillip Potter 2021-07-28 1257 pstat->aid = 0;
15865124feed88 Phillip Potter 2021-07-28 1258
15865124feed88 Phillip Potter 2021-07-28 1259 status = WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA;
15865124feed88 Phillip Potter 2021-07-28 1260
15865124feed88 Phillip Potter 2021-07-28 1261 goto OnAssocReqFail;
15865124feed88 Phillip Potter 2021-07-28 1262 } else {
15865124feed88 Phillip Potter 2021-07-28 1263 pstapriv->sta_aid[pstat->aid - 1] = pstat;
15865124feed88 Phillip Potter 2021-07-28 1264 }
15865124feed88 Phillip Potter 2021-07-28 1265 }
15865124feed88 Phillip Potter 2021-07-28 1266
15865124feed88 Phillip Potter 2021-07-28 1267 pstat->state &= (~WIFI_FW_ASSOC_STATE);
15865124feed88 Phillip Potter 2021-07-28 1268 pstat->state |= WIFI_FW_ASSOC_SUCCESS;
15865124feed88 Phillip Potter 2021-07-28 1269
15865124feed88 Phillip Potter 2021-07-28 1270 spin_lock_bh(&pstapriv->auth_list_lock);
15865124feed88 Phillip Potter 2021-07-28 1271 if (!list_empty(&pstat->auth_list)) {
15865124feed88 Phillip Potter 2021-07-28 1272 list_del_init(&pstat->auth_list);
15865124feed88 Phillip Potter 2021-07-28 1273 pstapriv->auth_list_cnt--;
15865124feed88 Phillip Potter 2021-07-28 1274 }
15865124feed88 Phillip Potter 2021-07-28 1275 spin_unlock_bh(&pstapriv->auth_list_lock);
15865124feed88 Phillip Potter 2021-07-28 1276
15865124feed88 Phillip Potter 2021-07-28 1277 spin_lock_bh(&pstapriv->asoc_list_lock);
15865124feed88 Phillip Potter 2021-07-28 1278 if (list_empty(&pstat->asoc_list)) {
15865124feed88 Phillip Potter 2021-07-28 1279 pstat->expire_to = pstapriv->expire_to;
15865124feed88 Phillip Potter 2021-07-28 1280 list_add_tail(&pstat->asoc_list, &pstapriv->asoc_list);
15865124feed88 Phillip Potter 2021-07-28 1281 pstapriv->asoc_list_cnt++;
15865124feed88 Phillip Potter 2021-07-28 1282 }
15865124feed88 Phillip Potter 2021-07-28 1283 spin_unlock_bh(&pstapriv->asoc_list_lock);
15865124feed88 Phillip Potter 2021-07-28 1284
15865124feed88 Phillip Potter 2021-07-28 1285 /* now the station is qualified to join our BSS... */
15865124feed88 Phillip Potter 2021-07-28 1286 if (pstat && (pstat->state & WIFI_FW_ASSOC_SUCCESS) && (_STATS_SUCCESSFUL_ == status)) {
15865124feed88 Phillip Potter 2021-07-28 1287 /* 1 bss_cap_update & sta_info_update */
15865124feed88 Phillip Potter 2021-07-28 1288 bss_cap_update_on_sta_join(padapter, pstat);
15865124feed88 Phillip Potter 2021-07-28 1289 sta_info_update(padapter, pstat);
15865124feed88 Phillip Potter 2021-07-28 1290
15865124feed88 Phillip Potter 2021-07-28 1291 /* issue assoc rsp before notify station join event. */
15865124feed88 Phillip Potter 2021-07-28 1292 if (frame_type == WIFI_ASSOCREQ)
15865124feed88 Phillip Potter 2021-07-28 1293 issue_asocrsp(padapter, status, pstat, WIFI_ASSOCRSP);
15865124feed88 Phillip Potter 2021-07-28 1294 else
15865124feed88 Phillip Potter 2021-07-28 1295 issue_asocrsp(padapter, status, pstat, WIFI_REASSOCRSP);
15865124feed88 Phillip Potter 2021-07-28 1296
15865124feed88 Phillip Potter 2021-07-28 1297 /* 2 - report to upper layer */
15865124feed88 Phillip Potter 2021-07-28 1298 rtw_indicate_sta_assoc_event(padapter, pstat);
15865124feed88 Phillip Potter 2021-07-28 1299
15865124feed88 Phillip Potter 2021-07-28 1300 /* 3-(1) report sta add event */
15865124feed88 Phillip Potter 2021-07-28 1301 report_add_sta_event(padapter, pstat->hwaddr, pstat->aid);
15865124feed88 Phillip Potter 2021-07-28 1302 }
15865124feed88 Phillip Potter 2021-07-28 1303
15865124feed88 Phillip Potter 2021-07-28 1304 return _SUCCESS;
15865124feed88 Phillip Potter 2021-07-28 1305
15865124feed88 Phillip Potter 2021-07-28 1306 asoc_class2_error:
15865124feed88 Phillip Potter 2021-07-28 1307
15865124feed88 Phillip Potter 2021-07-28 1308 issue_deauth(padapter, (void *)GetAddr2Ptr(pframe), status);
15865124feed88 Phillip Potter 2021-07-28 1309
15865124feed88 Phillip Potter 2021-07-28 1310 return _FAIL;
15865124feed88 Phillip Potter 2021-07-28 1311
15865124feed88 Phillip Potter 2021-07-28 1312 OnAssocReqFail:
15865124feed88 Phillip Potter 2021-07-28 1313
15865124feed88 Phillip Potter 2021-07-28 1314 pstat->aid = 0;
15865124feed88 Phillip Potter 2021-07-28 1315 if (frame_type == WIFI_ASSOCREQ)
15865124feed88 Phillip Potter 2021-07-28 1316 issue_asocrsp(padapter, status, pstat, WIFI_ASSOCRSP);
15865124feed88 Phillip Potter 2021-07-28 1317 else
15865124feed88 Phillip Potter 2021-07-28 1318 issue_asocrsp(padapter, status, pstat, WIFI_REASSOCRSP);
15865124feed88 Phillip Potter 2021-07-28 1319
15865124feed88 Phillip Potter 2021-07-28 1320 return _FAIL;
15865124feed88 Phillip Potter 2021-07-28 1321 }
15865124feed88 Phillip Potter 2021-07-28 1322
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
next prev parent reply other threads:[~2022-01-25 7:23 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-24 22:44 [PATCH 00/10] Cleanup and removal of DBG_88E macro Phillip Potter
2022-01-24 22:44 ` [PATCH 01/10] staging: r8188eu: remove previously added dev_dbg and netdev_dbg calls Phillip Potter
2022-01-24 22:44 ` [PATCH 02/10] staging: r8188eu: remove smaller sets of DBG_88E calls from core dir Phillip Potter
2022-01-25 9:02 ` Dan Carpenter
2022-01-26 0:54 ` Phillip Potter
2022-01-26 6:00 ` Dan Carpenter
2022-01-25 18:17 ` Pavel Skripkin
2022-01-26 1:00 ` Phillip Potter
2022-01-24 22:44 ` [PATCH 03/10] staging: r8188eu: remove DBG_88E calls from core/rtw_mlme_ext.c Phillip Potter
2022-01-25 7:22 ` kernel test robot [this message]
2022-01-25 7:22 ` kernel test robot
2022-01-25 18:31 ` Pavel Skripkin
2022-01-26 1:02 ` Phillip Potter
2022-01-24 22:44 ` [PATCH 04/10] staging: r8188eu: remove all DBG_88E calls from hal dir Phillip Potter
2022-01-25 8:27 ` kernel test robot
2022-01-25 8:27 ` kernel test robot
2022-01-24 22:44 ` [PATCH 05/10] staging: r8188eu: remove smaller sets of DBG_88E calls from os_dep dir Phillip Potter
2022-01-25 12:48 ` Pavel Skripkin
2022-01-25 12:59 ` Dan Carpenter
2022-01-25 13:04 ` Pavel Skripkin
2022-01-25 13:07 ` Dan Carpenter
2022-01-26 0:58 ` Phillip Potter
2022-01-24 22:44 ` [PATCH 06/10] staging: r8188eu: remove DBG_88E calls from os_dep/ioctl_linux.c Phillip Potter
2022-01-25 9:31 ` kernel test robot
2022-01-25 9:31 ` kernel test robot
2022-01-25 19:03 ` Pavel Skripkin
2022-01-26 1:13 ` Phillip Potter
2022-01-26 10:26 ` Pavel Skripkin
2022-01-26 10:48 ` Greg KH
2022-01-26 10:58 ` Pavel Skripkin
2022-01-26 11:14 ` Greg KH
2022-01-27 8:53 ` Phillip Potter
2022-01-24 22:44 ` [PATCH 07/10] staging: r8188eu: remove DBG_88E call from include/usb_ops.h Phillip Potter
2022-01-24 22:44 ` [PATCH 08/10] staging: r8188eu: remove all remaining aliased DBG_88E calls Phillip Potter
2022-01-24 22:44 ` [PATCH 09/10] staging: r8188eu: remove DBG_88E macro definition Phillip Potter
2022-01-24 22:44 ` [PATCH 10/10] staging: r8188eu: remove GlobalDebugLevel flag Phillip Potter
2022-01-25 15:33 ` [PATCH 00/10] Cleanup and removal of DBG_88E macro Greg KH
2022-01-26 0:45 ` Phillip Potter
-- strict thread matches above, loose matches on Subject: below --
2022-01-24 22:50 [RESENT PATCH 00/10] staging: r8188eu: " Phillip Potter
2022-01-24 22:50 ` [PATCH 03/10] staging: r8188eu: remove DBG_88E calls from core/rtw_mlme_ext.c Phillip Potter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202201251504.QbCNelqi-lkp@intel.com \
--to=lkp@intel.com \
--cc=Larry.Finger@lwfinger.net \
--cc=dan.carpenter@oracle.com \
--cc=gregkh@linuxfoundation.org \
--cc=kbuild-all@lists.01.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-staging@lists.linux.dev \
--cc=martin@kaiser.cx \
--cc=paskripkin@gmail.com \
--cc=phil@philpotter.co.uk \
--cc=straube.linux@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.