123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380 |
- /*
- * Copyright (c) 2021, The Linux Foundation. All rights reserved.
- * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
- *
- * Permission to use, copy, modify, and/or distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
- #ifndef _WMI_UNIFIED_11BE_TLV_H_
- #define _WMI_UNIFIED_11BE_TLV_H_
- #ifdef WLAN_FEATURE_11BE_MLO
- /**
- * vdev_create_mlo_params_size() - Get MLO params size in vdev create
- * @param: pointer to vdev create request param
- * Return: size of MLO params in vdev create
- */
- size_t vdev_create_mlo_params_size(struct vdev_create_params *param);
- /**
- * vdev_create_add_mlo_params() - Add MLO params in vdev create cmd
- * @buf_ptr: pointer to vdev create buffer.
- * @param: pointer to vdev create request param
- *
- * Return: pointer to new offset of vdev create buffer
- */
- uint8_t *vdev_create_add_mlo_params(uint8_t *buf_ptr,
- struct vdev_create_params *param);
- /**
- * vdev_start_mlo_params_size() - Get MLO params size in vdev start
- * @req: Vdev start request params
- *
- * Return: size of MLO params in vdev start
- */
- size_t vdev_start_mlo_params_size(struct vdev_start_params *req);
- /**
- * vdev_start_add_mlo_params() - Add MLO params in vdev start cmd
- * @buf_ptr: pointer to vdev start buffer.
- * @req: pointer to vdev create request param
- *
- * Return: pointer to new offset of cmd buffer
- */
- uint8_t *vdev_start_add_mlo_params(uint8_t *buf_ptr,
- struct vdev_start_params *req);
- /**
- * vdev_start_add_ml_partner_links() - Add MLO partner links in vdev start cmd
- * @buf_ptr: pointer to vdev start cmd buffer.
- * @req: pointer to vdev start request param
- *
- * Return: pointer to new offset of cmd buffer
- */
- uint8_t *vdev_start_add_ml_partner_links(uint8_t *buf_ptr,
- struct vdev_start_params *req);
- /**
- * bcn_tmpl_mlo_param_size() - Get ML param size in beacon template
- * @param: Pointer to beacon template param
- *
- * Return: size of ML params in beacon template
- */
- size_t bcn_tmpl_mlo_param_size(struct beacon_tmpl_params *param);
- /**
- * bcn_tmpl_add_ml_partner_links - Add MLO partner links in beacon template
- * command
- * @buf_ptr: pointer to beacon cmd buffer.
- * @param: pointer to beacon template params
- *
- * Return: pointer to new offset of cmd buffer
- */
- uint8_t *bcn_tmpl_add_ml_partner_links(uint8_t *buf_ptr,
- struct beacon_tmpl_params *param);
- /**
- * bcn_tmpl_ml_info_size() - Get ML info size in beacon template
- * @param: Pointer to beacon template param
- *
- * Return: size of ML info in beacon template
- */
- size_t bcn_tmpl_ml_info_size(struct beacon_tmpl_params *param);
- /**
- * bcn_tmpl_add_ml_info() - Add MLO info to update Critical Update info in
- * beacon template command
- * @buf_ptr: pointer to beacon cmd buffer.
- * @param: pointer to beacon template params
- *
- * Return: pointer to new offset of cmd buffer
- */
- uint8_t *bcn_tmpl_add_ml_info(uint8_t *buf_ptr,
- struct beacon_tmpl_params *param);
- /**
- * prb_resp_tmpl_ml_info_size() - Get ML info size in 20TU probe resp template
- * @param: Pointer to 20TU probe response template param
- *
- * Return: size of ML info in 20TU probe response template
- */
- size_t prb_resp_tmpl_ml_info_size(struct wmi_probe_resp_params *param);
- /**
- * prb_resp_tmpl_add_ml_info() - Add MLO info to update Critical Update info in
- * 20TU probe response template command
- * @buf_ptr: pointer to 20TU probe response cmd buffer.
- * @param: pointer to 20TU probe response template params
- *
- * Return: pointer to new offset of cmd buffer
- */
- uint8_t *prb_resp_tmpl_add_ml_info(uint8_t *buf_ptr,
- struct wmi_probe_resp_params *param);
- /**
- * peer_create_add_mlo_params() - Add MLO params in peer create cmd
- * @buf_ptr: pointer to peer create cmd buffer.
- * @req: pointer to peer create request param
- *
- * Return: pointer to new offset of cmd buffer
- */
- uint8_t *peer_create_add_mlo_params(uint8_t *buf_ptr,
- struct peer_create_params *req);
- /**
- * peer_create_mlo_params_size() - Get ML params size in peer create
- * @req: pointer to peer create request param
- *
- * Return: size of ML params in peer create cmd
- */
- size_t peer_create_mlo_params_size(struct peer_create_params *req);
- /**
- * peer_assoc_mlo_params_size() - Get ML params size in peer assoc
- * @req: pointer to peer assoc request param
- *
- * Return: size of ML params in peer assoc cmd
- */
- size_t peer_assoc_mlo_params_size(struct peer_assoc_params *req);
- /**
- * peer_assoc_add_mlo_params() - Add MLO params in peer assoc cmd
- * @buf_ptr: pointer to peer assoc cmd buffer.
- * @req: pointer to peer assoc request param
- *
- * Return: pointer to new offset of cmd buffer
- */
- uint8_t *peer_assoc_add_mlo_params(uint8_t *buf_ptr,
- struct peer_assoc_params *req);
- /**
- * peer_assoc_add_ml_partner_links() - Add MLO partner links in peer assoc cmd
- * @buf_ptr: pointer to peer assoc cmd buffer.
- * @req: pointer to peer assoc request param
- *
- * Return: pointer to new offset of cmd buffer
- */
- uint8_t *peer_assoc_add_ml_partner_links(uint8_t *buf_ptr,
- struct peer_assoc_params *req);
- /**
- * peer_assoc_t2lm_params_size() - Get T2LM param size in peer assoc
- * @req: pointer to peer create request param
- *
- * Return: size of ML params in peer create cmd
- */
- size_t peer_assoc_t2lm_params_size(struct peer_assoc_params *req);
- /**
- * peer_assoc_add_tid_to_link_map() - Add TID-to-link mapping in peer assoc cmd
- * @buf_ptr: pointer to peer assoc cmd buffer.
- * @req: pointer to peer assoc request param
- *
- * Return: pointer to new offset of cmd buffer
- */
- uint8_t *peer_assoc_add_tid_to_link_map(uint8_t *buf_ptr,
- struct peer_assoc_params *req);
- /**
- * peer_delete_mlo_params_size() - Get MLO params size in pdev delete
- * @req: peer delete request params
- *
- * Return: size of MLO params in vdev start
- */
- size_t peer_delete_mlo_params_size(struct peer_delete_cmd_params *req);
- /**
- * peer_delete_add_mlo_params() - Add MLO params in peer delete cmd
- * @buf_ptr: pointer to peer delete cmd buffer.
- * @req: pointer to peer delete request param
- *
- * Return: pointer to new offset of cmd buffer
- */
- uint8_t *peer_delete_add_mlo_params(uint8_t *buf_ptr,
- struct peer_delete_cmd_params *req);
- /**
- * vdev_stop_mlo_params_size() - Get MLO params size in vdev stop
- * @params: VDEV stop request params
- *
- * Return: size of MLO params in VDEV stop
- */
- size_t vdev_stop_mlo_params_size(struct vdev_stop_params *params);
- /**
- * vdev_stop_add_mlo_params() - Add MLO params in VDEV stop cmd
- * @buf_ptr: Pointer to VDEV stop cmd buffer.
- * @params: VDEV stop request params
- *
- * Return: Pointer to new offset of cmd buffer.
- */
- uint8_t *vdev_stop_add_mlo_params(uint8_t *buf_ptr,
- struct vdev_stop_params *params);
- /** wmi_11be_tlv_attach_tlv - Attach 11be relaated callbacks
- * @wmi_handle: WMI handle
- */
- void wmi_11be_attach_tlv(wmi_unified_t wmi_handle);
- /**
- * extract_mgmt_rx_mlo_link_removal_tlv_count() - Extract the number of link
- * removal TLVs from MGMT Rx event
- * @num_link_removal_tlvs: Number of link removal TLVs
- * @hdr: MGMT Rx event parameters to be populated
- *
- * Return: None
- */
- static inline void
- extract_mgmt_rx_mlo_link_removal_tlv_count(
- int num_link_removal_tlvs,
- struct mgmt_rx_event_params *hdr)
- {
- hdr->num_link_removal_info = num_link_removal_tlvs;
- }
- #else
- static uint8_t *vdev_create_add_mlo_params(uint8_t *buf_ptr,
- struct vdev_create_params *param)
- {
- WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC, 0);
- return buf_ptr + WMI_TLV_HDR_SIZE;
- }
- static size_t vdev_create_mlo_params_size(struct vdev_create_params *param)
- {
- return WMI_TLV_HDR_SIZE;
- }
- static uint8_t *vdev_start_add_mlo_params(uint8_t *buf_ptr,
- struct vdev_start_params *req)
- {
- WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC, 0);
- return buf_ptr + WMI_TLV_HDR_SIZE;
- }
- static size_t vdev_start_mlo_params_size(struct vdev_start_params *req)
- {
- return WMI_TLV_HDR_SIZE;
- }
- static uint8_t *vdev_start_add_ml_partner_links(uint8_t *buf_ptr,
- struct vdev_start_params *req)
- {
- WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC, 0);
- return buf_ptr + WMI_TLV_HDR_SIZE;
- }
- static size_t bcn_tmpl_mlo_param_size(struct beacon_tmpl_params *param)
- {
- return WMI_TLV_HDR_SIZE;
- }
- static uint8_t *bcn_tmpl_add_ml_partner_links(uint8_t *buf_ptr,
- struct beacon_tmpl_params *param)
- {
- WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC, 0);
- return buf_ptr + WMI_TLV_HDR_SIZE;
- }
- static size_t bcn_tmpl_ml_info_size(struct beacon_tmpl_params *param)
- {
- return WMI_TLV_HDR_SIZE;
- }
- static uint8_t *bcn_tmpl_add_ml_info(uint8_t *buf_ptr,
- struct beacon_tmpl_params *param)
- {
- WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC, 0);
- return buf_ptr + WMI_TLV_HDR_SIZE;
- }
- static size_t prb_resp_tmpl_ml_info_size(struct wmi_probe_resp_params *param)
- {
- return WMI_TLV_HDR_SIZE;
- }
- static uint8_t *prb_resp_tmpl_add_ml_info(uint8_t *buf_ptr,
- struct wmi_probe_resp_params *param)
- {
- WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC, 0);
- return buf_ptr + WMI_TLV_HDR_SIZE;
- }
- static uint8_t *peer_create_add_mlo_params(uint8_t *buf_ptr,
- struct peer_create_params *req)
- {
- WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC, 0);
- return buf_ptr + WMI_TLV_HDR_SIZE;
- }
- static size_t peer_create_mlo_params_size(struct peer_create_params *req)
- {
- return WMI_TLV_HDR_SIZE;
- }
- static size_t peer_assoc_mlo_params_size(struct peer_assoc_params *req)
- {
- size_t peer_assoc_mlo_size =
- WMI_TLV_HDR_SIZE +
- WMI_TLV_HDR_SIZE;
- return peer_assoc_mlo_size;
- }
- static uint8_t *peer_assoc_add_mlo_params(uint8_t *buf_ptr,
- struct peer_assoc_params *req)
- {
- WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC, 0);
- return buf_ptr + WMI_TLV_HDR_SIZE;
- }
- static uint8_t *peer_assoc_add_ml_partner_links(uint8_t *buf_ptr,
- struct peer_assoc_params *req)
- {
- WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC, 0);
- return buf_ptr + WMI_TLV_HDR_SIZE;
- }
- static size_t peer_assoc_t2lm_params_size(struct peer_assoc_params *req)
- {
- return WMI_TLV_HDR_SIZE;
- }
- static uint8_t *peer_assoc_add_tid_to_link_map(uint8_t *buf_ptr,
- struct peer_assoc_params *req)
- {
- WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC, 0);
- return buf_ptr + WMI_TLV_HDR_SIZE;
- }
- static size_t peer_delete_mlo_params_size(struct peer_delete_cmd_params *req)
- {
- return WMI_TLV_HDR_SIZE;
- }
- static uint8_t *peer_delete_add_mlo_params(uint8_t *buf_ptr,
- struct peer_delete_cmd_params *req)
- {
- WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC, 0);
- return buf_ptr + WMI_TLV_HDR_SIZE;
- }
- static inline size_t vdev_stop_mlo_params_size(struct vdev_stop_params *params)
- {
- return WMI_TLV_HDR_SIZE;
- }
- static inline uint8_t *vdev_stop_add_mlo_params(uint8_t *buf_ptr,
- struct vdev_stop_params *params)
- {
- WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC, 0);
- return buf_ptr + WMI_TLV_HDR_SIZE;
- }
- static void wmi_11be_attach_tlv(wmi_unified_t wmi_handle)
- { }
- static inline void
- extract_mgmt_rx_mlo_link_removal_tlv_count(
- int num_link_removal_tlvs,
- struct mgmt_rx_event_params *hdr)
- {
- }
- #endif /*WLAN_FEATURE_11BE_MLO*/
- #endif /*_WMI_UNIFIED_11BE_TLV_H_*/
|