Commit ff97e011 authored by Jose A. Perez de Azpillaga's avatar Jose A. Perez de Azpillaga Committed by Greg Kroah-Hartman
Browse files

staging: rtl8723bs: refactor rtw_joinbss_event_prehandle to reduce indentation



The rtw_joinbss_event_prehandle function has excessive indentation due
to deeply nested if-statements.

Refactor the function using early returns and guard clauses for the
failure paths. This flattens the code and significantly improves
readability.

Signed-off-by: default avatarJose A. Perez de Azpillaga <azpijr@gmail.com>
Reviewed-by: default avatarLuka Gejak <luka.gejak@linux.dev>
Reviewed-by: default avatarDan Carpenter <dan.carpenter@linaro.org>
Link: https://patch.msgid.link/20260321182713.665872-3-azpijr@gmail.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 96e82c72
Loading
Loading
Loading
Loading
+70 −65
Original line number Diff line number Diff line
@@ -1166,9 +1166,32 @@ void rtw_joinbss_event_prehandle(struct adapter *adapter, u8 *pbuf)
	pmlmepriv->link_detect_info.traffic_transition_count = 0;
	pmlmepriv->link_detect_info.low_power_transition_count = 0;

	if (pnetwork->join_res > 0) {
	if (pnetwork->join_res == -4) {
		rtw_reset_securitypriv(adapter);
		_set_timer(&pmlmepriv->assoc_timer, 1);

		if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING))
			_clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);

		spin_unlock_bh(&pmlmepriv->lock);
		return;
	}

	if (pnetwork->join_res <= 0) { /* if join_res < 0 (join fails), then try again */
		_set_timer(&pmlmepriv->assoc_timer, 1);
		_clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);
		spin_unlock_bh(&pmlmepriv->lock);
		return;
	}

	spin_lock_bh(&pmlmepriv->scanned_queue.lock);
		if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING)) {

	if (!check_fwstate(pmlmepriv, _FW_UNDER_LINKING)) {
		spin_unlock_bh(&pmlmepriv->scanned_queue.lock);
		spin_unlock_bh(&pmlmepriv->lock);
		return;
	}

	/* s1. find ptarget_wlan */
	if (check_fwstate(pmlmepriv, _FW_LINKED)) {
		if (the_same_macaddr) {
@@ -1188,7 +1211,6 @@ void rtw_joinbss_event_prehandle(struct adapter *adapter, u8 *pbuf)
					ptarget_wlan->fixed = true;
			}
		}

	} else {
		ptarget_wlan = _rtw_find_same_network(&pmlmepriv->scanned_queue, pnetwork);
		if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) {
@@ -1198,21 +1220,23 @@ void rtw_joinbss_event_prehandle(struct adapter *adapter, u8 *pbuf)
	}

	/* s2. update cur_network */
			if (ptarget_wlan) {
				rtw_joinbss_update_network(adapter, ptarget_wlan, pnetwork);
			} else {
	if (!ptarget_wlan) {
		netdev_dbg(adapter->pnetdev,
			   "Can't find ptarget_wlan when joinbss_event callback\n");
		spin_unlock_bh(&pmlmepriv->scanned_queue.lock);
				goto ignore_joinbss_callback;
		spin_unlock_bh(&pmlmepriv->lock);
		return;
	}

	rtw_joinbss_update_network(adapter, ptarget_wlan, pnetwork);

	/* s3. find ptarget_sta & update ptarget_sta after update cur_network only for station mode */
	if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) {
		ptarget_sta = rtw_joinbss_update_stainfo(adapter, pnetwork);
		if (!ptarget_sta) {
			spin_unlock_bh(&pmlmepriv->scanned_queue.lock);
					goto ignore_joinbss_callback;
			spin_unlock_bh(&pmlmepriv->lock);
			return;
		}
	}

@@ -1227,25 +1251,6 @@ void rtw_joinbss_event_prehandle(struct adapter *adapter, u8 *pbuf)
	spin_unlock_bh(&pmlmepriv->lock);
	/* s5. Cancel assoc_timer */
	timer_delete_sync(&pmlmepriv->assoc_timer);
			spin_lock_bh(&pmlmepriv->lock);
		} else {
			spin_unlock_bh(&pmlmepriv->scanned_queue.lock);
		}
	} else if (pnetwork->join_res == -4) {
		rtw_reset_securitypriv(adapter);
		_set_timer(&pmlmepriv->assoc_timer, 1);

		if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING))
			_clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);

	} else {/* if join_res < 0 (join fails), then try again */
		_set_timer(&pmlmepriv->assoc_timer, 1);
		_clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);
	}

ignore_joinbss_callback:

	spin_unlock_bh(&pmlmepriv->lock);
}

void rtw_joinbss_event_callback(struct adapter *adapter, u8 *pbuf)