struct rtw89_sta *rtwsta, const u8 *scan_mac_addr)
 {
        struct sk_buff *skb;
+       int ret;
 
        skb = rtw89_fw_h2c_alloc_skb_with_hdr(rtwdev, H2C_CAM_LEN);
        if (!skb) {
                              H2C_FUNC_MAC_ADDR_CAM_UPD, 0, 1,
                              H2C_CAM_LEN);
 
-       if (rtw89_h2c_tx(rtwdev, skb, false)) {
+       ret = rtw89_h2c_tx(rtwdev, skb, false);
+       if (ret) {
                rtw89_err(rtwdev, "failed to send h2c\n");
                goto fail;
        }
 fail:
        dev_kfree_skb_any(skb);
 
-       return -EBUSY;
+       return ret;
 }
 
 #define H2C_DCTL_SEC_CAM_LEN 68
                                 struct rtw89_sta *rtwsta)
 {
        struct sk_buff *skb;
+       int ret;
 
        skb = rtw89_fw_h2c_alloc_skb_with_hdr(rtwdev, H2C_DCTL_SEC_CAM_LEN);
        if (!skb) {
                              H2C_FUNC_MAC_DCTLINFO_UD_V1, 0, 0,
                              H2C_DCTL_SEC_CAM_LEN);
 
-       if (rtw89_h2c_tx(rtwdev, skb, false)) {
+       ret = rtw89_h2c_tx(rtwdev, skb, false);
+       if (ret) {
                rtw89_err(rtwdev, "failed to send h2c\n");
                goto fail;
        }
 fail:
        dev_kfree_skb_any(skb);
 
-       return -EBUSY;
+       return ret;
 }
 EXPORT_SYMBOL(rtw89_fw_h2c_dctl_sec_cam_v1);
 
                              H2C_FUNC_MAC_BA_CAM, 0, 1,
                              H2C_BA_CAM_LEN);
 
