wifi: rtw89: mac: use regular int as return type of DLE buffer request
authorPing-Ke Shih <pkshih@realtek.com>
Fri, 14 Apr 2023 08:22:28 +0000 (16:22 +0800)
committerKalle Valo <kvalo@kernel.org>
Thu, 20 Apr 2023 12:32:18 +0000 (15:32 +0300)
The function to request DLE (data link engine) buffer uses 'u16' as return
value that mixes error code, so change it to 'int' as regular error code.
Also, treat invalid register value (0xfff) as an error.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20230414082228.30766-1-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/debug.c
drivers/net/wireless/realtek/rtw89/mac.c
drivers/net/wireless/realtek/rtw89/mac.h
drivers/net/wireless/realtek/rtw89/reg.h

index 0e0e1483c099b98a00a5288f4c34e6da19a8ef20..1e5b7a9987163515d7f125b842f46f7f7118d636 100644 (file)
@@ -3069,18 +3069,13 @@ static int rtw89_dbg_trigger_ctrl_error(struct rtw89_dev *rtwdev)
 {
        struct rtw89_cpuio_ctrl ctrl_para = {0};
        u16 pkt_id;
+       int ret;
 
        rtw89_leave_ps_mode(rtwdev);
 
-       pkt_id = rtw89_mac_dle_buf_req(rtwdev, 0x20, true);
-       switch (pkt_id) {
-       case 0xffff:
-               return -ETIMEDOUT;
-       case 0xfff:
-               return -ENOMEM;
-       default:
-               break;
-       }
+       ret = rtw89_mac_dle_buf_req(rtwdev, 0x20, true, &pkt_id);
+       if (ret)
+               return ret;
 
        /* intentionally, enqueue two pkt, but has only one pkt id */
        ctrl_para.cmd_type = CPUIO_OP_CMD_ENQ_TO_HEAD;
index 9b47d80b900b07262e2ead38a505c145efe718d4..b8019cfc11b20dd5889b6106ba905d5999f4aab3 100644 (file)
@@ -2813,7 +2813,7 @@ int rtw89_mac_resume_sch_tx_v1(struct rtw89_dev *rtwdev, u8 mac_idx, u32 tx_en)
 }
 EXPORT_SYMBOL(rtw89_mac_resume_sch_tx_v1);
 
-u16 rtw89_mac_dle_buf_req(struct rtw89_dev *rtwdev, u16 buf_len, bool wd)
+int rtw89_mac_dle_buf_req(struct rtw89_dev *rtwdev, u16 buf_len, bool wd, u16 *pkt_id)
 {
        u32 val, reg;
        int ret;
@@ -2828,9 +2828,13 @@ u16 rtw89_mac_dle_buf_req(struct rtw89_dev *rtwdev, u16 buf_len, bool wd)
        ret = read_poll_timeout(rtw89_read32, val, val & B_AX_WD_BUF_STAT_DONE,
                                1, 2000, false, rtwdev, reg);
        if (ret)
-               return 0xffff;
+               return ret;
+
+       *pkt_id = FIELD_GET(B_AX_WD_BUF_STAT_PKTID_MASK, val);
+       if (*pkt_id == S_WD_BUF_STAT_PKTID_INVALID)
+               return -ENOENT;
 
-       return FIELD_GET(B_AX_WD_BUF_STAT_PKTID_MASK, val);
+       return 0;
 }
 
 int rtw89_mac_set_cpuio(struct rtw89_dev *rtwdev,
@@ -2907,10 +2911,10 @@ static int dle_quota_change(struct rtw89_dev *rtwdev, enum rtw89_qta_mode mode)
 
        dle_quota_cfg(rtwdev, cfg, INVALID_QT_WCPU);
 
-       pkt_id = rtw89_mac_dle_buf_req(rtwdev, 0x20, true);
-       if (pkt_id == 0xffff) {
+       ret = rtw89_mac_dle_buf_req(rtwdev, 0x20, true, &pkt_id);
+       if (ret) {
                rtw89_err(rtwdev, "[ERR]WDE DLE buf req\n");
-               return -ENOMEM;
+               return ret;
        }
 
        ctrl_para.cmd_type = CPUIO_OP_CMD_ENQ_TO_HEAD;
@@ -2925,10 +2929,10 @@ static int dle_quota_change(struct rtw89_dev *rtwdev, enum rtw89_qta_mode mode)
                return -EFAULT;
        }
 
-       pkt_id = rtw89_mac_dle_buf_req(rtwdev, 0x20, false);
-       if (pkt_id == 0xffff) {
+       ret = rtw89_mac_dle_buf_req(rtwdev, 0x20, false, &pkt_id);
+       if (ret) {
                rtw89_err(rtwdev, "[ERR]PLE DLE buf req\n");
-               return -ENOMEM;
+               return ret;
        }
 
        ctrl_para.cmd_type = CPUIO_OP_CMD_ENQ_TO_HEAD;
index 06cbad4b8d623bbda39977a45687ad21ed2d98c6..a8d9847ef0b49e1df2f7ffa19abc9729cf4db7b9 100644 (file)
@@ -1149,7 +1149,7 @@ enum rtw89_mac_xtal_si_offset {
 int rtw89_mac_write_xtal_si(struct rtw89_dev *rtwdev, u8 offset, u8 val, u8 mask);
 int rtw89_mac_read_xtal_si(struct rtw89_dev *rtwdev, u8 offset, u8 *val);
 void rtw89_mac_pkt_drop_vif(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif);
-u16 rtw89_mac_dle_buf_req(struct rtw89_dev *rtwdev, u16 buf_len, bool wd);
+int rtw89_mac_dle_buf_req(struct rtw89_dev *rtwdev, u16 buf_len, bool wd, u16 *pkt_id);
 int rtw89_mac_set_cpuio(struct rtw89_dev *rtwdev,
                        struct rtw89_cpuio_ctrl *ctrl_para, bool wd);
 int rtw89_mac_typ_fltr_opt(struct rtw89_dev *rtwdev,
index 7e466ebaec2c4d3bd0dc0a0947fb7265477d9064..266e4231b5f34c16826575d70e69b95000f06e2c 100644 (file)
 #define R_AX_PL_BUF_STATUS 0x9824
 #define B_AX_WD_BUF_STAT_DONE BIT(31)
 #define B_AX_WD_BUF_STAT_PKTID_MASK GENMASK(11, 0)
+#define S_WD_BUF_STAT_PKTID_INVALID GENMASK(11, 0)
 
 #define R_AX_WD_CPUQ_OP_0 0x9810
 #define R_AX_PL_CPUQ_OP_0 0x9830