qcacmn: Avoid REO destination change when IPA enabled in P2P mode

In cases where one of the interfaces is a P2P-GO and
IPA has been enabled, the P2P connection establishment
fails.

When IPA is enabled, the REO destination is changed to REO4
which can be reaped only by IPA module. But in case of P2P-GO
interface in operation, this change in configuration causes
all the RX packets to be stalled due to incorrect REO configuration.

Hence, to avoid this case, do not change the REO dest config
when the interface subtype is P2P.

CRs-Fixed: 2498315
Change-Id: Ie9f01c3b353c7c0503e1541d6c79c2f47c9782f3
Dieser Commit ist enthalten in:
Rakesh Pillai
2019-07-27 18:58:21 -07:00
committet von nshrivas
Ursprung 1c76e897e3
Commit 01b9b680fc
8 geänderte Dateien mit 89 neuen und 5 gelöschten Zeilen

Datei anzeigen

@@ -39,6 +39,15 @@
enum wlan_op_mode
wlan_util_vdev_get_cdp_txrx_opmode(struct wlan_objmgr_vdev *vdev);
/**
* wlan_util_vdev_get_cdp_txrx_subtype - get cdp txrx subtype from qdf mode
* @vdev: pointer to vdev object
*
* Return: wlan_opmode
*/
enum wlan_op_subtype
wlan_util_vdev_get_cdp_txrx_subtype(struct wlan_objmgr_vdev *vdev);
/**
* wlan_util_vdev_mlme_set_ratemask_config) – common MLME API to set
* ratemask configuration and send it to FW

Datei anzeigen

@@ -60,6 +60,7 @@ QDF_STATUS tgt_vdev_mgr_create_send(
struct cdp_pdev *pdev_txrx_handle;
struct cdp_vdev *vdev_txrx_handle;
enum wlan_op_mode cdp_txrx_opmode;
enum wlan_op_subtype cdp_txrx_subtype;
uint32_t vdev_id;
uint8_t *vdev_addr;
struct vdev_response_timer *vdev_rsp;
@@ -88,6 +89,7 @@ QDF_STATUS tgt_vdev_mgr_create_send(
}
cdp_txrx_opmode = wlan_util_vdev_get_cdp_txrx_opmode(vdev);
cdp_txrx_subtype = wlan_util_vdev_get_cdp_txrx_subtype(vdev);
vdev_addr = wlan_vdev_mlme_get_macaddr(vdev);
psoc = wlan_vdev_get_psoc(vdev);
pdev = wlan_vdev_get_pdev(vdev);
@@ -99,7 +101,8 @@ QDF_STATUS tgt_vdev_mgr_create_send(
vdev_txrx_handle = cdp_vdev_attach(soc_txrx_handle,
pdev_txrx_handle,
vdev_addr, vdev_id,
cdp_txrx_opmode);
cdp_txrx_opmode,
cdp_txrx_subtype);
if (!vdev_txrx_handle)
return QDF_STATUS_E_FAILURE;

Datei anzeigen

@@ -45,6 +45,30 @@ static QDF_STATUS vdev_mgr_config_ratemask_update(
return QDF_STATUS_SUCCESS;
}
enum wlan_op_subtype
wlan_util_vdev_get_cdp_txrx_subtype(struct wlan_objmgr_vdev *vdev)
{
enum QDF_OPMODE qdf_opmode;
enum wlan_op_subtype cdp_txrx_subtype;
qdf_opmode = wlan_vdev_mlme_get_opmode(vdev);
switch (qdf_opmode) {
case QDF_P2P_DEVICE_MODE:
cdp_txrx_subtype = wlan_op_subtype_p2p_device;
break;
case QDF_P2P_CLIENT_MODE:
cdp_txrx_subtype = wlan_op_subtype_p2p_cli;
break;
case QDF_P2P_GO_MODE:
cdp_txrx_subtype = wlan_op_subtype_p2p_go;
break;
default:
cdp_txrx_subtype = wlan_op_subtype_none;
};
return cdp_txrx_subtype;
}
enum wlan_op_mode
wlan_util_vdev_get_cdp_txrx_opmode(struct wlan_objmgr_vdev *vdev)
{