qcacld-3.0: Disable all roam scan in case p2p connection is present

Glitches seen after the STA disconnection because of the roam scan
triggered on a heartbeat failure ( beacon miss ).STA does a partial
scan followed by full scan causing the DUT to go off-channel from
the STA and P2P home channel, causing the music BLIP.

Fix is to disable roaming irrespective of data traffic present
or not on P2P interface and enabled again once P2P is disconnected.

Change-Id: I5ddf946adbfbe99d5b20c23c46b2b4ac0bfac47f
CRs-Fixed: 2632939
This commit is contained in:
Pankaj Singh
2020-02-27 10:14:00 +05:30
committed by nshrivas
parent f120c86ba3
commit 8cf6c634b6
11 changed files with 180 additions and 14 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
* Copyright (c) 2018-2020 The Linux Foundation. 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
@@ -98,9 +98,32 @@
1, \
"derive the P2P MAC address from the primary MAC address")
/*
* <ini>
* p2p_disable_roam - Disable Roam on sta interface during P2P connection
* @Min: 0 - Roam Enabled on sta interface during P2P connection
* @Max: 1 - Roam Disabled on sta interface during P2P connection
* @Default: 0
*
* Disable roaming on STA iface to avoid audio glitches on p2p if its connected
*
* Related: None.
*
* Supported Feature: Disable Roam during P2P
*
* Usage: Internal
*
* </ini>
*/
#define CFG_P2P_DISABLE_ROAM CFG_INI_BOOL( \
"p2p_disable_roam", \
0, \
"disable roam on STA iface if p2p is connected")
#define CFG_P2P_ALL \
CFG(CFG_GO_KEEP_ALIVE_PERIOD) \
CFG(CFG_GO_LINK_MONITOR_PERIOD) \
CFG(CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED)
CFG(CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED) \
CFG(CFG_P2P_DISABLE_ROAM)
#endif

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
* Copyright (c) 2018-2020 The Linux Foundation. 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
@@ -61,4 +61,13 @@ QDF_STATUS
cfg_p2p_get_device_addr_admin(struct wlan_objmgr_psoc *psoc,
bool *enable);
/**
* cfg_p2p_is_roam_config_disabled() - get disable roam config on sta interface
* during p2p connection
* @psoc: pointer to psoc object
*
* Get disable roam configuration during p2p connection
*/
bool cfg_p2p_is_roam_config_disabled(struct wlan_objmgr_psoc *psoc);
#endif /* _WLAN_P2P_CFG_API_H_ */

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2017-2018 The Linux Foundation. All rights reserved.
* Copyright (c) 2017-2018,2020 The Linux Foundation. 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
@@ -23,6 +23,7 @@
#ifndef _WLAN_P2P_UCFG_API_H_
#define _WLAN_P2P_UCFG_API_H_
#include "wlan_p2p_cfg_api.h"
#include <qdf_types.h>
struct wlan_objmgr_psoc;
@@ -409,4 +410,18 @@ QDF_STATUS ucfg_p2p_status_start_bss(struct wlan_objmgr_vdev *vdev);
*/
QDF_STATUS ucfg_p2p_status_stop_bss(struct wlan_objmgr_vdev *vdev);
/**
* ucfg_p2p_is_roam_config_disabled() - Roam disable config during p2p
* connection
* @psoc: psoc context
*
* During P2P connection disable roam on STA interface
*
* Return: p2p disable roam - in case of success else false
*/
static inline
bool ucfg_p2p_is_roam_config_disabled(struct wlan_objmgr_psoc *psoc)
{
return cfg_p2p_is_roam_config_disabled(psoc);
}
#endif /* _WLAN_P2P_UCFG_API_H_ */