public inbox for linux-staging@lists.linux.dev
 help / color / mirror / Atom feed
* [PATCH v1] staging: rtl8723bs: remove GEN_CMD_CODE macro and callback array
@ 2026-04-01  0:08 Xiyuan Guo
  2026-04-01  7:38 ` Bera Yüzlü
  2026-04-03  8:45 ` kernel test robot
  0 siblings, 2 replies; 3+ messages in thread
From: Xiyuan Guo @ 2026-04-01  0:08 UTC (permalink / raw)
  To: gregkh; +Cc: linux-staging, linux-kernel, Xiyuan Guo

The GEN_CMD_CODE macro and the rtw_cmd_callback function pointer array
add unnecessary layers of indirection and make the code difficult to
follow.

Remove the GEN_CMD_CODE macro and replace the function pointer array
dispatcher in rtw_cmd_thread() with a switch statement.

Signed-off-by: Xiyuan Guo <tommyguo039@gmail.com>
---
 drivers/staging/rtl8723bs/core/rtw_ap.c       |   4 +-
 drivers/staging/rtl8723bs/core/rtw_cmd.c      | 155 ++++++------------
 drivers/staging/rtl8723bs/core/rtw_mlme.c     |   4 +-
 drivers/staging/rtl8723bs/core/rtw_mlme_ext.c |  18 +-
 drivers/staging/rtl8723bs/include/rtw_cmd.h   | 154 +++++++++--------
 5 files changed, 134 insertions(+), 201 deletions(-)

diff --git a/drivers/staging/rtl8723bs/core/rtw_ap.c b/drivers/staging/rtl8723bs/core/rtw_ap.c
index 4cdcdddf6b33..9a451fe0cce3 100644
--- a/drivers/staging/rtl8723bs/core/rtw_ap.c
+++ b/drivers/staging/rtl8723bs/core/rtw_ap.c
@@ -1237,7 +1237,7 @@ u8 rtw_ap_set_pairwise_key(struct adapter *padapter, struct sta_info *psta)
 		goto exit;
 	}
 
-	init_h2fwcmd_w_parm_no_rsp(ph2c, psetstakey_para, _SetStaKey_CMD_);
+	init_h2fwcmd_w_parm_no_rsp(ph2c, psetstakey_para, _SetStaKey);
 
 	psetstakey_para->algorithm = (u8)psta->dot118021XPrivacy;
 
