[PATCH v1 5/5] staging: rtl8723bs: fix LONG_LINE warnings across C files
From: Luka Gejak
Date: Mon Feb 02 2026 - 02:15:18 EST
Refactor lines exceeding 100 characters to comply with kernel coding
style. All changes preserve original logic and behavior.
Techniques used:
- Move trailing comments to separate lines above code
- Break long function signatures across multiple lines
- Extract complex expressions into named temp variables
- Use scoped blocks for local variable declarations
- Create pointer aliases for deeply nested struct accesses
- Simplify compound conditionals with intermediate booleans
Files modified:
- core/: rtw_cmd.c, rtw_ieee80211.c, rtw_io.c, rtw_ioctl_set.c,
rtw_mlme.c, rtw_mlme_ext.c, rtw_pwrctrl.c, rtw_recv.c,
rtw_security.c, rtw_wlan_util.c, rtw_xmit.c
- hal/: HalBtc8723b1Ant.c, HalBtc8723b2Ant.c, HalPhyRf.c,
HalPhyRf_8723B.c, hal_com.c, hal_com_phycfg.c, hal_intf.c,
hal_sdio.c, odm.c, odm_DIG.c, odm_HWConfig.c, rtl8723b_cmd.c,
rtl8723b_hal_init.c, rtl8723b_phycfg.c, rtl8723b_rf6052.c,
rtl8723bs_recv.c, rtl8723bs_xmit.c, sdio_halinit.c
- os_dep/: ioctl_cfg80211.c, os_intfs.c, sdio_intf.c, xmit_linux.c
Signed-off-by: Luka Gejak <lukagejak5@xxxxxxxxx>
---
drivers/staging/rtl8723bs/core/rtw_cmd.c | 142 ++---
.../staging/rtl8723bs/core/rtw_ieee80211.c | 36 +-
drivers/staging/rtl8723bs/core/rtw_io.c | 4 +-
.../staging/rtl8723bs/core/rtw_ioctl_set.c | 16 +-
drivers/staging/rtl8723bs/core/rtw_mlme.c | 103 ++--
drivers/staging/rtl8723bs/core/rtw_mlme_ext.c | 492 ++++++++++++------
drivers/staging/rtl8723bs/core/rtw_pwrctrl.c | 3 +-
drivers/staging/rtl8723bs/core/rtw_recv.c | 123 +++--
drivers/staging/rtl8723bs/core/rtw_security.c | 11 +-
.../staging/rtl8723bs/core/rtw_wlan_util.c | 215 +++++---
drivers/staging/rtl8723bs/core/rtw_xmit.c | 62 ++-
.../staging/rtl8723bs/hal/HalBtc8723b1Ant.c | 35 +-
.../staging/rtl8723bs/hal/HalBtc8723b2Ant.c | 29 +-
drivers/staging/rtl8723bs/hal/HalPhyRf.c | 36 +-
.../staging/rtl8723bs/hal/HalPhyRf_8723B.c | 166 ++++--
drivers/staging/rtl8723bs/hal/hal_com.c | 10 +-
.../staging/rtl8723bs/hal/hal_com_phycfg.c | 22 +-
drivers/staging/rtl8723bs/hal/hal_intf.c | 4 +-
drivers/staging/rtl8723bs/hal/hal_sdio.c | 4 +-
drivers/staging/rtl8723bs/hal/odm.c | 18 +-
drivers/staging/rtl8723bs/hal/odm_DIG.c | 38 +-
drivers/staging/rtl8723bs/hal/odm_HWConfig.c | 17 +-
drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c | 103 +++-
.../staging/rtl8723bs/hal/rtl8723b_hal_init.c | 64 ++-
.../staging/rtl8723bs/hal/rtl8723b_phycfg.c | 54 +-
.../staging/rtl8723bs/hal/rtl8723b_rf6052.c | 6 +-
.../staging/rtl8723bs/hal/rtl8723bs_recv.c | 6 +-
.../staging/rtl8723bs/hal/rtl8723bs_xmit.c | 5 +-
drivers/staging/rtl8723bs/hal/sdio_halinit.c | 17 +-
.../staging/rtl8723bs/os_dep/ioctl_cfg80211.c | 134 +++--
drivers/staging/rtl8723bs/os_dep/os_intfs.c | 17 +-
drivers/staging/rtl8723bs/os_dep/sdio_intf.c | 3 +-
drivers/staging/rtl8723bs/os_dep/xmit_linux.c | 8 +-
33 files changed, 1364 insertions(+), 639 deletions(-)
diff --git a/drivers/staging/rtl8723bs/core/rtw_cmd.c b/drivers/staging/rtl8723bs/core/rtw_cmd.c
index 27eddd22e064..1a417beb426c 100644
--- a/drivers/staging/rtl8723bs/core/rtw_cmd.c
+++ b/drivers/staging/rtl8723bs/core/rtw_cmd.c
@@ -171,20 +171,18 @@ int rtw_init_cmd_priv(struct cmd_priv *pcmdpriv)
pcmdpriv->cmd_seq = 1;
pcmdpriv->cmd_allocated_buf = rtw_zmalloc(MAX_CMDSZ + CMDBUFF_ALIGN_SZ);
-
if (!pcmdpriv->cmd_allocated_buf)
return -ENOMEM;
- pcmdpriv->cmd_buf = pcmdpriv->cmd_allocated_buf + CMDBUFF_ALIGN_SZ - ((SIZE_PTR)(pcmdpriv->cmd_allocated_buf) & (CMDBUFF_ALIGN_SZ-1));
+ pcmdpriv->cmd_buf = PTR_ALIGN(pcmdpriv->cmd_allocated_buf, CMDBUFF_ALIGN_SZ);
pcmdpriv->rsp_allocated_buf = rtw_zmalloc(MAX_RSPSZ + 4);
-
if (!pcmdpriv->rsp_allocated_buf) {
kfree(pcmdpriv->cmd_allocated_buf);
return -ENOMEM;
}
- pcmdpriv->rsp_buf = pcmdpriv->rsp_allocated_buf + 4 - ((SIZE_PTR)(pcmdpriv->rsp_allocated_buf) & 3);
+ pcmdpriv->rsp_buf = PTR_ALIGN(pcmdpriv->rsp_allocated_buf, 4);
pcmdpriv->cmd_issued_cnt = 0;
pcmdpriv->cmd_done_cnt = 0;
@@ -393,7 +391,7 @@ int rtw_cmd_thread(void *context)
while (1) {
if (wait_for_completion_interruptible(&pcmdpriv->cmd_queue_comp)) {
netdev_dbg(padapter->pnetdev,
- FUNC_ADPT_FMT " wait_for_completion_interruptible(&pcmdpriv->cmd_queue_comp) return != 0, break\n",
+ FUNC_ADPT_FMT " cmd_queue_comp interrupted\n",
FUNC_ADPT_ARG(padapter));
break;
}
@@ -727,31 +725,33 @@ u8 rtw_joinbss_cmd(struct adapter *padapter, struct wlan_network *pnetwork)
memcpy(&psecuritypriv->authenticator_ie[1], &psecnetwork->ies[12], (256-1));
psecnetwork->ie_length = 0;
- /* Added by Albert 2009/02/18 */
- /* If the driver wants to use the bssid to create the connection. */
- /* If not, we have to copy the connecting AP's MAC address to it so that */
- /* the driver just has the bssid information for PMKIDList searching. */
+ /* If not using bssid, copy connecting AP's MAC for PMKIDList searching. */
if (!pmlmepriv->assoc_by_bssid)
- memcpy(&pmlmepriv->assoc_bssid[0], &pnetwork->network.mac_address[0], ETH_ALEN);
-
- psecnetwork->ie_length = rtw_restruct_sec_ie(padapter, &pnetwork->network.ies[0], &psecnetwork->ies[0], pnetwork->network.ie_length);
+ memcpy(pmlmepriv->assoc_bssid, pnetwork->network.mac_address, ETH_ALEN);
- pqospriv->qos_option = 0;
-
- if (pregistrypriv->wmm_enable) {
- tmp_len = rtw_restruct_wmm_ie(padapter, &pnetwork->network.ies[0], &psecnetwork->ies[0], pnetwork->network.ie_length, psecnetwork->ie_length);
-
- if (psecnetwork->ie_length != tmp_len) {
- psecnetwork->ie_length = tmp_len;
- pqospriv->qos_option = 1; /* There is WMM IE in this corresp. beacon */
- } else {
- pqospriv->qos_option = 0;/* There is no WMM IE in this corresp. beacon */
+ {
+ u8 *src_ie = pnetwork->network.ies;
+ u8 *dst_ie = psecnetwork->ies;
+ int src_len = pnetwork->network.ie_length;
+
+ psecnetwork->ie_length = rtw_restruct_sec_ie(padapter, src_ie,
+ dst_ie, src_len);
+
+ pqospriv->qos_option = 0;
+ if (pregistrypriv->wmm_enable) {
+ tmp_len = rtw_restruct_wmm_ie(padapter, src_ie, dst_ie,
+ src_len, psecnetwork->ie_length);
+ if (psecnetwork->ie_length != tmp_len) {
+ psecnetwork->ie_length = tmp_len;
+ pqospriv->qos_option = 1;
+ }
}
- }
- phtpriv->ht_option = false;
- ptmp = rtw_get_ie(&pnetwork->network.ies[12], WLAN_EID_HT_CAPABILITY, &tmp_len, pnetwork->network.ie_length-12);
+ phtpriv->ht_option = false;
+ ptmp = rtw_get_ie(&src_ie[12], WLAN_EID_HT_CAPABILITY,
+ &tmp_len, src_len - 12);
+ }
if (pregistrypriv->ht_enable && ptmp && tmp_len > 0) {
/* Added by Albert 2010/06/23 */
/* For the WEP mode, we will use the bg mode to do the connection to avoid some IOT issue. */
@@ -788,7 +788,8 @@ u8 rtw_joinbss_cmd(struct adapter *padapter, struct wlan_network *pnetwork)
return res;
}
-u8 rtw_disassoc_cmd(struct adapter *padapter, u32 deauth_timeout_ms, bool enqueue) /* for sta_mode */
+/* for sta_mode */
+u8 rtw_disassoc_cmd(struct adapter *padapter, u32 deauth_timeout_ms, bool enqueue)
{
struct cmd_obj *cmdobj = NULL;
struct disconnect_parm *param = NULL;
@@ -824,10 +825,12 @@ u8 rtw_disassoc_cmd(struct adapter *padapter, u32 deauth_timeout_ms, bool enqueu
return 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 ndis_802_11_network_infrastructure networktype,
+ bool enqueue)
{
- struct cmd_obj *ph2c;
- struct setopmode_parm *psetop;
+ struct cmd_obj *ph2c;
+ struct setopmode_parm *psetop;
struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
u8 res = _SUCCESS;
@@ -881,10 +884,14 @@ u8 rtw_setstakey_cmd(struct adapter *padapter, struct sta_info *sta, u8 unicast_
else
GET_ENCRY_ALGO(psecuritypriv, sta, psetstakey_para->algorithm, false);
- if (unicast_key)
+ if (unicast_key) {
memcpy(&psetstakey_para->key, &sta->dot118021x_UncstKey, 16);
- else
- memcpy(&psetstakey_para->key, &psecuritypriv->dot118021XGrpKey[psecuritypriv->dot118021XGrpKeyid].skey, 16);
+ } else {
+ u8 keyid = psecuritypriv->dot118021XGrpKeyid;
+ u8 *grpkey = psecuritypriv->dot118021XGrpKey[keyid].skey;
+
+ memcpy(&psetstakey_para->key, grpkey, 16);
+ }
/* jeff: set this because at least sw key is ready */
padapter->securitypriv.busetkipkey = true;
@@ -1105,22 +1112,23 @@ u8 rtw_dynamic_chk_wk_cmd(struct adapter *padapter)
static void collect_traffic_statistics(struct adapter *padapter)
{
struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter);
+ struct rtw_traffic_statistics *stats = &pdvobjpriv->traffic_stat;
- /* Tx */
- pdvobjpriv->traffic_stat.tx_bytes = padapter->xmitpriv.tx_bytes;
- pdvobjpriv->traffic_stat.tx_pkts = padapter->xmitpriv.tx_pkts;
- pdvobjpriv->traffic_stat.tx_drop = padapter->xmitpriv.tx_drop;
+ /* Tx */
+ stats->tx_bytes = padapter->xmitpriv.tx_bytes;
+ stats->tx_pkts = padapter->xmitpriv.tx_pkts;
+ stats->tx_drop = padapter->xmitpriv.tx_drop;
- /* Rx */
- pdvobjpriv->traffic_stat.rx_bytes = padapter->recvpriv.rx_bytes;
- pdvobjpriv->traffic_stat.rx_pkts = padapter->recvpriv.rx_pkts;
- pdvobjpriv->traffic_stat.rx_drop = padapter->recvpriv.rx_drop;
+ /* Rx */
+ stats->rx_bytes = padapter->recvpriv.rx_bytes;
+ stats->rx_pkts = padapter->recvpriv.rx_pkts;
+ stats->rx_drop = padapter->recvpriv.rx_drop;
- /* Calculate throughput in last interval */
- pdvobjpriv->traffic_stat.cur_tx_bytes = pdvobjpriv->traffic_stat.tx_bytes - pdvobjpriv->traffic_stat.last_tx_bytes;
- pdvobjpriv->traffic_stat.cur_rx_bytes = pdvobjpriv->traffic_stat.rx_bytes - pdvobjpriv->traffic_stat.last_rx_bytes;
- pdvobjpriv->traffic_stat.last_tx_bytes = pdvobjpriv->traffic_stat.tx_bytes;
- pdvobjpriv->traffic_stat.last_rx_bytes = pdvobjpriv->traffic_stat.rx_bytes;
+ /* Calculate throughput in last interval */
+ stats->cur_tx_bytes = stats->tx_bytes - stats->last_tx_bytes;
+ stats->cur_rx_bytes = stats->rx_bytes - stats->last_rx_bytes;
+ stats->last_tx_bytes = stats->tx_bytes;
+ stats->last_rx_bytes = stats->rx_bytes;
pdvobjpriv->traffic_stat.cur_tx_tp = (u32)(pdvobjpriv->traffic_stat.cur_tx_bytes * 8/2/1024/1024);
pdvobjpriv->traffic_stat.cur_rx_tp = (u32)(pdvobjpriv->traffic_stat.cur_rx_bytes * 8/2/1024/1024);
@@ -1168,28 +1176,33 @@ u8 traffic_status_watchdog(struct adapter *padapter, u8 from_timer)
bHigherBusyTxTraffic = true;
}
- /* check traffic for powersaving. */
- if (((pmlmepriv->LinkDetectInfo.NumRxUnicastOkInPeriod + pmlmepriv->LinkDetectInfo.NumTxOkInPeriod) > 8) ||
- (pmlmepriv->LinkDetectInfo.NumRxUnicastOkInPeriod > 2)) {
- bEnterPS = false;
+ /* check traffic for powersaving */
+ {
+ struct rt_link_detect_t *ldi = &pmlmepriv->LinkDetectInfo;
+ u32 total_ok = ldi->NumRxUnicastOkInPeriod + ldi->NumTxOkInPeriod;
+ bool has_traffic = (total_ok > 8) || (ldi->NumRxUnicastOkInPeriod > 2);
- if (bBusyTraffic) {
- if (pmlmepriv->LinkDetectInfo.TrafficTransitionCount <= 4)
- pmlmepriv->LinkDetectInfo.TrafficTransitionCount = 4;
+ if (has_traffic) {
+ bEnterPS = false;
- pmlmepriv->LinkDetectInfo.TrafficTransitionCount++;
+ if (bBusyTraffic) {
+ if (ldi->TrafficTransitionCount <= 4)
+ ldi->TrafficTransitionCount = 4;
- if (pmlmepriv->LinkDetectInfo.TrafficTransitionCount > 30/*TrafficTransitionLevel*/)
- pmlmepriv->LinkDetectInfo.TrafficTransitionCount = 30;
- }
- } else {
- if (pmlmepriv->LinkDetectInfo.TrafficTransitionCount >= 2)
- pmlmepriv->LinkDetectInfo.TrafficTransitionCount -= 2;
- else
- pmlmepriv->LinkDetectInfo.TrafficTransitionCount = 0;
+ ldi->TrafficTransitionCount++;
- if (pmlmepriv->LinkDetectInfo.TrafficTransitionCount == 0)
- bEnterPS = true;
+ if (ldi->TrafficTransitionCount > 30)
+ ldi->TrafficTransitionCount = 30;
+ }
+ } else {
+ if (ldi->TrafficTransitionCount >= 2)
+ ldi->TrafficTransitionCount -= 2;
+ else
+ ldi->TrafficTransitionCount = 0;
+
+ if (ldi->TrafficTransitionCount == 0)
+ bEnterPS = true;
+ }
}
/* LeisurePS only work in infra mode. */
@@ -1739,7 +1752,8 @@ u8 rtw_drvextra_cmd_hdl(struct adapter *padapter, unsigned char *pbuf)
pdrvextra_cmd = (struct drvextra_cmd_parm *)pbuf;
switch (pdrvextra_cmd->ec_id) {
- case DYNAMIC_CHK_WK_CID:/* only primary padapter go to this cmd, but execute dynamic_chk_wk_hdl() for two interfaces */
+ /* only primary padapter goes to this cmd, but execute for two interfaces */
+ case DYNAMIC_CHK_WK_CID:
dynamic_chk_wk_hdl(padapter);
break;
case POWER_SAVING_CTRL_WK_CID:
diff --git a/drivers/staging/rtl8723bs/core/rtw_ieee80211.c b/drivers/staging/rtl8723bs/core/rtw_ieee80211.c
index 8fdeeda88a6d..b7eab83989ca 100644
--- a/drivers/staging/rtl8723bs/core/rtw_ieee80211.c
+++ b/drivers/staging/rtl8723bs/core/rtw_ieee80211.c
@@ -333,11 +333,17 @@ int rtw_generate_ie(struct registry_priv *pregistrypriv)
ie = rtw_set_ie(ie, WLAN_EID_DS_PARAMS, 1, (u8 *)&(pdev_network->configuration.ds_config), &sz);
/* IBSS Parameter Set */
+ {
+ u8 *atim = (u8 *)&pdev_network->configuration.atim_window;
- ie = rtw_set_ie(ie, WLAN_EID_IBSS_PARAMS, 2, (u8 *)&(pdev_network->configuration.atim_window), &sz);
+ ie = rtw_set_ie(ie, WLAN_EID_IBSS_PARAMS, 2, atim, &sz);
+ }
+
+ if (rateLen > 8) {
+ u8 *ext_rates = pdev_network->supported_rates + 8;
- if (rateLen > 8)
- ie = rtw_set_ie(ie, WLAN_EID_EXT_SUPP_RATES, (rateLen - 8), (pdev_network->supported_rates + 8), &sz);
+ ie = rtw_set_ie(ie, WLAN_EID_EXT_SUPP_RATES, rateLen - 8, ext_rates, &sz);
+ }
/* HT Cap. */
if ((pregistrypriv->wireless_mode & WIRELESS_11_24N) &&
@@ -437,7 +443,8 @@ int rtw_get_wpa2_cipher_suite(u8 *s)
return 0;
}
-int rtw_parse_wpa_ie(u8 *wpa_ie, int wpa_ie_len, int *group_cipher, int *pairwise_cipher, int *is_8021x)
+int rtw_parse_wpa_ie(u8 *wpa_ie, int wpa_ie_len, int *group_cipher,
+ int *pairwise_cipher, int *is_8021x)
{
int i, ret = _SUCCESS;
int left, count;
@@ -500,7 +507,8 @@ int rtw_parse_wpa_ie(u8 *wpa_ie, int wpa_ie_len, int *group_cipher, int *pairwis
return ret;
}
-int rtw_parse_wpa2_ie(u8 *rsn_ie, int rsn_ie_len, int *group_cipher, int *pairwise_cipher, int *is_8021x)
+int rtw_parse_wpa2_ie(u8 *rsn_ie, int rsn_ie_len, int *group_cipher,
+ int *pairwise_cipher, int *is_8021x)
{
int i, ret = _SUCCESS;
int left, count;
@@ -738,7 +746,8 @@ u8 *rtw_get_wps_attr(u8 *wps_ie, uint wps_ielen, u16 target_attr_id, u8 *buf_att
*
* Returns: the address of the specific WPS attribute content found, or NULL
*/
-u8 *rtw_get_wps_attr_content(u8 *wps_ie, uint wps_ielen, u16 target_attr_id, u8 *buf_content, uint *len_content)
+u8 *rtw_get_wps_attr_content(u8 *wps_ie, uint wps_ielen, u16 target_attr_id,
+ u8 *buf_content, uint *len_content)
{
u8 *attr_ptr;
u32 attr_len;
@@ -1019,7 +1028,11 @@ static int rtw_get_cipher_info(struct wlan_network *pnetwork)
pbuf = rtw_get_wpa2_ie(&pnetwork->network.ies[12], &wpa_ielen, pnetwork->network.ie_length-12);
if (pbuf && (wpa_ielen > 0)) {
- if (_SUCCESS == rtw_parse_wpa2_ie(pbuf, wpa_ielen+2, &group_cipher, &pairwise_cipher, &is8021x)) {
+ int ret2 = rtw_parse_wpa2_ie(pbuf, wpa_ielen + 2,
+ &group_cipher,
+ &pairwise_cipher,
+ &is8021x);
+ if (ret2 == _SUCCESS) {
pnetwork->bcn_info.pairwise_cipher = pairwise_cipher;
pnetwork->bcn_info.group_cipher = group_cipher;
pnetwork->bcn_info.is_8021x = is8021x;
@@ -1065,7 +1078,11 @@ void rtw_get_bcn_info(struct wlan_network *pnetwork)
/* get bwmode and ch_offset */
/* parsing HT_CAP_IE */
- p = rtw_get_ie(pnetwork->network.ies + _FIXED_IE_LENGTH_, WLAN_EID_HT_CAPABILITY, &len, pnetwork->network.ie_length - _FIXED_IE_LENGTH_);
+ {
+ u8 *ies_start = pnetwork->network.ies + _FIXED_IE_LENGTH_;
+ uint ies_len = pnetwork->network.ie_length - _FIXED_IE_LENGTH_;
+
+ p = rtw_get_ie(ies_start, WLAN_EID_HT_CAPABILITY, &len, ies_len);
if (p && len > 0) {
pht_cap = (struct ieee80211_ht_cap *)(p + 2);
pnetwork->bcn_info.ht_cap_info = le16_to_cpu(pht_cap->cap_info);
@@ -1073,7 +1090,8 @@ void rtw_get_bcn_info(struct wlan_network *pnetwork)
pnetwork->bcn_info.ht_cap_info = 0;
}
/* parsing HT_INFO_IE */
- p = rtw_get_ie(pnetwork->network.ies + _FIXED_IE_LENGTH_, WLAN_EID_HT_OPERATION, &len, pnetwork->network.ie_length - _FIXED_IE_LENGTH_);
+ p = rtw_get_ie(ies_start, WLAN_EID_HT_OPERATION, &len, ies_len);
+ }
if (p && len > 0) {
pht_info = (struct HT_info_element *)(p + 2);
pnetwork->bcn_info.ht_info_infos_0 = pht_info->infos[0];
diff --git a/drivers/staging/rtl8723bs/core/rtw_io.c b/drivers/staging/rtl8723bs/core/rtw_io.c
index fe9f94001eed..9dd1b747acb9 100644
--- a/drivers/staging/rtl8723bs/core/rtw_io.c
+++ b/drivers/staging/rtl8723bs/core/rtw_io.c
@@ -115,7 +115,9 @@ u32 rtw_write_port(struct adapter *adapter, u32 addr, u32 cnt, u8 *pmem)
return _write_port(pintfhdl, addr, cnt, pmem);
}
-int rtw_init_io_priv(struct adapter *padapter, void (*set_intf_ops)(struct adapter *padapter, struct _io_ops *pops))
+int rtw_init_io_priv(struct adapter *padapter,
+ void (*set_intf_ops)(struct adapter *padapter,
+ struct _io_ops *pops))
{
struct io_priv *piopriv = &padapter->iopriv;
struct intf_hdl *pintf = &piopriv->intf;
diff --git a/drivers/staging/rtl8723bs/core/rtw_ioctl_set.c b/drivers/staging/rtl8723bs/core/rtw_ioctl_set.c
index 587a87fbffeb..f16e94b28448 100644
--- a/drivers/staging/rtl8723bs/core/rtw_ioctl_set.c
+++ b/drivers/staging/rtl8723bs/core/rtw_ioctl_set.c
@@ -174,7 +174,11 @@ u8 rtw_set_802_11_ssid(struct adapter *padapter, struct ndis_802_11_ssid *ssid)
set_fwstate(pmlmepriv, WIFI_ADHOC_STATE);
}
} else {
- goto release_mlme_lock;/* it means driver is in WIFI_ADHOC_MASTER_STATE, we needn't create bss again. */
+ /*
+ * already in WIFI_ADHOC_MASTER_STATE,
+ * no need to create bss again
+ */
+ goto release_mlme_lock;
}
} else {
rtw_lps_ctrl_wk_cmd(padapter, LPS_CTRL_JOINBSS, 1);
@@ -309,8 +313,9 @@ u8 rtw_set_802_11_infrastructure_mode(struct adapter *padapter,
rtw_free_assoc_resources(padapter, 1);
if ((*pold_state == Ndis802_11Infrastructure) || (*pold_state == Ndis802_11IBSS)) {
+ /* clr Linked_state; issue dis-assoc_cmd already checked above */
if (check_fwstate(pmlmepriv, _FW_LINKED) == true)
- rtw_indicate_disconnect(padapter); /* will clr Linked_state; before this function, we must have checked whether issue dis-assoc_cmd or not */
+ rtw_indicate_disconnect(padapter);
}
*pold_state = networktype;
@@ -365,7 +370,9 @@ u8 rtw_set_802_11_disassociate(struct adapter *padapter)
return true;
}
-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_bssid_list_scan(struct adapter *padapter,
+ struct ndis_802_11_ssid *pssid,
+ int ssid_max_num)
{
struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
u8 res = true;
@@ -399,7 +406,8 @@ u8 rtw_set_802_11_bssid_list_scan(struct adapter *padapter, struct ndis_802_11_s
return res;
}
-u8 rtw_set_802_11_authentication_mode(struct adapter *padapter, enum ndis_802_11_authentication_mode authmode)
+u8 rtw_set_802_11_authentication_mode(struct adapter *padapter,
+ enum ndis_802_11_authentication_mode authmode)
{
struct security_priv *psecuritypriv = &padapter->securitypriv;
int res;
diff --git a/drivers/staging/rtl8723bs/core/rtw_mlme.c b/drivers/staging/rtl8723bs/core/rtw_mlme.c
index 5e79a720710f..1e4414af2c88 100644
--- a/drivers/staging/rtl8723bs/core/rtw_mlme.c
+++ b/drivers/staging/rtl8723bs/core/rtw_mlme.c
@@ -52,7 +52,8 @@ 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->scan_mode = SCAN_ACTIVE;/* 1: active, 0: passive. Maybe someday we should rename this varable to "active_mode" (Jeff) */
+ /* 1: active, 0: passive. Maybe someday rename to "active_mode" */
+ pmlmepriv->scan_mode = SCAN_ACTIVE;
spin_lock_init(&pmlmepriv->lock);
INIT_LIST_HEAD(&pmlmepriv->free_bss_pool.queue);
@@ -376,7 +377,8 @@ int is_same_network(struct wlan_bssid_ex *src, struct wlan_bssid_ex *dst, u8 fea
(d_cap & WLAN_CAPABILITY_ESS));
}
-struct wlan_network *_rtw_find_same_network(struct __queue *scanned_queue, struct wlan_network *network)
+struct wlan_network *_rtw_find_same_network(struct __queue *scanned_queue,
+ struct wlan_network *network)
{
struct list_head *phead, *plist;
struct wlan_network *found = NULL;
@@ -427,7 +429,8 @@ void update_network(struct wlan_bssid_ex *dst, struct wlan_bssid_ex *src,
long rssi_final;
/* The rule below is 1/5 for sample value, 4/5 for history value */
- if (check_fwstate(&padapter->mlmepriv, _FW_LINKED) && is_same_network(&padapter->mlmepriv.cur_network.network, src, 0)) {
+ if (check_fwstate(&padapter->mlmepriv, _FW_LINKED) &&
+ is_same_network(&padapter->mlmepriv.cur_network.network, src, 0)) {
/* Take the recvpriv's value for the connected AP*/
ss_final = padapter->recvpriv.signal_strength;
sq_final = padapter->recvpriv.signal_qual;
@@ -469,10 +472,13 @@ static void update_current_network(struct adapter *adapter, struct wlan_bssid_ex
&pmlmepriv->cur_network.network,
&pmlmepriv->cur_network.network);
- if ((check_fwstate(pmlmepriv, _FW_LINKED) == true) && (is_same_network(&pmlmepriv->cur_network.network, pnetwork, 0))) {
+ if ((check_fwstate(pmlmepriv, _FW_LINKED) == true) &&
+ (is_same_network(&pmlmepriv->cur_network.network, pnetwork, 0))) {
update_network(&pmlmepriv->cur_network.network, pnetwork, adapter, true);
- rtw_update_protection(adapter, (pmlmepriv->cur_network.network.ies) + sizeof(struct ndis_802_11_fix_ie),
- pmlmepriv->cur_network.network.ie_length);
+ rtw_update_protection(adapter,
+ (pmlmepriv->cur_network.network.ies) +
+ sizeof(struct ndis_802_11_fix_ie),
+ pmlmepriv->cur_network.network.ie_length);
}
}
@@ -609,7 +615,10 @@ int rtw_is_desired_network(struct adapter *adapter, struct wlan_network *pnetwor
privacy = pnetwork->network.privacy;
if (check_fwstate(pmlmepriv, WIFI_UNDER_WPS)) {
- if (rtw_get_wps_ie(pnetwork->network.ies+_FIXED_IE_LENGTH_, pnetwork->network.ie_length-_FIXED_IE_LENGTH_, NULL, &wps_ielen))
+ u8 *ies = pnetwork->network.ies + _FIXED_IE_LENGTH_;
+ uint ie_len = pnetwork->network.ie_length - _FIXED_IE_LENGTH_;
+
+ if (rtw_get_wps_ie(ies, ie_len, NULL, &wps_ielen))
return true;
else
return false;
@@ -617,12 +626,14 @@ int rtw_is_desired_network(struct adapter *adapter, struct wlan_network *pnetwor
if (adapter->registrypriv.wifi_spec == 1) { /* for correct flow of 8021X to do.... */
u8 *p = NULL;
uint ie_len = 0;
+ u8 *ies = pnetwork->network.ies + _BEACON_IE_OFFSET_;
+ uint ies_len = pnetwork->network.ie_length - _BEACON_IE_OFFSET_;
if ((desired_encmode == Ndis802_11EncryptionDisabled) && (privacy != 0))
bselected = false;
if (psecuritypriv->ndisauthtype == Ndis802_11AuthModeWPA2PSK) {
- p = rtw_get_ie(pnetwork->network.ies + _BEACON_IE_OFFSET_, WLAN_EID_RSN, &ie_len, (pnetwork->network.ie_length - _BEACON_IE_OFFSET_));
+ p = rtw_get_ie(ies, WLAN_EID_RSN, &ie_len, ies_len);
if (p && ie_len > 0)
bselected = true;
else
@@ -968,7 +979,8 @@ void rtw_scan_abort(struct adapter *adapter)
pmlmeext->scan_abort = false;
}
-static struct sta_info *rtw_joinbss_update_stainfo(struct adapter *padapter, struct wlan_network *pnetwork)
+static struct sta_info *rtw_joinbss_update_stainfo(struct adapter *padapter,
+ struct wlan_network *pnetwork)
{
int i;
struct sta_info *bmc_sta, *psta = NULL;
@@ -1052,7 +1064,9 @@ static struct sta_info *rtw_joinbss_update_stainfo(struct adapter *padapter, str
/* pnetwork : returns from rtw_joinbss_event_callback */
/* ptarget_wlan: found from scanned_queue */
-static void rtw_joinbss_update_network(struct adapter *padapter, struct wlan_network *ptarget_wlan, struct wlan_network *pnetwork)
+static void rtw_joinbss_update_network(struct adapter *padapter,
+ struct wlan_network *ptarget_wlan,
+ struct wlan_network *pnetwork)
{
struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
struct wlan_network *cur_network = &pmlmepriv->cur_network;
@@ -1070,7 +1084,8 @@ static void rtw_joinbss_update_network(struct adapter *padapter, struct wlan_net
padapter->recvpriv.signal_strength = ptarget_wlan->network.phy_info.signal_strength;
padapter->recvpriv.signal_qual = ptarget_wlan->network.phy_info.signal_quality;
/* the ptarget_wlan->network.rssi is raw data, we use ptarget_wlan->network.phy_info.signal_strength instead (has scaled) */
- padapter->recvpriv.rssi = translate_percentage_to_dbm(ptarget_wlan->network.phy_info.signal_strength);
+ padapter->recvpriv.rssi =
+ translate_percentage_to_dbm(ptarget_wlan->network.phy_info.signal_strength);
rtw_set_signal_stat_timer(&padapter->recvpriv);
@@ -1095,7 +1110,9 @@ static void rtw_joinbss_update_network(struct adapter *padapter, struct wlan_net
rtw_update_protection(padapter, (cur_network->network.ies) + sizeof(struct ndis_802_11_fix_ie),
(cur_network->network.ie_length));
- rtw_update_ht_cap(padapter, cur_network->network.ies, cur_network->network.ie_length, (u8) cur_network->network.configuration.ds_config);
+ rtw_update_ht_cap(padapter, cur_network->network.ies,
+ cur_network->network.ie_length,
+ (u8)cur_network->network.configuration.ds_config);
}
static struct rt_pmkid_list backupPMKIDList[NUM_PMKID_CACHE];
@@ -1117,7 +1134,8 @@ void rtw_reset_securitypriv(struct adapter *adapter)
/* Backup the btkip_countermeasure information. */
/* When the countermeasure is trigger, the driver have to disconnect with AP for 60 seconds. */
- memcpy(&backupPMKIDList[0], &adapter->securitypriv.PMKIDList[0], sizeof(struct rt_pmkid_list) * NUM_PMKID_CACHE);
+ memcpy(&backupPMKIDList[0], &adapter->securitypriv.PMKIDList[0],
+ sizeof(struct rt_pmkid_list) * NUM_PMKID_CACHE);
backupPMKIDIndex = adapter->securitypriv.PMKIDIndex;
backupTKIPCountermeasure = adapter->securitypriv.btkip_countermeasure;
backupTKIPcountermeasure_time = adapter->securitypriv.btkip_countermeasure_time;
@@ -1129,7 +1147,8 @@ void rtw_reset_securitypriv(struct adapter *adapter)
/* Added by Albert 2009/02/18 */
/* Restore the PMK information to securitypriv structure for the following connection. */
- memcpy(&adapter->securitypriv.PMKIDList[0], &backupPMKIDList[0], sizeof(struct rt_pmkid_list) * NUM_PMKID_CACHE);
+ memcpy(&adapter->securitypriv.PMKIDList[0], &backupPMKIDList[0],
+ sizeof(struct rt_pmkid_list) * NUM_PMKID_CACHE);
adapter->securitypriv.PMKIDIndex = backupPMKIDIndex;
adapter->securitypriv.btkip_countermeasure = backupTKIPCountermeasure;
adapter->securitypriv.btkip_countermeasure_time = backupTKIPcountermeasure_time;
@@ -1177,7 +1196,8 @@ void rtw_joinbss_event_prehandle(struct adapter *adapter, u8 *pbuf)
struct wlan_network *pcur_wlan = NULL, *ptarget_wlan = NULL;
unsigned int the_same_macaddr = false;
- the_same_macaddr = !memcmp(pnetwork->network.mac_address, cur_network->network.mac_address, ETH_ALEN);
+ the_same_macaddr = !memcmp(pnetwork->network.mac_address,
+ cur_network->network.mac_address, ETH_ALEN);
pnetwork->network.length = get_wlan_bssid_ex_sz(&pnetwork->network);
if (pnetwork->network.length > sizeof(struct wlan_bssid_ex))
@@ -1361,9 +1381,9 @@ void rtw_stassoc_event_callback(struct adapter *adapter, u8 *pbuf)
/* for AD-HOC mode */
psta = rtw_get_stainfo(&adapter->stapriv, pstassoc->macaddr);
if (psta) {
- /* the sta have been in sta_info_queue => do nothing */
-
- return; /* between drv has received this event before and fw have not yet to set key to CAM_ENTRY) */
+ /* sta already in sta_info_queue, do nothing */
+ /* drv received this event but fw hasn't set key to CAM_ENTRY yet */
+ return;
}
psta = rtw_alloc_stainfo(&adapter->stapriv, pstassoc->macaddr);
@@ -1447,7 +1467,8 @@ void rtw_stadel_event_callback(struct adapter *adapter, u8 *pbuf)
if (adapter->registrypriv.wifi_spec == 1) {
roam = false;
- } else if (reason == WLAN_REASON_EXPIRATION_CHK && rtw_chk_roam_flags(adapter, RTW_ROAM_ON_EXPIRED)) {
+ } else if (reason == WLAN_REASON_EXPIRATION_CHK &&
+ rtw_chk_roam_flags(adapter, RTW_ROAM_ON_EXPIRED)) {
roam = true;
} else if (reason == WLAN_REASON_ACTIVE_ROAM && rtw_chk_roam_flags(adapter, RTW_ROAM_ACTIVE)) {
roam = true;
@@ -1916,7 +1937,8 @@ signed int rtw_set_auth(struct adapter *adapter, struct security_priv *psecurity
return res;
}
-signed int rtw_set_key(struct adapter *adapter, struct security_priv *psecuritypriv, signed int keyid, u8 set_tx, bool enqueue)
+signed int rtw_set_key(struct adapter *adapter, struct security_priv *psecuritypriv,
+ signed int keyid, u8 set_tx, bool enqueue)
{
u8 keylen;
struct cmd_obj *pcmd;
@@ -1991,7 +2013,8 @@ signed int rtw_set_key(struct adapter *adapter, struct security_priv *psecurityp
}
/* adjust ies for rtw_joinbss_cmd in WMM */
-int rtw_restruct_wmm_ie(struct adapter *adapter, u8 *in_ie, u8 *out_ie, uint in_len, uint initial_out_len)
+int rtw_restruct_wmm_ie(struct adapter *adapter, u8 *in_ie, u8 *out_ie,
+ uint in_len, uint initial_out_len)
{
unsigned int ielength = 0;
unsigned int i, j;
@@ -2021,7 +2044,7 @@ int rtw_restruct_wmm_ie(struct adapter *adapter, u8 *in_ie, u8 *out_ie, uint in_
return ielength;
}
-/* Ported from 8185: IsInPreAuthKeyList().
+/* Ported from 8185: IsInPreAuthKeyList().
* (Renamed from SecIsInPreAuthKeyList(), 2006-10-13.)
* Added by Annie, 2006-05-07.
*
@@ -2302,7 +2325,9 @@ void rtw_build_wmm_ie_ht(struct adapter *padapter, u8 *out_ie, uint *pout_len)
}
/* the function is >= passive_level */
-unsigned int rtw_restructure_ht_ie(struct adapter *padapter, u8 *in_ie, u8 *out_ie, uint in_len, uint *pout_len, u8 channel)
+unsigned int rtw_restructure_ht_ie(struct adapter *padapter, u8 *in_ie,
+ u8 *out_ie, uint in_len,
+ uint *pout_len, u8 channel)
{
u32 ielen, out_len;
enum ieee80211_max_ampdu_length_exp max_rx_ampdu_factor;
@@ -2448,20 +2473,26 @@ void rtw_update_ht_cap(struct adapter *padapter, u8 *pie, uint ie_len, u8 channe
phtpriv->ampdu_enable = true;
/* check Max Rx A-MPDU Size */
- len = 0;
- p = rtw_get_ie(pie+sizeof(struct ndis_802_11_fix_ie), WLAN_EID_HT_CAPABILITY, &len, ie_len-sizeof(struct ndis_802_11_fix_ie));
- if (p && len > 0) {
- pht_capie = (struct ieee80211_ht_cap *)(p+2);
- max_ampdu_sz = (pht_capie->ampdu_params_info & IEEE80211_HT_CAP_AMPDU_FACTOR);
- max_ampdu_sz = 1 << (max_ampdu_sz+3); /* max_ampdu_sz (kbytes); */
-
- phtpriv->rx_ampdu_maxlen = max_ampdu_sz;
- }
+ {
+ u8 *ies = pie + sizeof(struct ndis_802_11_fix_ie);
+ uint ies_len = ie_len - sizeof(struct ndis_802_11_fix_ie);
+
+ len = 0;
+ p = rtw_get_ie(ies, WLAN_EID_HT_CAPABILITY, &len, ies_len);
+ if (p && len > 0) {
+ pht_capie = (struct ieee80211_ht_cap *)(p+2);
+ max_ampdu_sz = pht_capie->ampdu_params_info &
+ IEEE80211_HT_CAP_AMPDU_FACTOR;
+ max_ampdu_sz = 1 << (max_ampdu_sz+3); /* max_ampdu_sz (kbytes); */
+
+ phtpriv->rx_ampdu_maxlen = max_ampdu_sz;
+ }
- len = 0;
- p = rtw_get_ie(pie+sizeof(struct ndis_802_11_fix_ie), WLAN_EID_HT_OPERATION, &len, ie_len-sizeof(struct ndis_802_11_fix_ie));
- if (p && len > 0) {
- /* todo: */
+ len = 0;
+ p = rtw_get_ie(ies, WLAN_EID_HT_OPERATION, &len, ies_len);
+ if (p && len > 0) {
+ /* todo: */
+ }
}
if ((pregistrypriv->bw_mode & 0x0f) > 0)
diff --git a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c b/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c
index 8297cf85eb7b..62411b204be9 100644
--- a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c
+++ b/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c
@@ -62,12 +62,14 @@ static unsigned char REALTEK_96B_IE[] = {0x00, 0xe0, 0x4c, 0x02, 0x01, 0x20};
/* ChannelPlan definitions */
static struct rt_channel_plan_2g RTW_ChannelPlan2G[RT_CHANNEL_DOMAIN_2G_MAX] = {
- {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}, 13}, /* 0x00, RT_CHANNEL_DOMAIN_2G_WORLD , Passive scan CH 12, 13 */
+ /* 0x00, RT_CHANNEL_DOMAIN_2G_WORLD, Passive scan CH 12, 13 */
+ {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}, 13},
{{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}, 13}, /* 0x01, RT_CHANNEL_DOMAIN_2G_ETSI1 */
{{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 11}, /* 0x02, RT_CHANNEL_DOMAIN_2G_FCC1 */
{{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}, 14}, /* 0x03, RT_CHANNEL_DOMAIN_2G_MIKK1 */
{{10, 11, 12, 13}, 4}, /* 0x04, RT_CHANNEL_DOMAIN_2G_ETSI2 */
- {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}, 14}, /* 0x05, RT_CHANNEL_DOMAIN_2G_GLOBAL , Passive scan CH 12, 13, 14 */
+ /* 0x05, RT_CHANNEL_DOMAIN_2G_GLOBAL, Passive scan CH 12, 13, 14 */
+ {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}, 14},
{{}, 0}, /* 0x06, RT_CHANNEL_DOMAIN_2G_NULL */
};
@@ -194,15 +196,24 @@ int init_hw_mlme_ext(struct adapter *padapter)
void init_mlme_default_rate_set(struct adapter *padapter)
{
struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-
- unsigned char mixed_datarate[NumRates] = {_1M_RATE_, _2M_RATE_, _5M_RATE_, _11M_RATE_, _6M_RATE_, _9M_RATE_, _12M_RATE_, _18M_RATE_, _24M_RATE_, _36M_RATE_, _48M_RATE_, _54M_RATE_, 0xff};
- unsigned char mixed_basicrate[NumRates] = {_1M_RATE_, _2M_RATE_, _5M_RATE_, _11M_RATE_, _6M_RATE_, _12M_RATE_, _24M_RATE_, 0xff,};
- unsigned char supported_mcs_set[16] = {0xff, 0xff, 0x00, 0x00, 0x01, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
+ static const unsigned char mixed_datarate[NumRates] = {
+ _1M_RATE_, _2M_RATE_, _5M_RATE_, _11M_RATE_,
+ _6M_RATE_, _9M_RATE_, _12M_RATE_, _18M_RATE_,
+ _24M_RATE_, _36M_RATE_, _48M_RATE_, _54M_RATE_, 0xff
+ };
+ static const unsigned char mixed_basicrate[NumRates] = {
+ _1M_RATE_, _2M_RATE_, _5M_RATE_, _11M_RATE_,
+ _6M_RATE_, _12M_RATE_, _24M_RATE_, 0xff
+ };
+ static const unsigned char supported_mcs_set[16] = {
+ 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
memcpy(pmlmeext->datarate, mixed_datarate, NumRates);
memcpy(pmlmeext->basicrate, mixed_basicrate, NumRates);
-
- memcpy(pmlmeext->default_supported_mcs_set, supported_mcs_set, sizeof(pmlmeext->default_supported_mcs_set));
+ memcpy(pmlmeext->default_supported_mcs_set, supported_mcs_set,
+ sizeof(pmlmeext->default_supported_mcs_set));
}
static void init_mlme_ext_priv_value(struct adapter *padapter)
@@ -319,7 +330,8 @@ static void init_channel_list(struct adapter *padapter, struct rt_channel_info *
}
-static u8 init_channel_set(struct adapter *padapter, u8 ChannelPlan, struct rt_channel_info *channel_set)
+static u8 init_channel_set(struct adapter *padapter, u8 ChannelPlan,
+ struct rt_channel_info *channel_set)
{
u8 index, chanset_size = 0;
u8 b2_4GBand = false;
@@ -340,22 +352,27 @@ static u8 init_channel_set(struct adapter *padapter, u8 ChannelPlan, struct rt_c
if (b2_4GBand) {
for (index = 0; index < RTW_ChannelPlan2G[Index2G].Len; index++) {
- channel_set[chanset_size].ChannelNum = RTW_ChannelPlan2G[Index2G].Channel[index];
-
- if ((ChannelPlan == RT_CHANNEL_DOMAIN_GLOBAL_DOAMIN) ||/* Channel 1~11 is active, and 12~14 is passive */
- (ChannelPlan == RT_CHANNEL_DOMAIN_GLOBAL_NULL)) {
- if (channel_set[chanset_size].ChannelNum >= 1 && channel_set[chanset_size].ChannelNum <= 11)
- channel_set[chanset_size].ScanType = SCAN_ACTIVE;
- else if ((channel_set[chanset_size].ChannelNum >= 12 && channel_set[chanset_size].ChannelNum <= 14))
- channel_set[chanset_size].ScanType = SCAN_PASSIVE;
+ struct rt_channel_info *ch = &channel_set[chanset_size];
+
+ ch->ChannelNum = RTW_ChannelPlan2G[Index2G].Channel[index];
+
+ if ((ChannelPlan == RT_CHANNEL_DOMAIN_GLOBAL_DOAMIN) ||
+ (ChannelPlan == RT_CHANNEL_DOMAIN_GLOBAL_NULL)) {
+ /* Channel 1~11 active, 12~14 passive */
+ if (ch->ChannelNum >= 1 && ch->ChannelNum <= 11)
+ ch->ScanType = SCAN_ACTIVE;
+ else if (ch->ChannelNum >= 12 && ch->ChannelNum <= 14)
+ ch->ScanType = SCAN_PASSIVE;
} else if (ChannelPlan == RT_CHANNEL_DOMAIN_WORLD_WIDE_13 ||
- Index2G == RT_CHANNEL_DOMAIN_2G_WORLD) { /* channel 12~13, passive scan */
- if (channel_set[chanset_size].ChannelNum <= 11)
- channel_set[chanset_size].ScanType = SCAN_ACTIVE;
+ Index2G == RT_CHANNEL_DOMAIN_2G_WORLD) {
+ /* channel 12~13, passive scan */
+ if (ch->ChannelNum <= 11)
+ ch->ScanType = SCAN_ACTIVE;
else
- channel_set[chanset_size].ScanType = SCAN_PASSIVE;
- } else
- channel_set[chanset_size].ScanType = SCAN_ACTIVE;
+ ch->ScanType = SCAN_PASSIVE;
+ } else {
+ ch->ScanType = SCAN_ACTIVE;
+ }
chanset_size++;
}
@@ -391,8 +408,11 @@ void init_mlme_ext_priv(struct adapter *padapter)
init_mlme_ap_info(padapter);
- pmlmeext->max_chan_nums = init_channel_set(padapter, pmlmepriv->ChannelPlan, pmlmeext->channel_set);
- init_channel_list(padapter, pmlmeext->channel_set, pmlmeext->max_chan_nums, &pmlmeext->channel_list);
+ pmlmeext->max_chan_nums = init_channel_set(padapter,
+ pmlmepriv->ChannelPlan,
+ pmlmeext->channel_set);
+ init_channel_list(padapter, pmlmeext->channel_set,
+ pmlmeext->max_chan_nums, &pmlmeext->channel_list);
pmlmeext->last_scan_time = 0;
pmlmeext->chan_scan_time = SURVEY_TO;
pmlmeext->mlmeext_init = true;
@@ -417,7 +437,9 @@ void free_mlme_ext_priv(struct mlme_ext_priv *pmlmeext)
}
}
-static void _mgt_dispatcher(struct adapter *padapter, struct mlme_handler *ptable, union recv_frame *precv_frame)
+static void _mgt_dispatcher(struct adapter *padapter,
+ struct mlme_handler *ptable,
+ union recv_frame *precv_frame)
{
u8 *pframe = precv_frame->u.hdr.rx_data;
@@ -571,8 +593,10 @@ unsigned int OnBeacon(struct adapter *padapter, union recv_frame *precv_frame)
int ret = _SUCCESS;
u8 *p = NULL;
u32 ielen = 0;
+ u8 *ie_start = pframe + sizeof(struct ieee80211_hdr_3addr) + _BEACON_IE_OFFSET_;
+ int ie_len = len - sizeof(struct ieee80211_hdr_3addr) - _BEACON_IE_OFFSET_;
- p = rtw_get_ie(pframe + sizeof(struct ieee80211_hdr_3addr) + _BEACON_IE_OFFSET_, WLAN_EID_EXT_SUPP_RATES, &ielen, precv_frame->u.hdr.len - sizeof(struct ieee80211_hdr_3addr) - _BEACON_IE_OFFSET_);
+ p = rtw_get_ie(ie_start, WLAN_EID_EXT_SUPP_RATES, &ielen, ie_len);
if (p && ielen > 0) {
if (p + 2 + ielen < pframe + len) {
if ((*(p + 1 + ielen) == 0x2D) && (*(p + 2 + ielen) != 0x2D))
@@ -599,7 +623,12 @@ unsigned int OnBeacon(struct adapter *padapter, union recv_frame *precv_frame)
}
/* check the vendor of the assoc AP */
- pmlmeinfo->assoc_AP_vendor = check_assoc_AP(pframe+sizeof(struct ieee80211_hdr_3addr), len-sizeof(struct ieee80211_hdr_3addr));
+ {
+ u8 *ap_ie = pframe + sizeof(struct ieee80211_hdr_3addr);
+ int ap_ie_len = len - sizeof(struct ieee80211_hdr_3addr);
+
+ pmlmeinfo->assoc_AP_vendor = check_assoc_AP(ap_ie, ap_ie_len);
+ }
/* update TSF Value */
update_TSF(pmlmeext, pframe, len);
@@ -618,7 +647,8 @@ unsigned int OnBeacon(struct adapter *padapter, union recv_frame *precv_frame)
return _SUCCESS;
}
- if (((pmlmeinfo->state&0x03) == WIFI_FW_STATION_STATE) && (pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS)) {
+ if ((pmlmeinfo->state & 0x03) == WIFI_FW_STATION_STATE &&
+ (pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS)) {
psta = rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe));
if (psta) {
ret = rtw_check_bcn_info(padapter, pframe, len);
@@ -650,9 +680,17 @@ unsigned int OnBeacon(struct adapter *padapter, union recv_frame *precv_frame)
goto _END_ONBEACON_;
/* get supported rate */
- if (update_sta_support_rate(padapter, (pframe + WLAN_HDR_A3_LEN + _BEACON_IE_OFFSET_), (len - WLAN_HDR_A3_LEN - _BEACON_IE_OFFSET_), cam_idx) == _FAIL) {
- pmlmeinfo->FW_sta_info[cam_idx].status = 0;
- goto _END_ONBEACON_;
+ {
+ u8 *rate_ie = pframe + WLAN_HDR_A3_LEN + _BEACON_IE_OFFSET_;
+ int rate_len = len - WLAN_HDR_A3_LEN - _BEACON_IE_OFFSET_;
+ int ret;
+
+ ret = update_sta_support_rate(padapter, rate_ie,
+ rate_len, cam_idx);
+ if (ret == _FAIL) {
+ pmlmeinfo->FW_sta_info[cam_idx].status = 0;
+ goto _END_ONBEACON_;
+ }
}
/* update TSF Value */
@@ -800,9 +838,11 @@ unsigned int OnAuth(struct adapter *padapter, union recv_frame *precv_frame)
pstat->state |= WIFI_FW_AUTH_STATE;
pstat->authalg = algorithm;
} else if (seq == 3) {
+ u8 *auth_ie = pframe + WLAN_HDR_A3_LEN + 4 + _AUTH_IE_OFFSET_;
+ int auth_len = len - WLAN_HDR_A3_LEN - _AUTH_IE_OFFSET_ - 4;
- p = rtw_get_ie(pframe + WLAN_HDR_A3_LEN + 4 + _AUTH_IE_OFFSET_, WLAN_EID_CHALLENGE, (int *)&ie_len,
- len - WLAN_HDR_A3_LEN - _AUTH_IE_OFFSET_ - 4);
+ p = rtw_get_ie(auth_ie, WLAN_EID_CHALLENGE, (int *)&ie_len,
+ auth_len);
if (!p || ie_len <= 0) {
status = WLAN_STATUS_CHALLENGE_FAIL;
@@ -1021,7 +1061,12 @@ unsigned int OnAssocReq(struct adapter *padapter, union recv_frame *precv_frame)
goto OnAssocReqFail;
/* check if the supported rate is ok */
- p = rtw_get_ie(pframe + WLAN_HDR_A3_LEN + ie_offset, WLAN_EID_SUPP_RATES, &ie_len, pkt_len - WLAN_HDR_A3_LEN - ie_offset);
+ {
+ u8 *rate_ie = pframe + WLAN_HDR_A3_LEN + ie_offset;
+ int rate_ie_len = pkt_len - WLAN_HDR_A3_LEN - ie_offset;
+
+ p = rtw_get_ie(rate_ie, WLAN_EID_SUPP_RATES, &ie_len, rate_ie_len);
+ }
if (!p) {
/* use our own rate set as statoin used */
/* memcpy(supportRate, AP_BSSRATE, AP_BSSRATE_LEN); */
@@ -1070,7 +1115,9 @@ unsigned int OnAssocReq(struct adapter *padapter, union recv_frame *precv_frame)
wpa_ie = elems.rsn_ie;
wpa_ie_len = elems.rsn_ie_len;
- if (rtw_parse_wpa2_ie(wpa_ie-2, wpa_ie_len+2, &group_cipher, &pairwise_cipher, NULL) == _SUCCESS) {
+ if (rtw_parse_wpa2_ie(wpa_ie - 2, wpa_ie_len + 2,
+ &group_cipher, &pairwise_cipher,
+ NULL) == _SUCCESS) {
pstat->dot8021xalg = 1;/* psk, todo:802.1x */
pstat->wpa_psk |= BIT(1);
@@ -1133,8 +1180,12 @@ unsigned int OnAssocReq(struct adapter *padapter, union recv_frame *precv_frame)
&& (pstat->flags & (WLAN_STA_WPS|WLAN_STA_MAYBE_WPS))) {
if (pmlmepriv->wps_beacon_ie) {
u8 selected_registrar = 0;
+ u8 *wps_ie = pmlmepriv->wps_beacon_ie;
+ uint wps_len = pmlmepriv->wps_beacon_ie_len;
- rtw_get_wps_attr_content(pmlmepriv->wps_beacon_ie, pmlmepriv->wps_beacon_ie_len, WPS_ATTR_SELECTED_REGISTRAR, &selected_registrar, NULL);
+ rtw_get_wps_attr_content(wps_ie, wps_len,
+ WPS_ATTR_SELECTED_REGISTRAR,
+ &selected_registrar, NULL);
if (!selected_registrar) {
status = WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA;
@@ -2156,11 +2207,18 @@ void issue_beacon(struct adapter *padapter, int timeout_ms)
u8 *wps_ie;
uint wps_ielen;
u8 sr = 0;
-
- wps_ie = rtw_get_wps_ie(pmgntframe->buf_addr+TXDESC_OFFSET+sizeof(struct ieee80211_hdr_3addr)+_BEACON_IE_OFFSET_,
- pattrib->pktlen-sizeof(struct ieee80211_hdr_3addr)-_BEACON_IE_OFFSET_, NULL, &wps_ielen);
+ u8 *bcn_ie = pmgntframe->buf_addr + TXDESC_OFFSET +
+ sizeof(struct ieee80211_hdr_3addr) +
+ _BEACON_IE_OFFSET_;
+ int bcn_ie_len = pattrib->pktlen -
+ sizeof(struct ieee80211_hdr_3addr) -
+ _BEACON_IE_OFFSET_;
+
+ wps_ie = rtw_get_wps_ie(bcn_ie, bcn_ie_len, NULL, &wps_ielen);
if (wps_ie && wps_ielen > 0)
- rtw_get_wps_attr_content(wps_ie, wps_ielen, WPS_ATTR_SELECTED_REGISTRAR, (u8 *)(&sr), NULL);
+ rtw_get_wps_attr_content(wps_ie, wps_ielen,
+ WPS_ATTR_SELECTED_REGISTRAR,
+ &sr, NULL);
if (sr != 0)
set_fwstate(pmlmepriv, WIFI_UNDER_WPS);
else
@@ -2191,33 +2249,47 @@ void issue_beacon(struct adapter *padapter, int timeout_ms)
pframe += 2;
pattrib->pktlen += 2;
- /* SSID */
- pframe = rtw_set_ie(pframe, WLAN_EID_SSID, cur_network->ssid.ssid_length, cur_network->ssid.ssid, &pattrib->pktlen);
+ {
+ u8 *ssid = cur_network->ssid.ssid;
+ int ssid_len = cur_network->ssid.ssid_length;
+ u8 *rates = cur_network->supported_rates;
+ u8 ds_cfg = cur_network->configuration.ds_config;
- /* supported rates... */
- rate_len = rtw_get_rateset_len(cur_network->supported_rates);
- pframe = rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, ((rate_len > 8) ? 8 : rate_len), cur_network->supported_rates, &pattrib->pktlen);
+ /* SSID */
+ pframe = rtw_set_ie(pframe, WLAN_EID_SSID, ssid_len, ssid,
+ &pattrib->pktlen);
- /* DS parameter set */
- pframe = rtw_set_ie(pframe, WLAN_EID_DS_PARAMS, 1, (unsigned char *)&(cur_network->configuration.ds_config), &pattrib->pktlen);
+ /* supported rates */
+ rate_len = rtw_get_rateset_len(rates);
+ pframe = rtw_set_ie(pframe, WLAN_EID_SUPP_RATES,
+ min_t(int, rate_len, 8), rates,
+ &pattrib->pktlen);
+
+ /* DS parameter set */
+ pframe = rtw_set_ie(pframe, WLAN_EID_DS_PARAMS, 1, &ds_cfg,
+ &pattrib->pktlen);
+ }
- /* if ((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) */
{
u8 erpinfo = 0;
- u32 ATIMWindow;
- /* IBSS Parameter Set... */
- /* ATIMWindow = cur->configuration.ATIMWindow; */
- ATIMWindow = 0;
- pframe = rtw_set_ie(pframe, WLAN_EID_IBSS_PARAMS, 2, (unsigned char *)(&ATIMWindow), &pattrib->pktlen);
+ u32 ATIMWindow = 0;
+
+ /* IBSS Parameter Set */
+ pframe = rtw_set_ie(pframe, WLAN_EID_IBSS_PARAMS, 2,
+ (unsigned char *)&ATIMWindow, &pattrib->pktlen);
/* ERP IE */
- pframe = rtw_set_ie(pframe, WLAN_EID_ERP_INFO, 1, &erpinfo, &pattrib->pktlen);
+ pframe = rtw_set_ie(pframe, WLAN_EID_ERP_INFO, 1, &erpinfo,
+ &pattrib->pktlen);
}
+ /* EXTENDED SUPPORTED RATE */
+ if (rate_len > 8) {
+ u8 *ext_rates = cur_network->supported_rates + 8;
- /* EXTERNDED SUPPORTED RATE */
- if (rate_len > 8)
- pframe = rtw_set_ie(pframe, WLAN_EID_EXT_SUPP_RATES, (rate_len - 8), (cur_network->supported_rates + 8), &pattrib->pktlen);
+ pframe = rtw_set_ie(pframe, WLAN_EID_EXT_SUPP_RATES,
+ rate_len - 8, ext_rates, &pattrib->pktlen);
+ }
/* todo:HT for adhoc */
@@ -2296,7 +2368,10 @@ void issue_probersp(struct adapter *padapter, unsigned char *da, u8 is_valid_p2p
return;
if ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) {
- pwps_ie = rtw_get_wps_ie(cur_network->ies+_FIXED_IE_LENGTH_, cur_network->ie_length-_FIXED_IE_LENGTH_, NULL, &wps_ielen);
+ u8 *ie_ptr = cur_network->ies + _FIXED_IE_LENGTH_;
+ int ie_len = cur_network->ie_length - _FIXED_IE_LENGTH_;
+
+ pwps_ie = rtw_get_wps_ie(ie_ptr, ie_len, NULL, &wps_ielen);
/* inerset & update wps_probe_resp_ie */
if (pmlmepriv->wps_probe_resp_ie && pwps_ie && wps_ielen > 0) {
@@ -2392,33 +2467,49 @@ void issue_probersp(struct adapter *padapter, unsigned char *da, u8 is_valid_p2p
pattrib->pktlen += 2;
/* below for ad-hoc mode */
+ {
+ u8 *ssid = cur_network->ssid.ssid;
+ int ssid_len = cur_network->ssid.ssid_length;
+ u8 *rates = cur_network->supported_rates;
+ u8 ds_cfg = cur_network->configuration.ds_config;
+
+ /* SSID */
+ pframe = rtw_set_ie(pframe, WLAN_EID_SSID, ssid_len, ssid,
+ &pattrib->pktlen);
+
+ /* supported rates */
+ rate_len = rtw_get_rateset_len(rates);
+ pframe = rtw_set_ie(pframe, WLAN_EID_SUPP_RATES,
+ min_t(int, rate_len, 8), rates,
+ &pattrib->pktlen);
+
+ /* DS parameter set */
+ pframe = rtw_set_ie(pframe, WLAN_EID_DS_PARAMS, 1, &ds_cfg,
+ &pattrib->pktlen);
+ }
- /* SSID */
- pframe = rtw_set_ie(pframe, WLAN_EID_SSID, cur_network->ssid.ssid_length, cur_network->ssid.ssid, &pattrib->pktlen);
-
- /* supported rates... */
- rate_len = rtw_get_rateset_len(cur_network->supported_rates);
- pframe = rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, ((rate_len > 8) ? 8 : rate_len), cur_network->supported_rates, &pattrib->pktlen);
-
- /* DS parameter set */
- pframe = rtw_set_ie(pframe, WLAN_EID_DS_PARAMS, 1, (unsigned char *)&(cur_network->configuration.ds_config), &pattrib->pktlen);
-
- if ((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) {
+ if ((pmlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE) {
u8 erpinfo = 0;
- u32 ATIMWindow;
- /* IBSS Parameter Set... */
- /* ATIMWindow = cur->configuration.ATIMWindow; */
- ATIMWindow = 0;
- pframe = rtw_set_ie(pframe, WLAN_EID_IBSS_PARAMS, 2, (unsigned char *)(&ATIMWindow), &pattrib->pktlen);
+ u32 ATIMWindow = 0;
+
+ /* IBSS Parameter Set */
+ pframe = rtw_set_ie(pframe, WLAN_EID_IBSS_PARAMS, 2,
+ (unsigned char *)&ATIMWindow,
+ &pattrib->pktlen);
/* ERP IE */
- pframe = rtw_set_ie(pframe, WLAN_EID_ERP_INFO, 1, &erpinfo, &pattrib->pktlen);
+ pframe = rtw_set_ie(pframe, WLAN_EID_ERP_INFO, 1, &erpinfo,
+ &pattrib->pktlen);
}
+ /* EXTENDED SUPPORTED RATE */
+ if (rate_len > 8) {
+ u8 *ext_rates = cur_network->supported_rates + 8;
- /* EXTERNDED SUPPORTED RATE */
- if (rate_len > 8)
- pframe = rtw_set_ie(pframe, WLAN_EID_EXT_SUPP_RATES, (rate_len - 8), (cur_network->supported_rates + 8), &pattrib->pktlen);
+ pframe = rtw_set_ie(pframe, WLAN_EID_EXT_SUPP_RATES,
+ rate_len - 8, ext_rates,
+ &pattrib->pktlen);
+ }
/* todo:HT for adhoc */
@@ -2497,8 +2588,11 @@ static int _issue_probereq(struct adapter *padapter,
get_rate_set(padapter, bssrate, &bssrate_len);
if (bssrate_len > 8) {
- pframe = rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, 8, bssrate, &(pattrib->pktlen));
- pframe = rtw_set_ie(pframe, WLAN_EID_EXT_SUPP_RATES, (bssrate_len - 8), (bssrate + 8), &(pattrib->pktlen));
+ pframe = rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, 8, bssrate,
+ &pattrib->pktlen);
+ pframe = rtw_set_ie(pframe, WLAN_EID_EXT_SUPP_RATES,
+ bssrate_len - 8, bssrate + 8,
+ &pattrib->pktlen);
} else {
pframe = rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, bssrate_len, bssrate, &(pattrib->pktlen));
}
@@ -2533,8 +2627,8 @@ inline void issue_probereq(struct adapter *padapter, struct ndis_802_11_ssid *ps
_issue_probereq(padapter, pssid, da, 0, 1, false);
}
-int issue_probereq_ex(struct adapter *padapter, struct ndis_802_11_ssid *pssid, u8 *da, u8 ch, bool append_wps,
- int try_cnt, int wait_ms)
+int issue_probereq_ex(struct adapter *padapter, struct ndis_802_11_ssid *pssid,
+ u8 *da, u8 ch, bool append_wps, int try_cnt, int wait_ms)
{
int ret;
int i = 0;
@@ -2641,14 +2735,16 @@ void issue_auth(struct adapter *padapter, struct sta_info *psta, unsigned short
memcpy(pwlanhdr->addr2, myid(&padapter->eeprompriv), ETH_ALEN);
memcpy(pwlanhdr->addr3, get_my_bssid(&pmlmeinfo->network), ETH_ALEN);
- /* setting auth algo number */
- val16 = (pmlmeinfo->auth_algo == dot11AuthAlgrthm_Shared) ? 1 : 0;/* 0:OPEN System, 1:Shared key */
+ /* setting auth algo number: 0=OPEN System, 1=Shared key */
+ val16 = (pmlmeinfo->auth_algo == dot11AuthAlgrthm_Shared) ? 1 : 0;
if (val16)
use_shared_key = 1;
le_tmp = cpu_to_le16(val16);
/* setting IV for auth seq #3 */
- if ((pmlmeinfo->auth_seq == 3) && (pmlmeinfo->state & WIFI_FW_AUTH_STATE) && (use_shared_key == 1)) {
+ if (pmlmeinfo->auth_seq == 3 &&
+ (pmlmeinfo->state & WIFI_FW_AUTH_STATE) &&
+ use_shared_key == 1) {
__le32 le_tmp32;
val32 = ((pmlmeinfo->iv++) | (pmlmeinfo->key_index << 30));
@@ -2670,8 +2766,11 @@ void issue_auth(struct adapter *padapter, struct sta_info *psta, unsigned short
pframe = rtw_set_fixed_ie(pframe, _STATUS_CODE_, (unsigned char *)&le_tmp, &(pattrib->pktlen));
/* then checking to see if sending challenging text... */
- if ((pmlmeinfo->auth_seq == 3) && (pmlmeinfo->state & WIFI_FW_AUTH_STATE) && (use_shared_key == 1)) {
- pframe = rtw_set_ie(pframe, WLAN_EID_CHALLENGE, 128, pmlmeinfo->chg_txt, &(pattrib->pktlen));
+ if (pmlmeinfo->auth_seq == 3 &&
+ (pmlmeinfo->state & WIFI_FW_AUTH_STATE) &&
+ use_shared_key == 1) {
+ pframe = rtw_set_ie(pframe, WLAN_EID_CHALLENGE, 128,
+ pmlmeinfo->chg_txt, &pattrib->pktlen);
SetPrivacy(fctrl);
@@ -2694,7 +2793,8 @@ void issue_auth(struct adapter *padapter, struct sta_info *psta, unsigned short
}
-void issue_asocrsp(struct adapter *padapter, unsigned short status, struct sta_info *pstat, int pkt_type)
+void issue_asocrsp(struct adapter *padapter, unsigned short status,
+ struct sta_info *pstat, int pkt_type)
{
struct xmit_frame *pmgntframe;
struct ieee80211_hdr *pwlanhdr;
@@ -2755,18 +2855,25 @@ void issue_asocrsp(struct adapter *padapter, unsigned short status, struct sta_i
pframe = rtw_set_fixed_ie(pframe, _ASOC_ID_, (unsigned char *)&le_tmp, &(pattrib->pktlen));
if (pstat->bssratelen <= 8) {
- pframe = rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, pstat->bssratelen, pstat->bssrateset, &(pattrib->pktlen));
+ pframe = rtw_set_ie(pframe, WLAN_EID_SUPP_RATES,
+ pstat->bssratelen, pstat->bssrateset,
+ &pattrib->pktlen);
} else {
- pframe = rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, 8, pstat->bssrateset, &(pattrib->pktlen));
- pframe = rtw_set_ie(pframe, WLAN_EID_EXT_SUPP_RATES, (pstat->bssratelen-8), pstat->bssrateset+8, &(pattrib->pktlen));
+ pframe = rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, 8,
+ pstat->bssrateset, &pattrib->pktlen);
+ pframe = rtw_set_ie(pframe, WLAN_EID_EXT_SUPP_RATES,
+ pstat->bssratelen - 8, pstat->bssrateset + 8,
+ &pattrib->pktlen);
}
if ((pstat->flags & WLAN_STA_HT) && (pmlmepriv->htpriv.ht_option)) {
uint ie_len = 0;
+ u8 *beacon_ie = ie + _BEACON_IE_OFFSET_;
+ int beacon_len = pnetwork->ie_length - _BEACON_IE_OFFSET_;
/* FILL HT CAP INFO IE */
- /* p = hostapd_eid_ht_capabilities_info(hapd, p); */
- pbuf = rtw_get_ie(ie + _BEACON_IE_OFFSET_, WLAN_EID_HT_CAPABILITY, &ie_len, (pnetwork->ie_length - _BEACON_IE_OFFSET_));
+ pbuf = rtw_get_ie(beacon_ie, WLAN_EID_HT_CAPABILITY,
+ &ie_len, beacon_len);
if (pbuf && ie_len > 0) {
memcpy(pframe, pbuf, ie_len+2);
pframe += (ie_len+2);
@@ -2774,8 +2881,8 @@ void issue_asocrsp(struct adapter *padapter, unsigned short status, struct sta_i
}
/* FILL HT ADD INFO IE */
- /* p = hostapd_eid_ht_operation(hapd, p); */
- pbuf = rtw_get_ie(ie + _BEACON_IE_OFFSET_, WLAN_EID_HT_OPERATION, &ie_len, (pnetwork->ie_length - _BEACON_IE_OFFSET_));
+ pbuf = rtw_get_ie(beacon_ie, WLAN_EID_HT_OPERATION,
+ &ie_len, beacon_len);
if (pbuf && ie_len > 0) {
memcpy(pframe, pbuf, ie_len+2);
pframe += (ie_len+2);
@@ -2790,7 +2897,10 @@ void issue_asocrsp(struct adapter *padapter, unsigned short status, struct sta_i
unsigned char WMM_PARA_IE[] = {0x00, 0x50, 0xf2, 0x02, 0x01, 0x01};
for (pbuf = ie + _BEACON_IE_OFFSET_; ; pbuf += (ie_len + 2)) {
- pbuf = rtw_get_ie(pbuf, WLAN_EID_VENDOR_SPECIFIC, &ie_len, (pnetwork->ie_length - _BEACON_IE_OFFSET_ - (ie_len + 2)));
+ int remaining = pnetwork->ie_length - _BEACON_IE_OFFSET_ - (ie_len + 2);
+
+ pbuf = rtw_get_ie(pbuf, WLAN_EID_VENDOR_SPECIFIC,
+ &ie_len, remaining);
if (pbuf && !memcmp(pbuf+2, WMM_PARA_IE, 6)) {
memcpy(pframe, pbuf, ie_len+2);
pframe += (ie_len+2);
@@ -2880,7 +2990,13 @@ void issue_assocreq(struct adapter *padapter)
pattrib->pktlen += 2;
/* SSID */
- pframe = rtw_set_ie(pframe, WLAN_EID_SSID, pmlmeinfo->network.ssid.ssid_length, pmlmeinfo->network.ssid.ssid, &(pattrib->pktlen));
+ {
+ u8 *ssid = pmlmeinfo->network.ssid.ssid;
+ int ssid_len = pmlmeinfo->network.ssid.ssid_length;
+
+ pframe = rtw_set_ie(pframe, WLAN_EID_SSID, ssid_len, ssid,
+ &pattrib->pktlen);
+ }
/* supported rate & extended supported rate */
@@ -2928,10 +3044,15 @@ void issue_assocreq(struct adapter *padapter)
if (bssrate_len > 8) {
- pframe = rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, 8, bssrate, &(pattrib->pktlen));
- pframe = rtw_set_ie(pframe, WLAN_EID_EXT_SUPP_RATES, (bssrate_len - 8), (bssrate + 8), &(pattrib->pktlen));
- } else
- pframe = rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, bssrate_len, bssrate, &(pattrib->pktlen));
+ pframe = rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, 8, bssrate,
+ &pattrib->pktlen);
+ pframe = rtw_set_ie(pframe, WLAN_EID_EXT_SUPP_RATES,
+ bssrate_len - 8, bssrate + 8,
+ &pattrib->pktlen);
+ } else {
+ pframe = rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, bssrate_len,
+ bssrate, &pattrib->pktlen);
+ }
/* vendor specific IE, such as WPA, WMM, WPS */
for (i = sizeof(struct ndis_802_11_fix_ie); i < pmlmeinfo->network.ie_length;) {
@@ -2953,7 +3074,9 @@ void issue_assocreq(struct adapter *padapter)
vs_ie_length = 14;
}
- pframe = rtw_set_ie(pframe, WLAN_EID_VENDOR_SPECIFIC, vs_ie_length, pIE->data, &(pattrib->pktlen));
+ pframe = rtw_set_ie(pframe, WLAN_EID_VENDOR_SPECIFIC,
+ vs_ie_length, pIE->data,
+ &pattrib->pktlen);
}
break;
@@ -2963,15 +3086,22 @@ void issue_assocreq(struct adapter *padapter)
case WLAN_EID_HT_CAPABILITY:
if (padapter->mlmepriv.htpriv.ht_option) {
if (!(is_ap_in_tkip(padapter))) {
- memcpy(&(pmlmeinfo->HT_caps), pIE->data, sizeof(struct HT_caps_element));
- pframe = rtw_set_ie(pframe, WLAN_EID_HT_CAPABILITY, pIE->length, (u8 *)(&(pmlmeinfo->HT_caps)), &(pattrib->pktlen));
+ memcpy(&pmlmeinfo->HT_caps, pIE->data,
+ sizeof(struct HT_caps_element));
+ pframe = rtw_set_ie(pframe, WLAN_EID_HT_CAPABILITY,
+ pIE->length,
+ (u8 *)&pmlmeinfo->HT_caps,
+ &pattrib->pktlen);
}
}
break;
case WLAN_EID_EXT_CAPABILITY:
- if (padapter->mlmepriv.htpriv.ht_option)
- pframe = rtw_set_ie(pframe, WLAN_EID_EXT_CAPABILITY, pIE->length, pIE->data, &(pattrib->pktlen));
+ if (padapter->mlmepriv.htpriv.ht_option) {
+ pframe = rtw_set_ie(pframe, WLAN_EID_EXT_CAPABILITY,
+ pIE->length, pIE->data,
+ &pattrib->pktlen);
+ }
break;
default:
break;
@@ -3072,7 +3202,8 @@ static int _issue_nulldata(struct adapter *padapter, unsigned char *da,
* When wait_ms > 0, this function should be called at process context
* da == NULL for station mode
*/
-int issue_nulldata(struct adapter *padapter, unsigned char *da, unsigned int power_mode, int try_cnt, int wait_ms)
+int issue_nulldata(struct adapter *padapter, unsigned char *da,
+ unsigned int power_mode, int try_cnt, int wait_ms)
{
int ret;
int i = 0;
@@ -3217,7 +3348,8 @@ static int _issue_qos_nulldata(struct adapter *padapter, unsigned char *da,
/* when wait_ms >0 , this function should be called at process context */
/* da == NULL for station mode */
-int issue_qos_nulldata(struct adapter *padapter, unsigned char *da, u16 tid, int try_cnt, int wait_ms)
+int issue_qos_nulldata(struct adapter *padapter, unsigned char *da, u16 tid,
+ int try_cnt, int wait_ms)
{
int ret;
int i = 0;
@@ -3346,7 +3478,8 @@ int issue_deauth_ex(struct adapter *padapter, u8 *da, unsigned short reason, int
return ret;
}
-void issue_action_SA_Query(struct adapter *padapter, unsigned char *raddr, unsigned char action, unsigned short tid)
+void issue_action_SA_Query(struct adapter *padapter, unsigned char *raddr,
+ unsigned char action, unsigned short tid)
{
u8 category = RTW_WLAN_CATEGORY_SA_QUERY;
struct xmit_frame *pmgntframe;
@@ -3413,7 +3546,8 @@ void issue_action_SA_Query(struct adapter *padapter, unsigned char *raddr, unsig
dump_mgntframe(padapter, pmgntframe);
}
-void issue_action_BA(struct adapter *padapter, unsigned char *raddr, unsigned char action, unsigned short status)
+void issue_action_BA(struct adapter *padapter, unsigned char *raddr,
+ unsigned char action, unsigned short status)
{
u8 category = RTW_WLAN_CATEGORY_BACK;
u16 start_seq;
@@ -3516,17 +3650,20 @@ void issue_action_BA(struct adapter *padapter, unsigned char *raddr, unsigned ch
else
rtw_hal_get_def_var(padapter,
HW_VAR_MAX_RX_AMPDU_FACTOR, &max_rx_ampdu_factor);
-
- if (max_rx_ampdu_factor == IEEE80211_HT_MAX_AMPDU_64K)
- BA_para_set = ((le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f) | 0x1000); /* 64 buffer size */
- else if (max_rx_ampdu_factor == IEEE80211_HT_MAX_AMPDU_32K)
- BA_para_set = ((le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f) | 0x0800); /* 32 buffer size */
- else if (max_rx_ampdu_factor == IEEE80211_HT_MAX_AMPDU_16K)
- BA_para_set = ((le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f) | 0x0400); /* 16 buffer size */
- else if (max_rx_ampdu_factor == IEEE80211_HT_MAX_AMPDU_8K)
- BA_para_set = ((le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f) | 0x0200); /* 8 buffer size */
- else
- BA_para_set = ((le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f) | 0x1000); /* 64 buffer size */
+ {
+ u16 ba_mask = le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f;
+
+ if (max_rx_ampdu_factor == IEEE80211_HT_MAX_AMPDU_64K)
+ BA_para_set = ba_mask | 0x1000; /* 64 buffer size */
+ else if (max_rx_ampdu_factor == IEEE80211_HT_MAX_AMPDU_32K)
+ BA_para_set = ba_mask | 0x0800; /* 32 buffer size */
+ else if (max_rx_ampdu_factor == IEEE80211_HT_MAX_AMPDU_16K)
+ BA_para_set = ba_mask | 0x0400; /* 16 buffer size */
+ else if (max_rx_ampdu_factor == IEEE80211_HT_MAX_AMPDU_8K)
+ BA_para_set = ba_mask | 0x0200; /* 8 buffer size */
+ else
+ BA_para_set = ba_mask | 0x1000; /* 64 buffer size */
+ }
if (hal_btcoex_IsBTCoexCtrlAMPDUSize(padapter) &&
padapter->driver_rx_ampdu_factor == 0xFF) {
@@ -3542,8 +3679,16 @@ void issue_action_BA(struct adapter *padapter, unsigned char *raddr, unsigned ch
else /* auto */
le_tmp = cpu_to_le16(BA_para_set);
- pframe = rtw_set_fixed_ie(pframe, 2, (unsigned char *)(&(le_tmp)), &(pattrib->pktlen));
- pframe = rtw_set_fixed_ie(pframe, 2, (unsigned char *)(&(pmlmeinfo->ADDBA_req.BA_timeout_value)), &(pattrib->pktlen));
+ pframe = rtw_set_fixed_ie(pframe, 2, (unsigned char *)&le_tmp,
+ &pattrib->pktlen);
+ {
+ unsigned char *ba_timeout;
+
+ ba_timeout = (unsigned char *)
+ &pmlmeinfo->ADDBA_req.BA_timeout_value;
+ pframe = rtw_set_fixed_ie(pframe, 2, ba_timeout,
+ &pattrib->pktlen);
+ }
break;
case 2:/* DELBA */
BA_para_set = (status & 0x1F) << 3;
@@ -3657,7 +3802,13 @@ static void issue_action_BSSCoexistPacket(struct adapter *padapter)
pbss_network = (struct wlan_bssid_ex *)&pnetwork->network;
- p = rtw_get_ie(pbss_network->ies + _FIXED_IE_LENGTH_, WLAN_EID_HT_CAPABILITY, &len, pbss_network->ie_length - _FIXED_IE_LENGTH_);
+ {
+ u8 *bss_ie = pbss_network->ies + _FIXED_IE_LENGTH_;
+ int bss_len = pbss_network->ie_length - _FIXED_IE_LENGTH_;
+
+ p = rtw_get_ie(bss_ie, WLAN_EID_HT_CAPABILITY,
+ &len, bss_len);
+ }
if (!p || len == 0) {/* non-HT */
if (pbss_network->configuration.ds_config <= 0)
@@ -3692,7 +3843,9 @@ static void issue_action_BSSCoexistPacket(struct adapter *padapter)
}
}
- pframe = rtw_set_ie(pframe, WLAN_EID_BSS_INTOLERANT_CHL_REPORT, k, InfoContent, &(pattrib->pktlen));
+ pframe = rtw_set_ie(pframe,
+ WLAN_EID_BSS_INTOLERANT_CHL_REPORT,
+ k, InfoContent, &pattrib->pktlen);
}
@@ -3762,9 +3915,12 @@ unsigned int send_beacon(struct adapter *padapter)
cond_resched();
rtw_hal_get_hwreg(padapter, HW_VAR_BCN_VALID, (u8 *)(&bxmitok));
poll++;
- } while ((poll%10) != 0 && false == bxmitok && !padapter->bSurpriseRemoved && !padapter->bDriverStopped);
+ } while ((poll % 10) != 0 && !bxmitok &&
+ !padapter->bSurpriseRemoved &&
+ !padapter->bDriverStopped);
- } while (false == bxmitok && issue < 100 && !padapter->bSurpriseRemoved && !padapter->bDriverStopped);
+ } while (!bxmitok && issue < 100 &&
+ !padapter->bSurpriseRemoved && !padapter->bDriverStopped);
if (padapter->bSurpriseRemoved || padapter->bDriverStopped)
return _FAIL;
@@ -3804,10 +3960,14 @@ void site_survey(struct adapter *padapter)
if (pmlmeext->sitesurvey_res.channel_idx == 0) {
#ifdef DBG_FIXED_CHAN
if (pmlmeext->fixed_chan != 0xff)
- set_channel_bwmode(padapter, pmlmeext->fixed_chan, HAL_PRIME_CHNL_OFFSET_DONT_CARE, CHANNEL_WIDTH_20);
+ set_channel_bwmode(padapter, pmlmeext->fixed_chan,
+ HAL_PRIME_CHNL_OFFSET_DONT_CARE,
+ CHANNEL_WIDTH_20);
else
#endif
- set_channel_bwmode(padapter, survey_channel, HAL_PRIME_CHNL_OFFSET_DONT_CARE, CHANNEL_WIDTH_20);
+ set_channel_bwmode(padapter, survey_channel,
+ HAL_PRIME_CHNL_OFFSET_DONT_CARE,
+ CHANNEL_WIDTH_20);
} else {
#ifdef DBG_FIXED_CHAN
if (pmlmeext->fixed_chan != 0xff)
@@ -3856,7 +4016,9 @@ void site_survey(struct adapter *padapter)
/* switch back to the original channel */
/* SelectChannel(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset); */
- set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode);
+ set_channel_bwmode(padapter, pmlmeext->cur_channel,
+ pmlmeext->cur_ch_offset,
+ pmlmeext->cur_bwmode);
/* flush 4-AC Queue after site_survey */
/* val8 = 0; */
@@ -3893,7 +4055,8 @@ void site_survey(struct adapter *padapter)
}
/* collect bss info from Beacon and Probe request/response frames. */
-u8 collect_bss_info(struct adapter *padapter, union recv_frame *precv_frame, struct wlan_bssid_ex *bssid)
+u8 collect_bss_info(struct adapter *padapter, union recv_frame *precv_frame,
+ struct wlan_bssid_ex *bssid)
{
int i;
u32 len;
@@ -3940,9 +4103,13 @@ u8 collect_bss_info(struct adapter *padapter, union recv_frame *precv_frame, str
memcpy(bssid->ies, (pframe + sizeof(struct ieee80211_hdr_3addr)), bssid->ie_length);
/* get the signal strength */
- bssid->rssi = precv_frame->u.hdr.attrib.phy_info.RecvSignalPower; /* in dBM.raw data */
- bssid->phy_info.signal_quality = precv_frame->u.hdr.attrib.phy_info.SignalQuality;/* in percentage */
- bssid->phy_info.signal_strength = precv_frame->u.hdr.attrib.phy_info.SignalStrength;/* in percentage */
+ {
+ struct phy_info *phy = &precv_frame->u.hdr.attrib.phy_info;
+
+ bssid->rssi = phy->RecvSignalPower; /* in dBM.raw data */
+ bssid->phy_info.signal_quality = phy->SignalQuality; /* in percentage */
+ bssid->phy_info.signal_strength = phy->SignalStrength; /* in percentage */
+ }
/* checking SSID */
p = rtw_get_ie(bssid->ies + ie_offset, WLAN_EID_SSID, &len, bssid->ie_length - ie_offset);
@@ -3971,7 +4138,8 @@ u8 collect_bss_info(struct adapter *padapter, union recv_frame *precv_frame, str
i = len;
}
- p = rtw_get_ie(bssid->ies + ie_offset, WLAN_EID_EXT_SUPP_RATES, &len, bssid->ie_length - ie_offset);
+ p = rtw_get_ie(bssid->ies + ie_offset, WLAN_EID_EXT_SUPP_RATES, &len,
+ bssid->ie_length - ie_offset);
if (p) {
if (len > (NDIS_802_11_LENGTH_RATES_EX-i))
return _FAIL;
@@ -4029,7 +4197,8 @@ u8 collect_bss_info(struct adapter *padapter, union recv_frame *precv_frame, str
if ((pregistrypriv->wifi_spec == 1) && (false == pmlmeinfo->bwmode_updated)) {
struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
- p = rtw_get_ie(bssid->ies + ie_offset, WLAN_EID_HT_CAPABILITY, &len, bssid->ie_length - ie_offset);
+ p = rtw_get_ie(bssid->ies + ie_offset, WLAN_EID_HT_CAPABILITY, &len,
+ bssid->ie_length - ie_offset);
if (p && len > 0) {
struct HT_caps_element *pHT_caps;
@@ -4073,8 +4242,8 @@ void start_create_ibss(struct adapter *padapter)
rtw_hal_set_hwreg(padapter, HW_VAR_DO_IQK, NULL);
/* switch channel */
- /* SelectChannel(padapter, pmlmeext->cur_channel, HAL_PRIME_CHNL_OFFSET_DONT_CARE); */
- set_channel_bwmode(padapter, pmlmeext->cur_channel, HAL_PRIME_CHNL_OFFSET_DONT_CARE, CHANNEL_WIDTH_20);
+ set_channel_bwmode(padapter, pmlmeext->cur_channel,
+ HAL_PRIME_CHNL_OFFSET_DONT_CARE, CHANNEL_WIDTH_20);
beacon_timing_control(padapter);
@@ -4202,7 +4371,8 @@ void start_clnt_assoc(struct adapter *padapter)
set_link_timer(pmlmeext, REASSOC_TO);
}
-unsigned int receive_disconnect(struct adapter *padapter, unsigned char *MacAddr, unsigned short reason)
+unsigned int receive_disconnect(struct adapter *padapter, unsigned char *MacAddr,
+ unsigned short reason)
{
struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info);
@@ -4249,7 +4419,8 @@ static void process_80211d(struct adapter *padapter, struct wlan_bssid_ex *bssid
u8 noc; /* number of channel */
u8 j, k;
- ie = rtw_get_ie(bssid->ies + _FIXED_IE_LENGTH_, WLAN_EID_COUNTRY, &len, bssid->ie_length - _FIXED_IE_LENGTH_);
+ ie = rtw_get_ie(bssid->ies + _FIXED_IE_LENGTH_, WLAN_EID_COUNTRY, &len,
+ bssid->ie_length - _FIXED_IE_LENGTH_);
if (!ie)
return;
if (len < 6)
@@ -4510,7 +4681,8 @@ void report_join_res(struct adapter *padapter, int res)
pc2h_evt_hdr->seq = atomic_inc_return(&pmlmeext->event_seq);
pjoinbss_evt = (struct joinbss_event *)(pevtcmd + sizeof(struct C2HEvent_Header));
- memcpy((unsigned char *)(&(pjoinbss_evt->network.network)), &(pmlmeinfo->network), sizeof(struct wlan_bssid_ex));
+ memcpy((unsigned char *)(&(pjoinbss_evt->network.network)),
+ &(pmlmeinfo->network), sizeof(struct wlan_bssid_ex));
pjoinbss_evt->network.join_res = pjoinbss_evt->network.aid = res;
@@ -4680,7 +4852,9 @@ void update_sta_info(struct adapter *padapter, struct sta_info *psta)
psta->htpriv.ampdu_enable = pmlmepriv->htpriv.ampdu_enable;
- psta->htpriv.rx_ampdu_min_spacing = (pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para&IEEE80211_HT_CAP_AMPDU_DENSITY)>>2;
+ psta->htpriv.rx_ampdu_min_spacing =
+ (pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para &
+ IEEE80211_HT_CAP_AMPDU_DENSITY) >> 2;
if (support_short_GI(padapter, &(pmlmeinfo->HT_caps), CHANNEL_WIDTH_20))
psta->htpriv.sgi_20m = true;
@@ -4895,7 +5069,9 @@ void mlmeext_sta_add_event_callback(struct adapter *padapter, struct sta_info *p
rtw_hal_update_sta_rate_mask(padapter, psta);
/* ToDo: HT for Ad-hoc */
- psta->wireless_mode = rtw_check_network_type(psta->bssrateset, psta->bssratelen, pmlmeext->cur_channel);
+ psta->wireless_mode = rtw_check_network_type(psta->bssrateset,
+ psta->bssratelen,
+ pmlmeext->cur_channel);
psta->raid = networktype_to_raid_ex(padapter, psta);
/* rate radaptive */
@@ -4989,9 +5165,14 @@ void linked_status_chk(struct adapter *padapter)
{
if (rx_chk != _SUCCESS) {
if (pmlmeext->retry == 0) {
- issue_probereq_ex(padapter, &pmlmeinfo->network.ssid, pmlmeinfo->network.mac_address, 0, 0, 0, 0);
- issue_probereq_ex(padapter, &pmlmeinfo->network.ssid, pmlmeinfo->network.mac_address, 0, 0, 0, 0);
- issue_probereq_ex(padapter, &pmlmeinfo->network.ssid, pmlmeinfo->network.mac_address, 0, 0, 0, 0);
+ struct ndis_802_11_ssid *ssid;
+ u8 *mac;
+
+ ssid = &pmlmeinfo->network.ssid;
+ mac = pmlmeinfo->network.mac_address;
+ issue_probereq_ex(padapter, ssid, mac, 0, 0, 0, 0);
+ issue_probereq_ex(padapter, ssid, mac, 0, 0, 0, 0);
+ issue_probereq_ex(padapter, ssid, mac, 0, 0, 0, 0);
}
}
@@ -5409,9 +5590,12 @@ u8 disconnect_hdl(struct adapter *padapter, unsigned char *pbuf)
u8 val8;
if (is_client_associated_to_ap(padapter))
- issue_deauth_ex(padapter, pnetwork->mac_address, WLAN_REASON_DEAUTH_LEAVING, param->deauth_timeout_ms/100, 100);
+ issue_deauth_ex(padapter, pnetwork->mac_address,
+ WLAN_REASON_DEAUTH_LEAVING,
+ param->deauth_timeout_ms / 100, 100);
- if (((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) || ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)) {
+ if (((pmlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE) ||
+ ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE)) {
/* Stop BCN */
val8 = 0;
rtw_hal_set_hwreg(padapter, HW_VAR_BCN_FUNC, (u8 *)(&val8));
@@ -5529,7 +5713,8 @@ u8 sitesurvey_cmd_hdl(struct adapter *padapter, u8 *pbuf)
}
}
- if ((pmlmeext->sitesurvey_res.state == SCAN_START) || (pmlmeext->sitesurvey_res.state == SCAN_TXNULL)) {
+ if ((pmlmeext->sitesurvey_res.state == SCAN_START) ||
+ (pmlmeext->sitesurvey_res.state == SCAN_TXNULL)) {
/* disable dynamic functions, such as high power, DIG */
Save_DM_Func_Flag(padapter);
Switch_DM_Func(padapter, DYNAMIC_FUNC_DISABLE, false);
@@ -5936,8 +6121,11 @@ u8 set_chplan_hdl(struct adapter *padapter, unsigned char *pbuf)
setChannelPlan_param = (struct SetChannelPlan_param *)pbuf;
- pmlmeext->max_chan_nums = init_channel_set(padapter, setChannelPlan_param->channel_plan, pmlmeext->channel_set);
- init_channel_list(padapter, pmlmeext->channel_set, pmlmeext->max_chan_nums, &pmlmeext->channel_list);
+ pmlmeext->max_chan_nums = init_channel_set(padapter,
+ setChannelPlan_param->channel_plan,
+ pmlmeext->channel_set);
+ init_channel_list(padapter, pmlmeext->channel_set,
+ pmlmeext->max_chan_nums, &pmlmeext->channel_list);
if (padapter->rtw_wdev && padapter->rtw_wdev->wiphy) {
struct regulatory_request request;
diff --git a/drivers/staging/rtl8723bs/core/rtw_pwrctrl.c b/drivers/staging/rtl8723bs/core/rtw_pwrctrl.c
index 0ef788abf403..405df520e5cc 100644
--- a/drivers/staging/rtl8723bs/core/rtw_pwrctrl.c
+++ b/drivers/staging/rtl8723bs/core/rtw_pwrctrl.c
@@ -335,7 +335,8 @@ static u8 PS_RDY_CHECK(struct adapter *padapter)
return true;
}
-void rtw_set_ps_mode(struct adapter *padapter, u8 ps_mode, u8 smart_ps, u8 bcn_ant_mode, const char *msg)
+void rtw_set_ps_mode(struct adapter *padapter, u8 ps_mode, u8 smart_ps,
+ u8 bcn_ant_mode, const char *msg)
{
struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter);
diff --git a/drivers/staging/rtl8723bs/core/rtw_recv.c b/drivers/staging/rtl8723bs/core/rtw_recv.c
index e893cb6fa273..341ab6ff5a88 100644
--- a/drivers/staging/rtl8723bs/core/rtw_recv.c
+++ b/drivers/staging/rtl8723bs/core/rtw_recv.c
@@ -47,14 +47,23 @@ signed int _rtw_init_recv_priv(struct recv_priv *precvpriv, struct adapter *pada
precvpriv->free_recvframe_cnt = NR_RECVFRAME;
- precvpriv->pallocated_frame_buf = vzalloc(NR_RECVFRAME * sizeof(union recv_frame) + RXFRAME_ALIGN_SZ);
+ {
+ size_t sz = NR_RECVFRAME * sizeof(union recv_frame) + RXFRAME_ALIGN_SZ;
+
+ precvpriv->pallocated_frame_buf = vzalloc(sz);
+ }
if (!precvpriv->pallocated_frame_buf) {
res = _FAIL;
goto exit;
}
- precvpriv->precv_frame_buf = (u8 *)N_BYTE_ALIGMENT((SIZE_PTR)(precvpriv->pallocated_frame_buf), RXFRAME_ALIGN_SZ);
+ {
+ SIZE_PTR aligned = N_BYTE_ALIGMENT((SIZE_PTR)(precvpriv->pallocated_frame_buf),
+ RXFRAME_ALIGN_SZ);
+
+ precvpriv->precv_frame_buf = (u8 *)aligned;
+ }
/* precvpriv->precv_frame_buf = precvpriv->pallocated_frame_buf + RXFRAME_ALIGN_SZ - */
/* ((SIZE_PTR) (precvpriv->pallocated_frame_buf) &(RXFRAME_ALIGN_SZ-1)); */
@@ -390,11 +399,15 @@ static signed int recvframe_chkmic(struct adapter *adapter, union recv_frame *p
mickey = &stainfo->dot11tkiprxmickey.skey[0];
}
- datalen = precvframe->u.hdr.len-prxattrib->hdrlen-prxattrib->iv_len-prxattrib->icv_len-8;/* icv_len included the mic code */
+ /* icv_len included the mic code */
+ datalen = precvframe->u.hdr.len - prxattrib->hdrlen -
+ prxattrib->iv_len - prxattrib->icv_len - 8;
pframe = precvframe->u.hdr.rx_data;
- payload = pframe+prxattrib->hdrlen+prxattrib->iv_len;
+ payload = pframe + prxattrib->hdrlen + prxattrib->iv_len;
- rtw_seccalctkipmic(mickey, pframe, payload, datalen, &miccode[0], (unsigned char)prxattrib->priority); /* care the length of the data */
+ /* care the length of the data */
+ rtw_seccalctkipmic(mickey, pframe, payload, datalen,
+ &miccode[0], (unsigned char)prxattrib->priority);
pframemic = payload+datalen;
@@ -409,7 +422,10 @@ static signed int recvframe_chkmic(struct adapter *adapter, union recv_frame *p
if (bmic_err == true) {
/* double check key_index for some timing issue , */
/* cannot compare with psecuritypriv->dot118021XGrpKeyid also cause timing issue */
- if ((is_multicast_ether_addr(prxattrib->ra) == true) && (prxattrib->key_index != pmlmeinfo->key_index))
+ bool is_mcast = is_multicast_ether_addr(prxattrib->ra);
+ bool key_mismatch = prxattrib->key_index != pmlmeinfo->key_index;
+
+ if (is_mcast && key_mismatch)
brpt_micerror = false;
if (prxattrib->bdecrypted && brpt_micerror)
@@ -463,28 +479,37 @@ static union recv_frame *decryptor(struct adapter *padapter, union recv_frame *p
}
}
- if ((prxattrib->encrypt > 0) && ((prxattrib->bdecrypted == 0) || (psecuritypriv->sw_decrypt == true))) {
- psecuritypriv->hw_decrypted = false;
+ {
+ bool need_decrypt = prxattrib->encrypt > 0;
+ bool not_decrypted = !prxattrib->bdecrypted;
+ bool sw_decrypt = psecuritypriv->sw_decrypt;
+ bool decrypted_ok;
- switch (prxattrib->encrypt) {
- case _WEP40_:
- case _WEP104_:
- rtw_wep_decrypt(padapter, (u8 *)precv_frame);
- break;
- case _TKIP_:
- res = rtw_tkip_decrypt(padapter, (u8 *)precv_frame);
- break;
- case _AES_:
- res = rtw_aes_decrypt(padapter, (u8 *)precv_frame);
- break;
- default:
+ if (need_decrypt && (not_decrypted || sw_decrypt)) {
+ psecuritypriv->hw_decrypted = false;
+
+ switch (prxattrib->encrypt) {
+ case _WEP40_:
+ case _WEP104_:
+ rtw_wep_decrypt(padapter, (u8 *)precv_frame);
+ break;
+ case _TKIP_:
+ res = rtw_tkip_decrypt(padapter, (u8 *)precv_frame);
+ break;
+ case _AES_:
+ res = rtw_aes_decrypt(padapter, (u8 *)precv_frame);
+ break;
+ default:
break;
+ }
+ } else {
+ decrypted_ok = prxattrib->bdecrypted == 1 &&
+ prxattrib->encrypt > 0 &&
+ (psecuritypriv->busetkipkey == 1 ||
+ prxattrib->encrypt != _TKIP_);
+ if (decrypted_ok)
+ psecuritypriv->hw_decrypted = true;
}
- } else if (prxattrib->bdecrypted == 1 && prxattrib->encrypt > 0 &&
- (psecuritypriv->busetkipkey == 1 || prxattrib->encrypt != _TKIP_)
- ) {
- psecuritypriv->hw_decrypted = true;
- } else {
}
if (res == _FAIL) {
@@ -564,7 +589,8 @@ static union recv_frame *portctrl(struct adapter *adapter, union recv_frame *pre
return prtnframe;
}
-static signed int recv_decache(union recv_frame *precv_frame, u8 bretry, struct stainfo_rxcache *prxcache)
+static signed int recv_decache(union recv_frame *precv_frame, u8 bretry,
+ struct stainfo_rxcache *prxcache)
{
signed int tid = precv_frame->u.hdr.attrib.priority;
@@ -669,7 +695,8 @@ static void process_wmmps_data(struct adapter *padapter, union recv_frame *precv
}
}
-static void count_rx_stats(struct adapter *padapter, union recv_frame *prframe, struct sta_info *sta)
+static void count_rx_stats(struct adapter *padapter, union recv_frame *prframe,
+ struct sta_info *sta)
{
int sz;
struct sta_info *psta = NULL;
@@ -1149,7 +1176,8 @@ static union recv_frame *recvframe_defrag(struct adapter *adapter,
}
/* check if need to defrag, if needed queue the frame to defrag_q */
-static union recv_frame *recvframe_chk_defrag(struct adapter *padapter, union recv_frame *precv_frame)
+static union recv_frame *recvframe_chk_defrag(struct adapter *padapter,
+ union recv_frame *precv_frame)
{
u8 ismfrag;
u8 fragnum;
@@ -1257,7 +1285,8 @@ static signed int validate_recv_mgnt_frame(struct adapter *padapter, union recv_
{
/* for rx pkt statistics */
- struct sta_info *psta = rtw_get_stainfo(&padapter->stapriv, GetAddr2Ptr(precv_frame->u.hdr.rx_data));
+ u8 *addr2 = GetAddr2Ptr(precv_frame->u.hdr.rx_data);
+ struct sta_info *psta = rtw_get_stainfo(&padapter->stapriv, addr2);
if (psta) {
psta->sta_stats.rx_mgnt_pkts++;
@@ -1622,7 +1651,8 @@ static signed int wlanhdr_to_ethhdr(union recv_frame *precvframe)
return _SUCCESS;
}
-static struct sk_buff *rtw_alloc_msdu_pkt(union recv_frame *prframe, u16 nSubframe_Length, u8 *pdata)
+static struct sk_buff *rtw_alloc_msdu_pkt(union recv_frame *prframe,
+ u16 nSubframe_Length, u8 *pdata)
{
u16 eth_type;
struct sk_buff *sub_skb;
@@ -1662,7 +1692,8 @@ static struct sk_buff *rtw_alloc_msdu_pkt(union recv_frame *prframe, u16 nSubfra
return sub_skb;
}
-static void rtw_recv_indicate_pkt(struct adapter *padapter, struct sk_buff *pkt, struct rx_pkt_attrib *pattrib)
+static void rtw_recv_indicate_pkt(struct adapter *padapter, struct sk_buff *pkt,
+ struct rx_pkt_attrib *pattrib)
{
struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
@@ -1816,7 +1847,8 @@ static int check_indicate_seq(struct recv_reorder_ctrl *preorder_ctrl, u16 seq_n
return true;
}
-static int enqueue_reorder_recvframe(struct recv_reorder_ctrl *preorder_ctrl, union recv_frame *prframe)
+static int enqueue_reorder_recvframe(struct recv_reorder_ctrl *preorder_ctrl,
+ union recv_frame *prframe)
{
struct rx_pkt_attrib *pattrib = &prframe->u.hdr.attrib;
struct __queue *ppending_recvframe_queue = &preorder_ctrl->pending_recvframe_queue;
@@ -1861,7 +1893,8 @@ static int enqueue_reorder_recvframe(struct recv_reorder_ctrl *preorder_ctrl, un
}
-static void recv_indicatepkts_pkt_loss_cnt(struct debug_priv *pdbgpriv, u64 prev_seq, u64 current_seq)
+static void recv_indicatepkts_pkt_loss_cnt(struct debug_priv *pdbgpriv,
+ u64 prev_seq, u64 current_seq)
{
if (current_seq < prev_seq)
pdbgpriv->dbg_rx_ampdu_loss_count += (4096 + current_seq - prev_seq);
@@ -1907,7 +1940,9 @@ static int rtw_recv_indicatepkt(struct adapter *padapter, union recv_frame *prec
return _FAIL;
}
-static int recv_indicatepkts_in_order(struct adapter *padapter, struct recv_reorder_ctrl *preorder_ctrl, int bforced)
+static int recv_indicatepkts_in_order(struct adapter *padapter,
+ struct recv_reorder_ctrl *preorder_ctrl,
+ int bforced)
{
struct list_head *phead, *plist;
union recv_frame *prframe;
@@ -2118,7 +2153,8 @@ static int process_recv_indicatepkts(struct adapter *padapter, union recv_frame
if (phtpriv->ht_option == true) { /* B/G/N Mode */
/* prframe->u.hdr.preorder_ctrl = &precvpriv->recvreorder_ctrl[pattrib->priority]; */
- if (recv_indicatepkt_reorder(padapter, prframe) != _SUCCESS) { /* including perform A-MPDU Rx Ordering Buffer Control */
+ /* including perform A-MPDU Rx Ordering Buffer Control */
+ if (recv_indicatepkt_reorder(padapter, prframe) != _SUCCESS) {
if ((padapter->bDriverStopped == false) &&
(padapter->bSurpriseRemoved == false)) {
@@ -2277,12 +2313,15 @@ static void rtw_signal_stat_timer_hdl(struct timer_list *t)
u8 avg_signal_qual = 0;
u32 num_signal_strength = 0;
u32 __maybe_unused num_signal_qual = 0;
- u8 _alpha = 5; /* this value is based on converging_constant = 5000 and sampling_interval = 1000 */
+ /* based on converging_constant = 5000 and sampling_interval = 1000 */
+ u8 _alpha = 5;
if (adapter->recvpriv.is_signal_dbg) {
/* update the user specific value, signal_strength_dbg, to signal_strength, rssi */
- adapter->recvpriv.signal_strength = adapter->recvpriv.signal_strength_dbg;
- adapter->recvpriv.rssi = (s8)translate_percentage_to_dbm((u8)adapter->recvpriv.signal_strength_dbg);
+ u8 strength_dbg = adapter->recvpriv.signal_strength_dbg;
+
+ adapter->recvpriv.signal_strength = strength_dbg;
+ adapter->recvpriv.rssi = (s8)translate_percentage_to_dbm(strength_dbg);
} else {
if (recvpriv->signal_strength_data.update_req == 0) {/* update_req is clear, means we got rx */
@@ -2300,9 +2339,11 @@ static void rtw_signal_stat_timer_hdl(struct timer_list *t)
}
if (num_signal_strength == 0) {
- if (rtw_get_on_cur_ch_time(adapter) == 0 ||
- jiffies_to_msecs(jiffies - rtw_get_on_cur_ch_time(adapter)) < 2 * adapter->mlmeextpriv.mlmext_info.bcn_interval
- ) {
+ unsigned long on_ch_time = rtw_get_on_cur_ch_time(adapter);
+ u32 bcn_intvl = adapter->mlmeextpriv.mlmext_info.bcn_interval;
+
+ if (on_ch_time == 0 ||
+ jiffies_to_msecs(jiffies - on_ch_time) < 2 * bcn_intvl) {
goto set_timer;
}
}
diff --git a/drivers/staging/rtl8723bs/core/rtw_security.c b/drivers/staging/rtl8723bs/core/rtw_security.c
index 2f941ffbd465..11231f0d8fd0 100644
--- a/drivers/staging/rtl8723bs/core/rtw_security.c
+++ b/drivers/staging/rtl8723bs/core/rtw_security.c
@@ -60,9 +60,12 @@ void rtw_wep_encrypt(struct adapter *padapter, u8 *pxmitframe)
keylength = psecuritypriv->dot11DefKeylen[psecuritypriv->dot11PrivacyKeyIndex];
for (curfragnum = 0; curfragnum < pattrib->nr_frags; curfragnum++) {
+ u8 keyidx = psecuritypriv->dot11PrivacyKeyIndex;
+ u8 *defkey = psecuritypriv->dot11DefKey[keyidx].skey;
+
iv = pframe + pattrib->hdrlen;
memcpy(&wepkey[0], iv, 3);
- memcpy(&wepkey[3], &psecuritypriv->dot11DefKey[psecuritypriv->dot11PrivacyKeyIndex].skey[0], keylength);
+ memcpy(&wepkey[3], defkey, keylength);
payload = pframe + pattrib->iv_len + pattrib->hdrlen;
if ((curfragnum + 1) == pattrib->nr_frags) { /* the last fragment */
@@ -1063,7 +1066,8 @@ static signed int aes_decipher(u8 *key, uint hdrlen,
if (hdrlen != WLAN_HDR_A3_QOS_LEN)
hdrlen += 2;
- } else if ((frtype == WIFI_DATA) && /* only for data packet . add for CONFIG_IEEE80211W, none 11w also can use */
+ /* only for data packet . add for CONFIG_IEEE80211W, none 11w also can use */
+ } else if ((frtype == WIFI_DATA) &&
((frsubtype == 0x08) ||
(frsubtype == 0x09) ||
(frsubtype == 0x0a) ||
@@ -1487,8 +1491,9 @@ void rtw_sec_restore_wep_key(struct adapter *adapter)
{
struct security_priv *securitypriv = &(adapter->securitypriv);
signed int keyid;
+ u32 alg = securitypriv->dot11PrivacyAlgrthm;
- if ((_WEP40_ == securitypriv->dot11PrivacyAlgrthm) || (_WEP104_ == securitypriv->dot11PrivacyAlgrthm)) {
+ if ((alg == _WEP40_) || (alg == _WEP104_)) {
for (keyid = 0; keyid < 4; keyid++) {
if (securitypriv->key_mask & BIT(keyid)) {
if (keyid == securitypriv->dot11PrivacyKeyIndex)
diff --git a/drivers/staging/rtl8723bs/core/rtw_wlan_util.c b/drivers/staging/rtl8723bs/core/rtw_wlan_util.c
index 3f71e62d0198..6b1377dc5fec 100644
--- a/drivers/staging/rtl8723bs/core/rtw_wlan_util.c
+++ b/drivers/staging/rtl8723bs/core/rtw_wlan_util.c
@@ -335,7 +335,8 @@ void r8723bs_select_channel(struct adapter *padapter, unsigned char channel)
mutex_unlock(&(adapter_to_dvobj(padapter)->setch_mutex));
}
-void set_channel_bwmode(struct adapter *padapter, unsigned char channel, unsigned char channel_offset, unsigned short bwmode)
+void set_channel_bwmode(struct adapter *padapter, unsigned char channel,
+ unsigned char channel_offset, unsigned short bwmode)
{
u8 center_ch, chnl_offset80 = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
@@ -351,7 +352,9 @@ void set_channel_bwmode(struct adapter *padapter, unsigned char channel, unsigne
rtw_set_oper_bw(padapter, bwmode);
rtw_set_oper_choffset(padapter, channel_offset);
- rtw_hal_set_chnl_bw(padapter, center_ch, bwmode, channel_offset, chnl_offset80); /* set center channel */
+ /* set center channel */
+ rtw_hal_set_chnl_bw(padapter, center_ch, bwmode,
+ channel_offset, chnl_offset80);
mutex_unlock(&(adapter_to_dvobj(padapter)->setch_mutex));
}
@@ -381,10 +384,14 @@ int is_client_associated_to_ap(struct adapter *padapter)
pmlmeext = &padapter->mlmeextpriv;
pmlmeinfo = &(pmlmeext->mlmext_info);
- if ((pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) && ((pmlmeinfo->state & 0x03) == WIFI_FW_STATION_STATE))
- return true;
- else
- return _FAIL;
+ {
+ bool assoc_ok = pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS;
+ bool is_station = (pmlmeinfo->state & 0x03) == WIFI_FW_STATION_STATE;
+
+ if (assoc_ok && is_station)
+ return true;
+ }
+ return _FAIL;
}
int is_client_associated_to_ibss(struct adapter *padapter)
@@ -392,10 +399,14 @@ int is_client_associated_to_ibss(struct adapter *padapter)
struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info);
- if ((pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) && ((pmlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE))
- return true;
- else
- return _FAIL;
+ {
+ bool assoc_ok = pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS;
+ bool is_adhoc = (pmlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE;
+
+ if (assoc_ok && is_adhoc)
+ return true;
+ }
+ return _FAIL;
}
int is_IBSS_empty(struct adapter *padapter)
@@ -467,7 +478,7 @@ void _write_cam(struct adapter *padapter, u8 entry, u16 ctrl, u8 *mac, u8 *key)
void _clear_cam_entry(struct adapter *padapter, u8 entry)
{
unsigned char null_sta[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
- unsigned char null_key[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+ unsigned char null_key[16] = {0};
_write_cam(padapter, entry, 0, null_sta, null_key);
}
@@ -571,62 +582,74 @@ s16 rtw_camid_alloc(struct adapter *adapter, struct sta_info *sta, u8 kid)
mlmeinfo = &adapter->mlmeextpriv.mlmext_info;
- if ((((mlmeinfo->state & 0x03) == WIFI_FW_AP_STATE) || ((mlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE))
- && !sta) {
- /* AP/Ad-hoc mode group key: static alloction to default key by key ID */
- if (kid > 3) {
- netdev_dbg(adapter->pnetdev,
- FUNC_ADPT_FMT " group key with invalid key id:%u\n",
- FUNC_ADPT_ARG(adapter), kid);
- rtw_warn_on(1);
- goto bitmap_handle;
- }
-
- cam_id = kid;
- } else {
- int i;
- u8 *addr = sta ? sta->hwaddr : NULL;
+ {
+ u8 state = mlmeinfo->state & 0x03;
+ bool is_ap_or_adhoc = (state == WIFI_FW_AP_STATE) ||
+ (state == WIFI_FW_ADHOC_STATE);
- if (!sta) {
- if (!(mlmeinfo->state & WIFI_FW_ASSOC_SUCCESS)) {
- /* bypass STA mode group key setting before connected(ex:WEP) because bssid is not ready */
+ if (is_ap_or_adhoc && !sta) {
+ /* AP/Ad-hoc mode group key: static alloction to default key by key ID */
+ if (kid > 3) {
+ netdev_dbg(adapter->pnetdev,
+ FUNC_ADPT_FMT " group key with invalid key id:%u\n",
+ FUNC_ADPT_ARG(adapter), kid);
+ rtw_warn_on(1);
goto bitmap_handle;
}
- addr = get_bssid(&adapter->mlmepriv);
- }
+ cam_id = kid;
+ } else {
+ int i;
+ u8 *addr = sta ? sta->hwaddr : NULL;
+
+ if (!sta) {
+ if (!(mlmeinfo->state & WIFI_FW_ASSOC_SUCCESS)) {
+ /*
+ * bypass STA mode group key setting before
+ * connected(ex:WEP) because bssid is not ready
+ */
+ goto bitmap_handle;
+ }
+
+ addr = get_bssid(&adapter->mlmepriv);
+ }
- i = _rtw_camid_search(adapter, addr, kid);
- if (i >= 0) {
- /* Fix issue that pairwise and group key have same key id. Pairwise key first, group key can overwirte group only(ex: rekey) */
- if (sta || _rtw_camid_is_gk(adapter, i))
- cam_id = i;
- else
- netdev_dbg(adapter->pnetdev,
- FUNC_ADPT_FMT " group key id:%u the same key id as pairwise key\n",
- FUNC_ADPT_ARG(adapter), kid);
- goto bitmap_handle;
- }
+ i = _rtw_camid_search(adapter, addr, kid);
+ if (i >= 0) {
+ /*
+ * Fix issue that pairwise and group key have same
+ * key id. Pairwise key first, group key can
+ * overwirte group only(ex: rekey)
+ */
+ if (sta || _rtw_camid_is_gk(adapter, i))
+ cam_id = i;
+ else
+ netdev_dbg(adapter->pnetdev,
+ FUNC_ADPT_FMT " grp key:%u same as pairwise\n",
+ FUNC_ADPT_ARG(adapter), kid);
+ goto bitmap_handle;
+ }
- for (i = 4; i < TOTAL_CAM_ENTRY; i++)
- if (!(cam_ctl->bitmap & BIT(i)))
- break;
+ for (i = 4; i < TOTAL_CAM_ENTRY; i++)
+ if (!(cam_ctl->bitmap & BIT(i)))
+ break;
+
+ if (i == TOTAL_CAM_ENTRY) {
+ if (sta)
+ netdev_dbg(adapter->pnetdev,
+ FUNC_ADPT_FMT " pairwise %pM id:%u no room\n",
+ FUNC_ADPT_ARG(adapter),
+ sta->hwaddr, kid);
+ else
+ netdev_dbg(adapter->pnetdev,
+ FUNC_ADPT_FMT " group key id:%u no room\n",
+ FUNC_ADPT_ARG(adapter), kid);
+ rtw_warn_on(1);
+ goto bitmap_handle;
+ }
- if (i == TOTAL_CAM_ENTRY) {
- if (sta)
- netdev_dbg(adapter->pnetdev,
- FUNC_ADPT_FMT " pairwise key with %pM id:%u no room\n",
- FUNC_ADPT_ARG(adapter),
- sta->hwaddr, kid);
- else
- netdev_dbg(adapter->pnetdev,
- FUNC_ADPT_FMT " group key id:%u no room\n",
- FUNC_ADPT_ARG(adapter), kid);
- rtw_warn_on(1);
- goto bitmap_handle;
+ cam_id = i;
}
-
- cam_id = i;
}
bitmap_handle:
@@ -1136,9 +1159,14 @@ int rtw_check_bcn_info(struct adapter *Adapter, u8 *pframe, u32 packet_len)
if (!bssid)
return true;
- if ((pmlmepriv->timeBcnInfoChkStart != 0) && (jiffies_to_msecs(jiffies - pmlmepriv->timeBcnInfoChkStart) > DISCONNECT_BY_CHK_BCN_FAIL_OBSERV_PERIOD_IN_MS)) {
- pmlmepriv->timeBcnInfoChkStart = 0;
- pmlmepriv->NumOfBcnInfoChkFail = 0;
+ if (pmlmepriv->timeBcnInfoChkStart != 0) {
+ unsigned long elapsed;
+
+ elapsed = jiffies_to_msecs(jiffies - pmlmepriv->timeBcnInfoChkStart);
+ if (elapsed > DISCONNECT_BY_CHK_BCN_FAIL_OBSERV_PERIOD_IN_MS) {
+ pmlmepriv->timeBcnInfoChkStart = 0;
+ pmlmepriv->NumOfBcnInfoChkFail = 0;
+ }
}
subtype = GetFrameSubType(pframe) >> 4;
@@ -1154,7 +1182,12 @@ int rtw_check_bcn_info(struct adapter *Adapter, u8 *pframe, u32 packet_len)
/* check bw and channel offset */
/* parsing HT_CAP_IE */
- p = rtw_get_ie(bssid->ies + _FIXED_IE_LENGTH_, WLAN_EID_HT_CAPABILITY, &len, bssid->ie_length - _FIXED_IE_LENGTH_);
+ {
+ u8 *ies = bssid->ies + _FIXED_IE_LENGTH_;
+ uint ie_len = bssid->ie_length - _FIXED_IE_LENGTH_;
+
+ p = rtw_get_ie(ies, WLAN_EID_HT_CAPABILITY, &len, ie_len);
+ }
if (p && len > 0) {
pht_cap = (struct ieee80211_ht_cap *)(p + 2);
ht_cap_info = le16_to_cpu(pht_cap->cap_info);
@@ -1162,7 +1195,12 @@ int rtw_check_bcn_info(struct adapter *Adapter, u8 *pframe, u32 packet_len)
ht_cap_info = 0;
}
/* parsing HT_INFO_IE */
- p = rtw_get_ie(bssid->ies + _FIXED_IE_LENGTH_, WLAN_EID_HT_OPERATION, &len, bssid->ie_length - _FIXED_IE_LENGTH_);
+ {
+ u8 *ies = bssid->ies + _FIXED_IE_LENGTH_;
+ uint ie_len = bssid->ie_length - _FIXED_IE_LENGTH_;
+
+ p = rtw_get_ie(ies, WLAN_EID_HT_OPERATION, &len, ie_len);
+ }
if (p && len > 0) {
pht_info = (struct HT_info_element *)(p + 2);
ht_info_infos_0 = pht_info->infos[0];
@@ -1181,7 +1219,12 @@ int rtw_check_bcn_info(struct adapter *Adapter, u8 *pframe, u32 packet_len)
}
/* Checking for channel */
- p = rtw_get_ie(bssid->ies + _FIXED_IE_LENGTH_, WLAN_EID_DS_PARAMS, &len, bssid->ie_length - _FIXED_IE_LENGTH_);
+ {
+ u8 *ies = bssid->ies + _FIXED_IE_LENGTH_;
+ uint ie_len = bssid->ie_length - _FIXED_IE_LENGTH_;
+
+ p = rtw_get_ie(ies, WLAN_EID_DS_PARAMS, &len, ie_len);
+ }
if (p) {
bcn_channel = *(p + 2);
} else {/* In 5G, some ap do not have DSSET IE checking HT info for channel */
@@ -1198,7 +1241,12 @@ int rtw_check_bcn_info(struct adapter *Adapter, u8 *pframe, u32 packet_len)
/* checking SSID */
ssid_len = 0;
- p = rtw_get_ie(bssid->ies + _FIXED_IE_LENGTH_, WLAN_EID_SSID, &len, bssid->ie_length - _FIXED_IE_LENGTH_);
+ {
+ u8 *ies = bssid->ies + _FIXED_IE_LENGTH_;
+ uint ie_len = bssid->ie_length - _FIXED_IE_LENGTH_;
+
+ p = rtw_get_ie(ies, WLAN_EID_SSID, &len, ie_len);
+ }
if (p) {
ssid_len = *(p + 1);
if (ssid_len > NDIS_802_11_LENGTH_SSID)
@@ -1269,11 +1317,16 @@ int rtw_check_bcn_info(struct adapter *Adapter, u8 *pframe, u32 packet_len)
pmlmepriv->NumOfBcnInfoChkFail++;
- if ((pmlmepriv->timeBcnInfoChkStart != 0) && (jiffies_to_msecs(jiffies - pmlmepriv->timeBcnInfoChkStart) <= DISCONNECT_BY_CHK_BCN_FAIL_OBSERV_PERIOD_IN_MS)
- && (pmlmepriv->NumOfBcnInfoChkFail >= DISCONNECT_BY_CHK_BCN_FAIL_THRESHOLD)) {
- pmlmepriv->timeBcnInfoChkStart = 0;
- pmlmepriv->NumOfBcnInfoChkFail = 0;
- return _FAIL;
+ if (pmlmepriv->timeBcnInfoChkStart != 0) {
+ unsigned long elapsed;
+
+ elapsed = jiffies_to_msecs(jiffies - pmlmepriv->timeBcnInfoChkStart);
+ if (elapsed <= DISCONNECT_BY_CHK_BCN_FAIL_OBSERV_PERIOD_IN_MS &&
+ pmlmepriv->NumOfBcnInfoChkFail >= DISCONNECT_BY_CHK_BCN_FAIL_THRESHOLD) {
+ pmlmepriv->timeBcnInfoChkStart = 0;
+ pmlmepriv->NumOfBcnInfoChkFail = 0;
+ return _FAIL;
+ }
}
return _SUCCESS;
@@ -1528,7 +1581,11 @@ void update_capinfo(struct adapter *Adapter, u16 updateCap)
if (pmlmeext->cur_wireless_mode & (WIRELESS_11_24N)) {
pmlmeinfo->slotTime = SHORT_SLOT_TIME;
} else if (pmlmeext->cur_wireless_mode & (WIRELESS_11G)) {
- if ((updateCap & cShortSlotTime) /* && (!(pMgntInfo->pHTInfo->RT2RT_HT_Mode & RT_HT_CAP_USE_LONG_PREAMBLE)) */)
+ /*
+ * cShortSlotTime check:
+ * (!(pMgntInfo->pHTInfo->RT2RT_HT_Mode & RT_HT_CAP_USE_LONG_PREAMBLE))
+ */
+ if (updateCap & cShortSlotTime)
/* Short Slot Time */
pmlmeinfo->slotTime = SHORT_SLOT_TIME;
else
@@ -1609,9 +1666,17 @@ int update_sta_support_rate(struct adapter *padapter, u8 *pvar_ie, uint var_ie_l
memcpy(pmlmeinfo->FW_sta_info[cam_idx].SupportedRates, pIE->data, ie_len);
supportRateNum = ie_len;
- pIE = (struct ndis_80211_var_ie *)rtw_get_ie(pvar_ie, WLAN_EID_EXT_SUPP_RATES, &ie_len, var_ie_len);
- if (pIE && (ie_len <= sizeof(pmlmeinfo->FW_sta_info[cam_idx].SupportedRates) - supportRateNum))
- memcpy((pmlmeinfo->FW_sta_info[cam_idx].SupportedRates + supportRateNum), pIE->data, ie_len);
+ {
+ u8 *rates = pmlmeinfo->FW_sta_info[cam_idx].SupportedRates;
+ size_t max_ext = sizeof(pmlmeinfo->FW_sta_info[cam_idx].SupportedRates) -
+ supportRateNum;
+
+ pIE = (struct ndis_80211_var_ie *)rtw_get_ie(pvar_ie,
+ WLAN_EID_EXT_SUPP_RATES,
+ &ie_len, var_ie_len);
+ if (pIE && ie_len <= max_ext)
+ memcpy(rates + supportRateNum, pIE->data, ie_len);
+ }
return _SUCCESS;
}
diff --git a/drivers/staging/rtl8723bs/core/rtw_xmit.c b/drivers/staging/rtl8723bs/core/rtw_xmit.c
index 21690857fd62..14d761c2fb3e 100644
--- a/drivers/staging/rtl8723bs/core/rtw_xmit.c
+++ b/drivers/staging/rtl8723bs/core/rtw_xmit.c
@@ -431,7 +431,9 @@ static void update_attrib_vcs_info(struct adapter *padapter, struct xmit_frame *
pattrib->vcs_mode = padapter->driver_vcs_type;
}
-static void update_attrib_phy_info(struct adapter *padapter, struct pkt_attrib *pattrib, struct sta_info *psta)
+static void update_attrib_phy_info(struct adapter *padapter,
+ struct pkt_attrib *pattrib,
+ struct sta_info *psta)
{
struct mlme_ext_priv *mlmeext = &padapter->mlmeextpriv;
@@ -467,7 +469,9 @@ static void update_attrib_phy_info(struct adapter *padapter, struct pkt_attrib *
pattrib->retry_ctrl = false;
}
-static s32 update_attrib_sec_info(struct adapter *padapter, struct pkt_attrib *pattrib, struct sta_info *psta)
+static s32 update_attrib_sec_info(struct adapter *padapter,
+ struct pkt_attrib *pattrib,
+ struct sta_info *psta)
{
signed int res = _SUCCESS;
struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
@@ -506,8 +510,14 @@ static s32 update_attrib_sec_info(struct adapter *padapter, struct pkt_attrib *p
}
/* For WPS 1.0 WEP, driver should not encrypt EAPOL Packet for WPS handshake. */
- if (((pattrib->encrypt == _WEP40_) || (pattrib->encrypt == _WEP104_)) && (pattrib->ether_type == 0x888e))
- pattrib->encrypt = _NO_PRIVACY_;
+ {
+ bool is_wep = pattrib->encrypt == _WEP40_ ||
+ pattrib->encrypt == _WEP104_;
+ bool is_eapol = pattrib->ether_type == 0x888e;
+
+ if (is_wep && is_eapol)
+ pattrib->encrypt = _NO_PRIVACY_;
+ }
}
switch (pattrib->encrypt) {
@@ -771,15 +781,18 @@ static s32 xmitframe_addmic(struct adapter *padapter, struct xmit_frame *pxmitfr
if (pattrib->encrypt == _TKIP_) {
/* encode mic code */
{
- u8 null_key[16] = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
+ static const u8 null_key[16] = {0};
pframe = pxmitframe->buf_addr + hw_hdr_offset;
if (bmcst) {
- if (!memcmp(psecuritypriv->dot118021XGrptxmickey[psecuritypriv->dot118021XGrpKeyid].skey, null_key, 16))
+ u8 grpkeyid = psecuritypriv->dot118021XGrpKeyid;
+ u8 *grp_mic = psecuritypriv->dot118021XGrptxmickey[grpkeyid].skey;
+
+ if (!memcmp(grp_mic, null_key, 16))
return _FAIL;
/* start to calculate the mic code */
- rtw_secmicsetkey(&micdata, psecuritypriv->dot118021XGrptxmickey[psecuritypriv->dot118021XGrpKeyid].skey);
+ rtw_secmicsetkey(&micdata, grp_mic);
} else {
if (!memcmp(&pattrib->dot11tkiptxmickey.skey[0], null_key, 16))
return _FAIL;
@@ -809,15 +822,21 @@ static s32 xmitframe_addmic(struct adapter *padapter, struct xmit_frame *pxmitfr
payload = pframe;
for (curfragnum = 0; curfragnum < pattrib->nr_frags; curfragnum++) {
+ u32 icv = pattrib->bswenc ? pattrib->icv_len : 0;
+
payload = (u8 *)round_up((SIZE_PTR)(payload), 4);
payload = payload+pattrib->hdrlen+pattrib->iv_len;
if ((curfragnum+1) == pattrib->nr_frags) {
- length = pattrib->last_txcmdsz-pattrib->hdrlen-pattrib->iv_len-((pattrib->bswenc) ? pattrib->icv_len : 0);
+ length = pattrib->last_txcmdsz -
+ pattrib->hdrlen -
+ pattrib->iv_len - icv;
rtw_secmicappend(&micdata, payload, length);
payload = payload+length;
} else {
- length = pxmitpriv->frag_len-pattrib->hdrlen-pattrib->iv_len-((pattrib->bswenc) ? pattrib->icv_len : 0);
+ length = pxmitpriv->frag_len -
+ pattrib->hdrlen -
+ pattrib->iv_len - icv;
rtw_secmicappend(&micdata, payload, length);
payload = payload+length+pattrib->icv_len;
}
@@ -1020,7 +1039,8 @@ u32 rtw_calculate_wlan_pkt_size_by_attribue(struct pkt_attrib *pattrib)
* 5. move frag chunk from pframe to pxmitframe->mem
* 6. apply sw-encrypt, if necessary.
*/
-s32 rtw_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *pkt, struct xmit_frame *pxmitframe)
+s32 rtw_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *pkt,
+ struct xmit_frame *pxmitframe)
{
struct pkt_file pktfile;
@@ -1106,10 +1126,12 @@ s32 rtw_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *pkt, struct
frg_inx++;
if (bmcst || (rtw_endofpktfile(&pktfile) == true)) {
- pattrib->nr_frags = frg_inx;
+ u32 llc = (pattrib->nr_frags == 1) ? llc_sz : 0;
+ u32 icv = pattrib->bswenc ? pattrib->icv_len : 0;
- pattrib->last_txcmdsz = pattrib->hdrlen + pattrib->iv_len + ((pattrib->nr_frags == 1) ? llc_sz:0) +
- ((pattrib->bswenc) ? pattrib->icv_len : 0) + mem_sz;
+ pattrib->nr_frags = frg_inx;
+ pattrib->last_txcmdsz = pattrib->hdrlen +
+ pattrib->iv_len + llc + icv + mem_sz;
ClearMFrag(mem_start);
@@ -1139,7 +1161,8 @@ s32 rtw_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *pkt, struct
}
/* broadcast or multicast management pkt use BIP, unicast management pkt use CCMP encryption */
-s32 rtw_mgmt_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *pkt, struct xmit_frame *pxmitframe)
+s32 rtw_mgmt_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *pkt,
+ struct xmit_frame *pxmitframe)
{
u8 *pframe, *mem_start = NULL, *tmp_buf = NULL;
u8 subtype;
@@ -1754,7 +1777,9 @@ s32 rtw_xmitframe_enqueue(struct adapter *padapter, struct xmit_frame *pxmitfram
return _SUCCESS;
}
-struct tx_servq *rtw_get_sta_pending(struct adapter *padapter, struct sta_info *psta, signed int up, u8 *ac)
+struct tx_servq *rtw_get_sta_pending(struct adapter *padapter,
+ struct sta_info *psta,
+ signed int up, u8 *ac)
{
struct tx_servq *ptxservq = NULL;
@@ -2008,7 +2033,8 @@ inline bool xmitframe_hiq_filter(struct xmit_frame *xmitframe)
return allow;
}
-signed int xmitframe_enqueue_for_sleeping_sta(struct adapter *padapter, struct xmit_frame *pxmitframe)
+signed int xmitframe_enqueue_for_sleeping_sta(struct adapter *padapter,
+ struct xmit_frame *pxmitframe)
{
signed int ret = false;
struct sta_info *psta = NULL;
@@ -2123,7 +2149,9 @@ signed int xmitframe_enqueue_for_sleeping_sta(struct adapter *padapter, struct x
return ret;
}
-static void dequeue_xmitframes_to_sleeping_queue(struct adapter *padapter, struct sta_info *psta, struct __queue *pframequeue)
+static void dequeue_xmitframes_to_sleeping_queue(struct adapter *padapter,
+ struct sta_info *psta,
+ struct __queue *pframequeue)
{
signed int ret;
struct list_head *plist, *phead, *tmp;
diff --git a/drivers/staging/rtl8723bs/hal/HalBtc8723b1Ant.c b/drivers/staging/rtl8723bs/hal/HalBtc8723b1Ant.c
index b3d7f50fac4c..f56e799da702 100644
--- a/drivers/staging/rtl8723bs/hal/HalBtc8723b1Ant.c
+++ b/drivers/staging/rtl8723bs/hal/HalBtc8723b1Ant.c
@@ -810,7 +810,8 @@ static void halbtc8723b1ant_SetAntPath(
u8 H2C_Parameter[2] = {0}, u1Tmp = 0;
pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_EXT_SWITCH, &bPgExtSwitch);
- pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_FW_VER, &fwVer); /* [31:16]=fw ver, [15:0]=fw sub ver */
+ /* [31:16]=fw ver, [15:0]=fw sub ver */
+ pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_FW_VER, &fwVer);
if ((fwVer > 0 && fwVer < 0xc0000) || bPgExtSwitch)
bUseExtSwitch = true;
@@ -829,7 +830,8 @@ static void halbtc8723b1ant_SetAntPath(
/* set wlan_act control by PTA */
pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x76e, 0x4);
- pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x67, 0x20, 0x1); /* BT select s0/s1 is controlled by WiFi */
+ /* BT select s0/s1 is controlled by WiFi */
+ pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x67, 0x20, 0x1);
pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x39, 0x8, 0x1);
pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x974, 0xff);
@@ -847,10 +849,13 @@ static void halbtc8723b1ant_SetAntPath(
pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x76e, 0x4);
pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_IS_IN_MP_MODE, &bIsInMpMode);
- if (!bIsInMpMode)
- pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x67, 0x20, 0x0); /* BT select s0/s1 is controlled by BT */
- else
- pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x67, 0x20, 0x1); /* BT select s0/s1 is controlled by WiFi */
+ if (!bIsInMpMode) {
+ /* BT select s0/s1 is controlled by BT */
+ pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x67, 0x20, 0x0);
+ } else {
+ /* BT select s0/s1 is controlled by WiFi */
+ pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x67, 0x20, 0x1);
+ }
/* 0x4c[24:23]= 00, Set Antenna control by BT_RFE_CTRL BT Vendor 0xac = 0xf002 */
u4Tmp = pBtCoexist->fBtcRead4Byte(pBtCoexist, 0x4c);
@@ -1059,8 +1064,10 @@ static void halbtc8723b1ant_PsTdma(
if (bTurnOn) {
- if (pBtLinkInfo->bSlaveRole)
- psTdmaByte4Val = psTdmaByte4Val | 0x1; /* 0x778 = 0x1 at wifi slot (no blocking BT Low-Pri pkts) */
+ if (pBtLinkInfo->bSlaveRole) {
+ /* 0x778 = 0x1 at wifi slot (no blocking BT Low-Pri pkts) */
+ psTdmaByte4Val = psTdmaByte4Val | 0x1;
+ }
switch (type) {
@@ -1868,7 +1875,8 @@ static void halbtc8723b1ant_ActionWifiConnected(struct btc_coexist *pBtCoexist)
pBtCoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0
);
else { /* busy */
- if (pCoexSta->nScanAPNum >= BT_8723B_1ANT_WIFI_NOISY_THRESH) /* no force LPS, no PS-TDMA, use pure TDMA */
+ /* no force LPS, no PS-TDMA, use pure TDMA */
+ if (pCoexSta->nScanAPNum >= BT_8723B_1ANT_WIFI_NOISY_THRESH)
halbtc8723b1ant_PowerSaveState(
pBtCoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0
);
@@ -2246,7 +2254,8 @@ void EXhalbtc8723b1ant_ScanNotify(struct btc_coexist *pBtCoexist, u8 type)
if (type == BTC_SCAN_START) {
pCoexSta->bWiFiIsHighPriTask = true;
- halbtc8723b1ant_PsTdma(pBtCoexist, FORCE_EXEC, false, 8); /* Force antenna setup for no scan result issue */
+ /* Force antenna setup for no scan result issue */
+ halbtc8723b1ant_PsTdma(pBtCoexist, FORCE_EXEC, false, 8);
pBtCoexist->fBtcRead4Byte(pBtCoexist, 0x948);
pBtCoexist->fBtcRead1Byte(pBtCoexist, 0x765);
pBtCoexist->fBtcRead1Byte(pBtCoexist, 0x67);
@@ -2432,7 +2441,8 @@ void EXhalbtc8723b1ant_SpecialPacketNotify(struct btc_coexist *pBtCoexist, u8 ty
if (type == BTC_PACKET_ARP) {
pCoexDm->nArpCnt++;
- if (pCoexDm->nArpCnt >= 10) /* if APR PKT > 10 after connect, do not go to ActionWifiConnectedSpecialPacket(pBtCoexist) */
+ /* if ARP PKT > 10 after connect, skip special packet action */
+ if (pCoexDm->nArpCnt >= 10)
pCoexSta->bWiFiIsHighPriTask = false;
else
pCoexSta->bWiFiIsHighPriTask = true;
@@ -2578,7 +2588,8 @@ void EXhalbtc8723b1ant_BtInfoNotify(
halbtc8723b1ant_UpdateBtLinkInfo(pBtCoexist);
- btInfo = btInfo & 0x1f; /* mask profile bit for connect-ilde identification (for CSR case: A2DP idle --> 0x41) */
+ /* mask profile bit for connect-idle identification (CSR case: A2DP idle = 0x41) */
+ btInfo = btInfo & 0x1f;
if (!(btInfo & BT_INFO_8723B_1ANT_B_CONNECTION)) {
pCoexDm->btStatus = BT_8723B_1ANT_BT_STATUS_NON_CONNECTED_IDLE;
diff --git a/drivers/staging/rtl8723bs/hal/HalBtc8723b2Ant.c b/drivers/staging/rtl8723bs/hal/HalBtc8723b2Ant.c
index d32dbf94858f..42fc4de0cc64 100644
--- a/drivers/staging/rtl8723bs/hal/HalBtc8723b2Ant.c
+++ b/drivers/staging/rtl8723bs/hal/HalBtc8723b2Ant.c
@@ -830,7 +830,8 @@ static void halbtc8723b2ant_SetAntPath(
u8 H2C_Parameter[2] = {0};
pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_EXT_SWITCH, &bPgExtSwitch);
- pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_FW_VER, &fwVer); /* [31:16]=fw ver, [15:0]=fw sub ver */
+ /* [31:16]=fw ver, [15:0]=fw sub ver */
+ pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_FW_VER, &fwVer);
if ((fwVer > 0 && fwVer < 0xc0000) || bPgExtSwitch)
bUseExtSwitch = true;
@@ -901,13 +902,16 @@ static void halbtc8723b2ant_SetAntPath(
pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x4c, u4Tmp);
}
- pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x64, 0x1, 0x0); /* fixed external switch S1->Main, S0->Aux */
+ /* fixed external switch S1->Main, S0->Aux */
+ pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x64, 0x1, 0x0);
switch (antPosType) {
case BTC_ANT_WIFI_AT_MAIN:
- pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, 0x0); /* fixed internal switch S1->WiFi, S0->BT */
+ /* fixed internal switch S1->WiFi, S0->BT */
+ pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, 0x0);
break;
case BTC_ANT_WIFI_AT_AUX:
- pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, 0x280); /* fixed internal switch S0->WiFi, S1->BT */
+ /* fixed internal switch S0->WiFi, S1->BT */
+ pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, 0x280);
break;
}
}
@@ -2279,7 +2283,8 @@ static void halbtc8723b2ant_WifiOffHwCfg(struct btc_coexist *pBtCoexist)
/* set wlan_act to low */
pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x76e, 0x4);
- pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x780); /* WiFi goto standby while GNT_BT 0-->1 */
+ /* WiFi goto standby while GNT_BT 0-->1 */
+ pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x780);
pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_FW_VER, &fwVer);
if (fwVer >= 0x180000) {
/* Use H2C to set GNT_BT to HIGH */
@@ -2289,10 +2294,13 @@ static void halbtc8723b2ant_WifiOffHwCfg(struct btc_coexist *pBtCoexist)
pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x765, 0x18);
pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_IS_IN_MP_MODE, &bIsInMpMode);
- if (!bIsInMpMode)
- pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x67, 0x20, 0x0); /* BT select s0/s1 is controlled by BT */
- else
- pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x67, 0x20, 0x1); /* BT select s0/s1 is controlled by WiFi */
+ if (!bIsInMpMode) {
+ /* BT select s0/s1 is controlled by BT */
+ pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x67, 0x20, 0x0);
+ } else {
+ /* BT select s0/s1 is controlled by WiFi */
+ pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x67, 0x20, 0x1);
+ }
}
static void halbtc8723b2ant_InitHwConfig(struct btc_coexist *pBtCoexist, bool bBackUp)
@@ -2595,7 +2603,8 @@ void EXhalbtc8723b2ant_BtInfoNotify(
void EXhalbtc8723b2ant_HaltNotify(struct btc_coexist *pBtCoexist)
{
halbtc8723b2ant_WifiOffHwCfg(pBtCoexist);
- pBtCoexist->fBtcSetBtReg(pBtCoexist, BTC_BT_REG_RF, 0x3c, 0x15); /* BT goto standby while GNT_BT 1-->0 */
+ /* BT goto standby while GNT_BT 1-->0 */
+ pBtCoexist->fBtcSetBtReg(pBtCoexist, BTC_BT_REG_RF, 0x3c, 0x15);
halbtc8723b2ant_IgnoreWlanAct(pBtCoexist, FORCE_EXEC, true);
EXhalbtc8723b2ant_MediaStatusNotify(pBtCoexist, BTC_MEDIA_DISCONNECT);
diff --git a/drivers/staging/rtl8723bs/hal/HalPhyRf.c b/drivers/staging/rtl8723bs/hal/HalPhyRf.c
index 7bef05a9a063..2b4b5468f87b 100644
--- a/drivers/staging/rtl8723bs/hal/HalPhyRf.c
+++ b/drivers/staging/rtl8723bs/hal/HalPhyRf.c
@@ -65,7 +65,8 @@ void ODM_TXPowerTrackingCallback_ThermalMeter(struct adapter *Adapter)
u8 ThermalValue_AVG_count = 0;
u32 ThermalValue_AVG = 0;
- u8 OFDM_min_index = 0; /* OFDM BB Swing should be less than +3.0dB, which is required by Arthur */
+ /* OFDM BB Swing should be less than +3.0dB, which is required by Arthur */
+ u8 OFDM_min_index = 0;
u8 Indexforchannel = 0; /* GetRightChnlPlaceforIQK(pHalData->CurrentChannel) */
struct txpwrtrack_cfg c;
@@ -93,7 +94,9 @@ void ODM_TXPowerTrackingCallback_ThermalMeter(struct adapter *Adapter)
pDM_Odm->RFCalibrateInfo.TXPowerTrackingCallbackCnt++;
pDM_Odm->RFCalibrateInfo.bTXPowerTrackingInit = true;
- ThermalValue = (u8)PHY_QueryRFReg(pDM_Odm->Adapter, RF_PATH_A, c.ThermalRegAddr, 0xfc00); /* 0x42: RF Reg[15:10] 88E */
+ /* 0x42: RF Reg[15:10] 88E */
+ ThermalValue = (u8)PHY_QueryRFReg(pDM_Odm->Adapter, RF_PATH_A,
+ c.ThermalRegAddr, 0xfc00);
if (
!pDM_Odm->RFCalibrateInfo.TxPowerTrackControl ||
pHalData->EEPROMThermalMeter == 0 ||
@@ -104,11 +107,15 @@ void ODM_TXPowerTrackingCallback_ThermalMeter(struct adapter *Adapter)
/* 4 3. Initialize ThermalValues of RFCalibrateInfo */
/* 4 4. Calculate average thermal meter */
-
- pDM_Odm->RFCalibrateInfo.ThermalValue_AVG[pDM_Odm->RFCalibrateInfo.ThermalValue_AVG_index] = ThermalValue;
- pDM_Odm->RFCalibrateInfo.ThermalValue_AVG_index++;
- if (pDM_Odm->RFCalibrateInfo.ThermalValue_AVG_index == c.AverageThermalNum) /* Average times = c.AverageThermalNum */
- pDM_Odm->RFCalibrateInfo.ThermalValue_AVG_index = 0;
+ {
+ struct odm_rf_cal_t *cal = &pDM_Odm->RFCalibrateInfo;
+
+ cal->ThermalValue_AVG[cal->ThermalValue_AVG_index] = ThermalValue;
+ cal->ThermalValue_AVG_index++;
+ /* Average times = c.AverageThermalNum */
+ if (cal->ThermalValue_AVG_index == c.AverageThermalNum)
+ cal->ThermalValue_AVG_index = 0;
+ }
for (i = 0; i < c.AverageThermalNum; i++) {
if (pDM_Odm->RFCalibrateInfo.ThermalValue_AVG[i]) {
@@ -200,10 +207,16 @@ void ODM_TXPowerTrackingCallback_ThermalMeter(struct adapter *Adapter)
if (
pDM_Odm->RFCalibrateInfo.DeltaPowerIndex[p] ==
pDM_Odm->RFCalibrateInfo.DeltaPowerIndexLast[p]
- ) /* If Thermal value changes but lookup table value still the same */
+ ) {
+ /* If Thermal value changes but lookup table value still the same */
pDM_Odm->RFCalibrateInfo.PowerIndexOffset[p] = 0;
- else
- pDM_Odm->RFCalibrateInfo.PowerIndexOffset[p] = pDM_Odm->RFCalibrateInfo.DeltaPowerIndex[p] - pDM_Odm->RFCalibrateInfo.DeltaPowerIndexLast[p]; /* Power Index Diff between 2 times Power Tracking */
+ } else {
+ /* Power Index Diff between 2 times Power Tracking */
+ s8 delta_idx = pDM_Odm->RFCalibrateInfo.DeltaPowerIndex[p];
+ s8 last_idx = pDM_Odm->RFCalibrateInfo.DeltaPowerIndexLast[p];
+
+ pDM_Odm->RFCalibrateInfo.PowerIndexOffset[p] = delta_idx - last_idx;
+ }
pDM_Odm->RFCalibrateInfo.OFDM_index[p] =
pDM_Odm->BbSwingIdxOfdmBase[p] +
@@ -245,7 +258,8 @@ void ODM_TXPowerTrackingCallback_ThermalMeter(struct adapter *Adapter)
) {
/* 4 7.2 Configure the Swing Table to adjust Tx Power. */
- pDM_Odm->RFCalibrateInfo.bTxPowerChanged = true; /* Always true after Tx Power is adjusted by power tracking. */
+ /* Always true after Tx Power is adjusted by power tracking. */
+ pDM_Odm->RFCalibrateInfo.bTxPowerChanged = true;
/* */
/* 2012/04/23 MH According to Luke's suggestion, we can not write BB digital */
/* to increase TX power. Otherwise, EVM will be bad. */
diff --git a/drivers/staging/rtl8723bs/hal/HalPhyRf_8723B.c b/drivers/staging/rtl8723bs/hal/HalPhyRf_8723B.c
index 34692cca33f5..567a23627db9 100644
--- a/drivers/staging/rtl8723bs/hal/HalPhyRf_8723B.c
+++ b/drivers/staging/rtl8723bs/hal/HalPhyRf_8723B.c
@@ -101,13 +101,15 @@ static void setIqkMatrix_8723B(
} else {
switch (RFPath) {
case RF_PATH_A:
- PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XATxIQImbalance, bMaskDWord, OFDMSwingTable_New[OFDM_index]);
+ PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XATxIQImbalance,
+ bMaskDWord, OFDMSwingTable_New[OFDM_index]);
PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XCTxAFE, bMaskH4Bits, 0x00);
PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, BIT24, 0x00);
break;
case RF_PATH_B:
- PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XBTxIQImbalance, bMaskDWord, OFDMSwingTable_New[OFDM_index]);
+ PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XBTxIQImbalance,
+ bMaskDWord, OFDMSwingTable_New[OFDM_index]);
PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XDTxAFE, bMaskH4Bits, 0x00);
PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, BIT28, 0x00);
break;
@@ -957,20 +959,25 @@ static void _PHY_PathAFillIQKMatrix8723B(
TX0_C = (Y * Oldval_0) >> 8;
PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XCTxAFE, 0xF0000000, ((TX0_C&0x3C0)>>6));
pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC94][KEY] = rOFDM0_XCTxAFE;
- pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC94][VAL] = PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XCTxAFE, bMaskDWord);
+ pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC94][VAL] =
+ PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XCTxAFE, bMaskDWord);
PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XATxIQImbalance, 0x003F0000, (TX0_C&0x3F));
pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC80][KEY] = rOFDM0_XATxIQImbalance;
- pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC80][VAL] = PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XATxIQImbalance, bMaskDWord);
+ pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC80][VAL] =
+ PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XATxIQImbalance, bMaskDWord);
PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, BIT(29), ((Y*Oldval_0>>7) & 0x1));
pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC4C][KEY] = rOFDM0_ECCAThreshold;
- pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC4C][VAL] = PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, bMaskDWord);
+ pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC4C][VAL] =
+ PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, bMaskDWord);
if (bTxOnly) {
/* <20130226, Kordan> Saving RxIQC, otherwise not initialized. */
pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xCA0][KEY] = rOFDM0_RxIQExtAnta;
- pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xCA0][VAL] = 0xfffffff & PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_RxIQExtAnta, bMaskDWord);
+ pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xCA0][VAL] =
+ 0xfffffff & PHY_QueryBBReg(pDM_Odm->Adapter,
+ rOFDM0_RxIQExtAnta, bMaskDWord);
pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xC14][KEY] = rOFDM0_XARxIQImbalance;
/* pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xC14][VAL] = PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XARxIQImbalance, bMaskDWord); */
pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xC14][VAL] = 0x40000100;
@@ -984,12 +991,14 @@ static void _PHY_PathAFillIQKMatrix8723B(
reg = result[final_candidate][3] & 0x3F;
PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XARxIQImbalance, 0xFC00, reg);
pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xC14][KEY] = rOFDM0_XARxIQImbalance;
- pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xC14][VAL] = PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XARxIQImbalance, bMaskDWord);
+ pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xC14][VAL] =
+ PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XARxIQImbalance, bMaskDWord);
reg = (result[final_candidate][3] >> 6) & 0xF;
PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_RxIQExtAnta, 0xF0000000, reg);
pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xCA0][KEY] = rOFDM0_RxIQExtAnta;
- pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xCA0][VAL] = PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_RxIQExtAnta, bMaskDWord);
+ pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xCA0][VAL] =
+ PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_RxIQExtAnta, bMaskDWord);
}
}
@@ -1035,22 +1044,27 @@ static void _PHY_PathBFillIQKMatrix8723B(
/* pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC9C][KEY] = rOFDM0_XDTxAFE; */
/* pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC9C][VAL] = PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XDTxAFE, bMaskDWord); */
pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC94][KEY] = rOFDM0_XCTxAFE;
- pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC94][VAL] = PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XDTxAFE, bMaskDWord);
+ pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC94][VAL] =
+ PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XDTxAFE, bMaskDWord);
PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XBTxIQImbalance, 0x003F0000, (TX1_C&0x3F));
pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC80][KEY] = rOFDM0_XATxIQImbalance;
- pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC80][VAL] = PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XBTxIQImbalance, bMaskDWord);
+ pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC80][VAL] =
+ PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XBTxIQImbalance, bMaskDWord);
PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, BIT(25), ((Y*Oldval_1>>7) & 0x1));
pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC4C][KEY] = rOFDM0_ECCAThreshold;
- pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC4C][VAL] = PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, bMaskDWord);
+ pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC4C][VAL] =
+ PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, bMaskDWord);
if (bTxOnly) {
pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xC14][KEY] = rOFDM0_XARxIQImbalance;
/* pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xC14][VAL] = PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XARxIQImbalance, bMaskDWord); */
pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xC14][VAL] = 0x40000100;
pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xCA0][KEY] = rOFDM0_RxIQExtAnta;
- pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xCA0][VAL] = 0x0fffffff & PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_RxIQExtAnta, bMaskDWord);
+ pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xCA0][VAL] =
+ 0x0fffffff & PHY_QueryBBReg(pDM_Odm->Adapter,
+ rOFDM0_RxIQExtAnta, bMaskDWord);
return;
}
@@ -1060,12 +1074,15 @@ static void _PHY_PathBFillIQKMatrix8723B(
reg = result[final_candidate][7] & 0x3F;
PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XBRxIQImbalance, 0xFC00, reg);
pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xC14][KEY] = rOFDM0_XARxIQImbalance;
- pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xC14][VAL] = PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XBRxIQImbalance, bMaskDWord);
+ pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xC14][VAL] =
+ PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XBRxIQImbalance, bMaskDWord);
reg = (result[final_candidate][7] >> 6) & 0xF;
/* PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_AGCRSSITable, 0x0000F000, reg); */
pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xCA0][KEY] = rOFDM0_RxIQExtAnta;
- pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xCA0][VAL] = (reg << 28)|(PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_RxIQExtAnta, bMaskDWord)&0x0fffffff);
+ pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xCA0][VAL] = (reg << 28) |
+ (PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_RxIQExtAnta, bMaskDWord) &
+ 0x0fffffff);
}
}
@@ -1086,21 +1103,29 @@ void ODM_SetIQCbyRFpath(struct dm_odm_t *pDM_Odm, u32 RFpath)
(pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xC14][VAL] != 0x0)
) {
if (RFpath) { /* S1: RFpath = 0, S0:RFpath = 1 */
+ u32 (*tx)[2] = pRFCalibrateInfo->TxIQC_8723B[PATH_S0];
+ u32 (*rx)[2] = pRFCalibrateInfo->RxIQC_8723B[PATH_S0];
+ struct adapter *a = pDM_Odm->Adapter;
+
/* S0 TX IQC */
- PHY_SetBBReg(pDM_Odm->Adapter, pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC94][KEY], bMaskDWord, pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC94][VAL]);
- PHY_SetBBReg(pDM_Odm->Adapter, pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC80][KEY], bMaskDWord, pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC80][VAL]);
- PHY_SetBBReg(pDM_Odm->Adapter, pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC4C][KEY], bMaskDWord, pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC4C][VAL]);
+ PHY_SetBBReg(a, tx[IDX_0xC94][KEY], bMaskDWord, tx[IDX_0xC94][VAL]);
+ PHY_SetBBReg(a, tx[IDX_0xC80][KEY], bMaskDWord, tx[IDX_0xC80][VAL]);
+ PHY_SetBBReg(a, tx[IDX_0xC4C][KEY], bMaskDWord, tx[IDX_0xC4C][VAL]);
/* S0 RX IQC */
- PHY_SetBBReg(pDM_Odm->Adapter, pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xC14][KEY], bMaskDWord, pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xC14][VAL]);
- PHY_SetBBReg(pDM_Odm->Adapter, pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xCA0][KEY], bMaskDWord, pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xCA0][VAL]);
+ PHY_SetBBReg(a, rx[IDX_0xC14][KEY], bMaskDWord, rx[IDX_0xC14][VAL]);
+ PHY_SetBBReg(a, rx[IDX_0xCA0][KEY], bMaskDWord, rx[IDX_0xCA0][VAL]);
} else {
+ u32 (*tx)[2] = pRFCalibrateInfo->TxIQC_8723B[PATH_S1];
+ u32 (*rx)[2] = pRFCalibrateInfo->RxIQC_8723B[PATH_S1];
+ struct adapter *a = pDM_Odm->Adapter;
+
/* S1 TX IQC */
- PHY_SetBBReg(pDM_Odm->Adapter, pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC94][KEY], bMaskDWord, pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC94][VAL]);
- PHY_SetBBReg(pDM_Odm->Adapter, pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC80][KEY], bMaskDWord, pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC80][VAL]);
- PHY_SetBBReg(pDM_Odm->Adapter, pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC4C][KEY], bMaskDWord, pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC4C][VAL]);
+ PHY_SetBBReg(a, tx[IDX_0xC94][KEY], bMaskDWord, tx[IDX_0xC94][VAL]);
+ PHY_SetBBReg(a, tx[IDX_0xC80][KEY], bMaskDWord, tx[IDX_0xC80][VAL]);
+ PHY_SetBBReg(a, tx[IDX_0xC4C][KEY], bMaskDWord, tx[IDX_0xC4C][VAL]);
/* S1 RX IQC */
- PHY_SetBBReg(pDM_Odm->Adapter, pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xC14][KEY], bMaskDWord, pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xC14][VAL]);
- PHY_SetBBReg(pDM_Odm->Adapter, pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xCA0][KEY], bMaskDWord, pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xCA0][VAL]);
+ PHY_SetBBReg(a, rx[IDX_0xC14][KEY], bMaskDWord, rx[IDX_0xC14][VAL]);
+ PHY_SetBBReg(a, rx[IDX_0xCA0][KEY], bMaskDWord, rx[IDX_0xCA0][VAL]);
}
}
}
@@ -1360,11 +1385,15 @@ static void phy_IQCalibrate_8723B(
/* u32 bbvalue; */
if (t == 0) {
+ struct odm_rf_cal_t *cal = &pDM_Odm->RFCalibrateInfo;
/* Save ADDA parameters, turn Path A ADDA on */
- _PHY_SaveADDARegisters8723B(padapter, ADDA_REG, pDM_Odm->RFCalibrateInfo.ADDA_backup, IQK_ADDA_REG_NUM);
- _PHY_SaveMACRegisters8723B(padapter, IQK_MAC_REG, pDM_Odm->RFCalibrateInfo.IQK_MAC_backup);
- _PHY_SaveADDARegisters8723B(padapter, IQK_BB_REG_92C, pDM_Odm->RFCalibrateInfo.IQK_BB_backup, IQK_BB_REG_NUM);
+ _PHY_SaveADDARegisters8723B(padapter, ADDA_REG,
+ cal->ADDA_backup, IQK_ADDA_REG_NUM);
+ _PHY_SaveMACRegisters8723B(padapter, IQK_MAC_REG,
+ cal->IQK_MAC_backup);
+ _PHY_SaveADDARegisters8723B(padapter, IQK_BB_REG_92C,
+ cal->IQK_BB_backup, IQK_BB_REG_NUM);
}
_PHY_PathADDAOn8723B(padapter, ADDA_REG, is2T);
@@ -1407,12 +1436,20 @@ static void phy_IQCalibrate_8723B(
PathAOK = phy_PathA_IQK_8723B(padapter, is2T, RF_Path);
/* if (PathAOK == 0x03) { */
if (PathAOK == 0x01) {
+ u32 val;
+
/* Path A Tx IQK Success */
PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_IQK, bMaskH3Bytes, 0x000000);
- pDM_Odm->RFCalibrateInfo.TxLOK[RF_PATH_A] = PHY_QueryRFReg(pDM_Odm->Adapter, RF_PATH_A, 0x8, bRFRegOffsetMask);
-
- result[t][0] = (PHY_QueryBBReg(pDM_Odm->Adapter, rTx_Power_Before_IQK_A, bMaskDWord)&0x3FF0000)>>16;
- result[t][1] = (PHY_QueryBBReg(pDM_Odm->Adapter, rTx_Power_After_IQK_A, bMaskDWord)&0x3FF0000)>>16;
+ pDM_Odm->RFCalibrateInfo.TxLOK[RF_PATH_A] =
+ PHY_QueryRFReg(pDM_Odm->Adapter, RF_PATH_A, 0x8,
+ bRFRegOffsetMask);
+
+ val = PHY_QueryBBReg(pDM_Odm->Adapter,
+ rTx_Power_Before_IQK_A, bMaskDWord);
+ result[t][0] = (val & 0x3FF0000) >> 16;
+ val = PHY_QueryBBReg(pDM_Odm->Adapter,
+ rTx_Power_After_IQK_A, bMaskDWord);
+ result[t][1] = (val & 0x3FF0000) >> 16;
break;
}
}
@@ -1421,10 +1458,15 @@ static void phy_IQCalibrate_8723B(
for (i = 0 ; i < retryCount ; i++) {
PathAOK = phy_PathA_RxIQK8723B(padapter, is2T, RF_Path);
if (PathAOK == 0x03) {
+ u32 val;
/* result[t][0] = (PHY_QueryBBReg(pDM_Odm->Adapter, rTx_Power_Before_IQK_A, bMaskDWord)&0x3FF0000)>>16; */
/* result[t][1] = (PHY_QueryBBReg(pDM_Odm->Adapter, rTx_Power_After_IQK_A, bMaskDWord)&0x3FF0000)>>16; */
- result[t][2] = (PHY_QueryBBReg(pDM_Odm->Adapter, rRx_Power_Before_IQK_A_2, bMaskDWord)&0x3FF0000)>>16;
- result[t][3] = (PHY_QueryBBReg(pDM_Odm->Adapter, rRx_Power_After_IQK_A_2, bMaskDWord)&0x3FF0000)>>16;
+ val = PHY_QueryBBReg(pDM_Odm->Adapter,
+ rRx_Power_Before_IQK_A_2, bMaskDWord);
+ result[t][2] = (val & 0x3FF0000) >> 16;
+ val = PHY_QueryBBReg(pDM_Odm->Adapter,
+ rRx_Power_After_IQK_A_2, bMaskDWord);
+ result[t][3] = (val & 0x3FF0000) >> 16;
break;
}
}
@@ -1439,12 +1481,20 @@ static void phy_IQCalibrate_8723B(
for (i = 0 ; i < retryCount ; i++) {
PathBOK = phy_PathB_IQK_8723B(padapter);
if (PathBOK == 0x01) {
+ u32 val;
+
/* Path B Tx IQK Success */
PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_IQK, bMaskH3Bytes, 0x000000);
- pDM_Odm->RFCalibrateInfo.TxLOK[RF_PATH_B] = PHY_QueryRFReg(pDM_Odm->Adapter, RF_PATH_B, 0x8, bRFRegOffsetMask);
-
- result[t][4] = (PHY_QueryBBReg(pDM_Odm->Adapter, rTx_Power_Before_IQK_A, bMaskDWord)&0x3FF0000)>>16;
- result[t][5] = (PHY_QueryBBReg(pDM_Odm->Adapter, rTx_Power_After_IQK_A, bMaskDWord)&0x3FF0000)>>16;
+ pDM_Odm->RFCalibrateInfo.TxLOK[RF_PATH_B] =
+ PHY_QueryRFReg(pDM_Odm->Adapter, RF_PATH_B,
+ 0x8, bRFRegOffsetMask);
+
+ val = PHY_QueryBBReg(pDM_Odm->Adapter,
+ rTx_Power_Before_IQK_A, bMaskDWord);
+ result[t][4] = (val & 0x3FF0000) >> 16;
+ val = PHY_QueryBBReg(pDM_Odm->Adapter,
+ rTx_Power_After_IQK_A, bMaskDWord);
+ result[t][5] = (val & 0x3FF0000) >> 16;
break;
}
}
@@ -1453,10 +1503,15 @@ static void phy_IQCalibrate_8723B(
for (i = 0 ; i < retryCount ; i++) {
PathBOK = phy_PathB_RxIQK8723B(padapter, is2T);
if (PathBOK == 0x03) {
+ u32 val;
/* result[t][0] = (PHY_QueryBBReg(pDM_Odm->Adapter, rTx_Power_Before_IQK_A, bMaskDWord)&0x3FF0000)>>16; */
/* result[t][1] = (PHY_QueryBBReg(pDM_Odm->Adapter, rTx_Power_After_IQK_A, bMaskDWord)&0x3FF0000)>>16; */
- result[t][6] = (PHY_QueryBBReg(pDM_Odm->Adapter, rRx_Power_Before_IQK_A_2, bMaskDWord)&0x3FF0000)>>16;
- result[t][7] = (PHY_QueryBBReg(pDM_Odm->Adapter, rRx_Power_After_IQK_A_2, bMaskDWord)&0x3FF0000)>>16;
+ val = PHY_QueryBBReg(pDM_Odm->Adapter,
+ rRx_Power_Before_IQK_A_2, bMaskDWord);
+ result[t][6] = (val & 0x3FF0000) >> 16;
+ val = PHY_QueryBBReg(pDM_Odm->Adapter,
+ rRx_Power_After_IQK_A_2, bMaskDWord);
+ result[t][7] = (val & 0x3FF0000) >> 16;
break;
}
}
@@ -1468,13 +1523,18 @@ static void phy_IQCalibrate_8723B(
PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_IQK, bMaskH3Bytes, 0);
if (t != 0) {
+ struct odm_rf_cal_t *cal = &pDM_Odm->RFCalibrateInfo;
+
/* Reload ADDA power saving parameters */
- _PHY_ReloadADDARegisters8723B(padapter, ADDA_REG, pDM_Odm->RFCalibrateInfo.ADDA_backup, IQK_ADDA_REG_NUM);
+ _PHY_ReloadADDARegisters8723B(padapter, ADDA_REG,
+ cal->ADDA_backup, IQK_ADDA_REG_NUM);
/* Reload MAC parameters */
- _PHY_ReloadMACRegisters8723B(padapter, IQK_MAC_REG, pDM_Odm->RFCalibrateInfo.IQK_MAC_backup);
+ _PHY_ReloadMACRegisters8723B(padapter, IQK_MAC_REG,
+ cal->IQK_MAC_backup);
- _PHY_ReloadADDARegisters8723B(padapter, IQK_BB_REG_92C, pDM_Odm->RFCalibrateInfo.IQK_BB_backup, IQK_BB_REG_NUM);
+ _PHY_ReloadADDARegisters8723B(padapter, IQK_BB_REG_92C,
+ cal->IQK_BB_backup, IQK_BB_REG_NUM);
/* Reload RF path */
/* PHY_SetBBReg(pDM_Odm->Adapter, 0x948, bMaskDWord, Path_SEL_BB); */
@@ -1613,8 +1673,10 @@ void PHY_IQCalibrate_8723B(
u32 offset, data;
u8 path, bResult = SUCCESS;
struct odm_rf_cal_t *pRFCalibrateInfo = &pDM_Odm->RFCalibrateInfo;
+ struct adapter *a = pDM_Odm->Adapter;
- path = (PHY_QueryBBReg(pDM_Odm->Adapter, rS0S1_PathSwitch, bMaskByte0) == 0x00) ? RF_PATH_A : RF_PATH_B;
+ path = (PHY_QueryBBReg(a, rS0S1_PathSwitch, bMaskByte0) == 0x00) ?
+ RF_PATH_A : RF_PATH_B;
/* Restore TX IQK */
for (i = 0; i < 3; ++i) {
@@ -1624,7 +1686,7 @@ void PHY_IQCalibrate_8723B(
bResult = FAIL;
break;
}
- PHY_SetBBReg(pDM_Odm->Adapter, offset, bMaskDWord, data);
+ PHY_SetBBReg(a, offset, bMaskDWord, data);
}
/* Restore RX IQK */
@@ -1635,14 +1697,16 @@ void PHY_IQCalibrate_8723B(
bResult = FAIL;
break;
}
- PHY_SetBBReg(pDM_Odm->Adapter, offset, bMaskDWord, data);
+ PHY_SetBBReg(a, offset, bMaskDWord, data);
}
if (pDM_Odm->RFCalibrateInfo.TxLOK[RF_PATH_A] == 0) {
bResult = FAIL;
} else {
- PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_TXM_IDAC, bRFRegOffsetMask, pDM_Odm->RFCalibrateInfo.TxLOK[RF_PATH_A]);
- PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_B, RF_TXM_IDAC, bRFRegOffsetMask, pDM_Odm->RFCalibrateInfo.TxLOK[RF_PATH_B]);
+ PHY_SetRFReg(a, RF_PATH_A, RF_TXM_IDAC, bRFRegOffsetMask,
+ pRFCalibrateInfo->TxLOK[RF_PATH_A]);
+ PHY_SetRFReg(a, RF_PATH_B, RF_TXM_IDAC, bRFRegOffsetMask,
+ pRFCalibrateInfo->TxLOK[RF_PATH_B]);
}
if (bResult == SUCCESS)
@@ -1650,7 +1714,9 @@ void PHY_IQCalibrate_8723B(
}
if (bReCovery) {
- _PHY_ReloadADDARegisters8723B(padapter, IQK_BB_REG_92C, pDM_Odm->RFCalibrateInfo.IQK_BB_backup_recover, 9);
+ _PHY_ReloadADDARegisters8723B(padapter, IQK_BB_REG_92C,
+ pDM_Odm->RFCalibrateInfo.IQK_BB_backup_recover,
+ 9);
return;
}
@@ -1752,7 +1818,9 @@ void PHY_IQCalibrate_8723B(
pDM_Odm->RFCalibrateInfo.iqk_matrix_regs_setting_value[0][i] = result[final_candidate][i];
}
- _PHY_SaveADDARegisters8723B(padapter, IQK_BB_REG_92C, pDM_Odm->RFCalibrateInfo.IQK_BB_backup_recover, 9);
+ _PHY_SaveADDARegisters8723B(padapter, IQK_BB_REG_92C,
+ pDM_Odm->RFCalibrateInfo.IQK_BB_backup_recover,
+ 9);
/* restore GNT_BT */
PHY_SetBBReg(pDM_Odm->Adapter, 0x764, bMaskDWord, GNT_BT_default);
diff --git a/drivers/staging/rtl8723bs/hal/hal_com.c b/drivers/staging/rtl8723bs/hal/hal_com.c
index 70b5b289f9cb..1b0e38a1e993 100644
--- a/drivers/staging/rtl8723bs/hal/hal_com.c
+++ b/drivers/staging/rtl8723bs/hal/hal_com.c
@@ -792,10 +792,14 @@ void rtw_hal_check_rxfifo_full(struct adapter *adapter)
/* todo: other chips */
if (save_cnt) {
+ u16 last, curr;
+
/* rtw_write8(adapter, REG_RXERR_RPT+3, rtw_read8(adapter, REG_RXERR_RPT+3)|0xa0); */
- pdbgpriv->dbg_rx_fifo_last_overflow = pdbgpriv->dbg_rx_fifo_curr_overflow;
- pdbgpriv->dbg_rx_fifo_curr_overflow = rtw_read16(adapter, REG_RXERR_RPT);
- pdbgpriv->dbg_rx_fifo_diff_overflow = pdbgpriv->dbg_rx_fifo_curr_overflow-pdbgpriv->dbg_rx_fifo_last_overflow;
+ last = pdbgpriv->dbg_rx_fifo_curr_overflow;
+ curr = rtw_read16(adapter, REG_RXERR_RPT);
+ pdbgpriv->dbg_rx_fifo_last_overflow = last;
+ pdbgpriv->dbg_rx_fifo_curr_overflow = curr;
+ pdbgpriv->dbg_rx_fifo_diff_overflow = curr - last;
}
}
diff --git a/drivers/staging/rtl8723bs/hal/hal_com_phycfg.c b/drivers/staging/rtl8723bs/hal/hal_com_phycfg.c
index cd76e26e868f..9c5c649e493b 100644
--- a/drivers/staging/rtl8723bs/hal/hal_com_phycfg.c
+++ b/drivers/staging/rtl8723bs/hal/hal_com_phycfg.c
@@ -318,7 +318,8 @@ static void PHY_StoreTxPowerByRateNew(struct adapter *padapter, u32 RfPath,
u8 i = 0, rateIndex[4] = {0}, rateNum = 0;
s8 PwrByRateVal[4] = {0};
- PHY_GetRateValuesOfTxPowerByRate(padapter, RegAddr, BitMask, Data, rateIndex, PwrByRateVal, &rateNum);
+ PHY_GetRateValuesOfTxPowerByRate(padapter, RegAddr, BitMask, Data,
+ rateIndex, PwrByRateVal, &rateNum);
if (RfPath >= RF_PATH_MAX)
return;
@@ -436,7 +437,10 @@ void PHY_SetTxPowerIndexByRateSection(
ARRAY_SIZE(ofdmRates));
} else if (RateSection == HT_MCS0_MCS7) {
- u8 htRates1T[] = {MGN_MCS0, MGN_MCS1, MGN_MCS2, MGN_MCS3, MGN_MCS4, MGN_MCS5, MGN_MCS6, MGN_MCS7};
+ u8 htRates1T[] = {
+ MGN_MCS0, MGN_MCS1, MGN_MCS2, MGN_MCS3,
+ MGN_MCS4, MGN_MCS5, MGN_MCS6, MGN_MCS7
+ };
PHY_SetTxPowerIndexByRateArray(padapter, RFPath,
pHalData->CurrentChannelBW,
Channel, htRates1T,
@@ -844,11 +848,15 @@ void PHY_SetTxPowerLimit(
if (channelIndex == -1)
return;
-
- prevPowerLimit = pHalData->TxPwrLimit_2_4G[regulation][bandwidth][rateSection][channelIndex][RF_PATH_A];
-
- if (powerLimit < prevPowerLimit)
- pHalData->TxPwrLimit_2_4G[regulation][bandwidth][rateSection][channelIndex][RF_PATH_A] = powerLimit;
+ {
+ s8 *pLimit = &pHalData->TxPwrLimit_2_4G[regulation][bandwidth]
+ [rateSection][channelIndex]
+ [RF_PATH_A];
+ prevPowerLimit = *pLimit;
+
+ if (powerLimit < prevPowerLimit)
+ *pLimit = powerLimit;
+ }
}
void Hal_ChannelPlanToRegulation(struct adapter *Adapter, u16 ChannelPlan)
diff --git a/drivers/staging/rtl8723bs/hal/hal_intf.c b/drivers/staging/rtl8723bs/hal/hal_intf.c
index 462553d296ff..adccc5566e10 100644
--- a/drivers/staging/rtl8723bs/hal/hal_intf.c
+++ b/drivers/staging/rtl8723bs/hal/hal_intf.c
@@ -120,7 +120,9 @@ u8 rtw_hal_get_def_var(struct adapter *padapter, enum hal_def_variable eVariable
return GetHalDefVar8723BSDIO(padapter, eVariable, pValue);
}
-void rtw_hal_set_odm_var(struct adapter *padapter, enum hal_odm_variable eVariable, void *pValue1, bool bSet)
+void rtw_hal_set_odm_var(struct adapter *padapter,
+ enum hal_odm_variable eVariable,
+ void *pValue1, bool bSet)
{
SetHalODMVar(padapter, eVariable, pValue1, bSet);
}
diff --git a/drivers/staging/rtl8723bs/hal/hal_sdio.c b/drivers/staging/rtl8723bs/hal/hal_sdio.c
index 665c85eccbdf..fb4196af681f 100644
--- a/drivers/staging/rtl8723bs/hal/hal_sdio.c
+++ b/drivers/staging/rtl8723bs/hal/hal_sdio.c
@@ -23,8 +23,10 @@ u8 rtw_hal_sdio_query_tx_freepage(
)
{
struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
+ u8 page_free = pHalData->SdioTxFIFOFreePage[PageIdx];
+ u8 pub_free = pHalData->SdioTxFIFOFreePage[PUBLIC_QUEUE_IDX];
- if ((pHalData->SdioTxFIFOFreePage[PageIdx]+pHalData->SdioTxFIFOFreePage[PUBLIC_QUEUE_IDX]) >= (RequiredPageNum))
+ if ((page_free + pub_free) >= RequiredPageNum)
return true;
else
return false;
diff --git a/drivers/staging/rtl8723bs/hal/odm.c b/drivers/staging/rtl8723bs/hal/odm.c
index a22354f728c1..978fb7a2630c 100644
--- a/drivers/staging/rtl8723bs/hal/odm.c
+++ b/drivers/staging/rtl8723bs/hal/odm.c
@@ -131,8 +131,13 @@ u8 CCKSwingTable_Ch14_New[CCK_TABLE_SIZE][8] = {
static void odm_CommonInfoSelfInit(struct dm_odm_t *pDM_Odm)
{
- pDM_Odm->bCckHighPower = (bool) PHY_QueryBBReg(pDM_Odm->Adapter, ODM_REG(CCK_RPT_FORMAT, pDM_Odm), ODM_BIT(CCK_RPT_FORMAT, pDM_Odm));
- pDM_Odm->RFPathRxEnable = (u8) PHY_QueryBBReg(pDM_Odm->Adapter, ODM_REG(BB_RX_PATH, pDM_Odm), ODM_BIT(BB_RX_PATH, pDM_Odm));
+ u32 cck_reg = ODM_REG(CCK_RPT_FORMAT, pDM_Odm);
+ u32 cck_bit = ODM_BIT(CCK_RPT_FORMAT, pDM_Odm);
+ u32 rx_reg = ODM_REG(BB_RX_PATH, pDM_Odm);
+ u32 rx_bit = ODM_BIT(BB_RX_PATH, pDM_Odm);
+
+ pDM_Odm->bCckHighPower = (bool)PHY_QueryBBReg(pDM_Odm->Adapter, cck_reg, cck_bit);
+ pDM_Odm->RFPathRxEnable = (u8)PHY_QueryBBReg(pDM_Odm->Adapter, rx_reg, rx_bit);
pDM_Odm->TxRate = 0xFF;
}
@@ -267,12 +272,15 @@ static void odm_RefreshRateAdaptiveMaskCE(struct dm_odm_t *pDM_Odm)
struct sta_info *pstat = pDM_Odm->pODM_StaInfo[i];
if (IS_STA_VALID(pstat)) {
- if (is_multicast_ether_addr(pstat->hwaddr)) /* if (psta->mac_id == 1) */
+ u32 rssi = pstat->rssi_stat.UndecoratedSmoothedPWDB;
+ bool changed;
+
+ if (is_multicast_ether_addr(pstat->hwaddr))
continue;
- if (true == ODM_RAStateCheck(pDM_Odm, pstat->rssi_stat.UndecoratedSmoothedPWDB, false, &pstat->rssi_level)) {
+ changed = ODM_RAStateCheck(pDM_Odm, rssi, false, &pstat->rssi_level);
+ if (changed)
rtw_hal_update_ra_mask(pstat, pstat->rssi_level);
- }
}
}
diff --git a/drivers/staging/rtl8723bs/hal/odm_DIG.c b/drivers/staging/rtl8723bs/hal/odm_DIG.c
index f10427abd849..58bb45feea22 100644
--- a/drivers/staging/rtl8723bs/hal/odm_DIG.c
+++ b/drivers/staging/rtl8723bs/hal/odm_DIG.c
@@ -10,17 +10,23 @@
void odm_NHMCounterStatisticsInit(void *pDM_VOID)
{
struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
+ struct adapter *adapter = pDM_Odm->Adapter;
/* PHY parameters initialize for n series */
- rtw_write16(pDM_Odm->Adapter, ODM_REG_NHM_TIMER_11N+2, 0x2710); /* 0x894[31:16]= 0x2710 Time duration for NHM unit: 4us, 0x2710 =40ms */
- /* rtw_write16(pDM_Odm->Adapter, ODM_REG_NHM_TIMER_11N+2, 0x4e20); 0x894[31:16]= 0x4e20 Time duration for NHM unit: 4us, 0x4e20 =80ms */
- rtw_write16(pDM_Odm->Adapter, ODM_REG_NHM_TH9_TH10_11N+2, 0xffff); /* 0x890[31:16]= 0xffff th_9, th_10 */
- /* rtw_write32(pDM_Odm->Adapter, ODM_REG_NHM_TH3_TO_TH0_11N, 0xffffff5c); 0x898 = 0xffffff5c th_3, th_2, th_1, th_0 */
- rtw_write32(pDM_Odm->Adapter, ODM_REG_NHM_TH3_TO_TH0_11N, 0xffffff52); /* 0x898 = 0xffffff52 th_3, th_2, th_1, th_0 */
- rtw_write32(pDM_Odm->Adapter, ODM_REG_NHM_TH7_TO_TH4_11N, 0xffffffff); /* 0x89c = 0xffffffff th_7, th_6, th_5, th_4 */
- PHY_SetBBReg(pDM_Odm->Adapter, ODM_REG_FPGA0_IQK_11N, bMaskByte0, 0xff); /* 0xe28[7:0]= 0xff th_8 */
- PHY_SetBBReg(pDM_Odm->Adapter, ODM_REG_NHM_TH9_TH10_11N, BIT10|BIT9|BIT8, 0x7); /* 0x890[9:8]=3 enable CCX */
- PHY_SetBBReg(pDM_Odm->Adapter, ODM_REG_OFDM_FA_RSTC_11N, BIT7, 0x1); /* 0xc0c[7]= 1 max power among all RX ants */
+ /* 0x894[31:16]=0x2710, Time duration for NHM unit: 4us, 0x2710=40ms */
+ rtw_write16(adapter, ODM_REG_NHM_TIMER_11N + 2, 0x2710);
+ /* 0x890[31:16]=0xffff, th_9, th_10 */
+ rtw_write16(adapter, ODM_REG_NHM_TH9_TH10_11N + 2, 0xffff);
+ /* 0x898=0xffffff52, th_3, th_2, th_1, th_0 */
+ rtw_write32(adapter, ODM_REG_NHM_TH3_TO_TH0_11N, 0xffffff52);
+ /* 0x89c=0xffffffff, th_7, th_6, th_5, th_4 */
+ rtw_write32(adapter, ODM_REG_NHM_TH7_TO_TH4_11N, 0xffffffff);
+ /* 0xe28[7:0]=0xff, th_8 */
+ PHY_SetBBReg(adapter, ODM_REG_FPGA0_IQK_11N, bMaskByte0, 0xff);
+ /* 0x890[9:8]=3, enable CCX */
+ PHY_SetBBReg(adapter, ODM_REG_NHM_TH9_TH10_11N, BIT10 | BIT9 | BIT8, 0x7);
+ /* 0xc0c[7]=1, max power among all RX ants */
+ PHY_SetBBReg(adapter, ODM_REG_OFDM_FA_RSTC_11N, BIT7, 0x1);
}
void odm_NHMCounterStatistics(void *pDM_VOID)
@@ -80,8 +86,8 @@ void odm_NHMBB(void *pDM_VOID)
pDM_Odm->NHMLastRxOkcnt =
*(pDM_Odm->pNumRxBytesUnicast);
-
- if ((pDM_Odm->NHMCurTxOkcnt) + 1 > (u64)(pDM_Odm->NHMCurRxOkcnt<<2) + 1) { /* Tx > 4*Rx possible for adaptivity test */
+ /* Tx > 4*Rx possible for adaptivity test */
+ if ((pDM_Odm->NHMCurTxOkcnt) + 1 > (u64)(pDM_Odm->NHMCurRxOkcnt << 2) + 1) {
if (pDM_Odm->NHM_cnt_0 >= 190 || pDM_Odm->adaptivity_flag == true) {
/* Enable EDCCA since it is possible running Adaptivity testing */
/* test_status = 1; */
@@ -343,7 +349,9 @@ void odm_DIGInit(void *pDM_VOID)
pDM_DigTable->bStopDIG = false;
pDM_DigTable->bPSDInProgress = false;
- pDM_DigTable->CurIGValue = (u8) PHY_QueryBBReg(pDM_Odm->Adapter, ODM_REG(IGI_A, pDM_Odm), ODM_BIT(IGI, pDM_Odm));
+ pDM_DigTable->CurIGValue = (u8)PHY_QueryBBReg(pDM_Odm->Adapter,
+ ODM_REG(IGI_A, pDM_Odm),
+ ODM_BIT(IGI, pDM_Odm));
pDM_DigTable->RssiLowThresh = DM_DIG_THRESH_LOW;
pDM_DigTable->RssiHighThresh = DM_DIG_THRESH_HIGH;
pDM_DigTable->FALowThresh = DMfalseALARM_THRESH_LOW;
@@ -565,10 +573,12 @@ void odm_DIG(void *pDM_VOID)
else if (pDM_Odm->bBtConnectProcess)
ODM_Write_DIG(pDM_Odm, 0x28);
else
- ODM_Write_DIG(pDM_Odm, pDM_DigTable->BT30_CurIGI);/* ODM_Write_DIG(pDM_Odm, pDM_DigTable->CurIGValue); */
+ /* ODM_Write_DIG(pDM_Odm, pDM_DigTable->CurIGValue); */
+ ODM_Write_DIG(pDM_Odm, pDM_DigTable->BT30_CurIGI);
}
} else { /* BT is not using */
- ODM_Write_DIG(pDM_Odm, CurrentIGI);/* ODM_Write_DIG(pDM_Odm, pDM_DigTable->CurIGValue); */
+ /* ODM_Write_DIG(pDM_Odm, pDM_DigTable->CurIGValue); */
+ ODM_Write_DIG(pDM_Odm, CurrentIGI);
pDM_DigTable->bMediaConnect_0 = pDM_Odm->bLinked;
pDM_DigTable->DIG_Dynamic_MIN_0 = DIG_Dynamic_MIN;
}
diff --git a/drivers/staging/rtl8723bs/hal/odm_HWConfig.c b/drivers/staging/rtl8723bs/hal/odm_HWConfig.c
index 5bb27b872052..86f41b8f9fe2 100644
--- a/drivers/staging/rtl8723bs/hal/odm_HWConfig.c
+++ b/drivers/staging/rtl8723bs/hal/odm_HWConfig.c
@@ -372,13 +372,22 @@ static void odm_Process_RSSIForDM(
OFDM_pkt += (u8)(pEntry->rssi_stat.PacketMap>>i)&BIT0;
if (pEntry->rssi_stat.ValidBit == 64) {
+ u32 ofdm_weight, cck_weight;
+
Weighting = ((OFDM_pkt<<4) > 64)?64:(OFDM_pkt<<4);
- UndecoratedSmoothedPWDB = (Weighting*UndecoratedSmoothedOFDM+(64-Weighting)*UndecoratedSmoothedCCK)>>6;
+ ofdm_weight = Weighting * UndecoratedSmoothedOFDM;
+ cck_weight = (64 - Weighting) * UndecoratedSmoothedCCK;
+ UndecoratedSmoothedPWDB = (ofdm_weight + cck_weight) >> 6;
} else {
- if (pEntry->rssi_stat.ValidBit != 0)
- UndecoratedSmoothedPWDB = (OFDM_pkt*UndecoratedSmoothedOFDM+(pEntry->rssi_stat.ValidBit-OFDM_pkt)*UndecoratedSmoothedCCK)/pEntry->rssi_stat.ValidBit;
- else
+ if (pEntry->rssi_stat.ValidBit != 0) {
+ u8 valid = pEntry->rssi_stat.ValidBit;
+ u32 ofdm_sum = OFDM_pkt * UndecoratedSmoothedOFDM;
+ u32 cck_sum = (valid - OFDM_pkt) * UndecoratedSmoothedCCK;
+
+ UndecoratedSmoothedPWDB = (ofdm_sum + cck_sum) / valid;
+ } else {
UndecoratedSmoothedPWDB = 0;
+ }
}
pEntry->rssi_stat.UndecoratedSmoothedCCK = UndecoratedSmoothedCCK;
diff --git a/drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c b/drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c
index af6cdda8238d..92951ba4561e 100644
--- a/drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c
+++ b/drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c
@@ -154,14 +154,28 @@ static void ConstructBeacon(struct adapter *padapter, u8 *pframe, u32 *pLength)
/* below for ad-hoc mode */
/* SSID */
- pframe = rtw_set_ie(pframe, WLAN_EID_SSID, cur_network->ssid.ssid_length, cur_network->ssid.ssid, &pktlen);
+ {
+ uint ssid_len = cur_network->ssid.ssid_length;
+
+ pframe = rtw_set_ie(pframe, WLAN_EID_SSID, ssid_len,
+ cur_network->ssid.ssid, &pktlen);
+ }
/* supported rates... */
rate_len = rtw_get_rateset_len(cur_network->supported_rates);
- pframe = rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, ((rate_len > 8) ? 8 : rate_len), cur_network->supported_rates, &pktlen);
+ {
+ uint len = (rate_len > 8) ? 8 : rate_len;
+
+ pframe = rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, len,
+ cur_network->supported_rates, &pktlen);
+ }
/* DS parameter set */
- pframe = rtw_set_ie(pframe, WLAN_EID_DS_PARAMS, 1, (unsigned char *)&(cur_network->configuration.ds_config), &pktlen);
+ {
+ unsigned char *ds = (unsigned char *)&cur_network->configuration.ds_config;
+
+ pframe = rtw_set_ie(pframe, WLAN_EID_DS_PARAMS, 1, ds, &pktlen);
+ }
if ((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) {
u32 ATIMWindow;
@@ -176,8 +190,12 @@ static void ConstructBeacon(struct adapter *padapter, u8 *pframe, u32 *pLength)
/* EXTERNDED SUPPORTED RATE */
- if (rate_len > 8)
- pframe = rtw_set_ie(pframe, WLAN_EID_EXT_SUPP_RATES, (rate_len - 8), (cur_network->supported_rates + 8), &pktlen);
+ if (rate_len > 8) {
+ u8 *ext_rates = cur_network->supported_rates + 8;
+
+ pframe = rtw_set_ie(pframe, WLAN_EID_EXT_SUPP_RATES,
+ rate_len - 8, ext_rates, &pktlen);
+ }
/* todo:HT for adhoc */
@@ -309,10 +327,12 @@ void rtl8723b_set_FwMediaStatusRpt_cmd(struct adapter *padapter, u8 mstatus, u8
SET_8723B_H2CCMD_MSRRPT_PARM_MACID(u1H2CMediaStatusRptParm, macid);
SET_8723B_H2CCMD_MSRRPT_PARM_MACID_END(u1H2CMediaStatusRptParm, macid_end);
- FillH2CCmd8723B(padapter, H2C_8723B_MEDIA_STATUS_RPT, H2C_MEDIA_STATUS_RPT_LEN, u1H2CMediaStatusRptParm);
+ FillH2CCmd8723B(padapter, H2C_8723B_MEDIA_STATUS_RPT,
+ H2C_MEDIA_STATUS_RPT_LEN, u1H2CMediaStatusRptParm);
}
-void rtl8723b_set_FwMacIdConfig_cmd(struct adapter *padapter, u8 mac_id, u8 raid, u8 bw, u8 sgi, u32 mask)
+void rtl8723b_set_FwMacIdConfig_cmd(struct adapter *padapter, u8 mac_id,
+ u8 raid, u8 bw, u8 sgi, u32 mask)
{
u8 u1H2CMacIdConfigParm[H2C_MACID_CFG_LEN] = {0};
@@ -386,7 +406,8 @@ void rtl8723b_set_FwPwrMode_cmd(struct adapter *padapter, u8 psmode)
SET_8723B_H2CCMD_PWRMODE_PARM_SMART_PS(u1H2CPwrModeParm, pwrpriv->smart_ps);
SET_8723B_H2CCMD_PWRMODE_PARM_RLBM(u1H2CPwrModeParm, rlbm);
SET_8723B_H2CCMD_PWRMODE_PARM_BCN_PASS_TIME(u1H2CPwrModeParm, awake_intvl);
- SET_8723B_H2CCMD_PWRMODE_PARM_ALL_QUEUE_UAPSD(u1H2CPwrModeParm, padapter->registrypriv.uapsd_enable);
+ SET_8723B_H2CCMD_PWRMODE_PARM_ALL_QUEUE_UAPSD(u1H2CPwrModeParm,
+ padapter->registrypriv.uapsd_enable);
SET_8723B_H2CCMD_PWRMODE_PARM_PWR_STATE(u1H2CPwrModeParm, PowerState);
SET_8723B_H2CCMD_PWRMODE_PARM_BYTE5(u1H2CPwrModeParm, byte5);
if (psmode != PS_MODE_ACTIVE) {
@@ -402,7 +423,9 @@ void rtl8723b_set_FwPwrMode_cmd(struct adapter *padapter, u8 psmode)
pmlmeext->DrvBcnTimeOut = 0xff;
for (i = 0; i < 9; i++) {
- pmlmeext->bcn_delay_ratio[i] = (pmlmeext->bcn_delay_cnt[i]*100)/pmlmeext->bcn_cnt;
+ u32 cnt = pmlmeext->bcn_delay_cnt[i];
+
+ pmlmeext->bcn_delay_ratio[i] = (cnt * 100) / pmlmeext->bcn_cnt;
ratio_20_delay += pmlmeext->bcn_delay_ratio[i];
ratio_80_delay += pmlmeext->bcn_delay_ratio[i];
@@ -429,7 +452,9 @@ void rtl8723b_set_FwPwrMode_cmd(struct adapter *padapter, u8 psmode)
pmlmeext->DrvBcnTimeOut =7;
if ((pmlmeext->DrvBcnEarly!= 0Xff) && (pmlmeext->DrvBcnTimeOut!= 0xff))
- u1H2CPwrModeParm[H2C_PWRMODE_LEN-1] = BIT(0) | ((pmlmeext->DrvBcnEarly<<1)&0x0E) |((pmlmeext->DrvBcnTimeOut<<4)&0xf0) ;
+ u1H2CPwrModeParm[H2C_PWRMODE_LEN-1] =
+ BIT(0) | ((pmlmeext->DrvBcnEarly<<1)&0x0E) |
+ ((pmlmeext->DrvBcnTimeOut<<4)&0xf0);
*/
}
@@ -528,7 +553,12 @@ static void rtl8723b_set_FwRsvdPagePkt(
/* 3 (2) ps-poll */
RsvdPageLoc.LocPsPoll = TotalPageNum;
ConstructPSPoll(padapter, &ReservedPagePacket[BufIndex], &PSPollLength);
- rtl8723b_fill_fake_txdesc(padapter, &ReservedPagePacket[BufIndex-TxDescLen], PSPollLength, true, false, false);
+ {
+ u8 *desc = &ReservedPagePacket[BufIndex - TxDescLen];
+
+ rtl8723b_fill_fake_txdesc(padapter, desc, PSPollLength,
+ true, false, false);
+ }
CurtPktPageNum = (u8)PageNum_128(TxDescLen + PSPollLength);
@@ -545,7 +575,12 @@ static void rtl8723b_set_FwRsvdPagePkt(
get_my_bssid(&pmlmeinfo->network),
false, 0, 0, false
);
- rtl8723b_fill_fake_txdesc(padapter, &ReservedPagePacket[BufIndex-TxDescLen], NullDataLength, false, false, false);
+ {
+ u8 *desc = &ReservedPagePacket[BufIndex - TxDescLen];
+
+ rtl8723b_fill_fake_txdesc(padapter, desc, NullDataLength,
+ false, false, false);
+ }
CurtPktPageNum = (u8)PageNum_128(TxDescLen + NullDataLength);
@@ -562,7 +597,12 @@ static void rtl8723b_set_FwRsvdPagePkt(
get_my_bssid(&pmlmeinfo->network),
true, 0, 0, false
);
- rtl8723b_fill_fake_txdesc(padapter, &ReservedPagePacket[BufIndex-TxDescLen], QosNullLength, false, false, false);
+ {
+ u8 *desc = &ReservedPagePacket[BufIndex - TxDescLen];
+
+ rtl8723b_fill_fake_txdesc(padapter, desc, QosNullLength,
+ false, false, false);
+ }
CurtPktPageNum = (u8)PageNum_128(TxDescLen + QosNullLength);
@@ -579,7 +619,12 @@ static void rtl8723b_set_FwRsvdPagePkt(
get_my_bssid(&pmlmeinfo->network),
true, 0, 0, false
);
- rtl8723b_fill_fake_txdesc(padapter, &ReservedPagePacket[BufIndex-TxDescLen], BTQosNullLength, false, true, false);
+ {
+ u8 *desc = &ReservedPagePacket[BufIndex - TxDescLen];
+
+ rtl8723b_fill_fake_txdesc(padapter, desc, BTQosNullLength,
+ false, true, false);
+ }
CurtPktPageNum = (u8)PageNum_128(TxDescLen + BTQosNullLength);
@@ -656,6 +701,8 @@ void rtl8723b_download_rsvd_page(struct adapter *padapter, u8 mstatus)
DLBcnCount = 0;
poll = 0;
do {
+ bool stop;
+
/* download rsvd page. */
rtl8723b_set_FwRsvdPagePkt(padapter, 0);
DLBcnCount++;
@@ -663,11 +710,16 @@ void rtl8723b_download_rsvd_page(struct adapter *padapter, u8 mstatus)
yield();
/* mdelay(10); */
/* check rsvd page download OK. */
- rtw_hal_get_hwreg(padapter, HW_VAR_BCN_VALID, (u8 *)(&bcn_valid));
+ rtw_hal_get_hwreg(padapter, HW_VAR_BCN_VALID,
+ (u8 *)(&bcn_valid));
poll++;
- } while (!bcn_valid && (poll%10) != 0 && !padapter->bSurpriseRemoved && !padapter->bDriverStopped);
+ stop = padapter->bSurpriseRemoved ||
+ padapter->bDriverStopped;
+ } while (!bcn_valid && (poll % 10) != 0 && !stop);
- } while (!bcn_valid && DLBcnCount <= 100 && !padapter->bSurpriseRemoved && !padapter->bDriverStopped);
+ if (stop)
+ break;
+ } while (!bcn_valid && DLBcnCount <= 100);
if (padapter->bSurpriseRemoved || padapter->bDriverStopped) {
} else {
@@ -850,7 +902,12 @@ static void SetFwRsvdPagePkt_BTCoex(struct adapter *padapter)
NULL,
true, 0, 0, false
);
- rtl8723b_fill_fake_txdesc(padapter, &ReservedPagePacket[BufIndex-TxDescLen], BTQosNullLength, false, true, false);
+ {
+ u8 *desc = &ReservedPagePacket[BufIndex - TxDescLen];
+
+ rtl8723b_fill_fake_txdesc(padapter, desc, BTQosNullLength,
+ false, true, false);
+ }
CurtPktPageNum = (u8)PageNum_128(TxDescLen + BTQosNullLength);
@@ -922,6 +979,8 @@ void rtl8723b_download_BTCoex_AP_mode_rsvd_page(struct adapter *padapter)
DLBcnCount = 0;
poll = 0;
do {
+ bool stop;
+
SetFwRsvdPagePkt_BTCoex(padapter);
DLBcnCount++;
do {
@@ -930,8 +989,12 @@ void rtl8723b_download_BTCoex_AP_mode_rsvd_page(struct adapter *padapter)
/* check rsvd page download OK. */
rtw_hal_get_hwreg(padapter, HW_VAR_BCN_VALID, &bcn_valid);
poll++;
- } while (!bcn_valid && (poll%10) != 0 && !padapter->bSurpriseRemoved && !padapter->bDriverStopped);
- } while (!bcn_valid && (DLBcnCount <= 100) && !padapter->bSurpriseRemoved && !padapter->bDriverStopped);
+ stop = padapter->bSurpriseRemoved || padapter->bDriverStopped;
+ } while (!bcn_valid && (poll % 10) != 0 && !stop);
+
+ if (stop)
+ break;
+ } while (!bcn_valid && (DLBcnCount <= 100));
if (bcn_valid) {
struct pwrctrl_priv *pwrctl = adapter_to_pwrctl(padapter);
diff --git a/drivers/staging/rtl8723bs/hal/rtl8723b_hal_init.c b/drivers/staging/rtl8723bs/hal/rtl8723b_hal_init.c
index ae5e4980ed06..017096857d67 100644
--- a/drivers/staging/rtl8723bs/hal/rtl8723b_hal_init.c
+++ b/drivers/staging/rtl8723bs/hal/rtl8723b_hal_init.c
@@ -58,7 +58,10 @@ static int _BlockWrite(struct adapter *padapter, void *buffer, u32 buffSize)
remainSize_p1 = buffSize % blockSize_p1;
for (i = 0; i < blockCount_p1; i++) {
- ret = rtw_write32(padapter, (FW_8723B_START_ADDRESS + i * blockSize_p1), *((u32 *)(bufferPtr + i * blockSize_p1)));
+ u32 addr = FW_8723B_START_ADDRESS + i * blockSize_p1;
+ u32 data = *((u32 *)(bufferPtr + i * blockSize_p1));
+
+ ret = rtw_write32(padapter, addr, data);
if (ret == _FAIL) {
netdev_dbg(padapter->pnetdev, "write failed at %s %d, block:%d\n",
__func__, __LINE__, i);
@@ -261,27 +264,34 @@ void rtl8723b_FirmwareSelfReset(struct adapter *padapter)
struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
u8 val;
u8 Delay = 100;
+ bool old_fw;
- if (
- !(IS_FW_81xxC(padapter) && ((pHalData->FirmwareVersion < 0x21) || (pHalData->FirmwareVersion == 0x21 && pHalData->FirmwareSubVersion < 0x01)))
- ) { /* after 88C Fw v33.1 */
- /* 0x1cf = 0x20. Inform 8051 to reset. 2009.12.25. tynli_test */
- rtw_write8(padapter, REG_HMETFR+3, 0x20);
+ /* Check for old firmware version */
+ old_fw = IS_FW_81xxC(padapter) &&
+ ((pHalData->FirmwareVersion < 0x21) ||
+ (pHalData->FirmwareVersion == 0x21 &&
+ pHalData->FirmwareSubVersion < 0x01));
+
+ if (old_fw)
+ return;
+ /* after 88C Fw v33.1 */
+ /* 0x1cf = 0x20. Inform 8051 to reset. 2009.12.25. tynli_test */
+ rtw_write8(padapter, REG_HMETFR + 3, 0x20);
+
+ val = rtw_read8(padapter, REG_SYS_FUNC_EN + 1);
+ while (val & BIT2) {
+ Delay--;
+ if (Delay == 0)
+ break;
+ udelay(50);
val = rtw_read8(padapter, REG_SYS_FUNC_EN + 1);
- while (val & BIT2) {
- Delay--;
- if (Delay == 0)
- break;
- udelay(50);
- val = rtw_read8(padapter, REG_SYS_FUNC_EN + 1);
- }
+ }
- if (Delay == 0) {
- /* force firmware reset */
- val = rtw_read8(padapter, REG_SYS_FUNC_EN + 1);
- rtw_write8(padapter, REG_SYS_FUNC_EN + 1, val & (~BIT2));
- }
+ if (Delay == 0) {
+ /* force firmware reset */
+ val = rtw_read8(padapter, REG_SYS_FUNC_EN + 1);
+ rtw_write8(padapter, REG_SYS_FUNC_EN + 1, val & (~BIT2));
}
}
@@ -1000,9 +1010,13 @@ void rtl8723b_SetBeaconRelatedRegisters(struct adapter *padapter)
rtw_write32(padapter, REG_TCR, value32);
/* NOTE: Fix test chip's bug (about contention windows's randomness) */
- if (check_fwstate(&padapter->mlmepriv, WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER_STATE|WIFI_AP_STATE) == true) {
- rtw_write8(padapter, REG_RXTSF_OFFSET_CCK, 0x50);
- rtw_write8(padapter, REG_RXTSF_OFFSET_OFDM, 0x50);
+ {
+ u16 state_mask = WIFI_ADHOC_STATE | WIFI_ADHOC_MASTER_STATE | WIFI_AP_STATE;
+
+ if (check_fwstate(&padapter->mlmepriv, state_mask)) {
+ rtw_write8(padapter, REG_RXTSF_OFFSET_CCK, 0x50);
+ rtw_write8(padapter, REG_RXTSF_OFFSET_OFDM, 0x50);
+ }
}
_BeaconFunctionEnable(padapter, true, true);
@@ -1655,7 +1669,9 @@ static u8 fill_txdesc_sectype(struct pkt_attrib *pattrib)
return sectype;
}
-static void fill_txdesc_vcs_8723b(struct adapter *padapter, struct pkt_attrib *pattrib, struct txdesc_8723b *ptxdesc)
+static void fill_txdesc_vcs_8723b(struct adapter *padapter,
+ struct pkt_attrib *pattrib,
+ struct txdesc_8723b *ptxdesc)
{
if (pattrib->vcs_mode) {
switch (pattrib->vcs_mode) {
@@ -1686,7 +1702,9 @@ static void fill_txdesc_vcs_8723b(struct adapter *padapter, struct pkt_attrib *p
}
}
-static void fill_txdesc_phy_8723b(struct adapter *padapter, struct pkt_attrib *pattrib, struct txdesc_8723b *ptxdesc)
+static void fill_txdesc_phy_8723b(struct adapter *padapter,
+ struct pkt_attrib *pattrib,
+ struct txdesc_8723b *ptxdesc)
{
if (pattrib->ht_en) {
ptxdesc->data_bw = BWMapping_8723B(padapter, pattrib);
diff --git a/drivers/staging/rtl8723bs/hal/rtl8723b_phycfg.c b/drivers/staging/rtl8723bs/hal/rtl8723b_phycfg.c
index d8709d40cb33..90c49a32549e 100644
--- a/drivers/staging/rtl8723bs/hal/rtl8723b_phycfg.c
+++ b/drivers/staging/rtl8723bs/hal/rtl8723b_phycfg.c
@@ -109,18 +109,26 @@ static u32 phy_RFSerialRead_8723B(
NewOffset = Offset;
if (eRFPath == RF_PATH_A) {
- tmplong2 = PHY_QueryBBReg(Adapter, rFPGA0_XA_HSSIParameter2|MaskforPhySet, bMaskDWord);
+ u32 regA = rFPGA0_XA_HSSIParameter2 | MaskforPhySet;
+
+ tmplong2 = PHY_QueryBBReg(Adapter, regA, bMaskDWord);
tmplong2 = (tmplong2 & (~bLSSIReadAddress)) | (NewOffset<<23) | bLSSIReadEdge; /* T65 RF */
- PHY_SetBBReg(Adapter, rFPGA0_XA_HSSIParameter2|MaskforPhySet, bMaskDWord, tmplong2&(~bLSSIReadEdge));
+ PHY_SetBBReg(Adapter, regA, bMaskDWord, tmplong2 & (~bLSSIReadEdge));
} else {
- tmplong2 = PHY_QueryBBReg(Adapter, rFPGA0_XB_HSSIParameter2|MaskforPhySet, bMaskDWord);
+ u32 regB = rFPGA0_XB_HSSIParameter2 | MaskforPhySet;
+
+ tmplong2 = PHY_QueryBBReg(Adapter, regB, bMaskDWord);
tmplong2 = (tmplong2 & (~bLSSIReadAddress)) | (NewOffset<<23) | bLSSIReadEdge; /* T65 RF */
- PHY_SetBBReg(Adapter, rFPGA0_XB_HSSIParameter2|MaskforPhySet, bMaskDWord, tmplong2&(~bLSSIReadEdge));
+ PHY_SetBBReg(Adapter, regB, bMaskDWord, tmplong2 & (~bLSSIReadEdge));
}
- tmplong2 = PHY_QueryBBReg(Adapter, rFPGA0_XA_HSSIParameter2|MaskforPhySet, bMaskDWord);
- PHY_SetBBReg(Adapter, rFPGA0_XA_HSSIParameter2|MaskforPhySet, bMaskDWord, tmplong2 & (~bLSSIReadEdge));
- PHY_SetBBReg(Adapter, rFPGA0_XA_HSSIParameter2|MaskforPhySet, bMaskDWord, tmplong2 | bLSSIReadEdge);
+ {
+ u32 reg = rFPGA0_XA_HSSIParameter2 | MaskforPhySet;
+
+ tmplong2 = PHY_QueryBBReg(Adapter, reg, bMaskDWord);
+ PHY_SetBBReg(Adapter, reg, bMaskDWord, tmplong2 & (~bLSSIReadEdge));
+ PHY_SetBBReg(Adapter, reg, bMaskDWord, tmplong2 | bLSSIReadEdge);
+ }
udelay(10);
@@ -307,22 +315,29 @@ static void phy_InitBBRFRegisterDefinition(struct adapter *Adapter)
struct hal_com_data *pHalData = GET_HAL_DATA(Adapter);
/* RF Interface Sowrtware Control */
- pHalData->PHYRegDef[RF_PATH_A].rfintfs = rFPGA0_XAB_RFInterfaceSW; /* 16 LSBs if read 32-bit from 0x870 */
- pHalData->PHYRegDef[RF_PATH_B].rfintfs = rFPGA0_XAB_RFInterfaceSW; /* 16 MSBs if read 32-bit from 0x870 (16-bit for 0x872) */
+ /* 16 LSBs if read 32-bit from 0x870 */
+ pHalData->PHYRegDef[RF_PATH_A].rfintfs = rFPGA0_XAB_RFInterfaceSW;
+ /* 16 MSBs if read 32-bit from 0x870 (16-bit for 0x872) */
+ pHalData->PHYRegDef[RF_PATH_B].rfintfs = rFPGA0_XAB_RFInterfaceSW;
/* RF Interface Output (and Enable) */
- pHalData->PHYRegDef[RF_PATH_A].rfintfo = rFPGA0_XA_RFInterfaceOE; /* 16 LSBs if read 32-bit from 0x860 */
- pHalData->PHYRegDef[RF_PATH_B].rfintfo = rFPGA0_XB_RFInterfaceOE; /* 16 LSBs if read 32-bit from 0x864 */
+ /* 16 LSBs if read 32-bit from 0x860 */
+ pHalData->PHYRegDef[RF_PATH_A].rfintfo = rFPGA0_XA_RFInterfaceOE;
+ /* 16 LSBs if read 32-bit from 0x864 */
+ pHalData->PHYRegDef[RF_PATH_B].rfintfo = rFPGA0_XB_RFInterfaceOE;
/* RF Interface (Output and) Enable */
- pHalData->PHYRegDef[RF_PATH_A].rfintfe = rFPGA0_XA_RFInterfaceOE; /* 16 MSBs if read 32-bit from 0x860 (16-bit for 0x862) */
- pHalData->PHYRegDef[RF_PATH_B].rfintfe = rFPGA0_XB_RFInterfaceOE; /* 16 MSBs if read 32-bit from 0x864 (16-bit for 0x866) */
+ /* 16 MSBs if read 32-bit from 0x860 (16-bit for 0x862) */
+ pHalData->PHYRegDef[RF_PATH_A].rfintfe = rFPGA0_XA_RFInterfaceOE;
+ /* 16 MSBs if read 32-bit from 0x864 (16-bit for 0x866) */
+ pHalData->PHYRegDef[RF_PATH_B].rfintfe = rFPGA0_XB_RFInterfaceOE;
pHalData->PHYRegDef[RF_PATH_A].rf3wireOffset = rFPGA0_XA_LSSIParameter; /* LSSI Parameter */
pHalData->PHYRegDef[RF_PATH_B].rf3wireOffset = rFPGA0_XB_LSSIParameter;
- pHalData->PHYRegDef[RF_PATH_A].rfHSSIPara2 = rFPGA0_XA_HSSIParameter2; /* wire control parameter2 */
- pHalData->PHYRegDef[RF_PATH_B].rfHSSIPara2 = rFPGA0_XB_HSSIParameter2; /* wire control parameter2 */
+ /* wire control parameter2 */
+ pHalData->PHYRegDef[RF_PATH_A].rfHSSIPara2 = rFPGA0_XA_HSSIParameter2;
+ pHalData->PHYRegDef[RF_PATH_B].rfHSSIPara2 = rFPGA0_XB_HSSIParameter2;
/* Transceiver Readback LSSI/HSPI mode */
pHalData->PHYRegDef[RF_PATH_A].rfLSSIReadBack = rFPGA0_XA_LSSIReadBack;
@@ -648,8 +663,12 @@ static void phy_PostSetBwMode8723B(struct adapter *Adapter)
PHY_SetBBReg(Adapter, rCCK0_System, bCCKSideBand, (pHalData->nCur40MhzPrimeSC>>1));
PHY_SetBBReg(Adapter, rOFDM1_LSTF, 0xC00, pHalData->nCur40MhzPrimeSC);
+ {
+ u32 val;
- PHY_SetBBReg(Adapter, 0x818, (BIT26|BIT27), (pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) ? 2 : 1);
+ val = (pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) ? 2 : 1;
+ PHY_SetBBReg(Adapter, 0x818, (BIT26 | BIT27), val);
+ }
break;
default:
break;
@@ -774,5 +793,6 @@ void PHY_SetSwChnlBWMode8723B(
u8 Offset80
)
{
- PHY_HandleSwChnlAndSetBW8723B(Adapter, true, true, channel, Bandwidth, Offset40, Offset80, channel);
+ PHY_HandleSwChnlAndSetBW8723B(Adapter, true, true, channel,
+ Bandwidth, Offset40, Offset80, channel);
}
diff --git a/drivers/staging/rtl8723bs/hal/rtl8723b_rf6052.c b/drivers/staging/rtl8723bs/hal/rtl8723b_rf6052.c
index ffb35e1ace62..e0fb36b0b666 100644
--- a/drivers/staging/rtl8723bs/hal/rtl8723b_rf6052.c
+++ b/drivers/staging/rtl8723bs/hal/rtl8723b_rf6052.c
@@ -113,10 +113,12 @@ static int phy_RF6052_Config_ParaFile(struct adapter *Adapter)
udelay(1);/* PlatformStallExecution(1); */
/* Set bit number of Address and Data for RF register */
- PHY_SetBBReg(Adapter, pPhyReg->rfHSSIPara2, b3WireAddressLength, 0x0); /* Set 1 to 4 bits for 8255 */
+ /* Set 1 to 4 bits for 8255 */
+ PHY_SetBBReg(Adapter, pPhyReg->rfHSSIPara2, b3WireAddressLength, 0x0);
udelay(1);/* PlatformStallExecution(1); */
- PHY_SetBBReg(Adapter, pPhyReg->rfHSSIPara2, b3WireDataLength, 0x0); /* Set 0 to 12 bits for 8255 */
+ /* Set 0 to 12 bits for 8255 */
+ PHY_SetBBReg(Adapter, pPhyReg->rfHSSIPara2, b3WireDataLength, 0x0);
udelay(1);/* PlatformStallExecution(1); */
/*----Initialize RF fom connfiguration file----*/
diff --git a/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c b/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c
index 399edfbf8ec6..5bbf958d792e 100644
--- a/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c
+++ b/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c
@@ -300,8 +300,10 @@ static void rtl8723bs_recv_tasklet(struct tasklet_struct *t)
pkt_copy->dev = padapter->pnetdev;
precvframe->u.hdr.pkt = pkt_copy;
- skb_reserve(pkt_copy, 8 - ((SIZE_PTR)(pkt_copy->data) & 7));/* force pkt_copy->data at 8-byte alignment address */
- skb_reserve(pkt_copy, shift_sz);/* force ip_hdr at 8-byte alignment address according to shift_sz. */
+ /* force pkt_copy->data at 8-byte alignment address */
+ skb_reserve(pkt_copy, 8 - ((SIZE_PTR)(pkt_copy->data) & 7));
+ /* force ip_hdr at 8-byte alignment per shift_sz */
+ skb_reserve(pkt_copy, shift_sz);
memcpy(pkt_copy->data, (ptr + rx_report_sz + pattrib->shift_sz), skb_len);
precvframe->u.hdr.rx_head = pkt_copy->head;
precvframe->u.hdr.rx_data = precvframe->u.hdr.rx_tail = pkt_copy->data;
diff --git a/drivers/staging/rtl8723bs/hal/rtl8723bs_xmit.c b/drivers/staging/rtl8723bs/hal/rtl8723bs_xmit.c
index abb6fdfe7e1f..7ed4c710ae8d 100644
--- a/drivers/staging/rtl8723bs/hal/rtl8723bs_xmit.c
+++ b/drivers/staging/rtl8723bs/hal/rtl8723bs_xmit.c
@@ -446,7 +446,10 @@ s32 rtl8723bs_mgnt_xmit(
pxmitbuf->priv_data = NULL;
if (GetFrameSubType(pframe) == WIFI_BEACON) { /* dump beacon directly */
- ret = rtw_write_port(padapter, pdvobjpriv->Queue2Pipe[pxmitbuf->ff_hwaddr], pxmitbuf->len, (u8 *)pxmitbuf);
+ u8 ff_addr = pxmitbuf->ff_hwaddr;
+
+ ret = rtw_write_port(padapter, pdvobjpriv->Queue2Pipe[ff_addr],
+ pxmitbuf->len, (u8 *)pxmitbuf);
if (ret != _SUCCESS)
rtw_sctx_done_err(&pxmitbuf->sctx, RTW_SCTX_DONE_WRITE_PORT_ERR);
diff --git a/drivers/staging/rtl8723bs/hal/sdio_halinit.c b/drivers/staging/rtl8723bs/hal/sdio_halinit.c
index 668616efa68a..d1f1778a4ec6 100644
--- a/drivers/staging/rtl8723bs/hal/sdio_halinit.c
+++ b/drivers/staging/rtl8723bs/hal/sdio_halinit.c
@@ -28,7 +28,9 @@ static u8 CardEnable(struct adapter *padapter)
/* unlock ISO/CLK/Power control register */
rtw_write8(padapter, REG_RSV_CTRL, 0x0);
- ret = HalPwrSeqCmdParsing(padapter, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, rtl8723B_card_enable_flow);
+ ret = HalPwrSeqCmdParsing(padapter, PWR_CUT_ALL_MSK,
+ PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,
+ rtl8723B_card_enable_flow);
if (ret == _SUCCESS) {
u8 bMacPwrCtrlOn = true;
rtw_hal_set_hwreg(padapter, HW_VAR_APFM_ON_MAC, &bMacPwrCtrlOn);
@@ -111,7 +113,9 @@ u8 _InitPowerOn_8723BS(struct adapter *padapter)
}
/* Tx Page FIFO threshold */
-static void _init_available_page_threshold(struct adapter *padapter, u8 numHQ, u8 numNQ, u8 numLQ, u8 numPubQ)
+static void _init_available_page_threshold(struct adapter *padapter,
+ u8 numHQ, u8 numNQ,
+ u8 numLQ, u8 numPubQ)
{
u16 HQ_threshold, NQ_threshold, LQ_threshold;
@@ -852,7 +856,8 @@ static void CardDisableRTL8723BSdio(struct adapter *padapter)
u8 bMacPwrCtrlOn;
/* Run LPS WL RFOFF flow */
- HalPwrSeqCmdParsing(padapter, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, rtl8723B_enter_lps_flow);
+ HalPwrSeqCmdParsing(padapter, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK,
+ PWR_INTF_SDIO_MSK, rtl8723B_enter_lps_flow);
/* ==== Reset digital sequence ====== */
@@ -881,7 +886,8 @@ static void CardDisableRTL8723BSdio(struct adapter *padapter)
bMacPwrCtrlOn = false; /* Disable CMD53 R/W */
rtw_hal_set_hwreg(padapter, HW_VAR_APFM_ON_MAC, &bMacPwrCtrlOn);
- HalPwrSeqCmdParsing(padapter, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, rtl8723B_card_disable_flow);
+ HalPwrSeqCmdParsing(padapter, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK,
+ PWR_INTF_SDIO_MSK, rtl8723B_card_disable_flow);
}
u32 rtl8723bs_hal_deinit(struct adapter *padapter)
@@ -1116,7 +1122,8 @@ static s32 _ReadAdapterInfo8723BS(struct adapter *padapter)
if (!padapter->hw_init_completed) {
rtw_write8(padapter, 0x67, 0x00); /* for BT, Switch Ant control to BT */
- CardDisableRTL8723BSdio(padapter);/* for the power consumption issue, wifi ko module is loaded during booting, but wifi GUI is off */
+ /* Power consumption issue: wifi module loaded at boot but GUI off */
+ CardDisableRTL8723BSdio(padapter);
}
return _SUCCESS;
diff --git a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
index 5488940ffe2e..fe5015b8d649 100644
--- a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
+++ b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
@@ -125,8 +125,10 @@ static struct ieee80211_supported_band *rtw_spt_band_alloc(
if (!spt_band)
goto exit;
- spt_band->channels = (struct ieee80211_channel *)(((u8 *)spt_band) + sizeof(struct ieee80211_supported_band));
- spt_band->bitrates = (struct ieee80211_rate *)(((u8 *)spt_band->channels) + sizeof(struct ieee80211_channel) * n_channels);
+ spt_band->channels = (struct ieee80211_channel *)(((u8 *)spt_band) +
+ sizeof(struct ieee80211_supported_band));
+ spt_band->bitrates = (struct ieee80211_rate *)(((u8 *)spt_band->channels) +
+ sizeof(struct ieee80211_channel) * n_channels);
spt_band->band = band;
spt_band->n_channels = n_channels;
spt_band->n_bitrates = n_bitrates;
@@ -205,7 +207,8 @@ int rtw_ieee80211_channel_to_frequency(int chan)
}
#define MAX_BSSINFO_LEN 1000
-struct cfg80211_bss *rtw_cfg80211_inform_bss(struct adapter *padapter, struct wlan_network *pnetwork)
+struct cfg80211_bss *rtw_cfg80211_inform_bss(struct adapter *padapter,
+ struct wlan_network *pnetwork)
{
struct ieee80211_channel *notify_channel;
struct cfg80211_bss *bss = NULL;
@@ -246,7 +249,10 @@ struct cfg80211_bss *rtw_cfg80211_inform_bss(struct adapter *padapter, struct wl
u32 wpsielen = 0;
u8 *wpsie = NULL;
- wpsie = rtw_get_wps_ie(pnetwork->network.ies + _FIXED_IE_LENGTH_, pnetwork->network.ie_length - _FIXED_IE_LENGTH_, NULL, &wpsielen);
+ u8 *ies = pnetwork->network.ies + _FIXED_IE_LENGTH_;
+ uint ie_len = pnetwork->network.ie_length - _FIXED_IE_LENGTH_;
+
+ wpsie = rtw_get_wps_ie(ies, ie_len, NULL, &wpsielen);
if (wpsie && wpsielen > 0)
psr = rtw_get_wps_attr_content(wpsie, wpsielen, WPS_ATTR_SELECTED_REGISTRAR, (u8 *)(&sr), NULL);
@@ -275,9 +281,13 @@ struct cfg80211_bss *rtw_cfg80211_inform_bss(struct adapter *padapter, struct wl
/* We've set wiphy's signal_type as CFG80211_SIGNAL_TYPE_MBM: signal strength in mBm (100*dBm) */
if (check_fwstate(pmlmepriv, _FW_LINKED) == true &&
is_same_network(&pmlmepriv->cur_network.network, &pnetwork->network, 0)) {
- notify_signal = 100 * translate_percentage_to_dbm(padapter->recvpriv.signal_strength);/* dbm */
+ u8 sig = padapter->recvpriv.signal_strength;
+
+ notify_signal = 100 * translate_percentage_to_dbm(sig);
} else {
- notify_signal = 100 * translate_percentage_to_dbm(pnetwork->network.phy_info.signal_strength);/* dbm */
+ u8 sig = pnetwork->network.phy_info.signal_strength;
+
+ notify_signal = 100 * translate_percentage_to_dbm(sig);
}
buf = kzalloc(MAX_BSSINFO_LEN, GFP_ATOMIC);
@@ -377,9 +387,10 @@ void rtw_cfg80211_ibss_indicate_connect(struct adapter *padapter)
rtw_warn_on(1);
return;
}
- if (!memcmp(&(scanned->network.ssid), &(pnetwork->ssid), sizeof(struct ndis_802_11_ssid))
- && !memcmp(scanned->network.mac_address, pnetwork->mac_address, ETH_ALEN)
- )
+ if (!memcmp(&scanned->network.ssid, &pnetwork->ssid,
+ sizeof(struct ndis_802_11_ssid)) &&
+ !memcmp(scanned->network.mac_address,
+ pnetwork->mac_address, ETH_ALEN))
rtw_cfg80211_inform_bss(padapter, scanned);
else
rtw_warn_on(1);
@@ -490,18 +501,24 @@ void rtw_cfg80211_indicate_disconnect(struct adapter *padapter)
}
}
-static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, struct ieee_param *param, u32 param_len)
+static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ struct ieee_param *param,
+ u32 param_len)
{
int ret = 0;
u32 wep_key_idx, wep_key_len;
+ u32 key_len;
struct sta_info *psta = NULL, *pbcmc_sta = NULL;
struct adapter *padapter = rtw_netdev_priv(dev);
struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
struct security_priv *psecuritypriv = &(padapter->securitypriv);
struct sta_priv *pstapriv = &padapter->stapriv;
- char *grpkey = padapter->securitypriv.dot118021XGrpKey[param->u.crypt.idx].skey;
- char *txkey = padapter->securitypriv.dot118021XGrptxmickey[param->u.crypt.idx].skey;
- char *rxkey = padapter->securitypriv.dot118021XGrprxmickey[param->u.crypt.idx].skey;
+ char *grpkey = psecuritypriv->dot118021XGrpKey[param->u.crypt.idx].skey;
+ char *txkey = psecuritypriv->dot118021XGrptxmickey[param->u.crypt.idx].skey;
+ char *rxkey = psecuritypriv->dot118021XGrprxmickey[param->u.crypt.idx].skey;
+
+ /* Clamp key_len to max 16 */
+ key_len = min_t(u32, param->u.crypt.key_len, 16);
param->u.crypt.err = 0;
param->u.crypt.alg[IEEE_CRYPT_ALG_NAME_LEN - 1] = '\0';
@@ -601,12 +618,15 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, struct ieee_pa
psecuritypriv->dot11PrivacyAlgrthm = psecuritypriv->dot118021XGrpPrivacy;/* */
- rtw_ap_set_group_key(padapter, param->u.crypt.key, psecuritypriv->dot118021XGrpPrivacy, param->u.crypt.idx);
+ rtw_ap_set_group_key(padapter, param->u.crypt.key,
+ psecuritypriv->dot118021XGrpPrivacy,
+ param->u.crypt.idx);
pbcmc_sta = rtw_get_bcmc_stainfo(padapter);
if (pbcmc_sta) {
pbcmc_sta->ieee8021x_blocked = false;
- pbcmc_sta->dot118021XPrivacy = psecuritypriv->dot118021XGrpPrivacy;/* rx will use bmc_sta's dot118021XPrivacy */
+ /* rx will use bmc_sta's dot118021XPrivacy */
+ pbcmc_sta->dot118021XPrivacy = psecuritypriv->dot118021XGrpPrivacy;
}
}
@@ -616,7 +636,8 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, struct ieee_pa
if (psecuritypriv->dot11AuthAlgrthm == dot11AuthAlgrthm_8021X && psta) { /* psk/802_1x */
if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
if (param->u.crypt.set_tx == 1) { /* pairwise key */
- memcpy(psta->dot118021x_UncstKey.skey, param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 : param->u.crypt.key_len));
+ memcpy(psta->dot118021x_UncstKey.skey,
+ param->u.crypt.key, key_len);
if (strcmp(param->u.crypt.alg, "WEP") == 0) {
psta->dot118021XPrivacy = _WEP40_;
@@ -645,7 +666,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, struct ieee_pa
} else { /* group key??? */
if (strcmp(param->u.crypt.alg, "WEP") == 0) {
- memcpy(grpkey, param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 : param->u.crypt.key_len));
+ memcpy(grpkey, param->u.crypt.key, key_len);
psecuritypriv->dot118021XGrpPrivacy = _WEP40_;
if (param->u.crypt.key_len == 13)
@@ -653,7 +674,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, struct ieee_pa
} else if (strcmp(param->u.crypt.alg, "TKIP") == 0) {
psecuritypriv->dot118021XGrpPrivacy = _TKIP_;
- memcpy(grpkey, param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 : param->u.crypt.key_len));
+ memcpy(grpkey, param->u.crypt.key, key_len);
/* set mic key */
memcpy(txkey, &(param->u.crypt.key[16]), 8);
@@ -664,7 +685,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, struct ieee_pa
} else if (strcmp(param->u.crypt.alg, "CCMP") == 0) {
psecuritypriv->dot118021XGrpPrivacy = _AES_;
- memcpy(grpkey, param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 : param->u.crypt.key_len));
+ memcpy(grpkey, param->u.crypt.key, key_len);
} else {
psecuritypriv->dot118021XGrpPrivacy = _NO_PRIVACY_;
}
@@ -675,12 +696,16 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, struct ieee_pa
psecuritypriv->dot11PrivacyAlgrthm = psecuritypriv->dot118021XGrpPrivacy;/* */
- rtw_ap_set_group_key(padapter, param->u.crypt.key, psecuritypriv->dot118021XGrpPrivacy, param->u.crypt.idx);
+ rtw_ap_set_group_key(padapter, param->u.crypt.key,
+ psecuritypriv->dot118021XGrpPrivacy,
+ param->u.crypt.idx);
pbcmc_sta = rtw_get_bcmc_stainfo(padapter);
if (pbcmc_sta) {
pbcmc_sta->ieee8021x_blocked = false;
- pbcmc_sta->dot118021XPrivacy = psecuritypriv->dot118021XGrpPrivacy;/* rx will use bmc_sta's dot118021XPrivacy */
+ /* rx will use bmc_sta's dot118021XPrivacy */
+ pbcmc_sta->dot118021XPrivacy =
+ psecuritypriv->dot118021XGrpPrivacy;
}
}
}
@@ -691,15 +716,20 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, struct ieee_pa
return ret;
}
-static int rtw_cfg80211_set_encryption(struct net_device *dev, struct ieee_param *param, u32 param_len)
+static int rtw_cfg80211_set_encryption(struct net_device *dev,
+ struct ieee_param *param, u32 param_len)
{
int ret = 0;
u8 max_idx;
u32 wep_key_idx, wep_key_len;
+ u32 key_len;
struct adapter *padapter = rtw_netdev_priv(dev);
struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
struct security_priv *psecuritypriv = &padapter->securitypriv;
+ /* Clamp key_len to max 16 */
+ key_len = min_t(u32, param->u.crypt.key_len, 16);
+
param->u.crypt.err = 0;
param->u.crypt.alg[IEEE_CRYPT_ALG_NAME_LEN - 1] = '\0';
@@ -779,7 +809,8 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, struct ieee_param
if (param->u.crypt.set_tx == 1) { /* pairwise key */
- memcpy(psta->dot118021x_UncstKey.skey, param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 : param->u.crypt.key_len));
+ memcpy(psta->dot118021x_UncstKey.skey,
+ param->u.crypt.key, key_len);
if (strcmp(param->u.crypt.alg, "TKIP") == 0) { /* set mic key */
memcpy(psta->dot11tkiptxmickey.skey, &(param->u.crypt.key[16]), 8);
@@ -792,17 +823,27 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, struct ieee_param
rtw_setstakey_cmd(padapter, psta, true, true);
} else { /* group key */
if (strcmp(param->u.crypt.alg, "TKIP") == 0 || strcmp(param->u.crypt.alg, "CCMP") == 0) {
- memcpy(padapter->securitypriv.dot118021XGrpKey[param->u.crypt.idx].skey, param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 : param->u.crypt.key_len));
- memcpy(padapter->securitypriv.dot118021XGrptxmickey[param->u.crypt.idx].skey, &(param->u.crypt.key[16]), 8);
- memcpy(padapter->securitypriv.dot118021XGrprxmickey[param->u.crypt.idx].skey, &(param->u.crypt.key[24]), 8);
+ u8 grp_idx = param->u.crypt.idx;
+ struct security_priv *sec = psecuritypriv;
+
+ memcpy(sec->dot118021XGrpKey[grp_idx].skey,
+ param->u.crypt.key, key_len);
+ memcpy(sec->dot118021XGrptxmickey[grp_idx].skey,
+ ¶m->u.crypt.key[16], 8);
+ memcpy(sec->dot118021XGrprxmickey[grp_idx].skey,
+ ¶m->u.crypt.key[24], 8);
padapter->securitypriv.binstallGrpkey = true;
- padapter->securitypriv.dot118021XGrpKeyid = param->u.crypt.idx;
- rtw_set_key(padapter, &padapter->securitypriv, param->u.crypt.idx, 1, true);
+ padapter->securitypriv.dot118021XGrpKeyid = grp_idx;
+ rtw_set_key(padapter, &padapter->securitypriv,
+ grp_idx, 1, true);
} else if (strcmp(param->u.crypt.alg, "BIP") == 0) {
/* save the IGTK key, length 16 bytes */
- memcpy(padapter->securitypriv.dot11wBIPKey[param->u.crypt.idx].skey, param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 : param->u.crypt.key_len));
- padapter->securitypriv.dot11wBIPKeyid = param->u.crypt.idx;
+ u8 idx = param->u.crypt.idx;
+
+ memcpy(psecuritypriv->dot11wBIPKey[idx].skey,
+ param->u.crypt.key, key_len);
+ padapter->securitypriv.dot11wBIPKeyid = idx;
padapter->securitypriv.binstallBIPkey = true;
}
}
@@ -939,8 +980,10 @@ static int cfg80211_rtw_set_default_key(struct wiphy *wiphy,
{
struct adapter *padapter = rtw_netdev_priv(ndev);
struct security_priv *psecuritypriv = &padapter->securitypriv;
+ u32 alg = psecuritypriv->dot11PrivacyAlgrthm;
+ bool is_wep = (alg == _WEP40_) || (alg == _WEP104_);
- if ((key_index < WEP_KEYS) && ((psecuritypriv->dot11PrivacyAlgrthm == _WEP40_) || (psecuritypriv->dot11PrivacyAlgrthm == _WEP104_))) { /* set wep default key */
+ if ((key_index < WEP_KEYS) && is_wep) { /* set wep default key */
psecuritypriv->ndisencryptstatus = Ndis802_11Encryption1Enabled;
psecuritypriv->dot11PrivacyKeyIndex = key_index;
@@ -952,7 +995,8 @@ static int cfg80211_rtw_set_default_key(struct wiphy *wiphy,
psecuritypriv->dot118021XGrpPrivacy = _WEP104_;
}
- psecuritypriv->bWepDefaultKeyIdxSet = 1; /* set the flag to represent that wep default key has been set */
+ /* set the flag to represent that wep default key has been set */
+ psecuritypriv->bWepDefaultKeyIdxSet = 1;
}
return 0;
@@ -1136,7 +1180,8 @@ void rtw_cfg80211_surveydone_event_callback(struct adapter *padapter)
pnetwork = list_entry(plist, struct wlan_network, list);
/* report network only if the current channel set contains the channel to which this network belongs */
- if (rtw_ch_set_search_ch(padapter->mlmeextpriv.channel_set, pnetwork->network.configuration.ds_config) >= 0
+ if (rtw_ch_set_search_ch(padapter->mlmeextpriv.channel_set,
+ pnetwork->network.configuration.ds_config) >= 0
&& true == rtw_validate_ssid(&(pnetwork->network.ssid))) {
/* ev =translate_scan(padapter, a, pnetwork, ev, stop); */
rtw_cfg80211_inform_bss(padapter, pnetwork);
@@ -1276,7 +1321,8 @@ static int cfg80211_rtw_scan(struct wiphy *wiphy
for (j = request->n_channels - 1; j >= 0; j--)
for (i = 0; i < survey_times; i++)
memcpy(&ch[j * survey_times + i], &ch[j], sizeof(struct rtw_ieee80211_channel));
- _status = rtw_sitesurvey_cmd(padapter, ssid, RTW_SSID_SCAN_AMOUNT, ch, survey_times * request->n_channels);
+ _status = rtw_sitesurvey_cmd(padapter, ssid, RTW_SSID_SCAN_AMOUNT,
+ ch, survey_times * request->n_channels);
} else {
_status = rtw_sitesurvey_cmd(padapter, ssid, RTW_SSID_SCAN_AMOUNT, NULL, 0);
}
@@ -1860,10 +1906,14 @@ static int cfg80211_rtw_set_pmksa(struct wiphy *wiphy,
}
if (!blInserted) {
- memcpy(psecuritypriv->PMKIDList[psecuritypriv->PMKIDIndex].Bssid, (u8 *)pmksa->bssid, ETH_ALEN);
- memcpy(psecuritypriv->PMKIDList[psecuritypriv->PMKIDIndex].PMKID, (u8 *)pmksa->pmkid, WLAN_PMKID_LEN);
+ u8 idx = psecuritypriv->PMKIDIndex;
+
+ memcpy(psecuritypriv->PMKIDList[idx].Bssid,
+ (u8 *)pmksa->bssid, ETH_ALEN);
+ memcpy(psecuritypriv->PMKIDList[idx].PMKID,
+ (u8 *)pmksa->pmkid, WLAN_PMKID_LEN);
- psecuritypriv->PMKIDList[psecuritypriv->PMKIDIndex].bUsed = true;
+ psecuritypriv->PMKIDList[idx].bUsed = true;
psecuritypriv->PMKIDIndex++;
if (psecuritypriv->PMKIDIndex == 16)
psecuritypriv->PMKIDIndex = 0;
@@ -1932,7 +1982,9 @@ void rtw_cfg80211_indicate_sta_assoc(struct adapter *padapter, u8 *pmgmt_frame,
}
}
-void rtw_cfg80211_indicate_sta_disassoc(struct adapter *padapter, unsigned char *da, unsigned short reason)
+void rtw_cfg80211_indicate_sta_disassoc(struct adapter *padapter,
+ unsigned char *da,
+ unsigned short reason)
{
struct net_device *ndev = padapter->pnetdev;
@@ -2111,7 +2163,8 @@ static const struct net_device_ops rtw_cfg80211_monitor_if_ops = {
.ndo_start_xmit = rtw_cfg80211_monitor_if_xmit_entry,
};
-static int rtw_cfg80211_add_monitor_if(struct adapter *padapter, char *name, struct net_device **ndev)
+static int rtw_cfg80211_add_monitor_if(struct adapter *padapter, char *name,
+ struct net_device **ndev)
{
int ret = 0;
struct net_device *mon_ndev = NULL;
@@ -2244,7 +2297,8 @@ static int cfg80211_rtw_del_virtual_intf(struct wiphy *wiphy,
return ret;
}
-static int rtw_add_beacon(struct adapter *adapter, const u8 *head, size_t head_len, const u8 *tail, size_t tail_len)
+static int rtw_add_beacon(struct adapter *adapter, const u8 *head,
+ size_t head_len, const u8 *tail, size_t tail_len)
{
int ret = 0;
u8 *pbuf = NULL;
diff --git a/drivers/staging/rtl8723bs/os_dep/os_intfs.c b/drivers/staging/rtl8723bs/os_dep/os_intfs.c
index 6ca6dc548805..36f02bf26a00 100644
--- a/drivers/staging/rtl8723bs/os_dep/os_intfs.c
+++ b/drivers/staging/rtl8723bs/os_dep/os_intfs.c
@@ -70,9 +70,11 @@ int rtw_ht_enable = 1;
* 0x01 means enable 2.4G 40MHz
*/
static int rtw_bw_mode = 0x01;
-static int rtw_ampdu_enable = 1;/* for enable tx_ampdu ,0: disable, 0x1:enable (but wifi_spec should be 0), 0x2: force enable (don't care wifi_spec) */
+/* for enable tx_ampdu: 0=disable, 0x1=enable (wifi_spec=0), 0x2=force enable */
+static int rtw_ampdu_enable = 1;
static int rtw_rx_stbc = 1;/* 0: disable, 1:enable 2.4g */
-static int rtw_ampdu_amsdu;/* 0: disabled, 1:enabled, 2:auto . There is an IOT issu with DLINK DIR-629 when the flag turn on */
+/* 0: disabled, 1:enabled, 2:auto. IOT issue with DLINK DIR-629 when on */
+static int rtw_ampdu_amsdu;
/* Short GI support Bit Map */
/* BIT0 - 20MHz, 0: non-support, 1: support */
/* BIT1 - 40MHz, 0: non-support, 1: support */
@@ -97,7 +99,8 @@ module_param(rtw_ant_num, int, 0644);
MODULE_PARM_DESC(rtw_ant_num, "Antenna number setting");
static int rtw_antdiv_cfg = 1; /* 0:OFF , 1:ON, 2:decide by Efuse config */
-static int rtw_antdiv_type; /* 0:decide by efuse 1: for 88EE, 1Tx and 1RxCG are diversity.(2 Ant with SPDT), 2: for 88EE, 1Tx and 2Rx are diversity.(2 Ant, Tx and RxCG are both on aux port, RxCS is on main port), 3: for 88EE, 1Tx and 1RxCG are fixed.(1Ant, Tx and RxCG are both on aux port) */
+/* 0:efuse, 1:1Tx/1RxCG diversity(2Ant+SPDT), 2:1Tx/2Rx diversity, 3:fixed */
+static int rtw_antdiv_type;
static int rtw_hw_wps_pbc;
@@ -1157,9 +1160,11 @@ static int rtw_resume_process_normal(struct adapter *padapter)
}
rtw_hal_disable_interrupt(padapter);
/* if (sdio_alloc_irq(adapter_to_dvobj(padapter)) != _SUCCESS) */
- if ((padapter->intf_alloc_irq) && (padapter->intf_alloc_irq(adapter_to_dvobj(padapter)) != _SUCCESS)) {
- ret = -1;
- goto exit;
+ if (padapter->intf_alloc_irq) {
+ if (padapter->intf_alloc_irq(adapter_to_dvobj(padapter)) != _SUCCESS) {
+ ret = -1;
+ goto exit;
+ }
}
rtw_reset_drv_sw(padapter);
diff --git a/drivers/staging/rtl8723bs/os_dep/sdio_intf.c b/drivers/staging/rtl8723bs/os_dep/sdio_intf.c
index 1d0239eef114..ec6f3e884322 100644
--- a/drivers/staging/rtl8723bs/os_dep/sdio_intf.c
+++ b/drivers/staging/rtl8723bs/os_dep/sdio_intf.c
@@ -237,7 +237,8 @@ static void sd_intf_stop(struct adapter *padapter)
}
-static struct adapter *rtw_sdio_if1_init(struct dvobj_priv *dvobj, const struct sdio_device_id *pdid)
+static struct adapter *rtw_sdio_if1_init(struct dvobj_priv *dvobj,
+ const struct sdio_device_id *pdid)
{
int status = _FAIL;
struct net_device *pnetdev;
diff --git a/drivers/staging/rtl8723bs/os_dep/xmit_linux.c b/drivers/staging/rtl8723bs/os_dep/xmit_linux.c
index 944b9c724b32..69e0407e780b 100644
--- a/drivers/staging/rtl8723bs/os_dep/xmit_linux.c
+++ b/drivers/staging/rtl8723bs/os_dep/xmit_linux.c
@@ -43,7 +43,9 @@ signed int rtw_endofpktfile(struct pkt_file *pfile)
return false;
}
-int rtw_os_xmit_resource_alloc(struct adapter *padapter, struct xmit_buf *pxmitbuf, u32 alloc_sz, u8 flag)
+int rtw_os_xmit_resource_alloc(struct adapter *padapter,
+ struct xmit_buf *pxmitbuf,
+ u32 alloc_sz, u8 flag)
{
if (alloc_sz > 0) {
pxmitbuf->pallocated_buf = rtw_zmalloc(alloc_sz);
@@ -56,7 +58,9 @@ int rtw_os_xmit_resource_alloc(struct adapter *padapter, struct xmit_buf *pxmitb
return _SUCCESS;
}
-void rtw_os_xmit_resource_free(struct adapter *padapter, struct xmit_buf *pxmitbuf, u32 free_sz, u8 flag)
+void rtw_os_xmit_resource_free(struct adapter *padapter,
+ struct xmit_buf *pxmitbuf,
+ u32 free_sz, u8 flag)
{
if (free_sz > 0)
kfree(pxmitbuf->pallocated_buf);
--
2.52.0