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:

committet von
nshrivas

Ursprung
1c76e897e3
Commit
01b9b680fc
@@ -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
|
||||
|
@@ -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;
|
||||
|
||||
|
@@ -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)
|
||||
{
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren