qcacld-3.0: Add logic to support tdls on MLO
Since for MLD device, it can only choice one link for tdls, add logic like this: 1\ As initiator, it needs to send discovery request on each link, before send the frame, it needs to force active the link; 2\ As responder, it sends the discovery response the link id, before send the frame, it needs to force active the link; 3\ For other tdls management and tdls operation, it needs to find out which link(vdev) is used as tdls link first. Change-Id: I64e27219eb6c6b3fef62e541423aa8e5d84b1560 CRs-Fixed: 3439568
此提交包含在:
@@ -1176,20 +1176,24 @@ struct tdls_get_all_peers {
|
||||
* @vdev: vdev object
|
||||
* @chk_frame: This struct used to validate mgmt frame
|
||||
* @session_id: session id
|
||||
* @link_id: link id
|
||||
* @vdev_id: vdev id
|
||||
* @cmd_buf: cmd buffer
|
||||
* @len: length of the frame
|
||||
* @use_default_ac: access category
|
||||
* @link_active: whether link active command send successfully
|
||||
* @tdls_mgmt: tdls management
|
||||
*/
|
||||
struct tdls_action_frame_request {
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
struct tdls_validate_action_req chk_frame;
|
||||
uint8_t session_id;
|
||||
uint8_t link_id;
|
||||
uint8_t vdev_id;
|
||||
const uint8_t *cmd_buf;
|
||||
uint8_t len;
|
||||
bool use_default_ac;
|
||||
bool link_active;
|
||||
/* Variable length, do not add anything after this */
|
||||
struct tdls_send_mgmt tdls_mgmt;
|
||||
};
|
||||
|
@@ -181,6 +181,35 @@ void ucfg_tdls_update_fw_mlo_capability(struct wlan_objmgr_psoc *psoc,
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* ucfg_tdls_link_vdev_is_matching() - check whether vdev is matching link vdev
|
||||
* @vdev: vdev object
|
||||
*
|
||||
* Return: bool
|
||||
*/
|
||||
bool ucfg_tdls_link_vdev_is_matching(struct wlan_objmgr_vdev *vdev);
|
||||
|
||||
/**
|
||||
* ucfg_tdls_get_tdls_link_vdev() - get tdls link vdev
|
||||
* @vdev: vdev object
|
||||
* @dbg_id: debug id
|
||||
*
|
||||
* Return: vdev pointer
|
||||
*/
|
||||
struct wlan_objmgr_vdev *
|
||||
ucfg_tdls_get_tdls_link_vdev(struct wlan_objmgr_vdev *vdev,
|
||||
wlan_objmgr_ref_dbgid dbg_id);
|
||||
|
||||
/**
|
||||
* ucfg_tdls_put_tdls_link_vdev() - put tdls link vdev
|
||||
* @vdev: vdev odject
|
||||
* @dbg_id: debug id
|
||||
*
|
||||
* Return: void
|
||||
*/
|
||||
void ucfg_tdls_put_tdls_link_vdev(struct wlan_objmgr_vdev *vdev,
|
||||
wlan_objmgr_ref_dbgid dbg_id);
|
||||
|
||||
/**
|
||||
* ucfg_tdls_psoc_enable() - TDLS module enable API
|
||||
* @psoc: psoc object
|
||||
@@ -429,6 +458,25 @@ struct wlan_objmgr_vdev *ucfg_get_tdls_vdev(struct wlan_objmgr_psoc *psoc,
|
||||
wlan_objmgr_ref_dbgid dbg_id);
|
||||
|
||||
#else
|
||||
static inline
|
||||
bool ucfg_tdls_link_vdev_is_matching(struct wlan_objmgr_vdev *vdev)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline
|
||||
struct wlan_objmgr_vdev *
|
||||
ucfg_tdls_get_tdls_link_vdev(struct wlan_objmgr_vdev *vdev,
|
||||
wlan_objmgr_ref_dbgid dbg_id)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline
|
||||
void ucfg_tdls_put_tdls_link_vdev(struct wlan_objmgr_vdev *vdev,
|
||||
wlan_objmgr_ref_dbgid dbg_id)
|
||||
{
|
||||
}
|
||||
|
||||
static inline
|
||||
QDF_STATUS ucfg_tdls_init(void)
|
||||
|
新增問題並參考
封鎖使用者