@@ -1300,7 +1300,7 @@ static int rtw_ap_set_key(struct adapter *padapter,
 
 	memcpy(&psetkeyparm->key[0], key, keylen);
 
-	pcmd->cmdcode = _SetKey_CMD_;
+	pcmd->cmdcode = _SetKey;
 	pcmd->parmbuf = (u8 *)psetkeyparm;
 	pcmd->cmdsz =  (sizeof(struct setkey_parm));
 	pcmd->rsp = NULL;
diff --git a/drivers/staging/rtl8723bs/core/rtw_cmd.c b/drivers/staging/rtl8723bs/core/rtw_cmd.c
index c1185c25ed36..d35b91cbdeaa 100644
--- a/drivers/staging/rtl8723bs/core/rtw_cmd.c
+++ b/drivers/staging/rtl8723bs/core/rtw_cmd.c
@@ -10,81 +10,6 @@
 #include <linux/align.h>
 #include <linux/delay.h>
 
-static struct _cmd_callback rtw_cmd_callback[] = {
-	{GEN_CMD_CODE(_Read_MACREG), NULL}, /*0*/
-	{GEN_CMD_CODE(_Write_MACREG), NULL},
-	{GEN_CMD_CODE(_Read_BBREG), &rtw_getbbrfreg_cmdrsp_callback},
-	{GEN_CMD_CODE(_Write_BBREG), NULL},
-	{GEN_CMD_CODE(_Read_RFREG), &rtw_getbbrfreg_cmdrsp_callback},
-	{GEN_CMD_CODE(_Write_RFREG), NULL}, /*5*/
-	{GEN_CMD_CODE(_Read_EEPROM), NULL},
-	{GEN_CMD_CODE(_Write_EEPROM), NULL},
-	{GEN_CMD_CODE(_Read_EFUSE), NULL},
-	{GEN_CMD_CODE(_Write_EFUSE), NULL},
-
-	{GEN_CMD_CODE(_Read_CAM),	NULL},	/*10*/
-	{GEN_CMD_CODE(_Write_CAM),	 NULL},
-	{GEN_CMD_CODE(_setBCNITV), NULL},
-	{GEN_CMD_CODE(_setMBIDCFG), NULL},
-	{GEN_CMD_CODE(_JoinBss), &rtw_joinbss_cmd_callback},  /*14*/
-	{GEN_CMD_CODE(_DisConnect), &rtw_disassoc_cmd_callback}, /*15*/
-	{GEN_CMD_CODE(_CreateBss), &rtw_createbss_cmd_callback},
-	{GEN_CMD_CODE(_SetOpMode), NULL},
-	{GEN_CMD_CODE(_SiteSurvey), &rtw_survey_cmd_callback}, /*18*/
-	{GEN_CMD_CODE(_SetAuth), NULL},
-
-	{GEN_CMD_CODE(_SetKey), NULL},	/*20*/
-	{GEN_CMD_CODE(_SetStaKey), &rtw_setstaKey_cmdrsp_callback},
-	{GEN_CMD_CODE(_SetAssocSta), &rtw_setassocsta_cmdrsp_callback},
-	{GEN_CMD_CODE(_DelAssocSta), NULL},
-	{GEN_CMD_CODE(_SetStaPwrState), NULL},
-	{GEN_CMD_CODE(_SetBasicRate), NULL}, /*25*/
-	{GEN_CMD_CODE(_GetBasicRate), NULL},
-	{GEN_CMD_CODE(_SetDataRate), NULL},
-	{GEN_CMD_CODE(_GetDataRate), NULL},
-	{GEN_CMD_CODE(_SetPhyInfo), NULL},
-
-	{GEN_CMD_CODE(_GetPhyInfo), NULL}, /*30*/
-	{GEN_CMD_CODE(_SetPhy), NULL},
-	{GEN_CMD_CODE(_GetPhy), NULL},
-	{GEN_CMD_CODE(_readRssi), NULL},
-	{GEN_CMD_CODE(_readGain), NULL},
-	{GEN_CMD_CODE(_SetAtim), NULL}, /*35*/
-	{GEN_CMD_CODE(_SetPwrMode), NULL},
-	{GEN_CMD_CODE(_JoinbssRpt), NULL},
-	{GEN_CMD_CODE(_SetRaTable), NULL},
-	{GEN_CMD_CODE(_GetRaTable), NULL},
-
-	{GEN_CMD_CODE(_GetCCXReport), NULL}, /*40*/
-	{GEN_CMD_CODE(_GetDTMReport),	NULL},
-	{GEN_CMD_CODE(_GetTXRateStatistics), NULL},
-	{GEN_CMD_CODE(_SetUsbSuspend), NULL},
-	{GEN_CMD_CODE(_SetH2cLbk), NULL},
-	{GEN_CMD_CODE(_AddBAReq), NULL}, /*45*/
-	{GEN_CMD_CODE(_SetChannel), NULL},		/*46*/
-	{GEN_CMD_CODE(_SetTxPower), NULL},
-	{GEN_CMD_CODE(_SwitchAntenna), NULL},
-	{GEN_CMD_CODE(_SetCrystalCap), NULL},
-	{GEN_CMD_CODE(_SetSingleCarrierTx), NULL},	/*50*/
-
-	{GEN_CMD_CODE(_SetSingleToneTx), NULL}, /*51*/
-	{GEN_CMD_CODE(_SetCarrierSuppressionTx), NULL},
-	{GEN_CMD_CODE(_SetContinuousTx), NULL},
-	{GEN_CMD_CODE(_SwitchBandwidth), NULL},		/*54*/
-	{GEN_CMD_CODE(_TX_Beacon), NULL},/*55*/
-
-	{GEN_CMD_CODE(_Set_MLME_EVT), NULL},/*56*/
-	{GEN_CMD_CODE(_Set_Drv_Extra), NULL},/*57*/
-	{GEN_CMD_CODE(_Set_H2C_MSG), NULL},/*58*/
-	{GEN_CMD_CODE(_SetChannelPlan), NULL},/*59*/
-
-	{GEN_CMD_CODE(_SetChannelSwitch), NULL},/*60*/
-	{GEN_CMD_CODE(_TDLS), NULL},/*61*/
-	{GEN_CMD_CODE(_ChkBMCSleepq), NULL}, /*62*/
-
-	{GEN_CMD_CODE(_RunInThreadCMD), NULL},/*63*/
-};
-
 static struct cmd_hdl wlancmds[] = {
 	GEN_DRV_CMD_HANDLER(0, NULL) /*0*/
 	GEN_DRV_CMD_HANDLER(0, NULL)
@@ -301,7 +226,7 @@ int rtw_cmd_filter(struct cmd_priv *pcmdpriv, struct cmd_obj *cmd_obj)
 {
 	u8 bAllow = false; /* set to true to allow enqueuing cmd when hw_init_completed is false */
 
-	if (cmd_obj->cmdcode == GEN_CMD_CODE(_SetChannelPlan))
+	if (cmd_obj->cmdcode == _SetChannelPlan)
 		bAllow = true;
 
 	if ((!pcmdpriv->padapter->hw_init_completed && !bAllow) ||
@@ -343,8 +268,8 @@ struct	cmd_obj	*rtw_dequeue_cmd(struct cmd_priv *pcmdpriv)
 
 void rtw_free_cmd_obj(struct cmd_obj *pcmd)
 {
-	if ((pcmd->cmdcode != _JoinBss_CMD_) &&
-	    (pcmd->cmdcode != _CreateBss_CMD_)) {
+	if ((pcmd->cmdcode != _JoinBss) &&
+	    (pcmd->cmdcode != _CreateBss)) {
 		/* free parmbuf in cmd_obj */
 		kfree(pcmd->parmbuf);
 	}
@@ -478,16 +403,32 @@ int rtw_cmd_thread(void *context)
 		}
 
 		/* call callback function for post-processed */
-		if (pcmd->cmdcode < ARRAY_SIZE(rtw_cmd_callback)) {
-			pcmd_callback = rtw_cmd_callback[pcmd->cmdcode].callback;
-			if (!pcmd_callback) {
-				rtw_free_cmd_obj(pcmd);
-			} else {
-				/* todo: !!! fill rsp_buf to pcmd->rsp if (pcmd->rsp!= NULL) */
-				pcmd_callback(pcmd->padapter, pcmd);/* need consider that free cmd_obj in rtw_cmd_callback */
-			}
-		} else {
+		switch (pcmd->cmdcode) {
+		case _Read_BBREG:
+		case _Read_RFREG:
+			rtw_getbbrfreg_cmdrsp_callback(padapter, pcmd);
+			break;
+		case _JoinBss:
+			rtw_joinbss_cmd_callback(padapter, pcmd);
+			break;
+		case _DisConnect:
+			rtw_disassoc_cmd_callback(padapter, pcmd);
+			break;
+		case _CreateBss:
+			rtw_createbss_cmd_callback(padapter, pcmd);
+			break;
+		case _SiteSurvey:
+			rtw_survey_cmd_callback(padapter, pcmd);
+			break;
+		case _SetStaKey:
+			rtw_setstaKey_cmdrsp_callback(padapter, pcmd);
+			break;
+		case _SetAssocSta:
+			rtw_setassocsta_cmdrsp_callback(padapter, pcmd);
+			break;
+		default:
 			rtw_free_cmd_obj(pcmd);
+			break;
 		}
 		flush_signals_thread();
 		goto _next;
@@ -501,7 +442,7 @@ int rtw_cmd_thread(void *context)
 			break;
 		}
 
-		if (pcmd->cmdcode == GEN_CMD_CODE(_Set_Drv_Extra)) {
+		if (pcmd->cmdcode == _Set_Drv_Extra) {
 			extra_parm = (struct drvextra_cmd_parm *)pcmd->parmbuf;
 			if (extra_parm->pbuf && extra_parm->size > 0)
 				kfree(extra_parm->pbuf);
@@ -546,7 +487,7 @@ u8 rtw_sitesurvey_cmd(struct adapter  *padapter, struct ndis_802_11_ssid *ssid,
 
 	rtw_free_network_queue(padapter, false);
 
-	init_h2fwcmd_w_parm_no_rsp(ph2c, psurveyPara, GEN_CMD_CODE(_SiteSurvey));
+	init_h2fwcmd_w_parm_no_rsp(ph2c, psurveyPara, _SiteSurvey);
 
 	/* psurveyPara->bsslimit = 48; */
 	psurveyPara->scan_mode = pmlmepriv->scan_mode;
@@ -609,7 +550,7 @@ u8 rtw_createbss_cmd(struct adapter  *padapter)
 	}
 
 	INIT_LIST_HEAD(&pcmd->list);
-	pcmd->cmdcode = _CreateBss_CMD_;
+	pcmd->cmdcode = _CreateBss;
 	pcmd->parmbuf = (unsigned char *)pdev_network;
 	pcmd->cmdsz = get_wlan_bssid_ex_sz((struct wlan_bssid_ex *)pdev_network);
 	pcmd->rsp = NULL;
@@ -642,7 +583,7 @@ int rtw_startbss_cmd(struct adapter  *padapter, int flags)
 		}
 
 		INIT_LIST_HEAD(&pcmd->list);
-		pcmd->cmdcode = GEN_CMD_CODE(_CreateBss);
+		pcmd->cmdcode = _CreateBss;
 		pcmd->parmbuf = NULL;
 		pcmd->cmdsz =  0;
 		pcmd->rsp = NULL;
@@ -777,7 +718,7 @@ u8 rtw_joinbss_cmd(struct adapter  *padapter, struct wlan_network *pnetwork)
 	pcmd->cmdsz = get_wlan_bssid_ex_sz(psecnetwork);/* get cmdsz before endian conversion */
 
 	INIT_LIST_HEAD(&pcmd->list);
-	pcmd->cmdcode = _JoinBss_CMD_;/* GEN_CMD_CODE(_JoinBss) */
+	pcmd->cmdcode = _JoinBss;
 	pcmd->parmbuf = (unsigned char *)psecnetwork;
 	pcmd->rsp = NULL;
 	pcmd->rspsz = 0;
@@ -811,7 +752,7 @@ u8 rtw_disassoc_cmd(struct adapter *padapter, u32 deauth_timeout_ms, bool enqueu
 			kfree(param);
 			goto exit;
 		}
-		init_h2fwcmd_w_parm_no_rsp(cmdobj, param, _DisConnect_CMD_);
+		init_h2fwcmd_w_parm_no_rsp(cmdobj, param, _DisConnect);
 		res = rtw_enqueue_cmd(cmdpriv, cmdobj);
 	} else {
 		/* no need to enqueue, do the cmd hdl directly and free cmd parameter */
@@ -847,7 +788,7 @@ u8 rtw_setopmode_cmd(struct adapter  *padapter, enum ndis_802_11_network_infrast
 			goto exit;
 		}
 
-		init_h2fwcmd_w_parm_no_rsp(ph2c, psetop, _SetOpMode_CMD_);
+		init_h2fwcmd_w_parm_no_rsp(ph2c, psetop, _SetOpMode);
 		res = rtw_enqueue_cmd(pcmdpriv, ph2c);
 	} else {
 		setopmode_hdl(padapter, (u8 *)psetop);
@@ -904,7 +845,7 @@ u8 rtw_setstakey_cmd(struct adapter *padapter, struct sta_info *sta, u8 unicast_
 			goto exit;
 		}
 
-		init_h2fwcmd_w_parm_no_rsp(ph2c, psetstakey_para, _SetStaKey_CMD_);
+		init_h2fwcmd_w_parm_no_rsp(ph2c, psetstakey_para, _SetStaKey);
 		ph2c->rsp = (u8 *)psetstakey_rsp;
 		ph2c->rspsz = sizeof(struct set_stakey_rsp);
 		res = rtw_enqueue_cmd(pcmdpriv, ph2c);
@@ -955,7 +896,7 @@ u8 rtw_clearstakey_cmd(struct adapter *padapter, struct sta_info *sta, u8 enqueu
 			goto exit;
 		}
 
-		init_h2fwcmd_w_parm_no_rsp(ph2c, psetstakey_para, _SetStaKey_CMD_);
+		init_h2fwcmd_w_parm_no_rsp(ph2c, psetstakey_para, _SetStaKey);
 		ph2c->rsp = (u8 *)psetstakey_rsp;
 		ph2c->rspsz = sizeof(struct set_stakey_rsp);
 
@@ -993,7 +934,7 @@ u8 rtw_addbareq_cmd(struct adapter *padapter, u8 tid, u8 *addr)
 	paddbareq_parm->tid = tid;
 	memcpy(paddbareq_parm->addr, addr, ETH_ALEN);
 
-	init_h2fwcmd_w_parm_no_rsp(ph2c, paddbareq_parm, GEN_CMD_CODE(_AddBAReq));
+	init_h2fwcmd_w_parm_no_rsp(ph2c, paddbareq_parm, _AddBAReq);
 
 	/* rtw_enqueue_cmd(pcmdpriv, ph2c); */
 	res = rtw_enqueue_cmd(pcmdpriv, ph2c);
@@ -1028,7 +969,7 @@ u8 rtw_reset_securitypriv_cmd(struct adapter *padapter)
 	pdrvextra_cmd_parm->size = 0;
 	pdrvextra_cmd_parm->pbuf = NULL;
 
-	init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, GEN_CMD_CODE(_Set_Drv_Extra));
+	init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, _Set_Drv_Extra);
 
 	/* rtw_enqueue_cmd(pcmdpriv, ph2c); */
 	res = rtw_enqueue_cmd(pcmdpriv, ph2c);
@@ -1061,7 +1002,7 @@ u8 rtw_free_assoc_resources_cmd(struct adapter *padapter)
 	pdrvextra_cmd_parm->size = 0;
 	pdrvextra_cmd_parm->pbuf = NULL;
 
-	init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, GEN_CMD_CODE(_Set_Drv_Extra));
+	init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, _Set_Drv_Extra);
 
 	/* rtw_enqueue_cmd(pcmdpriv, ph2c); */
 	res = rtw_enqueue_cmd(pcmdpriv, ph2c);
@@ -1094,7 +1035,7 @@ u8 rtw_dynamic_chk_wk_cmd(struct adapter *padapter)
 	pdrvextra_cmd_parm->type = 0;
 	pdrvextra_cmd_parm->size = 0;
 	pdrvextra_cmd_parm->pbuf = NULL;
-	init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, GEN_CMD_CODE(_Set_Drv_Extra));
+	init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, _Set_Drv_Extra);
 
 	/* rtw_enqueue_cmd(pcmdpriv, ph2c); */
 	res = rtw_enqueue_cmd(pcmdpriv, ph2c);
