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