* [PATCH v2 1/3] staging: rtl8723bs: convert mgmt xmit coalesce to errno
2026-07-31 15:52 [PATCH v2 0/3] staging: rtl8723bs: clean up management transmit return values Hungyu Lin
@ 2026-07-31 15:52 ` Hungyu Lin
2026-07-31 15:52 ` [PATCH v2 2/3] staging: rtl8723bs: propagate errno handling for mgmt xmit Hungyu Lin
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Hungyu Lin @ 2026-07-31 15:52 UTC (permalink / raw)
To: gregkh; +Cc: linux-staging, linux-kernel, error27, Hungyu Lin
Change rtw_mgmt_xmitframe_coalesce() to use kernel-style return values.
Return 0 on success and negative errno on failure. The only caller
currently doesn't check for errors, so this change does not affect
runtime behavior. Later patches in this series will propagate error
handling to the caller.
Signed-off-by: Hungyu Lin <dennylin0707@gmail.com>
---
drivers/staging/rtl8723bs/core/rtw_xmit.c | 8 ++++----
drivers/staging/rtl8723bs/include/rtw_xmit.h | 2 +-
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/staging/rtl8723bs/core/rtw_xmit.c b/drivers/staging/rtl8723bs/core/rtw_xmit.c
index 16e6c9567224..01512f438295 100644
--- a/drivers/staging/rtl8723bs/core/rtw_xmit.c
+++ b/drivers/staging/rtl8723bs/core/rtw_xmit.c
@@ -1187,7 +1187,7 @@ int 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)
+int 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;
@@ -1210,7 +1210,7 @@ s32 rtw_mgmt_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *pkt, s
BIP_AAD = kzalloc(ori_len, GFP_ATOMIC);
if (!BIP_AAD)
- return _FAIL;
+ return -ENOMEM;
tmp_buf = BIP_AAD;
subtype = GetFrameSubType(pframe); /* bit(7)~bit(2) */
@@ -1341,12 +1341,12 @@ s32 rtw_mgmt_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *pkt, s
xmitframe_coalesce_success:
spin_unlock_bh(&padapter->security_key_mutex);
kfree(BIP_AAD);
- return _SUCCESS;
+ return 0;
xmitframe_coalesce_fail:
spin_unlock_bh(&padapter->security_key_mutex);
kfree(BIP_AAD);
- return _FAIL;
+ return -EINVAL;
}
/* Logical Link Control(LLC) SubNetwork Attachment Point(SNAP) header
diff --git a/drivers/staging/rtl8723bs/include/rtw_xmit.h b/drivers/staging/rtl8723bs/include/rtw_xmit.h
index 917e846e9ce2..31decc210e73 100644
--- a/drivers/staging/rtl8723bs/include/rtw_xmit.h
+++ b/drivers/staging/rtl8723bs/include/rtw_xmit.h
@@ -424,7 +424,7 @@ int rtw_xmitframe_enqueue(struct adapter *padapter, struct xmit_frame *pxmitfram
extern u32 rtw_calculate_wlan_pkt_size_by_attribue(struct pkt_attrib *pattrib);
#define rtw_wlan_pkt_size(f) rtw_calculate_wlan_pkt_size_by_attribue(&f->attrib)
extern int rtw_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *pkt, struct xmit_frame *pxmitframe);
-extern s32 rtw_mgmt_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *pkt, struct xmit_frame *pxmitframe);
+extern int rtw_mgmt_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *pkt, struct xmit_frame *pxmitframe);
s32 _rtw_init_hw_txqueue(struct hw_txqueue *phw_txqueue, u8 ac_tag);
void _rtw_init_sta_xmit_priv(struct sta_xmit_priv *psta_xmitpriv);
--
2.43.0
^ permalink raw reply related [flat|nested] 5+ messages in thread* [PATCH v2 2/3] staging: rtl8723bs: propagate errno handling for mgmt xmit
2026-07-31 15:52 [PATCH v2 0/3] staging: rtl8723bs: clean up management transmit return values Hungyu Lin
2026-07-31 15:52 ` [PATCH v2 1/3] staging: rtl8723bs: convert mgmt xmit coalesce to errno Hungyu Lin
@ 2026-07-31 15:52 ` Hungyu Lin
2026-07-31 15:52 ` [PATCH v2 3/3] staging: rtl8723bs: make dump_mgntframe_and_wait() return void Hungyu Lin
2026-07-31 21:23 ` [PATCH v2 0/3] staging: rtl8723bs: clean up management transmit return values Dan Carpenter
3 siblings, 0 replies; 5+ messages in thread
From: Hungyu Lin @ 2026-07-31 15:52 UTC (permalink / raw)
To: gregkh; +Cc: linux-staging, linux-kernel, error27, Hungyu Lin
Convert rtw_hal_mgnt_xmit() to return errno-style values and update
the prototype in hal_intf.h.
After this change, dump_mgntframe_and_wait() still uses the return value
of rtw_hal_mgnt_xmit() to determine whether it should wait for
completion. A follow-on patch will make dump_mgntframe_and_wait()
return void since its return value is unused by all current callers.
Signed-off-by: Hungyu Lin <dennylin0707@gmail.com>
---
drivers/staging/rtl8723bs/core/rtw_mlme_ext.c | 4 ++++
drivers/staging/rtl8723bs/hal/hal_intf.c | 9 +++++++--
drivers/staging/rtl8723bs/include/hal_intf.h | 2 +-
3 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c b/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c
index f5ab94a2d0a0..0027f9333738 100644
--- a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c
+++ b/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c
@@ -1990,6 +1990,10 @@ s32 dump_mgntframe_and_wait(struct adapter *padapter, struct xmit_frame *pmgntfr
pxmitbuf->sctx = &sctx;
ret = rtw_hal_mgnt_xmit(padapter, pmgntframe);
+ if (ret)
+ ret = _FAIL;
+ else
+ ret = _SUCCESS;
if (ret == _SUCCESS)
ret = rtw_sctx_wait(&sctx);
diff --git a/drivers/staging/rtl8723bs/hal/hal_intf.c b/drivers/staging/rtl8723bs/hal/hal_intf.c
index 2caade1a8bdd..1443875d1369 100644
--- a/drivers/staging/rtl8723bs/hal/hal_intf.c
+++ b/drivers/staging/rtl8723bs/hal/hal_intf.c
@@ -115,8 +115,10 @@ s32 rtw_hal_xmit(struct adapter *padapter, struct xmit_frame *pxmitframe)
/*
* [IMPORTANT] This function would be run in interrupt context.
*/
-s32 rtw_hal_mgnt_xmit(struct adapter *padapter, struct xmit_frame *pmgntframe)
+int rtw_hal_mgnt_xmit(struct adapter *padapter, struct xmit_frame *pmgntframe)
{
+ int ret;
+
update_mgntframe_attrib_addr(padapter, pmgntframe);
/* pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; */
/* pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; */
@@ -130,7 +132,10 @@ s32 rtw_hal_mgnt_xmit(struct adapter *padapter, struct xmit_frame *pmgntframe)
pmgntframe->attrib.encrypt = _AES_;
pmgntframe->attrib.bswenc = true;
}
- rtw_mgmt_xmitframe_coalesce(padapter, pmgntframe->pkt, pmgntframe);
+ ret = rtw_mgmt_xmitframe_coalesce(padapter, pmgntframe->pkt, pmgntframe);
+
+ if (ret)
+ return ret;
}
return rtl8723bs_mgnt_xmit(padapter, pmgntframe);
diff --git a/drivers/staging/rtl8723bs/include/hal_intf.h b/drivers/staging/rtl8723bs/include/hal_intf.h
index 8a85e8419e47..1b6b348435cb 100644
--- a/drivers/staging/rtl8723bs/include/hal_intf.h
+++ b/drivers/staging/rtl8723bs/include/hal_intf.h
@@ -197,7 +197,7 @@ u8 rtw_hal_check_ips_status(struct adapter *padapter);
int rtw_hal_xmitframe_enqueue(struct adapter *padapter, struct xmit_frame *pxmitframe);
s32 rtw_hal_xmit(struct adapter *padapter, struct xmit_frame *pxmitframe);
-s32 rtw_hal_mgnt_xmit(struct adapter *padapter, struct xmit_frame *pmgntframe);
+int rtw_hal_mgnt_xmit(struct adapter *padapter, struct xmit_frame *pmgntframe);
s32 rtw_hal_init_xmit_priv(struct adapter *padapter);
void rtw_hal_free_xmit_priv(struct adapter *padapter);
--
2.43.0
^ permalink raw reply related [flat|nested] 5+ messages in thread* [PATCH v2 3/3] staging: rtl8723bs: make dump_mgntframe_and_wait() return void
2026-07-31 15:52 [PATCH v2 0/3] staging: rtl8723bs: clean up management transmit return values Hungyu Lin
2026-07-31 15:52 ` [PATCH v2 1/3] staging: rtl8723bs: convert mgmt xmit coalesce to errno Hungyu Lin
2026-07-31 15:52 ` [PATCH v2 2/3] staging: rtl8723bs: propagate errno handling for mgmt xmit Hungyu Lin
@ 2026-07-31 15:52 ` Hungyu Lin
2026-07-31 21:23 ` [PATCH v2 0/3] staging: rtl8723bs: clean up management transmit return values Dan Carpenter
3 siblings, 0 replies; 5+ messages in thread
From: Hungyu Lin @ 2026-07-31 15:52 UTC (permalink / raw)
To: gregkh; +Cc: linux-staging, linux-kernel, error27, Hungyu Lin
The return value of dump_mgntframe_and_wait() is ignored by all current
callers.
Keep using the return value of rtw_hal_mgnt_xmit() to determine whether
to wait for completion. Make dump_mgntframe_and_wait() return void
because no caller uses its return value.
Suggested-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: Hungyu Lin <dennylin0707@gmail.com>
---
drivers/staging/rtl8723bs/core/rtw_mlme_ext.c | 17 ++++-------------
.../staging/rtl8723bs/include/rtw_mlme_ext.h | 2 +-
2 files changed, 5 insertions(+), 14 deletions(-)
diff --git a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c b/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c
index 0027f9333738..ae760e9c655a 100644
--- a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c
+++ b/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c
@@ -1971,9 +1971,8 @@ void dump_mgntframe(struct adapter *padapter, struct xmit_frame *pmgntframe)
rtw_hal_mgnt_xmit(padapter, pmgntframe);
}
-s32 dump_mgntframe_and_wait(struct adapter *padapter, struct xmit_frame *pmgntframe, int timeout_ms)
+void dump_mgntframe_and_wait(struct adapter *padapter, struct xmit_frame *pmgntframe, int timeout_ms)
{
- s32 ret = _FAIL;
unsigned long irqL;
struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
struct xmit_buf *pxmitbuf = pmgntframe->pxmitbuf;
@@ -1983,26 +1982,18 @@ s32 dump_mgntframe_and_wait(struct adapter *padapter, struct xmit_frame *pmgntfr
padapter->bDriverStopped) {
rtw_free_xmitbuf(&padapter->xmitpriv, pmgntframe->pxmitbuf);
rtw_free_xmitframe(&padapter->xmitpriv, pmgntframe);
- return ret;
+ return;
}
rtw_sctx_init(&sctx, timeout_ms);
pxmitbuf->sctx = &sctx;
- ret = rtw_hal_mgnt_xmit(padapter, pmgntframe);
- if (ret)
- ret = _FAIL;
- else
- ret = _SUCCESS;
-
- if (ret == _SUCCESS)
- ret = rtw_sctx_wait(&sctx);
+ if (!rtw_hal_mgnt_xmit(padapter, pmgntframe))
+ rtw_sctx_wait(&sctx);
spin_lock_irqsave(&pxmitpriv->lock_sctx, irqL);
pxmitbuf->sctx = NULL;
spin_unlock_irqrestore(&pxmitpriv->lock_sctx, irqL);
-
- return ret;
}
s32 dump_mgntframe_and_wait_ack(struct adapter *padapter, struct xmit_frame *pmgntframe)
diff --git a/drivers/staging/rtl8723bs/include/rtw_mlme_ext.h b/drivers/staging/rtl8723bs/include/rtw_mlme_ext.h
index 0c2bd51b6bc2..73b89832d27a 100644
--- a/drivers/staging/rtl8723bs/include/rtw_mlme_ext.h
+++ b/drivers/staging/rtl8723bs/include/rtw_mlme_ext.h
@@ -533,7 +533,7 @@ void update_mgnt_tx_rate(struct adapter *padapter, u8 rate);
void update_mgntframe_attrib(struct adapter *padapter, struct pkt_attrib *pattrib);
void update_mgntframe_attrib_addr(struct adapter *padapter, struct xmit_frame *pmgntframe);
void dump_mgntframe(struct adapter *padapter, struct xmit_frame *pmgntframe);
-s32 dump_mgntframe_and_wait(struct adapter *padapter, struct xmit_frame *pmgntframe, int timeout_ms);
+void dump_mgntframe_and_wait(struct adapter *padapter, struct xmit_frame *pmgntframe, int timeout_ms);
s32 dump_mgntframe_and_wait_ack(struct adapter *padapter, struct xmit_frame *pmgntframe);
void issue_beacon(struct adapter *padapter, int timeout_ms);
--
2.43.0
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [PATCH v2 0/3] staging: rtl8723bs: clean up management transmit return values
2026-07-31 15:52 [PATCH v2 0/3] staging: rtl8723bs: clean up management transmit return values Hungyu Lin
` (2 preceding siblings ...)
2026-07-31 15:52 ` [PATCH v2 3/3] staging: rtl8723bs: make dump_mgntframe_and_wait() return void Hungyu Lin
@ 2026-07-31 21:23 ` Dan Carpenter
3 siblings, 0 replies; 5+ messages in thread
From: Dan Carpenter @ 2026-07-31 21:23 UTC (permalink / raw)
To: Hungyu Lin; +Cc: gregkh, linux-staging, linux-kernel
On Fri, Jul 31, 2026 at 03:52:25PM +0000, Hungyu Lin wrote:
> This series continues the cleanup of management transmit return values
> in the rtl8723bs driver.
>
> Patch 1 converts rtw_mgmt_xmitframe_coalesce() to return kernel-style
> errno values.
>
> Patch 2 propagates the new return value convention through
> rtw_hal_mgnt_xmit().
>
> Patch 3 makes dump_mgntframe_and_wait() return void, since none of its
> current callers use its return value. It still uses the return value
> from rtw_hal_mgnt_xmit() internally to determine whether to wait for
> completion.
>
> Changes in v2:
> - Clarify commit messages based on review feedback.
> - Make dump_mgntframe_and_wait() return void instead of converting it
> to errno values.
>
> Hungyu Lin (3):
> staging: rtl8723bs: convert mgmt xmit coalesce to errno
> staging: rtl8723bs: propagate errno handling for mgmt xmit
> staging: rtl8723bs: make dump_mgntframe_and_wait() return void
Thanks!
Reviewed-by: Dan Carpenter <error27@gmail.com>
regards,
dan carpenter
^ permalink raw reply [flat|nested] 5+ messages in thread