qcacmn: P2P protocol changes to Disable/Enable NOA
P2P-GO whenever goes offchannel, issues NOA. With this behavior, we have issue whenever legacy STA connects to P2P-GO since legacy STA does not understand NOA. To handle this case, changes are done in p2p protocol component and the revised behavior will be: 1. By default no change in NOA. 2. Whenever first legacy STA connects to GO, p2p protocol component disables NOA (i.e. P2P-GO will issue Self-CTS whenever it goes off-channel). 3. Whenever last legacy STA disconnects from GO, p2p protocol component enables NOA (i.e. P2P-GO will issue NOA whenever it goes off-channel). Change-Id: I113950ac3fa99ca68fcafcfe4c6095cf4b2def43 CRs-Fixed: 2035609
This commit is contained in:

committato da
snandini

parent
7d867d6729
commit
4475ff297c
@@ -121,4 +121,17 @@ QDF_STATUS target_if_p2p_lo_start(struct wlan_objmgr_psoc *psoc,
|
||||
QDF_STATUS target_if_p2p_lo_stop(struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t vdev_id);
|
||||
|
||||
/**
|
||||
* target_if_p2p_set_noa() - Disable / Enable NOA
|
||||
* @psoc: soc object
|
||||
* @vdev_id: vdev id
|
||||
* @disable_noa: TRUE - Disable NoA, FALSE - Enable NoA
|
||||
*
|
||||
* Target interface API to Disable / Enable P2P NOA.
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS - in case of success
|
||||
*/
|
||||
QDF_STATUS target_if_p2p_set_noa(struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t vdev_id, bool disable_noa);
|
||||
|
||||
#endif /* _TARGET_IF_P2P_H_ */
|
||||
|
@@ -326,6 +326,26 @@ QDF_STATUS target_if_p2p_lo_stop(struct wlan_objmgr_psoc *psoc,
|
||||
(uint8_t)vdev_id);
|
||||
}
|
||||
|
||||
QDF_STATUS target_if_p2p_set_noa(struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t vdev_id, bool disable_noa)
|
||||
{
|
||||
struct vdev_set_params param;
|
||||
wmi_unified_t wmi_handle = wlan_psoc_get_tgt_if_handle(psoc);
|
||||
|
||||
if (!wmi_handle) {
|
||||
target_if_err("Invalid wmi handle");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
target_if_debug("psoc:%p, vdev_id:%d disable_noa:%d",
|
||||
psoc, vdev_id, disable_noa);
|
||||
param.if_id = vdev_id;
|
||||
param.param_id = WMI_VDEV_PARAM_DISABLE_NOA_P2P_GO;
|
||||
param.param_value = (uint32_t)disable_noa;
|
||||
|
||||
return wmi_unified_vdev_set_param_send(wmi_handle, ¶m);
|
||||
}
|
||||
|
||||
void target_if_p2p_register_tx_ops(struct wlan_lmac_if_tx_ops *tx_ops)
|
||||
{
|
||||
struct wlan_lmac_if_p2p_tx_ops *p2p_tx_ops;
|
||||
@@ -339,6 +359,7 @@ void target_if_p2p_register_tx_ops(struct wlan_lmac_if_tx_ops *tx_ops)
|
||||
p2p_tx_ops->set_ps = target_if_p2p_set_ps;
|
||||
p2p_tx_ops->lo_start = target_if_p2p_lo_start;
|
||||
p2p_tx_ops->lo_stop = target_if_p2p_lo_stop;
|
||||
p2p_tx_ops->set_noa = target_if_p2p_set_noa;
|
||||
p2p_tx_ops->reg_lo_ev_handler =
|
||||
target_if_p2p_register_lo_event_handler;
|
||||
p2p_tx_ops->reg_noa_ev_handler =
|
||||
|
Fai riferimento in un nuovo problema
Block a user