qcacld-3.0: Add handling to disable vdev for miracast

Add handling to disable second vdev of mac if miracast
is set for one vdev. In case high throughput or low latency
is required for particular vdev then another vdev on same
mac should be disabled, if present in MCC.

Change-Id: I36cc19f442130b098c4a02ec0ebcf69b89dd2a3c
CRs-Fixed: 3219512
This commit is contained in:
Sheenam Monga
2022-06-13 18:56:10 +05:30
committed by Madan Koyyalamudi
parent f18f044e74
commit 56cde67530
8 changed files with 349 additions and 194 deletions

View File

@@ -1113,28 +1113,6 @@ QDF_STATUS mlme_get_cfg_wlm_reset(struct wlan_objmgr_psoc *psoc,
void mlme_reinit_control_config_lfr_params(struct wlan_objmgr_psoc *psoc,
struct wlan_mlme_lfr_cfg *lfr);
/**
* wlan_mlme_mlo_sta_mlo_concurency_set_link() - Set links for MLO STA
*
* @vdev: vdev object
* @reason: Reason for which link is forced
* @mode: Force reason
* @num_mlo_vdev: number of mlo vdev
* @mlo_vdev_lst: MLO STA vdev list
* Interface manager Set links for MLO STA
*
* Return: void
*/
#ifdef WLAN_FEATURE_11BE_MLO
void
wlan_mlo_sta_mlo_concurency_set_link(struct wlan_objmgr_vdev *vdev,
enum mlo_link_force_reason reason,
enum mlo_link_force_mode mode,
uint8_t num_mlo_vdev,
uint8_t *mlo_vdev_lst);
#endif
/**
* wlan_mlme_get_mac_vdev_id() - get vdev self mac address using vdev id
* @pdev: pdev

View File

@@ -3943,79 +3943,6 @@ QDF_STATUS mlme_get_fw_scan_channels(struct wlan_objmgr_psoc *psoc,
}
#endif
#ifdef WLAN_FEATURE_11BE_MLO
static void
wlan_mlo_fill_active_link_vdev_bitmap(struct mlo_link_set_active_req *req,
uint8_t *mlo_vdev_lst,
uint32_t num_mlo_vdev)
{
uint32_t entry_idx, entry_offset, vdev_idx;
uint8_t vdev_id;
for (vdev_idx = 0; vdev_idx < num_mlo_vdev; vdev_idx++) {
vdev_id = mlo_vdev_lst[vdev_idx];
entry_idx = vdev_id / 32;
entry_offset = vdev_id % 32;
if (entry_idx >= MLO_LINK_NUM_SZ) {
mlme_err("Invalid entry_idx %d num_mlo_vdev %d vdev %d",
entry_idx, num_mlo_vdev, vdev_id);
continue;
}
req->param.vdev_bitmap[entry_idx] |= (1 << entry_offset);
/* update entry number if entry index changed */
if (req->param.num_vdev_bitmap < entry_idx + 1)
req->param.num_vdev_bitmap = entry_idx + 1;
}
mlme_debug("num_vdev_bitmap %d vdev_bitmap[0] = 0x%x, vdev_bitmap[1] = 0x%x",
req->param.num_vdev_bitmap, req->param.vdev_bitmap[0],
req->param.vdev_bitmap[1]);
}
void
wlan_mlo_sta_mlo_concurency_set_link(struct wlan_objmgr_vdev *vdev,
enum mlo_link_force_reason reason,
enum mlo_link_force_mode mode,
uint8_t num_mlo_vdev,
uint8_t *mlo_vdev_lst)
{
struct mlo_link_set_active_req *req;
QDF_STATUS status;
req = qdf_mem_malloc(sizeof(*req));
if (!req)
return;
mlme_debug("vdev %d: mode %d num_mlo_vdev %d reason %d",
wlan_vdev_get_id(vdev), mode, num_mlo_vdev, reason);
req->ctx.vdev = vdev;
req->param.reason = reason;
req->param.force_mode = mode;
req->ctx.set_mlo_link_cb = policy_mgr_handle_link_enable_disable_resp;
req->ctx.cb_arg = req;
/* set MLO vdev bit mask for all case */
wlan_mlo_fill_active_link_vdev_bitmap(req, mlo_vdev_lst, num_mlo_vdev);
/* fill num of links for MLO_LINK_FORCE_MODE_ACTIVE_NUM */
if (mode == MLO_LINK_FORCE_MODE_ACTIVE_NUM) {
req->param.force_mode = MLO_LINK_FORCE_MODE_ACTIVE_NUM;
req->param.num_link_entry = 1;
req->param.link_num[0].num_of_link = num_mlo_vdev - 1;
}
status = mlo_ser_set_link_req(req);
if (QDF_IS_STATUS_ERROR(status)) {
mlme_err("vdev %d: Failed to set link mode %d num_mlo_vdev %d reason %d",
wlan_vdev_get_id(vdev), mode, num_mlo_vdev,
reason);
qdf_mem_free(req);
}
}
#endif
QDF_STATUS wlan_mlme_get_mac_vdev_id(struct wlan_objmgr_pdev *pdev,
uint8_t vdev_id,
struct qdf_mac_addr *self_mac)