qcacmn: MLO peer implementation

This change adds MLO support to Peer.
It implements,
1) MLO peer list management
2) AID allocation
3) MLO Peer creation/deletion
4) Notifying partner links on peer creation/deletion/assoc

Change-Id: Ie1b675dccdf0de1d79f6f32d9255cf3cca53fdf2
CRs-Fixed: 2967057
这个提交包含在:
Srinivas Pitla
2021-04-27 10:18:30 -07:00
提交者 Madan Koyyalamudi
父节点 7f36fdf121
当前提交 7469335fa4
修改 20 个文件,包含 3209 行新增49 行删除

查看文件

@@ -349,14 +349,28 @@ struct vdev_mlme_mgmt_generic {
bool special_vdev_mode;
};
/*
* struct wlan_vdev_aid_mgr – AID manager
* @aid_bitmap: AID bitmap array
* @max_aid: Max allowed AID
* @ref_cnt: to share AID across VDEVs for MBSSID
*/
struct wlan_vdev_aid_mgr {
qdf_bitmap(aid_bitmap, WLAN_UMAC_MAX_AID);
uint16_t max_aid;
qdf_atomic_t ref_cnt;
};
/**
* struct vdev_mlme_mgmt_ap - ap specific vdev mlme mgmt cfg
* @hidden_ssid: flag to indicate whether it is hidden ssid
* @cac_duration_ms: cac duration in millseconds
* @aid_mgr: AID bitmap mgr
*/
struct vdev_mlme_mgmt_ap {
bool hidden_ssid;
uint32_t cac_duration_ms;
struct wlan_vdev_aid_mgr *aid_mgr;
};
/**
@@ -1100,4 +1114,47 @@ static inline uint16_t wlan_vdev_mlme_get_he_mcs_12_13_map(
return 0;
}
#endif
/**
* wlan_vdev_mlme_set_aid_mgr() - set aid mgr
* @vdev: VDEV object
* @aid_mgr: AID mgr
*
* API to set AID mgr in VDEV MLME cmpt object
*
* Return: void
*/
static inline void wlan_vdev_mlme_set_aid_mgr(
struct wlan_objmgr_vdev *vdev,
struct wlan_vdev_aid_mgr *aid_mgr)
{
struct vdev_mlme_obj *vdev_mlme;
vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
if (!vdev_mlme)
return;
vdev_mlme->mgmt.ap.aid_mgr = aid_mgr;
}
/**
* wlan_vdev_mlme_get_aid_mgr() - get aid mgr
* @vdev: VDEV object
*
* API to get AID mgr in VDEV MLME cmpt object
*
* Return: aid_mgr
*/
static inline struct wlan_vdev_aid_mgr *wlan_vdev_mlme_get_aid_mgr(
struct wlan_objmgr_vdev *vdev)
{
struct vdev_mlme_obj *vdev_mlme;
vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
if (!vdev_mlme)
return NULL;
return vdev_mlme->mgmt.ap.aid_mgr;
}
#endif