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