@@ -1343,7 +1284,7 @@ u8 rtw_lps_ctrl_wk_cmd(struct adapter *padapter, u8 lps_ctrl_type, u8 enqueue)
 		pdrvextra_cmd_parm->size = 0;
 		pdrvextra_cmd_parm->pbuf = NULL;
 
-		init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, GEN_CMD_CODE(_Set_Drv_Extra));
+		init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, _Set_Drv_Extra);
 
 		res = rtw_enqueue_cmd(pcmdpriv, ph2c);
 	} else {
@@ -1384,7 +1325,7 @@ u8 rtw_dm_in_lps_wk_cmd(struct adapter *padapter)
 	pdrvextra_cmd_parm->size = 0;
 	pdrvextra_cmd_parm->pbuf = NULL;
 
-	init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, GEN_CMD_CODE(_Set_Drv_Extra));
+	init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, _Set_Drv_Extra);
 
 	res = rtw_enqueue_cmd(pcmdpriv, ph2c);
 
@@ -1446,7 +1387,7 @@ u8 rtw_dm_ra_mask_wk_cmd(struct adapter *padapter, u8 *psta)
 	pdrvextra_cmd_parm->size = 0;
 	pdrvextra_cmd_parm->pbuf = psta;
 
-	init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, GEN_CMD_CODE(_Set_Drv_Extra));
+	init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, _Set_Drv_Extra);
 
 	res = rtw_enqueue_cmd(pcmdpriv, ph2c);
 
@@ -1479,7 +1420,7 @@ u8 rtw_ps_cmd(struct adapter *padapter)
 	pdrvextra_cmd_parm->type = 0;
 	pdrvextra_cmd_parm->size = 0;
 	pdrvextra_cmd_parm->pbuf = NULL;
-	init_h2fwcmd_w_parm_no_rsp(ppscmd, pdrvextra_cmd_parm, GEN_CMD_CODE(_Set_Drv_Extra));
+	init_h2fwcmd_w_parm_no_rsp(ppscmd, pdrvextra_cmd_parm, _Set_Drv_Extra);
 
 	res = rtw_enqueue_cmd(pcmdpriv, ppscmd);
 
@@ -1550,7 +1491,7 @@ u8 rtw_chk_hi_queue_cmd(struct adapter *padapter)
 	pdrvextra_cmd_parm->size = 0;
 	pdrvextra_cmd_parm->pbuf = NULL;
 
-	init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, GEN_CMD_CODE(_Set_Drv_Extra));
+	init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, _Set_Drv_Extra);
 
 	res = rtw_enqueue_cmd(pcmdpriv, ph2c);
 
@@ -1642,7 +1583,7 @@ u8 rtw_c2h_packet_wk_cmd(struct adapter *padapter, u8 *pbuf, u16 length)
 	pdrvextra_cmd_parm->size = length;
 	pdrvextra_cmd_parm->pbuf = pbuf;
 
-	init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, GEN_CMD_CODE(_Set_Drv_Extra));
+	init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, _Set_Drv_Extra);
 
 	res = rtw_enqueue_cmd(pcmdpriv, ph2c);
 
@@ -1677,7 +1618,7 @@ u8 rtw_c2h_wk_cmd(struct adapter *padapter, u8 *c2h_evt)
 	pdrvextra_cmd_parm->size =  c2h_evt ? 16 : 0;
 	pdrvextra_cmd_parm->pbuf = c2h_evt;
 
