Files
android_kernel_samsung_sm86…/dp/inc/cdp_txrx_mlo.h
Chaithanya Garrepalli 16e9e30d49 qcacmn: Disable DP interrupts in force MLO teardown
In force teardown case disable the interrupts before
going down. As target may be still active, we may
still continue to receive traffic. Disabling
interrupts to nsure we dont process interrupts while
cleaning up partner SOC

Change-Id: I7092d398c039302234206cb72f7453b6dc0cbcb7
CRs-Fixed: 3332961
2022-11-17 00:33:26 -08:00

158 lines
3.8 KiB
C

/*
* Copyright (c) 2021-2022 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 _CDP_TXRX_MLO_H_
#define _CDP_TXRX_MLO_H_
#include "cdp_txrx_ops.h"
struct cdp_mlo_ctxt;
/**
* cdp_ctrl_mlo_mgr - opaque handle for mlo manager context
*/
struct cdp_ctrl_mlo_mgr;
struct
cdp_mlo_ctxt *dp_mlo_ctxt_attach_wifi3(struct cdp_ctrl_mlo_mgr *ctrl_ctxt);
void dp_mlo_ctxt_detach_wifi3(struct cdp_mlo_ctxt *ml_ctxt);
static inline
struct cdp_mlo_ctxt *cdp_mlo_ctxt_attach(struct cdp_ctrl_mlo_mgr *ctrl_ctxt)
{
return dp_mlo_ctxt_attach_wifi3(ctrl_ctxt);
}
static inline
void cdp_mlo_ctxt_detach(struct cdp_mlo_ctxt *ml_ctxt)
{
dp_mlo_ctxt_detach_wifi3(ml_ctxt);
}
static inline void cdp_soc_mlo_soc_setup(ol_txrx_soc_handle soc,
struct cdp_mlo_ctxt *mlo_ctx)
{
if (!soc || !soc->ops) {
QDF_BUG(0);
return;
}
if (!soc->ops->mlo_ops ||
!soc->ops->mlo_ops->mlo_soc_setup)
return;
soc->ops->mlo_ops->mlo_soc_setup(soc, mlo_ctx);
}
static inline void cdp_soc_mlo_soc_teardown(ol_txrx_soc_handle soc,
struct cdp_mlo_ctxt *mlo_ctx,
bool is_force_down)
{
if (!soc || !soc->ops) {
QDF_BUG(0);
return;
}
if (!soc->ops->mlo_ops ||
!soc->ops->mlo_ops->mlo_soc_teardown)
return;
soc->ops->mlo_ops->mlo_soc_teardown(soc, mlo_ctx, is_force_down);
}
/*
* cdp_update_mlo_ptnr_list - Add vdev to MLO partner list
* @soc: soc handle
* @vdev_ids: list of partner vdevs
* @num_vdevs: number of items in list
* @vdev_id: caller's vdev id
*
* return: QDF_STATUS
*/
static inline QDF_STATUS
cdp_update_mlo_ptnr_list(ol_txrx_soc_handle soc, int8_t vdev_ids[],
uint8_t num_vdevs, uint8_t vdev_id)
{
if (!soc || !soc->ops || !soc->ops->mlo_ops)
return QDF_STATUS_E_INVAL;
if (soc->ops->mlo_ops->update_mlo_ptnr_list)
return soc->ops->mlo_ops->update_mlo_ptnr_list(soc, vdev_ids,
num_vdevs, vdev_id);
return QDF_STATUS_SUCCESS;
}
static inline void cdp_mlo_setup_complete(ol_txrx_soc_handle soc,
struct cdp_mlo_ctxt *mlo_ctx)
{
if (!soc || !soc->ops) {
QDF_BUG(0);
return;
}
if (!soc->ops->mlo_ops ||
!soc->ops->mlo_ops->mlo_setup_complete)
return;
soc->ops->mlo_ops->mlo_setup_complete(mlo_ctx);
}
/*
* cdp_mlo_update_delta_tsf2 - Update delta_tsf2
* @soc: soc handle
* @pdev_id: pdev id
* @delta_tsf2: delta_tsf2
*
* return: none
*/
static inline void cdp_mlo_update_delta_tsf2(ol_txrx_soc_handle soc,
uint8_t pdev_id,
uint64_t delta_tsf2)
{
if (!soc || !soc->ops) {
QDF_BUG(0);
return;
}
if (!soc->ops->mlo_ops ||
!soc->ops->mlo_ops->mlo_update_delta_tsf2)
return;
soc->ops->mlo_ops->mlo_update_delta_tsf2(soc, pdev_id, delta_tsf2);
}
/*
* cdp_mlo_update_delta_tqm - Update delta_tqm
* @soc: soc handle
* @delta_tqm: delta_tqm
*
* return: none
*/
static inline void cdp_mlo_update_delta_tqm(ol_txrx_soc_handle soc,
uint64_t delta_tqm)
{
if (!soc || !soc->ops) {
QDF_BUG(0);
return;
}
if (!soc->ops->mlo_ops ||
!soc->ops->mlo_ops->mlo_update_delta_tqm)
return;
soc->ops->mlo_ops->mlo_update_delta_tqm(soc, delta_tqm);
}
#endif /*_CDP_TXRX_MLO_H_*/