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
/******************************************************************************
 *
 * Copyright(c) 2019 - 2021 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.
 *
 *****************************************************************************/
#ifndef _PHL_CHAN_INFO_DEF_H_
#define _PHL_CHAN_INFO_DEF_H_
 
#ifdef CONFIG_PHL_CHANNEL_INFO
 
#ifdef CONFIG_WKARD_CSI_PKT_SIZE
#define CHAN_INFO_MAX_SIZE 2048
#define MAX_CHAN_INFO_PKT_KEEP 10
#else
#define CHAN_INFO_MAX_SIZE 65535
#define MAX_CHAN_INFO_PKT_KEEP 2
#endif
#define CHAN_INFO_PKT_TOTAL MAX_CHAN_INFO_PKT_KEEP + 1
#define MAX_CHAN_INFO_CLIENT PHL_MACID_MAX_NUM
#define MAX_CHAN_INFO_CLIENT_ARR_SZ (MAX_CHAN_INFO_CLIENT >> 3)
 
struct csi_header_t {
   u8 mac_addr[6];            /* mdata: u8 ta[6]? */
   u32 hw_assigned_timestamp;    /* mdata: u32 freerun_cnt */
   u8 channel;            /* Drv define */
   u8 bandwidth;            /* mdata: u8 bw */
   u16 rx_data_rate;        /* mdata: u16 rx_rate */
   u8 nc;                /* ch_rpt_hdr_info */
   u8 nr;                /* ch_rpt_hdr_info */
   u16 num_sub_carrier;        /* Drv define*/
   u8 num_bit_per_tone;        /* Drv define per I/Q */
   u8 avg_idle_noise_pwr;        /* ch_rpt_hdr_info */
   u8 evm[2];            /* ch_rpt_hdr_info */
   u8 rssi[2];            /* phy_info_rpt */
   u32 csi_data_length;        /* ch_rpt_hdr_info */
   u8 rxsc;            /* phy_info_rpt */
   u8 ch_matrix_report;        /* mdata: u8 get_ch_info */
   u8 csi_valid;            /* ch_rpt_hdr_info */
};
 
struct chan_info_t {
   _os_list list;
   u8* chan_info_buffer;
   u32 length;
   struct csi_header_t csi_header;
};
 
struct rx_chan_info_pool {
   struct chan_info_t channl_info_pkt[CHAN_INFO_PKT_TOTAL];
   _os_list idle;
   _os_list busy;
   _os_lock idle_lock;    /* spinlock */
   _os_lock busy_lock;    /* spinlock */
   u32 idle_cnt;
   u32 busy_cnt;
};
 
enum phl_chinfo_action {
   CHINFO_ACT_EN,/*enable or disable*/
   CHINFO_ACT_CFG,
   CHINFO_ACT_MAX
};
 
enum phl_chinfo_group_num {
   CHINFO_GROUP_NUM_1 = 0,
   CHINFO_GROUP_NUM_2,
   CHINFO_GROUP_NUM_4,
   CHINFO_GROUP_NUM_16,
   CHINFO_GROUP_NUM_MAX
};
 
enum phl_chinfo_mode {
   CHINFO_MODE_ACK,
   CHINFO_MODE_MACID,
   CHINFO_MODE_NDP,
   CHINFO_MODE_MAX,
};
 
/*
Compression (I/Q bits)
CHINFO_ACCU_1BYTE: S(8,4),
CHINFO_ACCU_2BYTES: S(16,12)
*/
enum phl_chinfo_accuracy {
   CHINFO_ACCU_1BYTE = 0,
   CHINFO_ACCU_2BYTES,
   CHINFO_ACCU_MAX,
};
 
enum phl_chinfo_enable_mode {
   CHINFO_EN_LIGHT_MODE= 0,
   CHINFO_EN_RICH_MODE,
   CHINFO_EN_AUTO_MODE,
   CHINFO_EN_RICH_MAX,
};
 
struct rtw_chinfo_action_parm {
   struct rtw_phl_stainfo_t *sta;
   enum phl_chinfo_group_num group_num;
   enum phl_chinfo_mode mode;
   enum phl_chinfo_enable_mode enable_mode;
   enum phl_chinfo_action act;
   enum phl_chinfo_accuracy accuracy;
#ifdef CONFIG_PHL_CHANNEL_INFO_DBG
   u32 ele_bitmap;
#endif
   u8 enable;
   u16 trig_period;
   u8 tx_nss;
   u8 rx_nss;
#ifdef CONFIG_PHL_WKARD_CHANNEL_INFO_ACK
   /* decided by core layer */
   u8 chk_ack_rate;
#endif
#ifdef CONFIG_PHL_WKARD_CHANNEL_INFO_SAP
   u8 ap_csi;
   u8 assign_client_mac[MAC_ALEN];
#endif
};
 
struct rtw_chinfo_cur_parm {
   struct rtw_chinfo_action_parm action_parm;
#ifdef CONFIG_PHL_WKARD_CHANNEL_INFO_ACK
   enum rtw_data_rate  rate;
#endif
 
   u8 macid_bitmap[MAX_CHAN_INFO_CLIENT_ARR_SZ];
   u8 num;
};
#endif
#endif /*_PHL_CHAN_INFO_DEF_H_*/