-	init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, GEN_CMD_CODE(_Set_Drv_Extra));
+	init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, _Set_Drv_Extra);
 
 	res = rtw_enqueue_cmd(pcmdpriv, ph2c);
 
diff --git a/drivers/staging/rtl8723bs/core/rtw_mlme.c b/drivers/staging/rtl8723bs/core/rtw_mlme.c
index 5516593bc8ab..c10d93904437 100644
--- a/drivers/staging/rtl8723bs/core/rtw_mlme.c
+++ b/drivers/staging/rtl8723bs/core/rtw_mlme.c
@@ -1881,7 +1881,7 @@ signed int rtw_set_auth(struct adapter *adapter, struct security_priv *psecurity
 
 	psetauthparm->mode = (unsigned char)psecuritypriv->dot11AuthAlgrthm;
 
-	pcmd->cmdcode = _SetAuth_CMD_;
+	pcmd->cmdcode = _SetAuth;
 	pcmd->parmbuf = (unsigned char *)psetauthparm;
 	pcmd->cmdsz =  (sizeof(struct setauth_parm));
 	pcmd->rsp = NULL;
@@ -1952,7 +1952,7 @@ signed int rtw_set_key(struct adapter *adapter, struct security_priv *psecurityp
 			goto exit;
 		}
 
-		pcmd->cmdcode = _SetKey_CMD_;
+		pcmd->cmdcode = _SetKey;
 		pcmd->parmbuf = (u8 *)psetkeyparm;
 		pcmd->cmdsz =  (sizeof(struct setkey_parm));
 		pcmd->rsp = NULL;
diff --git a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c b/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c
index 5f00fe282d1b..573ec37e5554 100644
--- a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c
+++ b/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c
@@ -4391,7 +4391,7 @@ void report_survey_event(struct adapter *padapter, union recv_frame *precv_frame
 
 	INIT_LIST_HEAD(&pcmd_obj->list);
 
-	pcmd_obj->cmdcode = GEN_CMD_CODE(_Set_MLME_EVT);
+	pcmd_obj->cmdcode = _Set_MLME_EVT;
 	pcmd_obj->cmdsz = cmdsz;
 	pcmd_obj->parmbuf = pevtcmd;
 
@@ -4444,7 +4444,7 @@ void report_surveydone_event(struct adapter *padapter)
 
 	INIT_LIST_HEAD(&pcmd_obj->list);
 
-	pcmd_obj->cmdcode = GEN_CMD_CODE(_Set_MLME_EVT);
+	pcmd_obj->cmdcode = _Set_MLME_EVT;
 	pcmd_obj->cmdsz = cmdsz;
 	pcmd_obj->parmbuf = pevtcmd;
 
@@ -4489,7 +4489,7 @@ void report_join_res(struct adapter *padapter, int res)
 
 	INIT_LIST_HEAD(&pcmd_obj->list);
 
-	pcmd_obj->cmdcode = GEN_CMD_CODE(_Set_MLME_EVT);
+	pcmd_obj->cmdcode = _Set_MLME_EVT;
 	pcmd_obj->cmdsz = cmdsz;
 	pcmd_obj->parmbuf = pevtcmd;
 
@@ -4538,7 +4538,7 @@ void report_wmm_edca_update(struct adapter *padapter)
 
 	INIT_LIST_HEAD(&pcmd_obj->list);
 
-	pcmd_obj->cmdcode = GEN_CMD_CODE(_Set_MLME_EVT);
+	pcmd_obj->cmdcode = _Set_MLME_EVT;
 	pcmd_obj->cmdsz = cmdsz;
 	pcmd_obj->parmbuf = pevtcmd;
 
@@ -4584,7 +4584,7 @@ void report_del_sta_event(struct adapter *padapter, unsigned char *MacAddr, unsi
 
 	INIT_LIST_HEAD(&pcmd_obj->list);
 
-	pcmd_obj->cmdcode = GEN_CMD_CODE(_Set_MLME_EVT);
+	pcmd_obj->cmdcode = _Set_MLME_EVT;
 	pcmd_obj->cmdsz = cmdsz;
 	pcmd_obj->parmbuf = pevtcmd;
 
@@ -4635,7 +4635,7 @@ void report_add_sta_event(struct adapter *padapter, unsigned char *MacAddr, int
 
 	INIT_LIST_HEAD(&pcmd_obj->list);
 
-	pcmd_obj->cmdcode = GEN_CMD_CODE(_Set_MLME_EVT);
+	pcmd_obj->cmdcode = _Set_MLME_EVT;
 	pcmd_obj->cmdsz = cmdsz;
 	pcmd_obj->parmbuf = pevtcmd;
 
@@ -5085,7 +5085,7 @@ void survey_timer_hdl(struct timer_list *t)
 			return;
 		}
 
-		init_h2fwcmd_w_parm_no_rsp(ph2c, psurveyPara, GEN_CMD_CODE(_SiteSurvey));
+		init_h2fwcmd_w_parm_no_rsp(ph2c, psurveyPara, _SiteSurvey);
 		rtw_enqueue_cmd(pcmdpriv, ph2c);
 	}
 }
@@ -5696,7 +5696,7 @@ u8 chk_bmc_sleepq_cmd(struct adapter *padapter)
 		goto exit;
 	}
 
-	init_h2fwcmd_w_parm_no_parm_rsp(ph2c, GEN_CMD_CODE(_ChkBMCSleepq));
+	init_h2fwcmd_w_parm_no_parm_rsp(ph2c, _ChkBMCSleepq);
 
 	res = rtw_enqueue_cmd(pcmdpriv, ph2c);
 
@@ -5734,7 +5734,7 @@ u8 set_tx_beacon_cmd(struct adapter *padapter)
 				      pmlmeinfo->hidden_ssid_mode);
 	ptxBeacon_parm->network.ie_length += len_diff;
 
-	init_h2fwcmd_w_parm_no_rsp(ph2c, ptxBeacon_parm, GEN_CMD_CODE(_TX_Beacon));
+	init_h2fwcmd_w_parm_no_rsp(ph2c, ptxBeacon_parm, _TX_Beacon);
 
 	res = rtw_enqueue_cmd(pcmdpriv, ph2c);
 
diff --git a/drivers/staging/rtl8723bs/include/rtw_cmd.h b/drivers/staging/rtl8723bs/include/rtw_cmd.h
index c4c3edee809d..6dea504cf70e 100644
--- a/drivers/staging/rtl8723bs/include/rtw_cmd.h
+++ b/drivers/staging/rtl8723bs/include/rtw_cmd.h
@@ -551,9 +551,6 @@ struct RunInThread_param {
 };
 
 
