staging: rtl8723bs: use nl80211_iftype instead of custom NDIS enum
PATCH v3 1/1 staging: rtl8723bs: use nl80211_iftype instead of custom NDIS enum
The driver defined its own enum ndis_802_11_network_infrastructure to represent the operating mode (STA/AP/IBSS) and translated nl80211 iftypes into it in cfg80211_rtw_change_iface(). The kernel already provides enum nl80211_iftype for this purpose, so use it directly and drop the redundant translation layer.
Map the removed values as follows:
Ndis802_11IBSS -> NL80211_IFTYPE_ADHOC
Ndis802_11Infrastructure -> NL80211_IFTYPE_STATION
Ndis802_11APMode -> NL80211_IFTYPE_AP
Ndis802_11AutoUnknown -> NL80211_IFTYPE_UNSPECIFIED
Compile-tested only.
---
Changes in v3:
- Rebased against staging-testing (no functional changes).
Changes in v2:
- Replace the custom enum ndis_802_11_network_infrastructure with the standard enum nl80211_iftype and drop the translation layer, instead of just renaming the enum values to uppercase (Greg Kroah-Hartman).
v1: https://lore.kernel.org/linux-staging/[email protected]/
drivers/staging/rtl8723bs/core/rtw_ap.c | 4 ++-- drivers/staging/rtl8723bs/core/rtw_cmd.c | 12 ++++------ .../staging/rtl8723bs/core/rtw_ioctl_set.c | 21 ++++++++--------- drivers/staging/rtl8723bs/core/rtw_mlme.c | 8 +++---- drivers/staging/rtl8723bs/core/rtw_mlme_ext.c | 14 +++++------ drivers/staging/rtl8723bs/hal/hal_intf.c | 8 +++---- drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c | 6 ++--- drivers/staging/rtl8723bs/include/rtw_cmd.h | 2 +- .../staging/rtl8723bs/include/rtw_ioctl_set.h | 2 +- .../staging/rtl8723bs/include/wlan_bssdef.h | 14 +---------- .../staging/rtl8723bs/os_dep/ioctl_cfg80211.c | 23 ++++++------------- drivers/staging/rtl8723bs/os_dep/os_intfs.c | 2 +- 12 files changed, 46 insertions(+), 70 deletions(-)
drivers/staging/rtl8723bs/core/rtw_ap.c +2 -2
@@ -782,7 +782,7 @@ int rtw_check_beacon_data(struct adapter *padapter, u8 *pbuf, int len)memcpy (ie, pbuf, pbss_network->ie_length); -if (pbss_network->infrastructure_mode != Ndis802_11APMode) +if (pbss_network->infrastructure_mode !=NL80211_IFTYPE_AP )return _FAIL; pbss_network->rssi =0 ;
@@ -1889,7 +1889,7 @@ void rtw_ap_restore_network(struct adapter *padapter)char chk_alive_list[NUM_STA ];int i; -rtw_setopmode_cmd (padapter, Ndis802_11APMode, false); +rtw_setopmode_cmd (padapter,NL80211_IFTYPE_AP , false); set_channel_bwmode(padapter, pmlmeext->cur_channel,
drivers/staging/rtl8723bs/core/rtw_cmd.c +5 -7
@@ -682,7 +682,7 @@ u8 rtw_joinbss_cmd(struct adapter *padapter, struct wlan_network *pnetwork)struct security_priv *psecuritypriv = &padapter->securitypriv;struct registry_priv *pregistrypriv = &padapter->registrypriv;struct ht_priv *phtpriv = &pmlmepriv->htpriv; -enum ndis_802_11_network_infrastructure ndis_network_mode = pnetwork->network.infrastructure_mode; +enum nl80211_iftype ndis_network_mode = pnetwork->network.infrastructure_mode;struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;u32 tmp_len;
@@ -699,17 +699,15 @@ u8 rtw_joinbss_cmd(struct adapter *padapter, struct wlan_network *pnetwork)/* for hidden ap to set fw_state here */ if (!check_fwstate (pmlmepriv,WIFI_STATION_STATE |WIFI_ADHOC_STATE )) {switch (ndis_network_mode) { -case Ndis802_11IBSS: +case NL80211_IFTYPE_ADHOC :set_fwstate (pmlmepriv,WIFI_ADHOC_STATE );break ; -case Ndis802_11Infrastructure: +case NL80211_IFTYPE_STATION :set_fwstate (pmlmepriv,WIFI_STATION_STATE );break ; -case Ndis802_11APMode: -case Ndis802_11AutoUnknown: -case Ndis802_11InfrastructureMax: +default :break ; } }
@@ -832,7 +830,7 @@ u8 rtw_disassoc_cmd(struct adapter *padapter, u32 deauth_timeout_ms, bool enqueureturn res; } -u8 rtw_setopmode_cmd (struct adapter *padapter,enum ndis_802_11_network_infrastructure networktype,bool enqueue) +u8 rtw_setopmode_cmd (struct adapter *padapter,enum nl80211_iftype networktype,bool enqueue) {struct cmd_obj *ph2c;struct setopmode_parm *psetop;
drivers/staging/rtl8723bs/core/rtw_ioctl_set.c +10 -11
@@ -278,15 +278,15 @@ u8 rtw_set_802_11_connect(struct adapter *padapter, u8 *bssid, struct ndis_802_1 }u8 rtw_set_802_11_infrastructure_mode (struct adapter *padapter, -enum ndis_802_11_network_infrastructure networktype) +enum nl80211_iftype networktype) {struct mlme_priv *pmlmepriv = &padapter->mlmepriv;struct wlan_network *cur_network = &pmlmepriv->cur_network; -enum ndis_802_11_network_infrastructure *pold_state = &(cur_network->network.infrastructure_mode); +enum nl80211_iftype *pold_state = &(cur_network->network.infrastructure_mode);if (*pold_state != networktype) { -if (*pold_state == Ndis802_11APMode) { -/* change to other mode from Ndis802_11APMode */ +if (*pold_state ==NL80211_IFTYPE_AP ) { +/* change to other mode from AP mode */ cur_network->join_res =-1 ;stop_ap_mode (padapter);
@@ -294,14 +294,14 @@ u8 rtw_set_802_11_infrastructure_mode(struct adapter *padapter,spin_lock_bh (&pmlmepriv->lock); -if (check_fwstate (pmlmepriv, _FW_LINKED) || (*pold_state == Ndis802_11IBSS)) +if (check_fwstate (pmlmepriv, _FW_LINKED) || (*pold_state ==NL80211_IFTYPE_ADHOC ))rtw_disassoc_cmd (padapter,0 , true);if (check_fwstate (pmlmepriv, _FW_LINKED) ||check_fwstate (pmlmepriv,WIFI_ADHOC_MASTER_STATE ))rtw_free_assoc_resources (padapter,1 ); -if ((*pold_state == Ndis802_11Infrastructure) || (*pold_state == Ndis802_11IBSS)) { +if ((*pold_state ==NL80211_IFTYPE_STATION ) || (*pold_state ==NL80211_IFTYPE_ADHOC )) {if (check_fwstate (pmlmepriv, _FW_LINKED))rtw_indicate_disconnect (padapter);/* will clr Linked_state; before this function, we must have checked whether issue dis-assoc_cmd or not */ }
@@ -311,23 +311,22 @@ u8 rtw_set_802_11_infrastructure_mode(struct adapter *padapter,_clr_fwstate_ (pmlmepriv, ~WIFI_NULL_STATE );switch (networktype) { -case Ndis802_11IBSS: +case NL80211_IFTYPE_ADHOC :set_fwstate (pmlmepriv,WIFI_ADHOC_STATE );break ; -case Ndis802_11Infrastructure: +case NL80211_IFTYPE_STATION :set_fwstate (pmlmepriv,WIFI_STATION_STATE );break ; -case Ndis802_11APMode: +case NL80211_IFTYPE_AP :set_fwstate (pmlmepriv,WIFI_AP_STATE );start_ap_mode (padapter);/* rtw_indicate_connect(padapter); */ break ; -case Ndis802_11AutoUnknown: -case Ndis802_11InfrastructureMax: +default :break ; }
drivers/staging/rtl8723bs/core/rtw_mlme.c +4 -4
@@ -51,7 +51,7 @@ int rtw_init_mlme_priv(struct adapter *padapter) pmlmepriv->pscanned =NULL ; pmlmepriv->fw_state =WIFI_STATION_STATE ;/* Must sync with rtw_wdev_alloc() */ - pmlmepriv->cur_network.network.infrastructure_mode = Ndis802_11AutoUnknown; + pmlmepriv->cur_network.network.infrastructure_mode =NL80211_IFTYPE_UNSPECIFIED ; pmlmepriv->scan_mode =SCAN_ACTIVE ;/* 1: active, 0: passive. Maybe someday we should rename this variable to "active_mode" (Jeff) */ spin_lock_init (&pmlmepriv->lock);
@@ -1051,7 +1051,7 @@ static void rtw_joinbss_update_network(struct adapter *padapter, struct wlan_net/* update fw_state will clr _FW_UNDER_LINKING here indirectly */ switch (pnetwork->network.infrastructure_mode) { -case Ndis802_11Infrastructure: +case NL80211_IFTYPE_STATION :if (pmlmepriv->fw_state &WIFI_UNDER_WPS ) pmlmepriv->fw_state =WIFI_STATION_STATE |WIFI_UNDER_WPS ;
@@ -1059,7 +1059,7 @@ static void rtw_joinbss_update_network(struct adapter *padapter, struct wlan_net pmlmepriv->fw_state =WIFI_STATION_STATE ;break ; -case Ndis802_11IBSS: +case NL80211_IFTYPE_ADHOC : pmlmepriv->fw_state =WIFI_ADHOC_STATE ;break ;default :
@@ -2145,7 +2145,7 @@ void rtw_update_registrypriv_dev_network(struct adapter *adapter) pdev_network->configuration.ds_config = (pregistrypriv->channel); -if (cur_network->network.infrastructure_mode == Ndis802_11IBSS) +if (cur_network->network.infrastructure_mode ==NL80211_IFTYPE_ADHOC ) pdev_network->configuration.atim_window = (0 ); pdev_network->infrastructure_mode = (cur_network->network.infrastructure_mode);
drivers/staging/rtl8723bs/core/rtw_mlme_ext.c +7 -7
@@ -3901,10 +3901,10 @@ u8 collect_bss_info(struct adapter *padapter, union recv_frame *precv_frame, str val16 =rtw_get_capability ((struct wlan_bssid_ex *)bssid);if (val16 &BIT (0 )) { - bssid->infrastructure_mode = Ndis802_11Infrastructure; + bssid->infrastructure_mode =NL80211_IFTYPE_STATION ;memcpy (bssid->mac_address,GetAddr2Ptr (pframe),ETH_ALEN ); }else { - bssid->infrastructure_mode = Ndis802_11IBSS; + bssid->infrastructure_mode =NL80211_IFTYPE_ADHOC ;memcpy (bssid->mac_address,GetAddr3Ptr (pframe),ETH_ALEN ); }
@@ -5039,15 +5039,15 @@ u8 setopmode_hdl(struct adapter *padapter, u8 *pbuf)struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;struct setopmode_parm *psetop = (struct setopmode_parm *)pbuf; -if (psetop->mode == Ndis802_11APMode) { +if (psetop->mode ==NL80211_IFTYPE_AP ) { pmlmeinfo->state =WIFI_FW_AP_STATE ; type = _HW_STATE_AP_;/* start_ap_mode(padapter); */ - }else if (psetop->mode == Ndis802_11Infrastructure) { + }else if (psetop->mode ==NL80211_IFTYPE_STATION ) { pmlmeinfo->state &= ~(BIT (0 ) |BIT (1 ));/* clear state */ pmlmeinfo->state |=WIFI_FW_STATION_STATE ;/* set to STATION_STATE */ type = _HW_STATE_STATION_; - }else if (psetop->mode == Ndis802_11IBSS) { + }else if (psetop->mode ==NL80211_IFTYPE_ADHOC ) { type = _HW_STATE_ADHOC_; }else { type = _HW_STATE_NOLINK_;
@@ -5056,7 +5056,7 @@ u8 setopmode_hdl(struct adapter *padapter, u8 *pbuf)rtw_hal_set_hwreg (padapter,HW_VAR_SET_OPMODE , (u8 *)(&type));/* set_msr(padapter, type); */ -if (psetop->mode == Ndis802_11APMode) { +if (psetop->mode ==NL80211_IFTYPE_AP ) {/* Do this after port switch to */ /* prevent from downloading rsvd page to wrong port */ rtw_btcoex_media_status_notify (padapter,1 );/* connect */
@@ -5079,7 +5079,7 @@ u8 createbss_hdl(struct adapter *padapter, u8 *pbuf) }/* below is for ad-hoc master */ -if (pparm->network.infrastructure_mode == Ndis802_11IBSS) { +if (pparm->network.infrastructure_mode ==NL80211_IFTYPE_ADHOC ) {rtw_joinbss_reset (padapter); pmlmeext->cur_bwmode =CHANNEL_WIDTH_20 ;
drivers/staging/rtl8723bs/hal/hal_intf.c +4 -4
@@ -9,18 +9,18 @@static void rtw_hal_init_opmode (struct adapter *padapter) { -enum ndis_802_11_network_infrastructure networkType = Ndis802_11InfrastructureMax; +enum nl80211_iftype networkType =NL80211_IFTYPE_UNSPECIFIED ;struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);signed int fw_state; fw_state =get_fwstate (pmlmepriv);if (fw_state &WIFI_ADHOC_STATE ) - networkType = Ndis802_11IBSS; + networkType =NL80211_IFTYPE_ADHOC ;else if (fw_state &WIFI_STATION_STATE ) - networkType = Ndis802_11Infrastructure; + networkType =NL80211_IFTYPE_STATION ;else if (fw_state &WIFI_AP_STATE ) - networkType = Ndis802_11APMode; + networkType =NL80211_IFTYPE_AP ;else return ;
drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c +3 -3
@@ -237,19 +237,19 @@ static void ConstructNullFunctionData(SetPwrMgt (fctrl);switch (cur_network->network.infrastructure_mode) { -case Ndis802_11Infrastructure: +case NL80211_IFTYPE_STATION :SetToDs (fctrl);ether_addr_copy (pwlanhdr->addr1,get_my_bssid (&(pmlmeinfo->network)));ether_addr_copy (pwlanhdr->addr2,myid (&(padapter->eeprompriv)));ether_addr_copy (pwlanhdr->addr3, StaAddr);break ; -case Ndis802_11APMode: +case NL80211_IFTYPE_AP :SetFrDs (fctrl);ether_addr_copy (pwlanhdr->addr1, StaAddr);ether_addr_copy (pwlanhdr->addr2,get_my_bssid (&(pmlmeinfo->network)));ether_addr_copy (pwlanhdr->addr3,myid (&(padapter->eeprompriv)));break ; -case Ndis802_11IBSS: +case NL80211_IFTYPE_ADHOC :default :ether_addr_copy (pwlanhdr->addr1, StaAddr);ether_addr_copy (pwlanhdr->addr2,myid (&(padapter->eeprompriv)));
drivers/staging/rtl8723bs/include/rtw_cmd.h +1 -1
@@ -586,7 +586,7 @@ extern u8 rtw_clearstakey_cmd(struct adapter *padapter, struct sta_info *sta, u8extern u8 rtw_joinbss_cmd (struct adapter *padapter,struct wlan_network *pnetwork);u8 rtw_disassoc_cmd (struct adapter *padapter,u32 deauth_timeout_ms,bool enqueue); -extern u8 rtw_setopmode_cmd (struct adapter *padapter,enum ndis_802_11_network_infrastructure networktype,bool enqueue); +extern u8 rtw_setopmode_cmd (struct adapter *padapter,enum nl80211_iftype networktype,bool enqueue);extern u8 rtw_setrfintfs_cmd (struct adapter *padapter,u8 mode);extern u8 rtw_gettssi_cmd (struct adapter *padapter,u8 offset,u8 *pval);
drivers/staging/rtl8723bs/include/rtw_ioctl_set.h +1 -1
@@ -13,7 +13,7 @@ u8 rtw_set_802_11_authentication_mode(struct adapter *pdapter, enum ndis_802_11_u8 rtw_set_802_11_add_wep (struct adapter *padapter,struct ndis_802_11_wep *wep);u8 rtw_set_802_11_disassociate (struct adapter *padapter);u8 rtw_set_802_11_bssid_list_scan (struct adapter *padapter,struct ndis_802_11_ssid *pssid,int ssid_max_num); -u8 rtw_set_802_11_infrastructure_mode (struct adapter *padapter,enum ndis_802_11_network_infrastructure networktype); +u8 rtw_set_802_11_infrastructure_mode (struct adapter *padapter,enum nl80211_iftype networktype);u8 rtw_set_802_11_ssid (struct adapter *padapter,struct ndis_802_11_ssid *ssid);u8 rtw_set_802_11_connect (struct adapter *padapter,u8 *bssid,struct ndis_802_11_ssid *ssid);
drivers/staging/rtl8723bs/include/wlan_bssdef.h +1 -13
@@ -42,14 +42,6 @@ struct ndis_802_11_conf {u32 ds_config;/* Frequency, units are kHz */ }; -enum ndis_802_11_network_infrastructure { - Ndis802_11IBSS, - Ndis802_11Infrastructure, - Ndis802_11AutoUnknown, - Ndis802_11InfrastructureMax,/* Not a real value, defined as upper bound */ - Ndis802_11APMode, -}; -struct ndis_802_11_fix_ie {u8 time_stamp[8 ];u16 beacon_interval;
@@ -125,10 +117,6 @@ struct ndis_802_11_wep {/* MIC check time, 60 seconds. */ #define MIC_CHECK_TIME 60000000 -#ifndef Ndis802_11APMode -#define Ndis802_11APMode (Ndis802_11InfrastructureMax + 1) -#endif -struct wlan_phy_info {u8 signal_strength;/* in percentage) */ u8 signal_quality;/* in percentage) */
@@ -161,7 +149,7 @@ struct wlan_bssid_ex {long rssi;/* in dBM, raw data , get from PHY) */ enum ndis_802_11_network_type network_type_in_use;struct ndis_802_11_conf configuration; -enum ndis_802_11_network_infrastructure infrastructure_mode; +enum nl80211_iftype infrastructure_mode;NDIS_802_11_RATES_EX supported_rates;struct wlan_phy_info phy_info;u32 ie_length;
drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c +7 -16
@@ -1027,7 +1027,6 @@ static int cfg80211_rtw_change_iface(struct wiphy *wiphy, struct vif_params *params) {enum nl80211_iftype old_type; -enum ndis_802_11_network_infrastructure networkType;struct adapter *padapter =rtw_netdev_priv (ndev);struct wireless_dev *rtw_wdev = padapter->rtw_wdev;struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
@@ -1057,30 +1056,22 @@ static int cfg80211_rtw_change_iface(struct wiphy *wiphy, pmlmeext->action_public_dialog_token =0xff ; } -switch (type) { -case NL80211_IFTYPE_ADHOC : - networkType = Ndis802_11IBSS; -break ; -case NL80211_IFTYPE_STATION : - networkType = Ndis802_11Infrastructure; -break ; -case NL80211_IFTYPE_AP : - networkType = Ndis802_11APMode; -break ; -default : +if (type !=NL80211_IFTYPE_ADHOC && + type !=NL80211_IFTYPE_STATION && + type !=NL80211_IFTYPE_AP ) { ret = -EOPNOTSUPP ; goto exit; } rtw_wdev->iftype = type; -if (!rtw_set_802_11_infrastructure_mode (padapter, networkType)) { +if (!rtw_set_802_11_infrastructure_mode (padapter, type)) { rtw_wdev->iftype = old_type; ret = -EPERM ; goto exit; } -rtw_setopmode_cmd (padapter, networkType, true); +rtw_setopmode_cmd (padapter, type, true); exit:
@@ -1611,12 +1602,12 @@ static int cfg80211_rtw_leave_ibss(struct wiphy *wiphy, struct net_device *ndev) rtw_wdev->iftype =NL80211_IFTYPE_STATION ; -if (!rtw_set_802_11_infrastructure_mode (padapter, Ndis802_11Infrastructure)) { +if (!rtw_set_802_11_infrastructure_mode (padapter,NL80211_IFTYPE_STATION )) { rtw_wdev->iftype = old_type; ret = -EPERM ; goto leave_ibss; } -rtw_setopmode_cmd (padapter, Ndis802_11Infrastructure, true); +rtw_setopmode_cmd (padapter,NL80211_IFTYPE_STATION , true); } leave_ibss:
drivers/staging/rtl8723bs/os_dep/os_intfs.c +1 -1
@@ -19,7 +19,7 @@ static int rtw_rfintfs = HWPI;static int rtw_lbkmode;/* RTL8712_AIR_TRX; */ -static int rtw_network_mode = Ndis802_11IBSS;/* Ndis802_11Infrastructure;infra, ad-hoc, auto */ +static int rtw_network_mode =NL80211_IFTYPE_ADHOC ;/* infra, ad-hoc, auto */ /* struct ndis_802_11_ssid ssid; */ static int rtw_channel =1 ;/* ad-hoc support requirement */ static int rtw_wireless_mode =WIRELESS_11BG_24N ;
Signature · 1 line
2.25.1