qcacmn: Move communication with firmware to vdev_ready in PMO

Objmgr vdev_create event does not guarantee vdev creation in firmware.
Move any PMO logic that would normally go in the vdev_create event, but
needs to communicate with firmware, to a new vdev_ready event handler.

Change-Id: Ifbc2aed26a511733b31c816b9e6c4359d39910e6
CRs-Fixed: 2020696
This commit is contained in:
Dustin Brown
2017-03-16 11:05:30 -07:00
committed by Sandeep Puligilla
parent de25c8804f
commit f37bed7d2e
3 changed files with 34 additions and 6 deletions

View File

@@ -65,7 +65,7 @@ QDF_STATUS pmo_psoc_object_created_notification(
*
* Return QDF_STATUS status in case of success else return error
*/
QDF_STATUS pmo_psoc_object_destroyed_notification(
QDF_STATUS pmo_psoc_object_destroyed_notification(
struct wlan_objmgr_psoc *psoc, void *arg);
/**
@@ -80,6 +80,18 @@ QDF_STATUS pmo_psoc_object_destroyed_notification(
QDF_STATUS pmo_vdev_object_created_notification(
struct wlan_objmgr_vdev *vdev, void *arg);
/**
* pmo_vdev_ready() - handles vdev ready in firmware event
* @vdev: vdev which is ready in firmware
*
* Objmgr vdev_create event does not guarantee vdev creation in firmware.
* Any logic that would normally go in the vdev_create event, but needs to
* communicate with firmware, needs to go here instead.
*
* Return QDF_STATUS
*/
QDF_STATUS pmo_vdev_ready(struct wlan_objmgr_vdev *vdev);
/**
* pmo_vdev_object_destroyed_notification(): pmo vdev delete handler
* @vdev: vdev which is going to delete by objmgr

View File

@@ -28,6 +28,7 @@
#include "wlan_pmo_mc_addr_filtering_public_struct.h"
#include "wlan_pmo_wow_public_struct.h"
#include "wlan_pmo_common_public_struct.h"
#include "wlan_pmo_obj_mgmt_api.h"
/**
* pmo_ucfg_is_ap_mode_supports_arp_ns() - Check ap mode support arp&ns offload

View File

@@ -270,17 +270,32 @@ QDF_STATUS pmo_vdev_object_created_notification(
vdev_ctx->pmo_psoc_ctx = psoc_ctx;
qdf_atomic_init(&vdev_ctx->gtk_err_enable);
/* Register static configuration with firmware */
pmo_register_wow_wakeup_events(vdev);
pmo_register_action_frame_patterns(vdev);
/* Register default wow patterns with firmware */
pmo_register_wow_default_patterns(vdev);
out:
PMO_EXIT();
return QDF_STATUS_SUCCESS;
}
QDF_STATUS pmo_vdev_ready(struct wlan_objmgr_vdev *vdev)
{
PMO_ENTER();
/* Register static configuration with firmware */
pmo_register_wow_wakeup_events(vdev);
pmo_register_action_frame_patterns(vdev);
/* Register default wow patterns with firmware */
pmo_register_wow_default_patterns(vdev);
PMO_EXIT();
/*
* The above APIs should return a status but don't.
* Just return success for now.
*/
return QDF_STATUS_SUCCESS;
}
QDF_STATUS pmo_vdev_object_destroyed_notification(
struct wlan_objmgr_vdev *vdev, void *arg)
{