lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:   Sun, 7 Aug 2022 22:18:08 +0800
From:   kernel test robot <lkp@...el.com>
To:     Simone Serra <serrazimone@...il.com>, gregkh@...uxfoundation.org,
        fabioaiuto83@...il.com, soumya.negi97@...il.com,
        hdegoede@...hat.com, straube.linux@...il.com
Cc:     kbuild-all@...ts.01.org, Simone Serra <serrazimone@...il.com>,
        linux-staging@...ts.linux.dev, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] Fixes checkpatch warnings and checks

Hi Simone,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on staging/staging-testing]
[also build test ERROR on linus/master v5.19 next-20220805]
[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#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Simone-Serra/Fixes-checkpatch-warnings-and-checks/20220805-154109
base:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git b2a88c212e652e94f1e4b635910972ac57ba4e97
config: i386-allyesconfig (https://download.01.org/0day-ci/archive/20220807/202208072225.fazL9FsN-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-3) 11.3.0
reproduce (this is a W=1 build):
        # https://github.com/intel-lab-lkp/linux/commit/d73d8cf7a17857c53ecdf684477d60e3492f0978
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Simone-Serra/Fixes-checkpatch-warnings-and-checks/20220805-154109
        git checkout d73d8cf7a17857c53ecdf684477d60e3492f0978
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash drivers/staging/rtl8723bs/

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@...el.com>

All error/warnings (new ones prefixed by >>):

   drivers/staging/rtl8723bs/core/rtw_ap.c: In function 'expire_timeout_chk':
>> drivers/staging/rtl8723bs/core/rtw_ap.c:280:25: error: implicit declaration of function 'select_channel'; did you mean 'SelectChannel'? [-Werror=implicit-function-declaration]
     280 |                         select_channel(padapter, pmlmeext->cur_channel);
         |                         ^~~~~~~~~~~~~~
         |                         SelectChannel
   drivers/staging/rtl8723bs/core/rtw_ap.c: At top level:
>> drivers/staging/rtl8723bs/core/rtw_ap.c:324:6: warning: no previous prototype for 'add_ratid' [-Wmissing-prototypes]
     324 | void add_ratid(struct adapter *padapter, struct sta_info *psta, u8 rssi_level)
         |      ^~~~~~~~~
   drivers/staging/rtl8723bs/core/rtw_ap.c: In function 'update_sta_info_apmode':
>> drivers/staging/rtl8723bs/core/rtw_ap.c:468:28: error: 'struct security_priv' has no member named 'dot11_auth_algrthm'; did you mean 'dot11AuthAlgrthm'?
     468 |         if (psecuritypriv->dot11_auth_algrthm == dot11_auth_algrthm_8021X)
         |                            ^~~~~~~~~~~~~~~~~~
         |                            dot11AuthAlgrthm
>> drivers/staging/rtl8723bs/core/rtw_ap.c:468:50: error: 'dot11_auth_algrthm_8021X' undeclared (first use in this function); did you mean 'dot11AuthAlgrthm_8021X'?
     468 |         if (psecuritypriv->dot11_auth_algrthm == dot11_auth_algrthm_8021X)
         |                                                  ^~~~~~~~~~~~~~~~~~~~~~~~
         |                                                  dot11AuthAlgrthm_8021X
   drivers/staging/rtl8723bs/core/rtw_ap.c:468:50: note: each undeclared identifier is reported only once for each function it appears in
   drivers/staging/rtl8723bs/core/rtw_ap.c: In function 'start_bss_network':
>> drivers/staging/rtl8723bs/core/rtw_ap.c:683:37: error: 'struct security_priv' has no member named 'dot11_privacy_algrthm'; did you mean 'dot11PrivacyAlgrthm'?
     683 |                 if ((psecuritypriv->dot11_privacy_algrthm != _WEP40_) &&
         |                                     ^~~~~~~~~~~~~~~~~~~~~
         |                                     dot11PrivacyAlgrthm
   drivers/staging/rtl8723bs/core/rtw_ap.c:684:37: error: 'struct security_priv' has no member named 'dot11_privacy_algrthm'; did you mean 'dot11PrivacyAlgrthm'?
     684 |                     (psecuritypriv->dot11_privacy_algrthm != _WEP104_))
         |                                     ^~~~~~~~~~~~~~~~~~~~~
         |                                     dot11PrivacyAlgrthm
>> drivers/staging/rtl8723bs/core/rtw_ap.c:689:9: error: implicit declaration of function 'set_msr'; did you mean 'Set_MSR'? [-Werror=implicit-function-declaration]
     689 |         set_msr(padapter, _HW_STATE_AP_);
         |         ^~~~~~~
         |         Set_MSR
   drivers/staging/rtl8723bs/core/rtw_ap.c:706:32: error: 'struct security_priv' has no member named 'dot11_auth_algrthm'; did you mean 'dot11AuthAlgrthm'?
     706 |         val8 = (psecuritypriv->dot11_auth_algrthm == dot11_auth_algrthm_8021X
         |                                ^~~~~~~~~~~~~~~~~~
         |                                dot11AuthAlgrthm
   drivers/staging/rtl8723bs/core/rtw_ap.c:706:54: error: 'dot11_auth_algrthm_8021X' undeclared (first use in this function); did you mean 'dot11AuthAlgrthm_8021X'?
     706 |         val8 = (psecuritypriv->dot11_auth_algrthm == dot11_auth_algrthm_8021X
         |                                                      ^~~~~~~~~~~~~~~~~~~~~~~~
         |                                                      dot11AuthAlgrthm_8021X
>> drivers/staging/rtl8723bs/core/rtw_ap.c:725:17: error: implicit declaration of function 'switch_DM_func'; did you mean 'Switch_DM_Func'? [-Werror=implicit-function-declaration]
     725 |                 switch_DM_func(padapter, DYNAMIC_ALL_FUNC_ENABLE, true);
         |                 ^~~~~~~~~~~~~~
         |                 Switch_DM_Func
>> drivers/staging/rtl8723bs/core/rtw_ap.c:783:9: error: implicit declaration of function 'update_brate_tbl'; did you mean 'UpdateBrateTbl'? [-Werror=implicit-function-declaration]
     783 |         update_brate_tbl(padapter, pnetwork->supported_rates);
         |         ^~~~~~~~~~~~~~~~
         |         UpdateBrateTbl
   drivers/staging/rtl8723bs/core/rtw_ap.c: In function 'rtw_check_beacon_data':
>> drivers/staging/rtl8723bs/core/rtw_ap.c:837:50: error: 'ndis802_11_ap_mode' undeclared (first use in this function); did you mean 'Ndis802_11APMode'?
     837 |         if (pbss_network->infrastructure_mode != ndis802_11_ap_mode)
         |                                                  ^~~~~~~~~~~~~~~~~~
         |                                                  Ndis802_11APMode
   drivers/staging/rtl8723bs/core/rtw_ap.c:940:40: error: 'struct security_priv' has no member named 'dot11_auth_algrthm'; did you mean 'dot11AuthAlgrthm'?
     940 |                         psecuritypriv->dot11_auth_algrthm = dot11_auth_algrthm_8021X;
         |                                        ^~~~~~~~~~~~~~~~~~
         |                                        dot11AuthAlgrthm
   drivers/staging/rtl8723bs/core/rtw_ap.c:940:61: error: 'dot11_auth_algrthm_8021X' undeclared (first use in this function); did you mean 'dot11AuthAlgrthm_8021X'?
     940 |                         psecuritypriv->dot11_auth_algrthm = dot11_auth_algrthm_8021X;
         |                                                             ^~~~~~~~~~~~~~~~~~~~~~~~
         |                                                             dot11AuthAlgrthm_8021X
   drivers/staging/rtl8723bs/core/rtw_ap.c:969:48: error: 'struct security_priv' has no member named 'dot11_auth_algrthm'; did you mean 'dot11AuthAlgrthm'?
     969 |                                 psecuritypriv->dot11_auth_algrthm = dot11_auth_algrthm_8021X;
         |                                                ^~~~~~~~~~~~~~~~~~
         |                                                dot11AuthAlgrthm
>> drivers/staging/rtl8723bs/core/rtw_ap.c:1089:53: error: 'ndis802_11ds' undeclared (first use in this function); did you mean 'Ndis802_11DS'?
    1089 |                 pbss_network->network_type_in_use = ndis802_11ds;
         |                                                     ^~~~~~~~~~~~
         |                                                     Ndis802_11DS
>> drivers/staging/rtl8723bs/core/rtw_ap.c:1095:53: error: 'ndis802_11ofdm24' undeclared (first use in this function); did you mean 'Ndis802_11OFDM24'?
    1095 |                 pbss_network->network_type_in_use = ndis802_11ofdm24;
         |                                                     ^~~~~~~~~~~~~~~~
         |                                                     Ndis802_11OFDM24
>> drivers/staging/rtl8723bs/core/rtw_ap.c:1120:17: error: implicit declaration of function 'ht_caps_handler'; did you mean 'HT_caps_handler'? [-Werror=implicit-function-declaration]
    1120 |                 ht_caps_handler(padapter, (struct ndis_80211_var_ie *)pht_caps_ie);
         |                 ^~~~~~~~~~~~~~~
         |                 HT_caps_handler
>> drivers/staging/rtl8723bs/core/rtw_ap.c:1122:17: error: implicit declaration of function 'ht_info_handler'; did you mean 'HT_info_handler'? [-Werror=implicit-function-declaration]
    1122 |                 ht_info_handler(padapter, (struct ndis_80211_var_ie *)pht_info_ie);
         |                 ^~~~~~~~~~~~~~~
         |                 HT_info_handler
   In file included from drivers/staging/rtl8723bs/include/drv_types.h:29,
                    from drivers/staging/rtl8723bs/core/rtw_ap.c:8:
   drivers/staging/rtl8723bs/core/rtw_ap.c: In function 'rtw_ap_set_pairwise_key':
>> drivers/staging/rtl8723bs/core/rtw_ap.c:1273:59: error: '_set_stakey_cmd_' undeclared (first use in this function); did you mean 'set_stakey_hdl'?
    1273 |         init_h2fwcmd_w_parm_no_rsp(ph2c, psetstakey_para, _set_stakey_cmd_);
         |                                                           ^~~~~~~~~~~~~~~~
   drivers/staging/rtl8723bs/include/rtw_cmd.h:76:25: note: in definition of macro 'init_h2fwcmd_w_parm_no_rsp'
      76 |         pcmd->cmdcode = code;\
         |                         ^~~~
>> drivers/staging/rtl8723bs/core/rtw_ap.c:1275:48: error: 'struct sta_info' has no member named 'dot118021_xprivacy'; did you mean 'dot118021XPrivacy'?
    1275 |         psetstakey_para->algorithm = (u8)psta->dot118021_xprivacy;
         |                                                ^~~~~~~~~~~~~~~~~~
         |                                                dot118021XPrivacy
   In file included from include/linux/string.h:253,
                    from arch/x86/include/asm/page_32.h:22,
                    from arch/x86/include/asm/page.h:14,
                    from arch/x86/include/asm/thread_info.h:12,
                    from include/linux/thread_info.h:60,
                    from arch/x86/include/asm/preempt.h:7,
                    from include/linux/preempt.h:78,
                    from include/linux/rcupdate.h:27,
                    from include/linux/rculist.h:11,
                    from include/linux/sched/signal.h:5,
                    from drivers/staging/rtl8723bs/include/drv_types.h:17,
                    from drivers/staging/rtl8723bs/core/rtw_ap.c:8:
>> drivers/staging/rtl8723bs/core/rtw_ap.c:1279:45: error: 'struct sta_info' has no member named 'dot118021x_uncst_key'; did you mean 'dot118021x_UncstKey'?
    1279 |         memcpy(psetstakey_para->key, &psta->dot118021x_uncst_key, 16);
         |                                             ^~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:376:52: note: in definition of macro '__fortify_memcpy_chk'
     376 |         fortify_memcpy_chk(__fortify_size, p_size, q_size,              \
         |                                                    ^~~~~~
   drivers/staging/rtl8723bs/core/rtw_ap.c:1279:9: note: in expansion of macro 'memcpy'
    1279 |         memcpy(psetstakey_para->key, &psta->dot118021x_uncst_key, 16);
         |         ^~~~~~
>> drivers/staging/rtl8723bs/core/rtw_ap.c:1279:45: error: 'struct sta_info' has no member named 'dot118021x_uncst_key'; did you mean 'dot118021x_UncstKey'?
    1279 |         memcpy(psetstakey_para->key, &psta->dot118021x_uncst_key, 16);
         |                                             ^~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:377:42: note: in definition of macro '__fortify_memcpy_chk'
     377 |                            p_size_field, q_size_field, #op);            \
         |                                          ^~~~~~~~~~~~
   drivers/staging/rtl8723bs/core/rtw_ap.c:1279:9: note: in expansion of macro 'memcpy'
    1279 |         memcpy(psetstakey_para->key, &psta->dot118021x_uncst_key, 16);
         |         ^~~~~~
>> drivers/staging/rtl8723bs/core/rtw_ap.c:1279:45: error: 'struct sta_info' has no member named 'dot118021x_uncst_key'; did you mean 'dot118021x_UncstKey'?
    1279 |         memcpy(psetstakey_para->key, &psta->dot118021x_uncst_key, 16);
         |                                             ^~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:378:30: note: in definition of macro '__fortify_memcpy_chk'
     378 |         __underlying_##op(p, q, __fortify_size);                        \
         |                              ^
   drivers/staging/rtl8723bs/core/rtw_ap.c:1279:9: note: in expansion of macro 'memcpy'
    1279 |         memcpy(psetstakey_para->key, &psta->dot118021x_uncst_key, 16);
         |         ^~~~~~
   drivers/staging/rtl8723bs/core/rtw_ap.c: In function 'rtw_ap_set_key':
>> drivers/staging/rtl8723bs/core/rtw_ap.c:1337:25: error: '_setkey_cmd_' undeclared (first use in this function); did you mean '_SetKey_CMD_'?
    1337 |         pcmd->cmdcode = _setkey_cmd_;
         |                         ^~~~~~~~~~~~
         |                         _SetKey_CMD_
   drivers/staging/rtl8723bs/core/rtw_ap.c: In function 'ap_sta_info_defer_update':
>> drivers/staging/rtl8723bs/core/rtw_ap.c:1982:17: error: implicit declaration of function 'add_rat_id'; did you mean 'add_ratid'? [-Werror=implicit-function-declaration]
    1982 |                 add_rat_id(padapter, psta, 0);/* DM_RATR_STA_INIT */
         |                 ^~~~~~~~~~
         |                 add_ratid
   drivers/staging/rtl8723bs/core/rtw_ap.c: In function 'rtw_ap_restore_network':
   drivers/staging/rtl8723bs/core/rtw_ap.c:1998:37: error: 'ndis802_11apmode' undeclared (first use in this function); did you mean 'Ndis802_11APMode'?
    1998 |         rtw_setopmode_cmd(padapter, ndis802_11apmode, false);
         |                                     ^~~~~~~~~~~~~~~~
         |                                     Ndis802_11APMode
   drivers/staging/rtl8723bs/core/rtw_ap.c:2008:37: error: 'struct security_priv' has no member named 'dot11_privacy_algrthm'; did you mean 'dot11PrivacyAlgrthm'?
    2008 |         if ((padapter->securitypriv.dot11_privacy_algrthm == _TKIP_) ||
         |                                     ^~~~~~~~~~~~~~~~~~~~~
         |                                     dot11PrivacyAlgrthm
   drivers/staging/rtl8723bs/core/rtw_ap.c:2009:37: error: 'struct security_priv' has no member named 'dot11_privacy_algrthm'; did you mean 'dot11PrivacyAlgrthm'?
    2009 |             (padapter->securitypriv.dot11_privacy_algrthm == _AES_)) {
         |                                     ^~~~~~~~~~~~~~~~~~~~~
         |                                     dot11PrivacyAlgrthm
   drivers/staging/rtl8723bs/core/rtw_ap.c:2013:44: error: 'struct security_priv' has no member named 'dot118021_xgrp_keyid'; did you mean 'dot118021XGrpKeyid'?
    2013 |                             psecuritypriv->dot118021_xgrp_keyid,
         |                                            ^~~~~~~~~~~~~~~~~~~~
         |                                            dot118021XGrpKeyid
   drivers/staging/rtl8723bs/core/rtw_ap.c:2042:25: error: implicit declaration of function 'update_ra_entry'; did you mean 'Update_RA_Entry'? [-Werror=implicit-function-declaration]
    2042 |                         update_ra_entry(padapter, psta);
         |                         ^~~~~~~~~~~~~~~
         |                         Update_RA_Entry
   drivers/staging/rtl8723bs/core/rtw_ap.c:2045:45: error: 'struct security_priv' has no member named 'dot11_privacy_algrthm'; did you mean 'dot11PrivacyAlgrthm'?
    2045 |                         if ((psecuritypriv->dot11_privacy_algrthm == _TKIP_) ||
         |                                             ^~~~~~~~~~~~~~~~~~~~~
         |                                             dot11PrivacyAlgrthm
   drivers/staging/rtl8723bs/core/rtw_ap.c:2046:45: error: 'struct security_priv' has no member named 'dot11_privacy_algrthm'; did you mean 'dot11PrivacyAlgrthm'?
    2046 |                             (psecuritypriv->dot11_privacy_algrthm == _AES_)) {
         |                                             ^~~~~~~~~~~~~~~~~~~~~
         |                                             dot11PrivacyAlgrthm
   drivers/staging/rtl8723bs/core/rtw_ap.c: In function 'stop_ap_mode':
   drivers/staging/rtl8723bs/core/rtw_ap.c:2121:47: error: 'ndis802_11auth_mode_open' undeclared (first use in this function); did you mean 'Ndis802_11AuthModeOpen'?
    2121 |         padapter->securitypriv.ndisauthtype = ndis802_11auth_mode_open;
         |                                               ^~~~~~~~~~~~~~~~~~~~~~~~
         |                                               Ndis802_11AuthModeOpen
   drivers/staging/rtl8723bs/core/rtw_ap.c:2122:52: error: 'ndis802_11wep_disabled' undeclared (first use in this function); did you mean 'Ndis802_11WEPDisabled'?
    2122 |         padapter->securitypriv.ndisencryptstatus = ndis802_11wep_disabled;
         |                                                    ^~~~~~~~~~~~~~~~~~~~~~
         |                                                    Ndis802_11WEPDisabled
   drivers/staging/rtl8723bs/core/rtw_ap.c:2152:9: error: implicit declaration of function 'rtw_btcoex_media_status_notify'; did you mean 'rtw_btcoex_MediaStatusNotify'? [-Werror=implicit-function-declaration]
    2152 |         rtw_btcoex_media_status_notify(padapter, 0); /* disconnect */
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         |         rtw_btcoex_MediaStatusNotify
   cc1: some warnings being treated as errors


vim +280 drivers/staging/rtl8723bs/core/rtw_ap.c

   173	
   174	void expire_timeout_chk(struct adapter *padapter)
   175	{
   176		struct list_head *phead, *plist, *tmp;
   177		u8 updated = false;
   178		struct sta_info *psta = NULL;
   179		struct sta_priv *pstapriv = &padapter->stapriv;
   180		u8 chk_alive_num = 0;
   181		char chk_alive_list[NUM_STA];
   182		int i;
   183	
   184		spin_lock_bh(&pstapriv->auth_list_lock);
   185	
   186		phead = &pstapriv->auth_list;
   187		/* check auth_queue */
   188		list_for_each_safe(plist, tmp, phead) {
   189			psta = list_entry(plist, struct sta_info, auth_list);
   190	
   191			if (psta->expire_to > 0) {
   192				psta->expire_to--;
   193				if (psta->expire_to == 0) {
   194					list_del_init(&psta->auth_list);
   195					pstapriv->auth_list_cnt--;
   196	
   197					spin_unlock_bh(&pstapriv->auth_list_lock);
   198	
   199					rtw_free_stainfo(padapter, psta);
   200	
   201					spin_lock_bh(&pstapriv->auth_list_lock);
   202				}
   203			}
   204		}
   205	
   206		spin_unlock_bh(&pstapriv->auth_list_lock);
   207		psta = NULL;
   208	
   209		spin_lock_bh(&pstapriv->asoc_list_lock);
   210	
   211		phead = &pstapriv->asoc_list;
   212		/* check asoc_queue */
   213		list_for_each_safe(plist, tmp, phead) {
   214			psta = list_entry(plist, struct sta_info, asoc_list);
   215			if (chk_sta_is_alive(psta) || !psta->expire_to) {
   216				psta->expire_to = pstapriv->expire_to;
   217				psta->keep_alive_trycnt = 0;
   218				psta->under_exist_checking = 0;
   219			} else {
   220				if (psta->expire_to > 0)
   221					psta->expire_to--;
   222			}
   223	
   224			if (psta->expire_to == 0) {
   225				struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
   226	
   227				if (padapter->registrypriv.wifi_spec == 1) {
   228					psta->expire_to = pstapriv->expire_to;
   229					continue;
   230				}
   231	
   232				if (psta->state & WIFI_SLEEP_STATE) {
   233					if (!(psta->state & WIFI_STA_ALIVE_CHK_STATE)) {
   234						/* to check if alive by another methods */
   235						/* if station is at ps mode. */
   236						psta->expire_to = pstapriv->expire_to;
   237						psta->state |= WIFI_STA_ALIVE_CHK_STATE;
   238	
   239						/* to update bcn with tim_bitmap for this station */
   240						pstapriv->tim_bitmap |= BIT(psta->aid);
   241						update_beacon(padapter, WLAN_EID_TIM, NULL, true);
   242	
   243						if (!pmlmeext->active_keep_alive_check)
   244							continue;
   245					}
   246				}
   247				if (pmlmeext->active_keep_alive_check) {
   248					int stainfo_offset;
   249	
   250					stainfo_offset = rtw_stainfo_offset(pstapriv, psta);
   251					if (stainfo_offset_valid(stainfo_offset))
   252						chk_alive_list[chk_alive_num++] = stainfo_offset;
   253	
   254					continue;
   255				}
   256				list_del_init(&psta->asoc_list);
   257				pstapriv->asoc_list_cnt--;
   258				updated = ap_free_sta(padapter, psta, false, WLAN_REASON_DEAUTH_LEAVING);
   259			} else {
   260				/* TODO: Aging mechanism to digest frames in sleep_q to */
   261				/* avoid running out of xmitframe */
   262				if (psta->sleepq_len > (NR_XMITFRAME / pstapriv->asoc_list_cnt) &&
   263				    padapter->xmitpriv.free_xmitframe_cnt <
   264							 ((NR_XMITFRAME / pstapriv->asoc_list_cnt
   265					) / 2)
   266				)
   267					wakeup_sta_to_xmit(padapter, psta);
   268			}
   269		}
   270	
   271		spin_unlock_bh(&pstapriv->asoc_list_lock);
   272	
   273		if (chk_alive_num) {
   274			u8 backup_oper_channel = 0;
   275			struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
   276	
   277			/* switch to correct channel of current network  before issue keep-alive frames */
   278			if (rtw_get_oper_ch(padapter) != pmlmeext->cur_channel) {
   279				backup_oper_channel = rtw_get_oper_ch(padapter);
 > 280				select_channel(padapter, pmlmeext->cur_channel);
   281			}
   282	
   283			/* issue null data to check sta alive*/
   284			for (i = 0; i < chk_alive_num; i++) {
   285				int ret = _FAIL;
   286	
   287				psta = rtw_get_stainfo_by_offset(pstapriv, chk_alive_list[i]);
   288				if (!(psta->state & _FW_LINKED))
   289					continue;
   290	
   291				if (psta->state & WIFI_SLEEP_STATE)
   292					ret = issue_nulldata(padapter, psta->hwaddr, 0, 1, 50);
   293				else
   294					ret = issue_nulldata(padapter, psta->hwaddr, 0, 3, 50);
   295	
   296				psta->keep_alive_trycnt++;
   297				if (ret == _SUCCESS) {
   298					psta->expire_to = pstapriv->expire_to;
   299					psta->keep_alive_trycnt = 0;
   300					continue;
   301				} else if (psta->keep_alive_trycnt <= 3) {
   302					psta->expire_to = 1;
   303					continue;
   304				}
   305	
   306				psta->keep_alive_trycnt = 0;
   307				spin_lock_bh(&pstapriv->asoc_list_lock);
   308				if (list_empty(&psta->asoc_list) == false) {
   309					list_del_init(&psta->asoc_list);
   310					pstapriv->asoc_list_cnt--;
   311					updated = ap_free_sta(padapter, psta, false,
   312							      WLAN_REASON_DEAUTH_LEAVING);
   313				}
   314				spin_unlock_bh(&pstapriv->asoc_list_lock);
   315			}
   316	
   317			if (backup_oper_channel > 0) /* back to the original operation channel */
   318				select_channel(padapter, backup_oper_channel);
   319		}
   320	
   321		associated_clients_update(padapter, updated);
   322	}
   323	
 > 324	void add_ratid(struct adapter *padapter, struct sta_info *psta, u8 rssi_level)
   325	{
   326		unsigned char sta_band = 0, short_gi_rate = false;
   327		unsigned int tx_ra_bitmap = 0;
   328		struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
   329		struct wlan_bssid_ex
   330			*pcur_network = (struct wlan_bssid_ex *)&pmlmepriv->cur_network.network;
   331	
   332		if (!psta)
   333			return;
   334	
   335		if (!(psta->state & _FW_LINKED))
   336			return;
   337	
   338		rtw_hal_update_sta_rate_mask(padapter, psta);
   339		tx_ra_bitmap = psta->ra_mask;
   340	
   341		short_gi_rate = query_ra_short_GI(psta);
   342	
   343		if (pcur_network->configuration.ds_config > 14) {
   344			sta_band |= WIRELESS_INVALID;
   345		} else {
   346			if (tx_ra_bitmap & 0xffff000)
   347				sta_band |= WIRELESS_11_24N;
   348	
   349			if (tx_ra_bitmap & 0xff0)
   350				sta_band |= WIRELESS_11G;
   351	
   352			if (tx_ra_bitmap & 0x0f)
   353				sta_band |= WIRELESS_11B;
   354		}
   355	
   356		psta->wireless_mode = sta_band;
   357		psta->raid = networktype_to_raid_ex(padapter, psta);
   358	
   359		if (psta->aid < NUM_STA) {
   360			u8 arg[4] = {0};
   361	
   362			arg[0] = psta->mac_id;
   363			arg[1] = psta->raid;
   364			arg[2] = short_gi_rate;
   365			arg[3] = psta->init_rate;
   366	
   367			rtw_hal_add_ra_tid(padapter, tx_ra_bitmap, arg, rssi_level);
   368		}
   369	}
   370	
   371	void update_bmc_sta(struct adapter *padapter)
   372	{
   373		unsigned char network_type;
   374		int support_rate_num = 0;
   375		unsigned int tx_ra_bitmap = 0;
   376		struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
   377		struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
   378		struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
   379		struct wlan_bssid_ex
   380			*pcur_network = (struct wlan_bssid_ex *)&pmlmepriv->cur_network.network;
   381		struct sta_info *psta = rtw_get_bcmc_stainfo(padapter);
   382	
   383		if (psta) {
   384			psta->aid = 0;/* default set to 0 */
   385			/* psta->mac_id = psta->aid+4; */
   386			psta->mac_id = psta->aid + 1;/* mac_id = 1 for bc/mc stainfo */
   387	
   388			pmlmeinfo->FW_sta_info[psta->mac_id].psta = psta;
   389	
   390			psta->qos_option = 0;
   391			psta->htpriv.ht_option = false;
   392	
   393			psta->ieee8021x_blocked = 0;
   394	
   395			memset((void *)&psta->sta_stats, 0, sizeof(struct stainfo_stats));
   396	
   397			/* prepare for add_RATid */
   398			support_rate_num = rtw_get_rateset_len((u8 *)&pcur_network->supported_rates);
   399			network_type = rtw_check_network_type((u8 *)&pcur_network->supported_rates,
   400							      support_rate_num,
   401							      pcur_network->configuration.ds_config
   402			);
   403			if (is_supported_tx_cck(network_type)) {
   404				network_type = WIRELESS_11B;
   405			} else if (network_type == WIRELESS_INVALID) { /*  error handling */
   406	
   407				if (pcur_network->configuration.ds_config > 14)
   408					network_type = WIRELESS_INVALID;
   409				else
   410					network_type = WIRELESS_11B;
   411			}
   412			update_sta_basic_rate(psta, network_type);
   413			psta->wireless_mode = network_type;
   414	
   415			rtw_hal_update_sta_rate_mask(padapter, psta);
   416			tx_ra_bitmap = psta->ra_mask;
   417	
   418			psta->raid = networktype_to_raid_ex(padapter, psta);
   419	
   420			/* ap mode */
   421			rtw_hal_set_odm_var(padapter, HAL_ODM_STA_INFO, psta, true);
   422	
   423			/* if (pHalData->fw_ractrl == true) */
   424			{
   425				u8 arg[4] = {0};
   426	
   427				arg[0] = psta->mac_id;
   428				arg[1] = psta->raid;
   429				arg[2] = 0;
   430				arg[3] = psta->init_rate;
   431	
   432				rtw_hal_add_ra_tid(padapter, tx_ra_bitmap, arg, 0);
   433			}
   434	
   435			rtw_sta_media_status_rpt(padapter, psta, 1);
   436	
   437			spin_lock_bh(&psta->lock);
   438			psta->state = _FW_LINKED;
   439			spin_unlock_bh(&psta->lock);
   440		}
   441	}
   442	
   443	/* notes: */
   444	/* AID: 1~MAX for sta and 0 for bc/mc in ap/adhoc mode */
   445	/* MAC_ID = AID+1 for sta in ap/adhoc mode */
   446	/* MAC_ID = 1 for bc/mc for sta/ap/adhoc */
   447	/* MAC_ID = 0 for bssid for sta/ap/adhoc */
   448	/* CAM_ID = 0~3 for default key, cmd_id =macid + 3, macid =aid+1; */
   449	
   450	void update_sta_info_apmode(struct adapter *padapter, struct sta_info *psta)
   451	{
   452		struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
   453		struct security_priv *psecuritypriv = &padapter->securitypriv;
   454		struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
   455		struct ht_priv *phtpriv_ap = &pmlmepriv->htpriv;
   456		struct ht_priv *phtpriv_sta = &psta->htpriv;
   457		u8 cur_ldpc_cap = 0, cur_stbc_cap = 0, cur_beamform_cap = 0;
   458		/* set intf_tag to if1 */
   459		/* psta->intf_tag = 0; */
   460	
   461		/* psta->mac_id = psta->aid+4; */
   462		/* psta->mac_id = psta->aid+1;//alloc macid when call rtw_alloc_stainfo(), */
   463		/* release macid when call rtw_free_stainfo() */
   464	
   465		/* ap mode */
   466		rtw_hal_set_odm_var(padapter, HAL_ODM_STA_INFO, psta, true);
   467	
 > 468		if (psecuritypriv->dot11_auth_algrthm == dot11_auth_algrthm_8021X)
   469			psta->ieee8021x_blocked = true;
   470		else
   471			psta->ieee8021x_blocked = false;
   472	
   473		/* update sta's cap */
   474	
   475		/* ERP */
   476		VCS_update(padapter, psta);
   477	
   478		/* HT related cap */
   479		if (phtpriv_sta->ht_option) {
   480			/* check if sta supports rx ampdu */
   481			phtpriv_sta->ampdu_enable = phtpriv_ap->ampdu_enable;
   482	
   483			phtpriv_sta->rx_ampdu_min_spacing =
   484			(phtpriv_sta->ht_cap.ampdu_params_info & IEEE80211_HT_CAP_AMPDU_DENSITY
   485			) >> 2;
   486	
   487			/*  bwmode */
   488			if ((phtpriv_sta->ht_cap.cap_info & phtpriv_ap->ht_cap.cap_info
   489			) & cpu_to_le16(IEEE80211_HT_CAP_SUP_WIDTH))
   490				psta->bw_mode = CHANNEL_WIDTH_40;
   491			else
   492				psta->bw_mode = CHANNEL_WIDTH_20;
   493	
   494			if (pmlmeext->cur_bwmode < psta->bw_mode)
   495				psta->bw_mode = pmlmeext->cur_bwmode;
   496	
   497			phtpriv_sta->ch_offset = pmlmeext->cur_ch_offset;
   498	
   499			/* check if sta support s Short GI 20M */
   500			if ((phtpriv_sta->ht_cap.cap_info & phtpriv_ap->ht_cap.cap_info
   501			) & cpu_to_le16(IEEE80211_HT_CAP_SGI_20))
   502				phtpriv_sta->sgi_20m = true;
   503	
   504			/* check if sta support s Short GI 40M */
   505			if ((phtpriv_sta->ht_cap.cap_info & phtpriv_ap->ht_cap.cap_info
   506			) & cpu_to_le16(IEEE80211_HT_CAP_SGI_40)) {
   507				if (psta->bw_mode == CHANNEL_WIDTH_40) /* according to psta->bw_mode */
   508					phtpriv_sta->sgi_40m = true;
   509				else
   510					phtpriv_sta->sgi_40m = false;
   511			}
   512	
   513			psta->qos_option = true;
   514	
   515			/*  B0 Config LDPC Coding Capability */
   516			if (TEST_FLAG(phtpriv_ap->ldpc_cap, LDPC_HT_ENABLE_TX) &&
   517			    GET_HT_CAPABILITY_ELE_LDPC_CAP((u8 *)(&phtpriv_sta->ht_cap)))
   518				SET_FLAG(cur_ldpc_cap, (LDPC_HT_ENABLE_TX | LDPC_HT_CAP_TX));
   519	
   520			/*  B7 B8 B9 Config STBC setting */
   521			if (TEST_FLAG(phtpriv_ap->stbc_cap, STBC_HT_ENABLE_TX) &&
   522			    GET_HT_CAPABILITY_ELE_RX_STBC((u8 *)(&phtpriv_sta->ht_cap)))
   523				SET_FLAG(cur_stbc_cap, (STBC_HT_ENABLE_TX | STBC_HT_CAP_TX));
   524		} else {
   525			phtpriv_sta->ampdu_enable = false;
   526	
   527			phtpriv_sta->sgi_20m = false;
   528			phtpriv_sta->sgi_40m = false;
   529			psta->bw_mode = CHANNEL_WIDTH_20;
   530			phtpriv_sta->ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
   531		}
   532	
   533		phtpriv_sta->ldpc_cap = cur_ldpc_cap;
   534		phtpriv_sta->stbc_cap = cur_stbc_cap;
   535		phtpriv_sta->beamform_cap = cur_beamform_cap;
   536	
   537		/* Rx AMPDU */
   538		send_delba(padapter, 0, psta->hwaddr);/*  recipient */
   539	
   540		/* TX AMPDU */
   541		send_delba(padapter, 1, psta->hwaddr);/* originator */
   542		phtpriv_sta->agg_enable_bitmap = 0x0;/* reset */
   543		phtpriv_sta->candidate_tid_bitmap = 0x0;/* reset */
   544	
   545		update_ldpc_stbc_cap(psta);
   546	
   547		/* todo: init other variables */
   548	
   549		memset((void *)&psta->sta_stats, 0, sizeof(struct stainfo_stats));
   550	
   551		/* add ratid */
   552		/* add_RATid(padapter, psta);//move to ap_sta_info_defer_update() */
   553	
   554		spin_lock_bh(&psta->lock);
   555		psta->state |= _FW_LINKED;
   556		spin_unlock_bh(&psta->lock);
   557	}
   558	

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