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
/******************************************************************************
 *
 * Copyright(c) 2007 - 2020  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.
 *
 * The full GNU General Public License is included in this distribution in the
 * file called LICENSE.
 *
 * Contact Information:
 * wlanfae <wlanfae@realtek.com>
 * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
 * Hsinchu 300, Taiwan.
 *
 * Larry Finger <Larry.Finger@lwfinger.net>
 *
 *****************************************************************************/
#ifndef __HALBB_CH_INFO_H__
#define __HALBB_CH_INFO_H__
 
#ifdef HALBB_CH_INFO_SUPPORT
/*@--------------------------[Define] ---------------------------------------*/
#define TEST_CH_INFO_MAX_SEG    4
#define TEST_CH_SEG_LEN    (12 * 8) /*Byte*/
/*@--------------------------[Enum]------------------------------------------*/
enum bb_ch_info_state_type {
   CH_RPT_START_TO_WAIT = 0,
   CH_RPT_GETTED = 1,
   CH_RPT_ALWAYS_ON = 2
};
 
enum bb_ch_info_ack_rxsc_t{
   RXSC_FULLBW = 0,
   RXSC_20 = 1,
   RXSC_DUPILCATE_40 = 9,
   RXSC_DUPILCATE_80 = 13
};
 
/*@--------------------------[Structure]-------------------------------------*/
struct bb_ch_info_physts_info {
   enum bb_ch_info_state_type ch_info_state;
   bool get_ch_rpt_success;
   u16 force_bitmap_type; /*force setting*/
   u16 bitmap_type_rpt; /*report*/
   bool valid_ch_info_only_en;
   bool filter_rxsc_en;
   u8 filter_rxsc_tgrt_idx;
   bool bitmap_type_auto_en;
   u8 rxsc;
   u8 n_rx;
   u8 n_sts;
   u16 ch_info_len;
   u8 evm_1_sts;
   u8 evm_2_sts;
   u8 avg_idle_noise_pwr;
   bool is_ch_info_len_valid;
   enum rtw_gi_ltf gi_ltf;
   u16 data_rate;
   enum bb_ch_info_event_type ch_info_event;
};
 
struct bb_ch_info_raw_info {
   s16 *octet;
   u32 ch_info_buf_len; /*Byte*/
};
 
struct bb_ch_info_cr_info {
   u32 ch_info_en_0;
   u32 ele_bitmap;
   u32 ch_info_type;
   u32 ch_info_type_m;
   u32 seg_len;
   u32 seg_len_m;
   u32 ch_info_off_powersaving;
};
 
struct bb_ch_rpt_info {
   u8 seg_idx_pre;
   u32 csi_raw_data_total_len;  /*Raw data length(Unit: byte) = total_len - 16*/
   u32 total_len_remnant;
   u16 ch_rpt_hdr_len;
   u16 phy_info_len;
   bool skip_ch_info; /*wait for seg_0*/
   u32 raw_data_len_acc;
   u8 *test_buf;
   u8 *test_buf_curr;
   bool print_en;
   enum bb_ch_info_en_t ch_info_data_mode;
   struct bb_ch_info_cr_cfg_info bb_ch_info_cr_cfg_i;
   struct bb_ch_info_cr_cfg_info bb_ch_info_cur_cr_cfg_i;
   struct bb_ch_info_cr_info bb_ch_info_cr_i; /*CR callback table*/
   struct bb_ch_rpt_size_info bb_ch_rpt_size_i;
   struct bb_ch_info_raw_info bb_ch_info_raw_i; /*save dumped ch-info data*/
   struct bb_ch_info_physts_info bb_ch_info_physts_i;
   struct bb_ch_info_snr_bin_info bb_ch_info_snr_bin_i;
};
 
struct bb_info;
/*@--------------------------[Prptotype]-------------------------------------*/
bool halbb_ch_info_valid_chk_8852a(struct bb_info *bb, struct physts_rxd *desc);
void halbb_ch_info_buf_rls(struct bb_info *bb);
bool halbb_ch_info_buf_alloc(struct bb_info *bb);
void halbb_ch_info_dbg(struct bb_info *bb, char input[][16], u32 *_used,
              char *output, u32 *_out_len);
void halbb_ch_info_deinit(struct bb_info *bb);
void halbb_ch_info_init(struct bb_info *bb);
void halbb_cr_cfg_ch_info_init(struct bb_info *bb);
void halbb_ch_info_modify_ack_rxsc(struct bb_info *bb, struct physts_rxd *desc, u32 csi_raw_data_total_len,  u8 *rxsc);
#endif
#endif