-#define GEN_CMD_CODE(cmd)	cmd ## _CMD_
-
-
 /*
 
 Result:
@@ -624,85 +621,80 @@ extern void rtw_setassocsta_cmdrsp_callback(struct adapter  *padapter,  struct c
 extern void rtw_getrttbl_cmdrsp_callback(struct adapter  *padapter,  struct cmd_obj *pcmd);
 
 
-struct _cmd_callback {
-	u32 cmd_code;
-	void (*callback)(struct adapter  *padapter, struct cmd_obj *cmd);
-};
-
 enum {
-	GEN_CMD_CODE(_Read_MACREG),	/*0*/
-	GEN_CMD_CODE(_Write_MACREG),
-	GEN_CMD_CODE(_Read_BBREG),
-	GEN_CMD_CODE(_Write_BBREG),
-	GEN_CMD_CODE(_Read_RFREG),
-	GEN_CMD_CODE(_Write_RFREG), /*5*/
-	GEN_CMD_CODE(_Read_EEPROM),
-	GEN_CMD_CODE(_Write_EEPROM),
-	GEN_CMD_CODE(_Read_EFUSE),
-	GEN_CMD_CODE(_Write_EFUSE),
-
-	GEN_CMD_CODE(_Read_CAM),	/*10*/
-	GEN_CMD_CODE(_Write_CAM),
-	GEN_CMD_CODE(_setBCNITV),
-	GEN_CMD_CODE(_setMBIDCFG),
-	GEN_CMD_CODE(_JoinBss),   /*14*/
-	GEN_CMD_CODE(_DisConnect), /*15*/
-	GEN_CMD_CODE(_CreateBss),
-	GEN_CMD_CODE(_SetOpMode),
-	GEN_CMD_CODE(_SiteSurvey),  /*18*/
-	GEN_CMD_CODE(_SetAuth),
-
-	GEN_CMD_CODE(_SetKey),	/*20*/
-	GEN_CMD_CODE(_SetStaKey),
-	GEN_CMD_CODE(_SetAssocSta),
-	GEN_CMD_CODE(_DelAssocSta),
-	GEN_CMD_CODE(_SetStaPwrState),
-	GEN_CMD_CODE(_SetBasicRate), /*25*/
-	GEN_CMD_CODE(_GetBasicRate),
-	GEN_CMD_CODE(_SetDataRate),
-	GEN_CMD_CODE(_GetDataRate),
-	GEN_CMD_CODE(_SetPhyInfo),
-
-	GEN_CMD_CODE(_GetPhyInfo),	/*30*/
-	GEN_CMD_CODE(_SetPhy),
-	GEN_CMD_CODE(_GetPhy),
-	GEN_CMD_CODE(_readRssi),
-	GEN_CMD_CODE(_readGain),
-	GEN_CMD_CODE(_SetAtim), /*35*/
-	GEN_CMD_CODE(_SetPwrMode),
-	GEN_CMD_CODE(_JoinbssRpt),
-	GEN_CMD_CODE(_SetRaTable),
-	GEN_CMD_CODE(_GetRaTable),
-
-	GEN_CMD_CODE(_GetCCXReport), /*40*/
-	GEN_CMD_CODE(_GetDTMReport),
-	GEN_CMD_CODE(_GetTXRateStatistics),
-	GEN_CMD_CODE(_SetUsbSuspend),
-	GEN_CMD_CODE(_SetH2cLbk),
-	GEN_CMD_CODE(_AddBAReq), /*45*/
-	GEN_CMD_CODE(_SetChannel), /*46*/
-	GEN_CMD_CODE(_SetTxPower),
-	GEN_CMD_CODE(_SwitchAntenna),
-	GEN_CMD_CODE(_SetCrystalCap),
-	GEN_CMD_CODE(_SetSingleCarrierTx), /*50*/
-
-	GEN_CMD_CODE(_SetSingleToneTx),/*51*/
-	GEN_CMD_CODE(_SetCarrierSuppressionTx),
-	GEN_CMD_CODE(_SetContinuousTx),
-	GEN_CMD_CODE(_SwitchBandwidth), /*54*/
-	GEN_CMD_CODE(_TX_Beacon), /*55*/
-
-	GEN_CMD_CODE(_Set_MLME_EVT), /*56*/
-	GEN_CMD_CODE(_Set_Drv_Extra), /*57*/
-	GEN_CMD_CODE(_Set_H2C_MSG), /*58*/
-
-	GEN_CMD_CODE(_SetChannelPlan), /*59*/
-
-	GEN_CMD_CODE(_SetChannelSwitch), /*60*/
-	GEN_CMD_CODE(_TDLS), /*61*/
-	GEN_CMD_CODE(_ChkBMCSleepq), /*62*/
-
-	GEN_CMD_CODE(_RunInThreadCMD), /*63*/
+	_Read_MACREG,	/*0*/
+	_Write_MACREG,
+	_Read_BBREG,
+	_Write_BBREG,
+	_Read_RFREG,
+	_Write_RFREG, /*5*/
+	_Read_EEPROM,
+	_Write_EEPROM,
+	_Read_EFUSE,
+	_Write_EFUSE,
+
+	_Read_CAM,	/*10*/
+	_Write_CAM,
+	_setBCNITV,
+	_setMBIDCFG,
+	_JoinBss,   /*14*/
+	_DisConnect, /*15*/
+	_CreateBss,
+	_SetOpMode,
+	_SiteSurvey,  /*18*/
+	_SetAuth,
+
+	_SetKey,	/*20*/
+	_SetStaKey,
+	_SetAssocSta,
+	_DelAssocSta,
+	_SetStaPwrState,
+	_SetBasicRate, /*25*/
+	_GetBasicRate,
+	_SetDataRate,
+	_GetDataRate,
+	_SetPhyInfo,
+
+	_GetPhyInfo,	/*30*/
+	_SetPhy,
+	_GetPhy,
+	_readRssi,
+	_readGain,
+	_SetAtim, /*35*/
+	_SetPwrMode,
+	_JoinbssRpt,
+	_SetRaTable,
+	_GetRaTable,
+
+	_GetCCXReport, /*40*/
+	_GetDTMReport,
+	_GetTXRateStatistics,
+	_SetUsbSuspend,
+	_SetH2cLbk,
+	_AddBAReq, /*45*/
+	_SetChannel, /*46*/
+	_SetTxPower,
+	_SwitchAntenna,
+	_SetCrystalCap,
+	_SetSingleCarrierTx, /*50*/
+
+	_SetSingleToneTx,/*51*/
+	_SetCarrierSuppressionTx,
+	_SetContinuousTx,
+	_SwitchBandwidth, /*54*/
+	_TX_Beacon, /*55*/
+
+	_Set_MLME_EVT, /*56*/
+	_Set_Drv_Extra, /*57*/
+	_Set_H2C_MSG, /*58*/
+
+	_SetChannelPlan, /*59*/
+
+	_SetChannelSwitch, /*60*/
+	_TDLS, /*61*/
+	_ChkBMCSleepq, /*62*/
+
+	_RunInThreadCMD, /*63*/
 
 	MAX_H2CCMD
 };
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v1] staging: rtl8723bs: remove GEN_CMD_CODE macro and callback array
  2026-04-01  0:08 [PATCH v1] staging: rtl8723bs: remove GEN_CMD_CODE macro and callback array Xiyuan Guo
@ 2026-04-01  7:38 ` Bera Yüzlü
  2026-04-03  8:45 ` kernel test robot
  1 sibling, 0 replies; 3+ messages in thread
From: Bera Yüzlü @ 2026-04-01  7:38 UTC (permalink / raw)
  To: tommyguo039; +Cc: gregkh, linux-kernel, linux-staging

On Tue, 31 Mar 2026 20:08:18 -0400, Xiyuan Guo wrote:
> The GEN_CMD_CODE macro and the rtw_cmd_callback function pointer array
> add unnecessary layers of indirection and make the code difficult to
> follow.
> 
> Remove the GEN_CMD_CODE macro and replace the function pointer array
> dispatcher in rtw_cmd_thread() with a switch statement.
> 
> Signed-off-by: Xiyuan Guo <tommyguo039@gmail.com>
> ---

Can't compile it :( Please compile driver with
'make M=drivers/staging/rtl8723bs' before sending your patch.

