hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
/******************************************************************************
 *
 * Copyright(c) 2019 Realtek Corporation.
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of version 2 of the GNU General Public License as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
 * more details.
 *
 *****************************************************************************/
#define _HAL_CUSTOM_C_
#include "hal_headers.h"
 
#ifdef CONFIG_PHL_CUSTOM_FEATURE
enum rtw_hal_status
rtw_hal_custom_cfg_tx_ampdu(void *hal,
                            struct rtw_wifi_role_link_t *rlink,
                            struct rtw_phl_custom_ampdu_cfg *ampdu)
{
   struct hal_info_t *hal_info = (struct hal_info_t *)hal;
   enum rtw_hal_status hsts = RTW_HAL_STATUS_FAILURE;
 
   if (rlink == NULL || ampdu == NULL)
       return hsts;
 
   hsts = rtw_hal_mac_set_hw_ampdu_cfg(hal_info,
                                       rlink->hw_band,
                                       (u16)ampdu->max_agg_num,
                                       (u8)ampdu->max_agg_time_32us);
 
   return hsts;
}
 
enum rtw_hal_status
rtw_hal_get_ampdu_cfg(void *hal,
                      struct rtw_wifi_role_link_t *rlink,
                      struct rtw_phl_custom_ampdu_cfg *cfg)
{
   struct hal_info_t *hal_info = (struct hal_info_t *)hal;
   enum rtw_hal_status hsts = RTW_HAL_STATUS_FAILURE;
   struct mac_ax_ampdu_cfg ampdu_cfg = {0};
 
   if (rlink == NULL || cfg == NULL)
       return hsts;
 
   hsts = rtw_hal_mac_get_ampdu_cfg(hal_info->hal_com,
                                    rlink->hw_band,
                                    &ampdu_cfg);
   if (hsts == RTW_HAL_STATUS_SUCCESS) {
       cfg->max_agg_num = ampdu_cfg.max_agg_num;
       cfg->max_agg_time_32us = ampdu_cfg.max_agg_time_32us;
   }
 
   return hsts;
}
 
enum rtw_hal_status
rtw_hal_get_edca(void *hal,
                 struct rtw_wifi_role_link_t *rlink,
                 struct rtw_edca_param *edca_param)
{
   struct hal_info_t *hal_info = (struct hal_info_t *)hal;
   enum rtw_hal_status hal_status;
 
   hal_status = rtw_hal_mac_get_edca(hal_info->hal_com,
                                     rlink->hw_band,
                                     rlink->hw_wmm,
                                     edca_param);
 
   PHL_INFO("%s\n, ac(%d), param(0x%x)\n, ret(%d)", __FUNCTION__, edca_param->ac,
            edca_param->param, hal_status);
 
   return hal_status;
}
 
enum rtw_hal_status
rtw_hal_set_usr_edca(void *hal,
                     u32 idx,
                     u32 enable,
                     u32 band,
                     u32 wmm,
                     struct rtw_edca_param *aggr,
                     struct rtw_edca_param *mod)
{
   struct hal_info_t *hal_info = (struct hal_info_t *)hal;
 
   return rtw_hal_mac_set_usr_edca(hal_info, idx, enable, band, wmm, aggr, mod);
}
 
enum rtw_hal_status
rtw_hal_set_pop_en(void *hal, bool en, enum phl_phy_idx phy_idx)
{
   struct hal_info_t *hal_info = (struct hal_info_t *)hal;
   return rtw_hal_bb_set_pop_en(hal_info, en, phy_idx);
}
 
bool
rtw_hal_query_pop_en(void *hal, enum phl_phy_idx phy_idx)
{
   struct hal_info_t *hal_info = (struct hal_info_t *)hal;
   return rtw_hal_bb_query_pop_en(hal_info, phy_idx);
}
 
enum rtw_hal_status
rtw_hal_set_pkt_detect_thold(void *hal, enum phl_band_idx band_idx, u32 bound)
{
   struct hal_info_t *hal_info = (struct hal_info_t *)hal;
   return rtw_hal_bb_set_pkt_detect_thold(hal_info, band_idx, bound);
}
 
u8
rtw_hal_query_pkt_detect_thold(void *hal,
                               bool get_en_info,
                               enum phl_phy_idx phy_idx)
{
   struct hal_info_t *hal_info = (struct hal_info_t *)hal;
   return rtw_hal_bb_query_pkt_detect_thold(hal_info, get_en_info, phy_idx);
}
 
void
rtw_hal_set_tx_rate_rty_tbl(void *hal, bool en, u8 *rty_rate_tbl)
{
   struct hal_info_t *hal_info = (struct hal_info_t *)hal;
 
   rtw_hal_bb_set_tx_rate_rty_tbl(hal_info, en, rty_rate_tbl);
}
 
enum rtw_hal_status
rtw_hal_set_spatial_reuse_en(void *hal, bool en)
{
   struct hal_info_t *hal_info = (struct hal_info_t *)hal;
   return rtw_hal_bb_set_spatial_reuse_en(hal_info, en);
}
 
bool
rtw_hal_is_spatial_reuse_en(void *hal)
{
   struct hal_info_t *hal_info = (struct hal_info_t *)hal;
   return rtw_hal_bb_is_spatial_reuse_en(hal_info);
}
#endif