* [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