>  		/* call callback function for post-processed */
> -		if (pcmd->cmdcode < ARRAY_SIZE(rtw_cmd_callback)) {
> -			pcmd_callback = rtw_cmd_callback[pcmd->cmdcode].callback;
> -			if (!pcmd_callback) {
> -				rtw_free_cmd_obj(pcmd);
> -			} else {
> -				/* todo: !!! fill rsp_buf to pcmd->rsp if (pcmd->rsp!= NULL) */
> -				pcmd_callback(pcmd->padapter, pcmd);/* need consider that free cmd_obj in rtw_cmd_callback */
> -			}
> -		} else {
> +		switch (pcmd->cmdcode) {
> +		case _Read_BBREG:
> +		case _Read_RFREG:
> +			rtw_getbbrfreg_cmdrsp_callback(padapter, pcmd);
> +			break;
> +		case _JoinBss:
> +			rtw_joinbss_cmd_callback(padapter, pcmd);
> +			break;
> +		case _DisConnect:
> +			rtw_disassoc_cmd_callback(padapter, pcmd);
> +			break;
> +		case _CreateBss:
> +			rtw_createbss_cmd_callback(padapter, pcmd);
> +			break;
> +		case _SiteSurvey:
> +			rtw_survey_cmd_callback(padapter, pcmd);
> +			break;
> +		case _SetStaKey:
> +			rtw_setstaKey_cmdrsp_callback(padapter, pcmd);
> +			break;
> +		case _SetAssocSta:
> +			rtw_setassocsta_cmdrsp_callback(padapter, pcmd);
> +			break;
> +		default:
>  			rtw_free_cmd_obj(pcmd);
> +			break;
>  		}
>  		flush_signals_thread();
>  		goto _next;

You are deleting a TODO here.

> +	_Read_MACREG,	/*0*/
> +	_Write_MACREG,
> +	_Read_BBREG,
> +	_Write_BBREG,
> +	_Read_RFREG,
> +	_Write_RFREG, /*5*/
> +	_Read_EEPROM,
> +	_Write_EEPROM,
> +	_Read_EFUSE,
> +	_Write_EFUSE,
> +
> +	_Read_CAM,	/*10*/
> +	_Write_CAM,
> +	_setBCNITV,
> +	_setMBIDCFG,
> +	_JoinBss,   /*14*/
> +	_DisConnect, /*15*/
> +	_CreateBss,
> +	_SetOpMode,
> +	_SiteSurvey,  /*18*/
> +	_SetAuth,
> +
> +	_SetKey,	/*20*/
> +	_SetStaKey,
> +	_SetAssocSta,
> +	_DelAssocSta,
> +	_SetStaPwrState,
> +	_SetBasicRate, /*25*/
> +	_GetBasicRate,
> +	_SetDataRate,
> +	_GetDataRate,
> +	_SetPhyInfo,
> +
> +	_GetPhyInfo,	/*30*/
> +	_SetPhy,
> +	_GetPhy,
> +	_readRssi,
> +	_readGain,
> +	_SetAtim, /*35*/
> +	_SetPwrMode,
> +	_JoinbssRpt,
> +	_SetRaTable,
> +	_GetRaTable,
> +
> +	_GetCCXReport, /*40*/
> +	_GetDTMReport,
> +	_GetTXRateStatistics,
> +	_SetUsbSuspend,
> +	_SetH2cLbk,
> +	_AddBAReq, /*45*/
> +	_SetChannel, /*46*/
> +	_SetTxPower,
> +	_SwitchAntenna,
> +	_SetCrystalCap,
> +	_SetSingleCarrierTx, /*50*/
> +
> +	_SetSingleToneTx,/*51*/
> +	_SetCarrierSuppressionTx,
> +	_SetContinuousTx,
> +	_SwitchBandwidth, /*54*/
> +	_TX_Beacon, /*55*/
> +
> +	_Set_MLME_EVT, /*56*/
> +	_Set_Drv_Extra, /*57*/
> +	_Set_H2C_MSG, /*58*/
> +
> +	_SetChannelPlan, /*59*/
> +
> +	_SetChannelSwitch, /*60*/
> +	_TDLS, /*61*/
> +	_ChkBMCSleepq, /*62*/
> +
> +	_RunInThreadCMD, /*63*/ 

Why not use snake case instead?

Thanks,
Bera

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v1] staging: rtl8723bs: remove GEN_CMD_CODE macro and callback array
  2026-04-01  0:08 [PATCH v1] staging: rtl8723bs: remove GEN_CMD_CODE macro and callback array Xiyuan Guo
  2026-04-01  7:38 ` Bera Yüzlü
@ 2026-04-03  8:45 ` kernel test robot
  1 sibling, 0 replies; 3+ messages in thread
From: kernel test robot @ 2026-04-03  8:45 UTC (permalink / raw)
  To: Xiyuan Guo, gregkh; +Cc: oe-kbuild-all, linux-staging, linux-kernel, Xiyuan Guo

Hi Xiyuan,

kernel test robot noticed the following build warnings:

[auto build test WARNING on staging/staging-testing]

url:    https://github.com/intel-lab-lkp/linux/commits/Xiyuan-Guo/staging-rtl8723bs-remove-GEN_CMD_CODE-macro-and-callback-array/20260403-054141
base:   staging/staging-testing
patch link:    https://lore.kernel.org/r/20260401000818.51141-1-tommyguo039%40gmail.com
patch subject: [PATCH v1] staging: rtl8723bs: remove GEN_CMD_CODE macro and callback array
config: nios2-allmodconfig (https://download.01.org/0day-ci/archive/20260403/202604030942.7Rbjavhn-lkp@intel.com/config)
compiler: nios2-linux-gcc (GCC) 11.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260403/202604030942.7Rbjavhn-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202604030942.7Rbjavhn-lkp@intel.com/

All warnings (new ones prefixed by >>):

   drivers/staging/rtl8723bs/core/rtw_cmd.c: In function 'rtw_cmd_thread':
>> drivers/staging/rtl8723bs/core/rtw_cmd.c:305:16: warning: unused variable 'pcmd_callback' [-Wunused-variable]
     305 |         void (*pcmd_callback)(struct adapter *dev, struct cmd_obj *pcmd);
         |                ^~~~~~~~~~~~~


vim +/pcmd_callback +305 drivers/staging/rtl8723bs/core/rtw_cmd.c

554c0a3abf216c Hans de Goede     2017-03-29  298  
554c0a3abf216c Hans de Goede     2017-03-29  299  int rtw_cmd_thread(void *context)
554c0a3abf216c Hans de Goede     2017-03-29  300  {
554c0a3abf216c Hans de Goede     2017-03-29  301  	u8 ret;
554c0a3abf216c Hans de Goede     2017-03-29  302  	struct cmd_obj *pcmd;
d698b0a0965681 YueHaibing        2019-07-31  303  	u8 *pcmdbuf;
554c0a3abf216c Hans de Goede     2017-03-29  304  	u8 (*cmd_hdl)(struct adapter *padapter, u8 *pbuf);
554c0a3abf216c Hans de Goede     2017-03-29 @305  	void (*pcmd_callback)(struct adapter *dev, struct cmd_obj *pcmd);
529d87b44da777 Himanshu Jha      2017-08-28  306  	struct adapter *padapter = context;
53303e7a1f6eec Kushal Kothari    2021-10-23  307  	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
554c0a3abf216c Hans de Goede     2017-03-29  308  	struct drvextra_cmd_parm *extra_parm = NULL;
554c0a3abf216c Hans de Goede     2017-03-29  309  
8209ab0f9bf97f Philipp Hortmann  2024-11-03  310  	allow_signal(SIGTERM);
554c0a3abf216c Hans de Goede     2017-03-29  311  
554c0a3abf216c Hans de Goede     2017-03-29  312  	pcmdbuf = pcmdpriv->cmd_buf;
554c0a3abf216c Hans de Goede     2017-03-29  313  
554c0a3abf216c Hans de Goede     2017-03-29  314  	pcmdpriv->stop_req = 0;
53303e7a1f6eec Kushal Kothari    2021-10-23  315  	atomic_set(&pcmdpriv->cmdthd_running, true);
09a8ea34cf431b Arnd Bergmann     2018-12-10  316  	complete(&pcmdpriv->terminate_cmdthread_comp);
554c0a3abf216c Hans de Goede     2017-03-29  317  
554c0a3abf216c Hans de Goede     2017-03-29  318  	while (1) {
09a8ea34cf431b Arnd Bergmann     2018-12-10  319  		if (wait_for_completion_interruptible(&pcmdpriv->cmd_queue_comp)) {
79df841b435018 Fabio Aiuto       2021-04-15  320  			netdev_dbg(padapter->pnetdev,
79df841b435018 Fabio Aiuto       2021-04-15  321  				   FUNC_ADPT_FMT " wait_for_completion_interruptible(&pcmdpriv->cmd_queue_comp) return != 0, break\n",
79df841b435018 Fabio Aiuto       2021-04-15  322  				   FUNC_ADPT_ARG(padapter));
554c0a3abf216c Hans de Goede     2017-03-29  323  			break;
554c0a3abf216c Hans de Goede     2017-03-29  324  		}
554c0a3abf216c Hans de Goede     2017-03-29  325  
cf8f6446bb9f03 Kushal Kothari    2021-10-20  326  		if (padapter->bDriverStopped || padapter->bSurpriseRemoved) {
79df841b435018 Fabio Aiuto       2021-04-15  327  			netdev_dbg(padapter->pnetdev,
79df841b435018 Fabio Aiuto       2021-04-15  328  				   "%s: DriverStopped(%d) SurpriseRemoved(%d) break at line %d\n",
79df841b435018 Fabio Aiuto       2021-04-15  329  				   __func__, padapter->bDriverStopped,
79df841b435018 Fabio Aiuto       2021-04-15  330  				   padapter->bSurpriseRemoved, __LINE__);
554c0a3abf216c Hans de Goede     2017-03-29  331  			break;
554c0a3abf216c Hans de Goede     2017-03-29  332  		}
554c0a3abf216c Hans de Goede     2017-03-29  333  
554c0a3abf216c Hans de Goede     2017-03-29  334  		if (pcmdpriv->stop_req) {
79df841b435018 Fabio Aiuto       2021-04-15  335  			netdev_dbg(padapter->pnetdev,
79df841b435018 Fabio Aiuto       2021-04-15  336  				   FUNC_ADPT_FMT " stop_req:%u, break\n",
79df841b435018 Fabio Aiuto       2021-04-15  337  				   FUNC_ADPT_ARG(padapter),
79df841b435018 Fabio Aiuto       2021-04-15  338  				   pcmdpriv->stop_req);
554c0a3abf216c Hans de Goede     2017-03-29  339  			break;
554c0a3abf216c Hans de Goede     2017-03-29  340  		}
554c0a3abf216c Hans de Goede     2017-03-29  341  
6206fdb4f30ba1 Fabio Aiuto       2021-04-07  342  		if (list_empty(&pcmdpriv->cmd_queue.queue))
554c0a3abf216c Hans de Goede     2017-03-29  343  			continue;
554c0a3abf216c Hans de Goede     2017-03-29  344  
13aefa65bc6a63 Fabio Aiuto       2021-04-04  345  		if (rtw_register_cmd_alive(padapter) != _SUCCESS)
554c0a3abf216c Hans de Goede     2017-03-29  346  			continue;
554c0a3abf216c Hans de Goede     2017-03-29  347  
554c0a3abf216c Hans de Goede     2017-03-29  348  _next:
cf8f6446bb9f03 Kushal Kothari    2021-10-20  349  		if (padapter->bDriverStopped || padapter->bSurpriseRemoved) {
79df841b435018 Fabio Aiuto       2021-04-15  350  			netdev_dbg(padapter->pnetdev,
79df841b435018 Fabio Aiuto       2021-04-15  351  				   "%s: DriverStopped(%d) SurpriseRemoved(%d) break at line %d\n",
79df841b435018 Fabio Aiuto       2021-04-15  352  				   __func__, padapter->bDriverStopped,
79df841b435018 Fabio Aiuto       2021-04-15  353  				   padapter->bSurpriseRemoved, __LINE__);
554c0a3abf216c Hans de Goede     2017-03-29  354  			break;
554c0a3abf216c Hans de Goede     2017-03-29  355  		}
554c0a3abf216c Hans de Goede     2017-03-29  356  
554c0a3abf216c Hans de Goede     2017-03-29  357  		pcmd = rtw_dequeue_cmd(pcmdpriv);
554c0a3abf216c Hans de Goede     2017-03-29  358  		if (!pcmd) {
554c0a3abf216c Hans de Goede     2017-03-29  359  			rtw_unregister_cmd_alive(padapter);
554c0a3abf216c Hans de Goede     2017-03-29  360  			continue;
554c0a3abf216c Hans de Goede     2017-03-29  361  		}
554c0a3abf216c Hans de Goede     2017-03-29  362  
92576c84c8c608 Manuel Palenzuela 2020-10-29  363  		if (rtw_cmd_filter(pcmdpriv, pcmd) == _FAIL) {
554c0a3abf216c Hans de Goede     2017-03-29  364  			pcmd->res = H2C_DROPPED;
554c0a3abf216c Hans de Goede     2017-03-29  365  			goto post_process;
554c0a3abf216c Hans de Goede     2017-03-29  366  		}
554c0a3abf216c Hans de Goede     2017-03-29  367  
554c0a3abf216c Hans de Goede     2017-03-29  368  		pcmdpriv->cmd_issued_cnt++;
554c0a3abf216c Hans de Goede     2017-03-29  369  
046bd5c9c2833f Ross Schmidt      2020-10-03  370  		pcmd->cmdsz = round_up((pcmd->cmdsz), 4);
554c0a3abf216c Hans de Goede     2017-03-29  371  
554c0a3abf216c Hans de Goede     2017-03-29  372  		memcpy(pcmdbuf, pcmd->parmbuf, pcmd->cmdsz);
554c0a3abf216c Hans de Goede     2017-03-29  373  
554c0a3abf216c Hans de Goede     2017-03-29  374  		if (pcmd->cmdcode < ARRAY_SIZE(wlancmds)) {
554c0a3abf216c Hans de Goede     2017-03-29  375  			cmd_hdl = wlancmds[pcmd->cmdcode].h2cfuns;
554c0a3abf216c Hans de Goede     2017-03-29  376  
554c0a3abf216c Hans de Goede     2017-03-29  377  			if (cmd_hdl) {
554c0a3abf216c Hans de Goede     2017-03-29  378  				ret = cmd_hdl(pcmd->padapter, pcmdbuf);
554c0a3abf216c Hans de Goede     2017-03-29  379  				pcmd->res = ret;
554c0a3abf216c Hans de Goede     2017-03-29  380  			}
554c0a3abf216c Hans de Goede     2017-03-29  381  
554c0a3abf216c Hans de Goede     2017-03-29  382  			pcmdpriv->cmd_seq++;
554c0a3abf216c Hans de Goede     2017-03-29  383  		} else {
554c0a3abf216c Hans de Goede     2017-03-29  384  			pcmd->res = H2C_PARAMETERS_ERROR;
554c0a3abf216c Hans de Goede     2017-03-29  385  		}
554c0a3abf216c Hans de Goede     2017-03-29  386  
554c0a3abf216c Hans de Goede     2017-03-29  387  		cmd_hdl = NULL;
554c0a3abf216c Hans de Goede     2017-03-29  388  
554c0a3abf216c Hans de Goede     2017-03-29  389  post_process:
554c0a3abf216c Hans de Goede     2017-03-29  390  
53303e7a1f6eec Kushal Kothari    2021-10-23  391  		if (mutex_lock_interruptible(&pcmd->padapter->cmdpriv.sctx_mutex) == 0) {
554c0a3abf216c Hans de Goede     2017-03-29  392  			if (pcmd->sctx) {
79df841b435018 Fabio Aiuto       2021-04-15  393  				netdev_dbg(padapter->pnetdev,
79df841b435018 Fabio Aiuto       2021-04-15  394  					   FUNC_ADPT_FMT " pcmd->sctx\n",
554c0a3abf216c Hans de Goede     2017-03-29  395  					   FUNC_ADPT_ARG(pcmd->padapter));
554c0a3abf216c Hans de Goede     2017-03-29  396  
554c0a3abf216c Hans de Goede     2017-03-29  397  				if (pcmd->res == H2C_SUCCESS)
554c0a3abf216c Hans de Goede     2017-03-29  398  					rtw_sctx_done(&pcmd->sctx);
554c0a3abf216c Hans de Goede     2017-03-29  399  				else
554c0a3abf216c Hans de Goede     2017-03-29  400  					rtw_sctx_done_err(&pcmd->sctx, RTW_SCTX_DONE_CMD_ERROR);
554c0a3abf216c Hans de Goede     2017-03-29  401  			}
53303e7a1f6eec Kushal Kothari    2021-10-23  402  			mutex_unlock(&pcmd->padapter->cmdpriv.sctx_mutex);
554c0a3abf216c Hans de Goede     2017-03-29  403  		}
554c0a3abf216c Hans de Goede     2017-03-29  404  
554c0a3abf216c Hans de Goede     2017-03-29  405  		/* call callback function for post-processed */
933201cba4056f Xiyuan Guo        2026-03-31  406  		switch (pcmd->cmdcode) {
933201cba4056f Xiyuan Guo        2026-03-31  407  		case _Read_BBREG:
933201cba4056f Xiyuan Guo        2026-03-31  408  		case _Read_RFREG:
933201cba4056f Xiyuan Guo        2026-03-31  409  			rtw_getbbrfreg_cmdrsp_callback(padapter, pcmd);
933201cba4056f Xiyuan Guo        2026-03-31  410  			break;
933201cba4056f Xiyuan Guo        2026-03-31  411  		case _JoinBss:
933201cba4056f Xiyuan Guo        2026-03-31  412  			rtw_joinbss_cmd_callback(padapter, pcmd);
933201cba4056f Xiyuan Guo        2026-03-31  413  			break;
933201cba4056f Xiyuan Guo        2026-03-31  414  		case _DisConnect:
933201cba4056f Xiyuan Guo        2026-03-31  415  			rtw_disassoc_cmd_callback(padapter, pcmd);
933201cba4056f Xiyuan Guo        2026-03-31  416  			break;
933201cba4056f Xiyuan Guo        2026-03-31  417  		case _CreateBss:
933201cba4056f Xiyuan Guo        2026-03-31  418  			rtw_createbss_cmd_callback(padapter, pcmd);
933201cba4056f Xiyuan Guo        2026-03-31  419  			break;
933201cba4056f Xiyuan Guo        2026-03-31  420  		case _SiteSurvey:
933201cba4056f Xiyuan Guo        2026-03-31  421  			rtw_survey_cmd_callback(padapter, pcmd);
933201cba4056f Xiyuan Guo        2026-03-31  422  			break;
933201cba4056f Xiyuan Guo        2026-03-31  423  		case _SetStaKey:
933201cba4056f Xiyuan Guo        2026-03-31  424  			rtw_setstaKey_cmdrsp_callback(padapter, pcmd);
933201cba4056f Xiyuan Guo        2026-03-31  425  			break;
933201cba4056f Xiyuan Guo        2026-03-31  426  		case _SetAssocSta:
933201cba4056f Xiyuan Guo        2026-03-31  427  			rtw_setassocsta_cmdrsp_callback(padapter, pcmd);
933201cba4056f Xiyuan Guo        2026-03-31  428  			break;
933201cba4056f Xiyuan Guo        2026-03-31  429  		default:
554c0a3abf216c Hans de Goede     2017-03-29  430  			rtw_free_cmd_obj(pcmd);
933201cba4056f Xiyuan Guo        2026-03-31  431  			break;
554c0a3abf216c Hans de Goede     2017-03-29  432  		}
554c0a3abf216c Hans de Goede     2017-03-29  433  		flush_signals_thread();
554c0a3abf216c Hans de Goede     2017-03-29  434  		goto _next;
554c0a3abf216c Hans de Goede     2017-03-29  435  	}
554c0a3abf216c Hans de Goede     2017-03-29  436  
554c0a3abf216c Hans de Goede     2017-03-29  437  	/*  free all cmd_obj resources */
554c0a3abf216c Hans de Goede     2017-03-29  438  	do {
554c0a3abf216c Hans de Goede     2017-03-29  439  		pcmd = rtw_dequeue_cmd(pcmdpriv);
cd1f1450092216 Michael Straube   2021-08-29  440  		if (!pcmd) {
554c0a3abf216c Hans de Goede     2017-03-29  441  			rtw_unregister_cmd_alive(padapter);
554c0a3abf216c Hans de Goede     2017-03-29  442  			break;
554c0a3abf216c Hans de Goede     2017-03-29  443  		}
554c0a3abf216c Hans de Goede     2017-03-29  444  
933201cba4056f Xiyuan Guo        2026-03-31  445  		if (pcmd->cmdcode == _Set_Drv_Extra) {
554c0a3abf216c Hans de Goede     2017-03-29  446  			extra_parm = (struct drvextra_cmd_parm *)pcmd->parmbuf;
8f870aab80b041 Manuel Palenzuela 2020-10-28  447  			if (extra_parm->pbuf && extra_parm->size > 0)
554c0a3abf216c Hans de Goede     2017-03-29  448  				kfree(extra_parm->pbuf);
554c0a3abf216c Hans de Goede     2017-03-29  449  		}
554c0a3abf216c Hans de Goede     2017-03-29  450  
554c0a3abf216c Hans de Goede     2017-03-29  451  		rtw_free_cmd_obj(pcmd);
554c0a3abf216c Hans de Goede     2017-03-29  452  	} while (1);
554c0a3abf216c Hans de Goede     2017-03-29  453  
09a8ea34cf431b Arnd Bergmann     2018-12-10  454  	complete(&pcmdpriv->terminate_cmdthread_comp);
53303e7a1f6eec Kushal Kothari    2021-10-23  455  	atomic_set(&pcmdpriv->cmdthd_running, false);
554c0a3abf216c Hans de Goede     2017-03-29  456  
501c88722797a1 Eric W. Biederman 2021-10-20  457  	return 0;
554c0a3abf216c Hans de Goede     2017-03-29  458  }
554c0a3abf216c Hans de Goede     2017-03-29  459  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-04-03  8:46 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-01  0:08 [PATCH v1] staging: rtl8723bs: remove GEN_CMD_CODE macro and callback array Xiyuan Guo
2026-04-01  7:38 ` Bera Yüzlü
2026-04-03  8:45 ` kernel test robot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox