1 /* 2 * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. 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 #ifndef _CDP_TXRX_MLO_H_ 17 #define _CDP_TXRX_MLO_H_ 18 #include "cdp_txrx_ops.h" 19 20 struct cdp_mlo_ctxt; 21 22 /** 23 * cdp_ctrl_mlo_mgr - opaque handle for mlo manager context 24 */ 25 struct cdp_ctrl_mlo_mgr; 26 27 struct 28 cdp_mlo_ctxt *dp_mlo_ctxt_attach_wifi3(struct cdp_ctrl_mlo_mgr *ctrl_ctxt); 29 void dp_mlo_ctxt_detach_wifi3(struct cdp_mlo_ctxt *ml_ctxt); 30 31 static inline 32 struct cdp_mlo_ctxt *cdp_mlo_ctxt_attach(struct cdp_ctrl_mlo_mgr *ctrl_ctxt) 33 { 34 return dp_mlo_ctxt_attach_wifi3(ctrl_ctxt); 35 } 36 37 static inline 38 void cdp_mlo_ctxt_detach(struct cdp_mlo_ctxt *ml_ctxt) 39 { 40 dp_mlo_ctxt_detach_wifi3(ml_ctxt); 41 } 42 43 static inline void cdp_soc_mlo_soc_setup(ol_txrx_soc_handle soc, 44 struct cdp_mlo_ctxt *mlo_ctx) 45 { 46 if (!soc || !soc->ops) { 47 QDF_BUG(0); 48 return; 49 } 50 51 if (!soc->ops->mlo_ops || 52 !soc->ops->mlo_ops->mlo_soc_setup) 53 return; 54 55 soc->ops->mlo_ops->mlo_soc_setup(soc, mlo_ctx); 56 } 57 58 static inline void cdp_soc_mlo_soc_teardown(ol_txrx_soc_handle soc, 59 struct cdp_mlo_ctxt *mlo_ctx) 60 { 61 if (!soc || !soc->ops) { 62 QDF_BUG(0); 63 return; 64 } 65 66 if (!soc->ops->mlo_ops || 67 !soc->ops->mlo_ops->mlo_soc_teardown) 68 return; 69 70 soc->ops->mlo_ops->mlo_soc_teardown(soc, mlo_ctx); 71 } 72 73 /* 74 * cdp_update_mlo_ptnr_list - Add vdev to MLO partner list 75 * @soc: soc handle 76 * @vdev_ids: list of partner vdevs 77 * @num_vdevs: number of items in list 78 * @vdev_id: caller's vdev id 79 * 80 * return: QDF_STATUS 81 */ 82 static inline QDF_STATUS 83 cdp_update_mlo_ptnr_list(ol_txrx_soc_handle soc, int8_t vdev_ids[], 84 uint8_t num_vdevs, uint8_t vdev_id) 85 { 86 if (!soc || !soc->ops || !soc->ops->mlo_ops) 87 return QDF_STATUS_E_INVAL; 88 89 if (soc->ops->mlo_ops->update_mlo_ptnr_list) 90 return soc->ops->mlo_ops->update_mlo_ptnr_list(soc, vdev_ids, 91 num_vdevs, vdev_id); 92 93 return QDF_STATUS_SUCCESS; 94 } 95 96 static inline void cdp_mlo_setup_complete(ol_txrx_soc_handle soc, 97 struct cdp_mlo_ctxt *mlo_ctx) 98 { 99 if (!soc || !soc->ops) { 100 QDF_BUG(0); 101 return; 102 } 103 104 if (!soc->ops->mlo_ops || 105 !soc->ops->mlo_ops->mlo_setup_complete) 106 return; 107 108 soc->ops->mlo_ops->mlo_setup_complete(mlo_ctx); 109 } 110 111 /* 112 * cdp_mlo_update_delta_tsf2 - Update delta_tsf2 113 * @soc: soc handle 114 * @pdev_id: pdev id 115 * @delta_tsf2: delta_tsf2 116 * 117 * return: none 118 */ 119 static inline void cdp_mlo_update_delta_tsf2(ol_txrx_soc_handle soc, 120 uint8_t pdev_id, 121 uint64_t delta_tsf2) 122 { 123 if (!soc || !soc->ops) { 124 QDF_BUG(0); 125 return; 126 } 127 128 if (!soc->ops->mlo_ops || 129 !soc->ops->mlo_ops->mlo_update_delta_tsf2) 130 return; 131 132 soc->ops->mlo_ops->mlo_update_delta_tsf2(soc, pdev_id, delta_tsf2); 133 } 134 135 /* 136 * cdp_mlo_update_delta_tqm - Update delta_tqm 137 * @soc: soc handle 138 * @delta_tqm: delta_tqm 139 * 140 * return: none 141 */ 142 static inline void cdp_mlo_update_delta_tqm(ol_txrx_soc_handle soc, 143 uint64_t delta_tqm) 144 { 145 if (!soc || !soc->ops) { 146 QDF_BUG(0); 147 return; 148 } 149 150 if (!soc->ops->mlo_ops || 151 !soc->ops->mlo_ops->mlo_update_delta_tqm) 152 return; 153 154 soc->ops->mlo_ops->mlo_update_delta_tqm(soc, delta_tqm); 155 } 156 #endif /*_CDP_TXRX_MLO_H_*/ 157