qcacmn: Add multi group support for MGMT Rx Reordering

Add multi group support for MGMT Rx Re-ordering.

Change-Id: I2b172d1f0db58afee06db3eefc06b618fcf9a627
CRs-Fixed: 3343170
This commit is contained in:
Surya Prakash Raajen
2022-12-20 15:09:00 +05:30
committad av Madan Koyyalamudi
förälder 4d5db3f69b
incheckning 6ef9d4cb8e
11 ändrade filer med 392 tillägg och 121 borttagningar

Visa fil

@@ -1,6 +1,6 @@
/*
* Copyright (c) 2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2021-2023 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
@@ -301,6 +301,7 @@ void mlo_mlme_handle_sta_csa_param(struct wlan_objmgr_vdev *vdev,
#define INVALID_HW_LINK_ID 0xFFFF
#define WLAN_MLO_INVALID_NUM_LINKS (-1)
#ifdef WLAN_MLO_MULTI_CHIP
#define WLAN_MLO_GROUP_INVALID (-1)
/**
* wlan_mlo_get_max_num_links() - Get the maximum number of MLO links
* possible in the system
@@ -337,16 +338,34 @@ uint16_t wlan_mlo_get_valid_link_bitmap(uint8_t grp_id);
*/
uint16_t wlan_mlo_get_pdev_hw_link_id(struct wlan_objmgr_pdev *pdev);
/**
* wlan_mlo_get_psoc_group_id() - Get MLO group id of psoc
* @psoc: psoc object
*
* Return: MLO group id of the psoc
*/
uint8_t wlan_mlo_get_psoc_group_id(struct wlan_objmgr_psoc *psoc);
/**
* wlan_mlo_get_psoc_capable() - Get if MLO capable psoc
* @psoc: Pointer to psoc object
*
* Return: True if MLO capable else false
*/
bool wlan_mlo_get_psoc_capable(struct wlan_objmgr_psoc *psoc);
/**
* struct hw_link_id_iterator: Argument passed in psoc/pdev iterator to
* find pdev from hw_link_id
* @hw_link_id: HW link id of pdev to find
* @mlo_grp_id: MLO Group id which it belongs to
* @dbgid: Module ref id used in iterator
* @pdev: Pointer to pdev. This will be set inside itertor callback
* if hw_link_id match is found.
*/
struct hw_link_id_iterator {
uint16_t hw_link_id;
uint8_t mlo_grp_id;
wlan_objmgr_ref_dbgid dbgid;
struct wlan_objmgr_pdev *pdev;
};
@@ -354,6 +373,7 @@ struct hw_link_id_iterator {
/**
* wlan_objmgr_get_pdev_by_hw_link_id() - Get pdev object from hw_link_id
* @hw_link_id: HW link id of the pdev
* @ml_grp_id: MLO Group id which it belongs to
* @refdbgid: dbgid of module used for taking reference to pdev object
*
* Return: Pointer to pdev object if hw_link_id is valid. Else, NULL
@@ -361,7 +381,7 @@ struct hw_link_id_iterator {
* Caller should free this reference.
*/
struct wlan_objmgr_pdev *
wlan_mlo_get_pdev_by_hw_link_id(uint16_t hw_link_id,
wlan_mlo_get_pdev_by_hw_link_id(uint16_t hw_link_id, uint8_t ml_grp_id,
wlan_objmgr_ref_dbgid refdbgid);
#else
@@ -384,7 +404,7 @@ wlan_mlo_get_valid_link_bitmap(uint8_t grp_id)
}
static inline struct wlan_objmgr_pdev *
wlan_mlo_get_pdev_by_hw_link_id(uint16_t hw_link_id,
wlan_mlo_get_pdev_by_hw_link_id(uint16_t hw_link_id, uint8_t ml_grp_id,
wlan_objmgr_ref_dbgid refdbgid)
{
return NULL;
@@ -395,6 +415,18 @@ uint16_t wlan_mlo_get_pdev_hw_link_id(struct wlan_objmgr_pdev *pdev)
{
return INVALID_HW_LINK_ID;
}
static inline
uint8_t wlan_mlo_get_psoc_group_id(struct wlan_objmgr_psoc *psoc)
{
return -EINVAL;
}
static inline
bool wlan_mlo_get_psoc_capable(struct wlan_objmgr_psoc *psoc)
{
return false;
}
#endif/*WLAN_MLO_MULTI_CHIP*/
#ifdef WLAN_FEATURE_11BE_MLO