-       if (rtw89_h2c_tx(rtwdev, skb, false)) {
+       ret = rtw89_h2c_tx(rtwdev, skb, false);
+       if (ret) {
                rtw89_err(rtwdev, "failed to send h2c\n");
                goto fail;
        }
 fail:
        dev_kfree_skb_any(skb);
 
-       return -EBUSY;
+       return ret;
 }
 
 static int rtw89_fw_h2c_init_dynamic_ba_cam_v1(struct rtw89_dev *rtwdev,
                                               u8 entry_idx, u8 uid)
 {
        struct sk_buff *skb;
+       int ret;
 
        skb = rtw89_fw_h2c_alloc_skb_with_hdr(rtwdev, H2C_BA_CAM_LEN);
        if (!skb) {
                              H2C_FUNC_MAC_BA_CAM, 0, 1,
                              H2C_BA_CAM_LEN);
 
-       if (rtw89_h2c_tx(rtwdev, skb, false)) {
+       ret = rtw89_h2c_tx(rtwdev, skb, false);
+       if (ret) {
                rtw89_err(rtwdev, "failed to send h2c\n");
                goto fail;
        }
 fail:
        dev_kfree_skb_any(skb);
 
-       return -EBUSY;
+       return ret;
 }
 
 void rtw89_fw_h2c_init_ba_cam_v1(struct rtw89_dev *rtwdev)
        struct sk_buff *skb;
        u32 comp = enable ? BIT(RTW89_FW_LOG_COMP_INIT) | BIT(RTW89_FW_LOG_COMP_TASK) |
                            BIT(RTW89_FW_LOG_COMP_PS) | BIT(RTW89_FW_LOG_COMP_ERROR) : 0;
+       int ret;
 
        skb = rtw89_fw_h2c_alloc_skb_with_hdr(rtwdev, H2C_LOG_CFG_LEN);
        if (!skb) {
                              H2C_FUNC_LOG_CFG, 0, 0,
                              H2C_LOG_CFG_LEN);
 
-       if (rtw89_h2c_tx(rtwdev, skb, false)) {
+       ret = rtw89_h2c_tx(rtwdev, skb, false);
+       if (ret) {
                rtw89_err(rtwdev, "failed to send h2c\n");
                goto fail;
        }
 fail:
        dev_kfree_skb_any(skb);
 
-       return -EBUSY;
+       return ret;
 }
 
 #define H2C_GENERAL_PKT_LEN 6
 int rtw89_fw_h2c_general_pkt(struct rtw89_dev *rtwdev, u8 macid)
 {
        struct sk_buff *skb;
+       int ret;
 
        skb = rtw89_fw_h2c_alloc_skb_with_hdr(rtwdev, H2C_GENERAL_PKT_LEN);
        if (!skb) {
                              H2C_FUNC_MAC_GENERAL_PKT, 0, 1,
                              H2C_GENERAL_PKT_LEN);
 
-       if (rtw89_h2c_tx(rtwdev, skb, false)) {
+       ret = rtw89_h2c_tx(rtwdev, skb, false);
+       if (ret) {
                rtw89_err(rtwdev, "failed to send h2c\n");
                goto fail;
        }
 fail:
        dev_kfree_skb_any(skb);
 
-       return -EBUSY;
+       return ret;
 }
 
 #define H2C_LPS_PARM_LEN 8
                          struct rtw89_lps_parm *lps_param)
 {
        struct sk_buff *skb;
+       int ret;
 
        skb = rtw89_fw_h2c_alloc_skb_with_hdr(rtwdev, H2C_LPS_PARM_LEN);
        if (!skb) {
                              H2C_FUNC_MAC_LPS_PARM, 0, 1,
                              H2C_LPS_PARM_LEN);
 
-       if (rtw89_h2c_tx(rtwdev, skb, false)) {
+       ret = rtw89_h2c_tx(rtwdev, skb, false);
+       if (ret) {
                rtw89_err(rtwdev, "failed to send h2c\n");
                goto fail;
        }
 fail:
        dev_kfree_skb_any(skb);
 
-       return -EBUSY;
+       return ret;
 }
 
 static void __rtw89_fw_h2c_set_tx_path(struct rtw89_dev *rtwdev,
        const struct rtw89_chip_info *chip = rtwdev->chip;
        struct sk_buff *skb;
        u8 macid = rtwvif->mac_id;
+       int ret;
 
        skb = rtw89_fw_h2c_alloc_skb_with_hdr(rtwdev, H2C_CMC_TBL_LEN);
        if (!skb) {
                              chip->h2c_cctl_func_id, 0, 1,
                              H2C_CMC_TBL_LEN);
 
-       if (rtw89_h2c_tx(rtwdev, skb, false)) {
+       ret = rtw89_h2c_tx(rtwdev, skb, false);
+       if (ret) {
                rtw89_err(rtwdev, "failed to send h2c\n");
                goto fail;
        }
 fail:
        dev_kfree_skb_any(skb);
 
-       return -EBUSY;
+       return ret;
 }
 
 static void __get_sta_he_pkt_padding(struct rtw89_dev *rtwdev,
        struct sk_buff *skb;
        u8 pads[RTW89_PPE_BW_NUM];
        u8 mac_id = rtwsta ? rtwsta->mac_id : rtwvif->mac_id;
+       int ret;
 
        memset(pads, 0, sizeof(pads));
        if (sta)
                              chip->h2c_cctl_func_id, 0, 1,
                              H2C_CMC_TBL_LEN);
 
-       if (rtw89_h2c_tx(rtwdev, skb, false)) {
+       ret = rtw89_h2c_tx(rtwdev, skb, false);
+       if (ret) {
                rtw89_err(rtwdev, "failed to send h2c\n");
                goto fail;
        }
 fail:
        dev_kfree_skb_any(skb);
 
-       return -EBUSY;
+       return ret;
 }
 
 int rtw89_fw_h2c_txtime_cmac_tbl(struct rtw89_dev *rtwdev,
 {
        const struct rtw89_chip_info *chip = rtwdev->chip;
        struct sk_buff *skb;
+       int ret;
 
        skb = rtw89_fw_h2c_alloc_skb_with_hdr(rtwdev, H2C_CMC_TBL_LEN);
        if (!skb) {
                              chip->h2c_cctl_func_id, 0, 1,
                              H2C_CMC_TBL_LEN);
 
-       if (rtw89_h2c_tx(rtwdev, skb, false)) {
+       ret = rtw89_h2c_tx(rtwdev, skb, false);
+       if (ret) {
                rtw89_err(rtwdev, "failed to send h2c\n");
                goto fail;
        }
 fail:
        dev_kfree_skb_any(skb);
 
-       return -EBUSY;
+       return ret;
 }
 
 int rtw89_fw_h2c_txpath_cmac_tbl(struct rtw89_dev *rtwdev,
        struct sk_buff *skb_beacon;
        u16 tim_offset;
        int bcn_total_len;
+       int ret;
 
        skb_beacon = ieee80211_beacon_get_tim(rtwdev->hw, vif, &tim_offset,
                                              NULL, 0);
                              H2C_FUNC_MAC_BCN_UPD, 0, 1,
                              bcn_total_len);
 
-       if (rtw89_h2c_tx(rtwdev, skb, false)) {
+       ret = rtw89_h2c_tx(rtwdev, skb, false);
+       if (ret) {
                rtw89_err(rtwdev, "failed to send h2c\n");
                dev_kfree_skb_any(skb);
-               return -EBUSY;
+               return ret;
        }
 
        return 0;
        struct sk_buff *skb;
        u8 mac_id = rtwsta ? rtwsta->mac_id : rtwvif->mac_id;
        u8 self_role;
+       int ret;
 
        if (rtwvif->net_type == RTW89_NET_TYPE_AP_MODE) {
                if (rtwsta)
                              H2C_FUNC_MAC_FWROLE_MAINTAIN, 0, 1,
                              H2C_ROLE_MAINTAIN_LEN);
 
-       if (rtw89_h2c_tx(rtwdev, skb, false)) {
+       ret = rtw89_h2c_tx(rtwdev, skb, false);
+       if (ret) {
                rtw89_err(rtwdev, "failed to send h2c\n");
                goto fail;
        }
 fail:
        dev_kfree_skb_any(skb);
 
-       return -EBUSY;
+       return ret;
 }
 
 #define H2C_JOIN_INFO_LEN 4
        u8 mac_id = rtwsta ? rtwsta->mac_id : rtwvif->mac_id;
        u8 self_role = rtwvif->self_role;
        u8 net_type = rtwvif->net_type;
+       int ret;
 
        if (net_type == RTW89_NET_TYPE_AP_MODE && rtwsta) {
                self_role = RTW89_SELF_ROLE_AP_CLIENT;
                              H2C_FUNC_MAC_JOININFO, 0, 1,
                              H2C_JOIN_INFO_LEN);
 
-       if (rtw89_h2c_tx(rtwdev, skb, false)) {
+       ret = rtw89_h2c_tx(rtwdev, skb, false);
+       if (ret) {
                rtw89_err(rtwdev, "failed to send h2c\n");
                goto fail;
        }
 fail:
        dev_kfree_skb_any(skb);
 
-       return -EBUSY;
+       return ret;
 }
 
 int rtw89_fw_h2c_macid_pause(struct rtw89_dev *rtwdev, u8 sh, u8 grp,
        struct rtw89_fw_macid_pause_grp h2c = {{0}};
        u8 len = sizeof(struct rtw89_fw_macid_pause_grp);
        struct sk_buff *skb;
+       int ret;
 
        skb = rtw89_fw_h2c_alloc_skb_with_hdr(rtwdev, H2C_JOIN_INFO_LEN);
        if (!skb) {
                              H2C_FUNC_MAC_MACID_PAUSE, 1, 0,
                              len);
 
-       if (rtw89_h2c_tx(rtwdev, skb, false)) {
+       ret = rtw89_h2c_tx(rtwdev, skb, false);
+       if (ret) {
                rtw89_err(rtwdev, "failed to send h2c\n");
                goto fail;
        }
 fail:
        dev_kfree_skb_any(skb);
 
-       return -EBUSY;
+       return ret;
 }
 
 #define H2C_EDCA_LEN 12
                          u8 ac, u32 val)
 {
        struct sk_buff *skb;
+       int ret;
 
        skb = rtw89_fw_h2c_alloc_skb_with_hdr(rtwdev, H2C_EDCA_LEN);
        if (!skb) {
                              H2C_FUNC_USR_EDCA, 0, 1,
                              H2C_EDCA_LEN);
 
-       if (rtw89_h2c_tx(rtwdev, skb, false)) {
+       ret = rtw89_h2c_tx(rtwdev, skb, false);
+       if (ret) {
                rtw89_err(rtwdev, "failed to send h2c\n");
                goto fail;
        }
 fail:
        dev_kfree_skb_any(skb);
 
-       return -EBUSY;
+       return ret;
 }
 
 #define H2C_OFLD_CFG_LEN 8
 {
        static const u8 cfg[] = {0x09, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00};
        struct sk_buff *skb;
+       int ret;
 
        skb = rtw89_fw_h2c_alloc_skb_with_hdr(rtwdev, H2C_OFLD_CFG_LEN);
        if (!skb) {
                              H2C_FUNC_OFLD_CFG, 0, 1,
                              H2C_OFLD_CFG_LEN);
 
-       if (rtw89_h2c_tx(rtwdev, skb, false)) {
+       ret = rtw89_h2c_tx(rtwdev, skb, false);
+       if (ret) {
                rtw89_err(rtwdev, "failed to send h2c\n");
                goto fail;
        }
 fail:
        dev_kfree_skb_any(skb);
 
-       return -EBUSY;
+       return ret;
 }
 
 #define H2C_RA_LEN 16
 {
        struct sk_buff *skb;
        u8 *cmd;
+       int ret;
 
        skb = rtw89_fw_h2c_alloc_skb_with_hdr(rtwdev, H2C_RA_LEN);
        if (!skb) {
                              H2C_FUNC_OUTSRC_RA_MACIDCFG, 0, 0,
                              H2C_RA_LEN);
 
-       if (rtw89_h2c_tx(rtwdev, skb, false)) {
+       ret = rtw89_h2c_tx(rtwdev, skb, false);
+       if (ret) {
                rtw89_err(rtwdev, "failed to send h2c\n");
                goto fail;
        }
 fail:
        dev_kfree_skb_any(skb);
 
-       return -EBUSY;
+       return ret;
 }
 
 #define H2C_LEN_CXDRVHDR 2
        struct rtw89_btc_ant_info *ant = &module->ant;
        struct sk_buff *skb;
        u8 *cmd;
+       int ret;
 
        skb = rtw89_fw_h2c_alloc_skb_with_hdr(rtwdev, H2C_LEN_CXDRVINFO_INIT);
        if (!skb) {
                              SET_DRV_INFO, 0, 0,
                              H2C_LEN_CXDRVINFO_INIT);
 
-       if (rtw89_h2c_tx(rtwdev, skb, false)) {
+       ret = rtw89_h2c_tx(rtwdev, skb, false);
+       if (ret) {
                rtw89_err(rtwdev, "failed to send h2c\n");
                goto fail;
        }
 fail:
        dev_kfree_skb_any(skb);
 
-       return -EBUSY;
+       return ret;
 }
 
 #define PORT_DATA_OFFSET 4
        struct sk_buff *skb;
        u8 offset = 0;
        u8 *cmd;
+       int ret;
        int i;
 
        skb = rtw89_fw_h2c_alloc_skb_with_hdr(rtwdev, H2C_LEN_CXDRVINFO_ROLE);
                              SET_DRV_INFO, 0, 0,
                              H2C_LEN_CXDRVINFO_ROLE);
 
-       if (rtw89_h2c_tx(rtwdev, skb, false)) {
+       ret = rtw89_h2c_tx(rtwdev, skb, false);
+       if (ret) {
                rtw89_err(rtwdev, "failed to send h2c\n");
                goto fail;
        }
 fail:
        dev_kfree_skb_any(skb);
 
-       return -EBUSY;
+       return ret;
 }
 
 int rtw89_fw_h2c_cxdrv_role_v1(struct rtw89_dev *rtwdev)
        struct rtw89_btc_wl_active_role_v1 *active = role_info->active_role_v1;
        struct sk_buff *skb;
        u8 *cmd, offset;
+       int ret;
        int i;
 
        skb = rtw89_fw_h2c_alloc_skb_with_hdr(rtwdev, H2C_LEN_CXDRVINFO_ROLE_V1);
                              SET_DRV_INFO, 0, 0,
                              H2C_LEN_CXDRVINFO_ROLE_V1);
 
-       if (rtw89_h2c_tx(rtwdev, skb, false)) {
+       ret = rtw89_h2c_tx(rtwdev, skb, false);
+       if (ret) {
                rtw89_err(rtwdev, "failed to send h2c\n");
                goto fail;
        }
 fail:
        dev_kfree_skb_any(skb);
 
-       return -EBUSY;
+       return ret;
 }
 
 #define H2C_LEN_CXDRVINFO_CTRL (4 + H2C_LEN_CXDRVHDR)
        struct rtw89_btc_ctrl *ctrl = &btc->ctrl;
        struct sk_buff *skb;
        u8 *cmd;
+       int ret;
 
        skb = rtw89_fw_h2c_alloc_skb_with_hdr(rtwdev, H2C_LEN_CXDRVINFO_CTRL);
        if (!skb) {
                              SET_DRV_INFO, 0, 0,
                              H2C_LEN_CXDRVINFO_CTRL);
 
-       if (rtw89_h2c_tx(rtwdev, skb, false)) {
+       ret = rtw89_h2c_tx(rtwdev, skb, false);
+       if (ret) {
                rtw89_err(rtwdev, "failed to send h2c\n");
                goto fail;
        }
 fail:
        dev_kfree_skb_any(skb);
 
-       return -EBUSY;
+       return ret;
 }
 
 #define H2C_LEN_CXDRVINFO_RFK (4 + H2C_LEN_CXDRVHDR)
        struct rtw89_btc_wl_rfk_info *rfk_info = &wl->rfk_info;
        struct sk_buff *skb;
        u8 *cmd;
+       int ret;
 
        skb = rtw89_fw_h2c_alloc_skb_with_hdr(rtwdev, H2C_LEN_CXDRVINFO_RFK);
        if (!skb) {
                              SET_DRV_INFO, 0, 0,
                              H2C_LEN_CXDRVINFO_RFK);
 
-       if (rtw89_h2c_tx(rtwdev, skb, false)) {
+       ret = rtw89_h2c_tx(rtwdev, skb, false);
+       if (ret) {
                rtw89_err(rtwdev, "failed to send h2c\n");
                goto fail;
        }
 fail:
        dev_kfree_skb_any(skb);
 
-       return -EBUSY;
+       return ret;
 }
 
 #define H2C_LEN_PKT_OFLD 4
 {
        struct sk_buff *skb;
        u8 *cmd;
+       int ret;
 
        skb = rtw89_fw_h2c_alloc_skb_with_hdr(rtwdev, H2C_LEN_PKT_OFLD);
        if (!skb) {
                              H2C_FUNC_PACKET_OFLD, 1, 1,
                              H2C_LEN_PKT_OFLD);
 
-       if (rtw89_h2c_tx(rtwdev, skb, false)) {
+       ret = rtw89_h2c_tx(rtwdev, skb, false);
+       if (ret) {
                rtw89_err(rtwdev, "failed to send h2c\n");
                goto fail;
        }
 fail:
        dev_kfree_skb_any(skb);
 
-       return -EBUSY;
+       return ret;
 }
 
 int rtw89_fw_h2c_add_pkt_offload(struct rtw89_dev *rtwdev, u8 *id,
        struct sk_buff *skb;
        u8 *cmd;
        u8 alloc_id;
+       int ret;
 
        alloc_id = rtw89_core_acquire_bit_map(rtwdev->pkt_offload,
                                              RTW89_MAX_PKT_OFLD_NUM);
                              H2C_FUNC_PACKET_OFLD, 1, 1,
                              H2C_LEN_PKT_OFLD + skb_ofld->len);
 
-       if (rtw89_h2c_tx(rtwdev, skb, false)) {
+       ret = rtw89_h2c_tx(rtwdev, skb, false);
+       if (ret) {
                rtw89_err(rtwdev, "failed to send h2c\n");
                goto fail;
        }
 fail:
        dev_kfree_skb_any(skb);
 
-       return -EBUSY;
+       return ret;
 }
 
 #define H2C_LEN_SCAN_LIST_OFFLOAD 4
        struct sk_buff *skb;
        int skb_len = H2C_LEN_SCAN_LIST_OFFLOAD + len * RTW89_MAC_CHINFO_SIZE;
        u8 *cmd;
+       int ret;
 
        skb = rtw89_fw_h2c_alloc_skb_with_hdr(rtwdev, skb_len);
        if (!skb) {
                              H2C_CAT_MAC, H2C_CL_MAC_FW_OFLD,
                              H2C_FUNC_ADD_SCANOFLD_CH, 1, 1, skb_len);
 
-       if (rtw89_h2c_tx(rtwdev, skb, false)) {
+       ret = rtw89_h2c_tx(rtwdev, skb, false);
+       if (ret) {
                rtw89_err(rtwdev, "failed to send h2c\n");
                goto fail;
        }
 fail:
        dev_kfree_skb_any(skb);
 
-       return -EBUSY;
+       return ret;
 }
 
 #define H2C_LEN_SCAN_OFFLOAD 28
        struct rtw89_hw_scan_info *scan_info = &rtwdev->scan_info;
        struct sk_buff *skb;
        u8 *cmd;
+       int ret;
 
        skb = rtw89_fw_h2c_alloc_skb_with_hdr(rtwdev, H2C_LEN_SCAN_OFFLOAD);
        if (!skb) {
                              H2C_FUNC_SCANOFLD, 1, 1,
                              H2C_LEN_SCAN_OFFLOAD);
 
-       if (rtw89_h2c_tx(rtwdev, skb, false)) {
+       ret = rtw89_h2c_tx(rtwdev, skb, false);
+       if (ret) {
                rtw89_err(rtwdev, "failed to send h2c\n");
                goto fail;
        }
 fail:
        dev_kfree_skb_any(skb);
 
-       return -EBUSY;
+       return ret;
 }
 
 int rtw89_fw_h2c_rf_reg(struct rtw89_dev *rtwdev,
        struct sk_buff *skb;
        u8 class = info->rf_path == RF_PATH_A ?
                   H2C_CL_OUTSRC_RF_REG_A : H2C_CL_OUTSRC_RF_REG_B;
+       int ret;
 
        skb = rtw89_fw_h2c_alloc_skb_with_hdr(rtwdev, len);
        if (!skb) {
                              H2C_CAT_OUTSRC, class, page, 0, 0,
                              len);
 
-       if (rtw89_h2c_tx(rtwdev, skb, false)) {
+       ret = rtw89_h2c_tx(rtwdev, skb, false);
+       if (ret) {
                rtw89_err(rtwdev, "failed to send h2c\n");
                goto fail;
        }
 fail:
        dev_kfree_skb_any(skb);
 
-       return -EBUSY;
+       return ret;
 }
 
 int rtw89_fw_h2c_rf_ntfy_mcc(struct rtw89_dev *rtwdev)
        struct rtw89_mcc_info *mcc_info = &rtwdev->mcc;
        struct rtw89_fw_h2c_rf_get_mccch *mccch;
        struct sk_buff *skb;
+       int ret;
 
        skb = rtw89_fw_h2c_alloc_skb_with_hdr(rtwdev, sizeof(*mccch));
        if (!skb) {
                              H2C_FUNC_OUTSRC_RF_GET_MCCCH, 0, 0,
                              sizeof(*mccch));
 
-       if (rtw89_h2c_tx(rtwdev, skb, false)) {
+       ret = rtw89_h2c_tx(rtwdev, skb, false);
+       if (ret) {
                rtw89_err(rtwdev, "failed to send h2c\n");
                goto fail;
        }
 fail:
        dev_kfree_skb_any(skb);
 
-       return -EBUSY;
+       return ret;
 }
 EXPORT_SYMBOL(rtw89_fw_h2c_rf_ntfy_mcc);
 
                              bool rack, bool dack)
 {
        struct sk_buff *skb;
+       int ret;
 
        skb = rtw89_fw_h2c_alloc_skb_with_hdr(rtwdev, len);
        if (!skb) {
                              H2C_CAT_OUTSRC, h2c_class, h2c_func, rack, dack,
                              len);
 
-       if (rtw89_h2c_tx(rtwdev, skb, false)) {
+       ret = rtw89_h2c_tx(rtwdev, skb, false);
+       if (ret) {
                rtw89_err(rtwdev, "failed to send h2c\n");
                goto fail;
        }
 fail:
        dev_kfree_skb_any(skb);
 
-       return -EBUSY;
+       return ret;
 }
 
 int rtw89_fw_h2c_raw(struct rtw89_dev *rtwdev, const u8 *buf, u16 len)
 {
        struct sk_buff *skb;
+       int ret;
 
        skb = rtw89_fw_h2c_alloc_skb_no_hdr(rtwdev, len);
        if (!skb) {
        }
        skb_put_data(skb, buf, len);
 
-       if (rtw89_h2c_tx(rtwdev, skb, false)) {
+       ret = rtw89_h2c_tx(rtwdev, skb, false);
+       if (ret) {
                rtw89_err(rtwdev, "failed to send h2c\n");
                goto fail;
        }
 fail:
        dev_kfree_skb_any(skb);
 
-       return -EBUSY;
+       return ret;
 }
 
 void rtw89_fw_send_all_early_h2c(struct rtw89_dev *rtwdev)
 int rtw89_fw_h2c_trigger_cpu_exception(struct rtw89_dev *rtwdev)
 {
        struct sk_buff *skb;
+       int ret;
 
        skb = rtw89_fw_h2c_alloc_skb_with_hdr(rtwdev, H2C_FW_CPU_EXCEPTION_LEN);
        if (!skb) {
                              H2C_FUNC_CPU_EXCEPTION, 0, 0,
                              H2C_FW_CPU_EXCEPTION_LEN);
 
-       if (rtw89_h2c_tx(rtwdev, skb, false)) {
+       ret = rtw89_h2c_tx(rtwdev, skb, false);
+       if (ret) {
                rtw89_err(rtwdev, "failed to send h2c\n");
                goto fail;
        }
 
 fail:
        dev_kfree_skb_any(skb);
-       return -EBUSY;
+       return ret;
 }