xref: /wlan-dirver/qca-wifi-host-cmn/wmi/inc/wmi_unified_11be_tlv.h (revision d94f0fb619d3da5ae22f9943f88d4634e2d28581)
1 /*
2  * Copyright (c) 2021, The Linux Foundation. All rights reserved.
3  * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
4  *
5  * Permission to use, copy, modify, and/or distribute this software for any
6  * purpose with or without fee is hereby granted, provided that the above
7  * copyright notice and this permission notice appear in all copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16  */
17 
18 #ifndef _WMI_UNIFIED_11BE_TLV_H_
19 #define _WMI_UNIFIED_11BE_TLV_H_
20 
21 #ifdef WLAN_FEATURE_11BE_MLO
22 /**
23  *  vdev_create_mlo_params_size() - Get MLO params size in vdev create
24  *  @param: ponter to vdev create request param
25  *  Return: size of MLO params in vdev create
26  */
27 size_t vdev_create_mlo_params_size(struct vdev_create_params *param);
28 /**
29  *  vdev_create_add_mlo_params() - Add MLO params in vdev create cmd
30  *  @buf_ptr: pointer to vdev create buffer.
31  *  @param: ponter to vdev create request param
32  *
33  *  Return: pointer to new offset of vdev create buffer
34  */
35 uint8_t *vdev_create_add_mlo_params(uint8_t *buf_ptr,
36 				    struct vdev_create_params *param);
37 /**
38  *  vdev_start_mlo_params_size() - Get MLO params size in vdev start
39  *  @req: Vdev start request params
40  *
41  *  Return: size of MLO params in vdev start
42  */
43 size_t vdev_start_mlo_params_size(struct vdev_start_params *req);
44 /**
45  *  vdev_start_add_mlo_params() - Add MLO params in vdev start cmd
46  *  @buf_ptr: pointer to vdev start buffer.
47  *  @req: ponter to vdev create request param
48  *
49  *  Return: pointer to new offset of cmd buffer
50  */
51 uint8_t *vdev_start_add_mlo_params(uint8_t *buf_ptr,
52 				   struct vdev_start_params *req);
53 /**
54  *  vdev_start_add_ml_partner_links() - Add MLO partner links in vdev start cmd
55  *  @buf_ptr: pointer to vdev start cmd buffer.
56  *  @req: ponter to vdev start request param
57  *
58  *  Return: pointer to new offset of cmd buffer
59  */
60 uint8_t *vdev_start_add_ml_partner_links(uint8_t *buf_ptr,
61 					 struct vdev_start_params *req);
62 /**
63  * bcn_tmpl_add_ml_partner_links - Add MLO partner links in beacon template
64  *                                 command
65  * @buf_ptr: pointer to beacon cmd buffer.
66  * @param: pointer to beacon template params
67  *
68  * Return: pointer to new offset of cmd buffer
69  */
70 uint8_t *bcn_tmpl_add_ml_partner_links(uint8_t *buf_ptr,
71 				       struct beacon_tmpl_params *param);
72 /**
73  *  peer_create_add_mlo_params() - Add MLO params in peer create cmd
74  *  @buf_ptr: pointer to peer create cmd buffer.
75  *  @req: pointer to peer create request param
76  *
77  *  Return: pointer to new offset of cmd buffer
78  */
79 uint8_t *peer_create_add_mlo_params(uint8_t *buf_ptr,
80 				    struct peer_create_params *req);
81 /**
82  *  peer_create_mlo_params_size() - Get ML params size in peer create
83  *  @req: pointer to peer create request param
84  *
85  *  Return: size of ML params in peer create cmd
86  */
87 size_t peer_create_mlo_params_size(struct peer_create_params *req);
88 /**
89  *  peer_assoc_mlo_params_size() - Get ML params size in peer assoc
90  *  @req: pointer to peer assoc request param
91  *
92  *  Return: size of ML params in peer assoc cmd
93  */
94 size_t peer_assoc_mlo_params_size(struct peer_assoc_params *req);
95 /**
96  *  peer_assoc_add_mlo_params() - Add MLO params in peer assoc cmd
97  *  @buf_ptr: pointer to peer assoc cmd buffer.
98  *  @req: pointer to peer assoc request param
99  *
100  *  Return: pointer to new offset of cmd buffer
101  */
102 uint8_t *peer_assoc_add_mlo_params(uint8_t *buf_ptr,
103 				   struct peer_assoc_params *req);
104 /**
105  *  peer_assoc_add_ml_partner_links() - Add MLO partner links in peer assoc cmd
106  *  @buf_ptr: pointer to peer assoc cmd buffer.
107  *  @req: pointer to peer assoc request param
108  *
109  *  Return: pointer to new offset of cmd buffer
110  */
111 uint8_t *peer_assoc_add_ml_partner_links(uint8_t *buf_ptr,
112 					 struct peer_assoc_params *req);
113 /** wmi_11be_tlv_attach_tlv - Attach 11be relaated callbacks
114  *  @wmi_handle: WMI handle
115  */
116 void wmi_11be_attach_tlv(wmi_unified_t wmi_handle);
117 #else
118 static uint8_t *vdev_create_add_mlo_params(uint8_t *buf_ptr,
119 					   struct vdev_create_params *param)
120 {
121 	WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC, 0);
122 	return buf_ptr + WMI_TLV_HDR_SIZE;
123 }
124 
125 static size_t vdev_create_mlo_params_size(struct vdev_create_params *param)
126 {
127 	return WMI_TLV_HDR_SIZE;
128 }
129 
130 static uint8_t *vdev_start_add_mlo_params(uint8_t *buf_ptr,
131 					  struct vdev_start_params *req)
132 {
133 	WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC, 0);
134 	return buf_ptr + WMI_TLV_HDR_SIZE;
135 }
136 
137 static size_t vdev_start_mlo_params_size(struct vdev_start_params *req)
138 {
139 	return WMI_TLV_HDR_SIZE;
140 }
141 
142 static uint8_t *vdev_start_add_ml_partner_links(uint8_t *buf_ptr,
143 						struct vdev_start_params *req)
144 {
145 	WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC, 0);
146 	return buf_ptr + WMI_TLV_HDR_SIZE;
147 }
148 
149 static uint8_t *bcn_tmpl_add_ml_partner_links(uint8_t *buf_ptr,
150 					      struct beacon_tmpl_params *param)
151 {
152 	WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC, 0);
153 	return buf_ptr + WMI_TLV_HDR_SIZE;
154 }
155 
156 static uint8_t *peer_create_add_mlo_params(uint8_t *buf_ptr,
157 					  struct peer_create_params *req)
158 {
159 	WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC, 0);
160 	return buf_ptr + WMI_TLV_HDR_SIZE;
161 }
162 
163 static size_t peer_create_mlo_params_size(struct peer_create_params *req)
164 {
165 	return WMI_TLV_HDR_SIZE;
166 }
167 
168 static size_t peer_assoc_mlo_params_size(struct peer_assoc_params *req)
169 {
170 	size_t peer_assoc_mlo_size =
171 			WMI_TLV_HDR_SIZE +
172 			WMI_TLV_HDR_SIZE;
173 
174 	return peer_assoc_mlo_size;
175 }
176 
177 static uint8_t *peer_assoc_add_mlo_params(uint8_t *buf_ptr,
178 					  struct peer_assoc_params *req)
179 {
180 	WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC, 0);
181 	return buf_ptr + WMI_TLV_HDR_SIZE;
182 }
183 
184 static uint8_t *peer_assoc_add_ml_partner_links(uint8_t *buf_ptr,
185 						struct peer_assoc_params *req)
186 {
187 	WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC, 0);
188 	return buf_ptr + WMI_TLV_HDR_SIZE;
189 }
190 
191 static void wmi_11be_attach_tlv(wmi_unified_t wmi_handle)
192 { }
193 #endif /*WLAN_FEATURE_11BE_MLO*/
194 #endif /*_WMI_UNIFIED_11BE_TLV_H_*/
195