qcacmn: Add interface manager module

- Add interface manager module files
- Add start_connect event processing
- Add stubs for start_connect_complete and start_bss
event processing API's

Change-Id: I91a2bf38755abef38b6a9348d3eb69983217916c
CRs-Fixed: 2759226
此提交包含在:
Sandeep Puligilla
2020-06-16 13:37:53 -07:00
提交者 snandini
父節點 eaf0cf59d0
當前提交 00a2d6550f
共有 10 個檔案被更改,包括 462 行新增0 行删除

查看文件

@@ -0,0 +1,37 @@
/*
* Copyright (c) 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 above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*
* DOC: contains interface manager public file containing AP event handlers
*/
#ifndef _WLAN_IF_MGR_AP_H_
#define _WLAN_IF_MGR_AP_H_
/**
* wlan_process_start_bss_start() - Start BSS event handler
*
* Interface manager connect start bss event handler
*
* @vdev: vdev object
* @event_data: Interface mgr event data
*
* Return: QDF_STATUS
*/
QDF_STATUS wlan_process_ap_start_bss(struct wlan_objmgr_vdev *vdev,
struct if_mgr_event_data *event_data);
#endif

查看文件

@@ -0,0 +1,40 @@
/*
* Copyright (c) 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 above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*
* DOC: contains interface manager public api
*/
#ifndef _WLAN_IF_MGR_API_H_
#define _WLAN_IF_MGR_API_H_
#include "wlan_objmgr_psoc_obj.h"
#include "wlan_objmgr_vdev_obj.h"
#include "wlan_if_mgr_public_struct.h"
/**
* if_mgr_deliver_event() - interface mgr event handler
* @vdev: vdev object
* @event: interface mangaer event
* @event_data: Interface mgr event data
*
* Return: QDF_STATUS
*/
QDF_STATUS if_mgr_deliver_event(struct wlan_objmgr_vdev *vdev,
enum wlan_if_mgr_evt event,
struct if_mgr_event_data *event_data);
#endif

查看文件

@@ -0,0 +1,97 @@
/*
* Copyright (c) 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 above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*
* DOC: contains Interface MGR init/deinit public api
*/
#ifndef _WLAN_IF_MGR_MAIN_API_H_
#define _WLAN_IF_MGR_MAIN_API_H_
#include <qdf_atomic.h>
#include <wlan_objmgr_psoc_obj.h>
#include <wlan_objmgr_pdev_obj.h>
#include <wlan_objmgr_vdev_obj.h>
#include <wlan_if_mgr_public_struct.h>
#define ifmgr_alert(params...) \
QDF_TRACE_FATAL(QDF_MODULE_ID_IFMGR, params)
#define ifmgr_err(params...) \
QDF_TRACE_ERROR(QDF_MODULE_ID_IFMGR, params)
#define ifmgr_warn(params...) \
QDF_TRACE_WARN(QDF_MODULE_ID_IFMGR, params)
#define ifmgr_notice(params...) \
QDF_TRACE_INFO(QDF_MODULE_ID_IFMGR, params)
#define ifmgr_info(params...) \
QDF_TRACE_INFO(QDF_MODULE_ID_IFMGR, params)
#define ifmgr_debug(params...) \
QDF_TRACE_DEBUG(QDF_MODULE_ID_IFMGR, params)
/* Rate Limited Logs */
#define ifmgr_alert_rl(params...) \
QDF_TRACE_FATAL_RL(QDF_MODULE_ID_IFMGR, params)
#define ifmgr_err_rl(params...) \
QDF_TRACE_ERROR_RL(QDF_MODULE_ID_IFMGR, params)
#define ifmgr_warn_rl(params...) \
QDF_TRACE_WARN_RL(QDF_MODULE_ID_IFMGR, params)
#define ifmgr_info_rl(params...) \
QDF_TRACE_INFO_RL(QDF_MODULE_ID_IFMGR, params)
#define ifmgr_debug_rl(params...) \
QDF_TRACE_DEBUG_RL(QDF_MODULE_ID_IFMGR, params)
#define ifmgr_nofl_alert(params...) \
QDF_TRACE_FATAL_NO_FL(QDF_MODULE_ID_IFMGR, params)
#define ifmgr_nofl_err(params...) \
QDF_TRACE_ERROR_NO_FL(QDF_MODULE_ID_IFMGR, params)
#define ifmgr_nofl_warn(params...) \
QDF_TRACE_WARN_NO_FL(QDF_MODULE_ID_IFMGR, params)
#define ifmgr_nofl_info(params...) \
QDF_TRACE_INFO_NO_FL(QDF_MODULE_ID_IFMGR, params)
#define ifmgr_nofl_debug(params...) \
QDF_TRACE_DEBUG_NO_FL(QDF_MODULE_ID_IFMGR, params)
#define ifmgr_hex_dump(level, data, buf_len) \
qdf_trace_hex_dump(QDF_MODULE_ID_IFMGR, level, data, buf_len)
/**
* struct wlan_if_mgr_obj - interface object definition
*
*/
struct wlan_if_mgr_obj {
};
/**
* wlan_if_mgr_psoc_created_notification() - interface mgr psoc create handler
* @psoc: psoc object
* @arg_list: Argument list
*
* Return: QDF_STATUS
*/
QDF_STATUS wlan_if_mgr_psoc_created_notification(struct wlan_objmgr_psoc *psoc,
void *arg_list);
/**
* wlan_scan_psoc_deleted_notification() - scan psoc delete handler
* @psoc: psoc object
* @arg_list: Argument list
*
* Return: QDF_STATUS
*/
QDF_STATUS wlan_if_mgr_psoc_destroyed_notification(struct wlan_objmgr_psoc *psoc,
void *arg_list);
#endif

查看文件

@@ -0,0 +1,64 @@
/*
* Copyright (c) 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 above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*
* DOC: contains interface manager structure definations
*/
#ifndef __IF_MGR_PUBLIC_STRUCTS_H
#define __IF_MGR_PUBLIC_STRUCTS_H
#include <scheduler_api.h>
#include <wlan_objmgr_psoc_obj.h>
#include <wlan_objmgr_pdev_obj.h>
#include <wlan_objmgr_vdev_obj.h>
#include <qdf_time.h>
#include <qdf_list.h>
#include <qdf_atomic.h>
/**
* enum wlan_if_mgr_evt: interface manager events
* @WLAN_IF_MGR_EV_CONNECT_START:
* @WLAN_IF_MGR_EV_CONNECT_COMPLETE:
* @WLAN_IF_MGR_EV_DISCONNECT_START:
* @WLAN_IF_MGR_EV_DISCONNECT_COMPLETE:
* @WLAN_IF_MGR_EV_VALIDATE_CANDIDATE:
* @WLAN_IF_MGR_EV_AP_START_BSS:
* @WLAN_IF_MGR_EV_AP_START_COMPLETE:
* @WLAN_IF_MGR_EV_AP_STOP_BSS:
* @WLAN_IF_MGR_EV_AP_STOP_COMPLETE:
*/
enum wlan_if_mgr_evt {
WLAN_IF_MGR_EV_CONNECT_START = 0,
WLAN_IF_MGR_EV_CONNECT_COMPLETE = 1,
WLAN_IF_MGR_EV_DISCONNECT_START = 2,
WLAN_IF_MGR_EV_DISCONNECT_COMPLETE = 3,
WLAN_IF_MGR_EV_VALIDATE_CANDIDATE = 4,
WLAN_IF_MGR_EV_AP_START_BSS = 5,
WLAN_IF_MGR_EV_AP_START_COMPLETE = 6,
WLAN_IF_MGR_EV_AP_STOP_BSS = 7,
WLAN_IF_MGR_EV_AP_STOP_COMPLETE = 8,
WLAN_IF_MGR_EV_MAX = 9,
};
/**
* struct if_mgr_event_data - interface manager event data
* @status: status
*/
struct if_mgr_event_data {
QDF_STATUS status;
};
#endif

查看文件

@@ -0,0 +1,50 @@
/*
* Copyright (c) 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 above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*
* DOC: contains interface manager public file containing STA event handlers
*/
#ifndef _WLAN_IF_MGR_STA_H_
#define _WLAN_IF_MGR_STA_H_
/**
* wlan_process_connect_start() - connect start event handler
*
* Interface manager connect start event handler
*
* @vdev: vdev object
* @event_data: Interface mgr event data
*
* Return: QDF_STATUS
*/
QDF_STATUS wlan_process_connect_start(struct wlan_objmgr_vdev *vdev,
struct if_mgr_event_data *event_data);
/**
* wlan_process_connect_complete() - connect complete event handler
*
* Interface manager connect complete event handler
*
* @vdev: vdev object
* @event_data: Interface manager complete event data
*
* Return: QDF_STATUS
*/
QDF_STATUS wlan_process_connect_complete(struct wlan_objmgr_vdev *vdev,
struct if_mgr_event_data *event_data);
#endif

查看文件

@@ -0,0 +1,45 @@
/*
* Copyright (c) 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 above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*
* DOC: contains interface manager public api
*/
#ifndef _WLAN_IF_MGR_UCFG_API_H_
#define _WLAN_IF_MGR_UCFG_API_H_
#include <scheduler_api.h>
#include <wlan_objmgr_psoc_obj.h>
#include <wlan_objmgr_pdev_obj.h>
#include <wlan_objmgr_vdev_obj.h>
/**
* ucfg_if_mgr_deliver_event() - interface mgr event handler
* @vdev: vdev object
* @event: interface mangaer event
* @event_data: Interface mgr event data
*
* Return: QDF_STATUS
*/
static inline
QDF_STATUS ucfg_if_mgr_deliver_event(struct wlan_objmgr_vdev *vdev,
enum wlan_if_mgr_evt event,
struct if_mgr_event_data *event_data)
{
return if_mgr_deliver_event(vdev, event, event_data);
}
#endif

查看文件

@@ -0,0 +1,53 @@
/*
* Copyright (c) 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 above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*
* DOC: contains interface manager public api
*/
#include "wlan_if_mgr_public_struct.h"
#include "wlan_if_mgr_api.h"
#include "wlan_if_mgr_sta.h"
#include "wlan_if_mgr_ap.h"
QDF_STATUS if_mgr_deliver_event(struct wlan_objmgr_vdev *vdev,
enum wlan_if_mgr_evt event,
struct if_mgr_event_data *event_data)
{
struct wlan_objmgr_psoc *psoc;
psoc = wlan_vdev_get_psoc(vdev);
if (!psoc)
return QDF_STATUS_E_FAILURE;
switch (event) {
case WLAN_IF_MGR_EV_CONNECT_START:
wlan_process_connect_start(vdev, event_data);
break;
case WLAN_IF_MGR_EV_CONNECT_COMPLETE:
wlan_process_connect_complete(vdev, event_data);
break;
case WLAN_IF_MGR_EV_AP_START_BSS:
wlan_process_ap_start_bss(vdev, event_data);
break;
default:
break;
}
return QDF_STATUS_SUCCESS;
}

查看文件

@@ -0,0 +1,72 @@
/*
* Copyright (c) 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 above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*
* DOC: contains core interface manager function definitions
*/
#include "wlan_if_mgr_main.h"
QDF_STATUS wlan_if_mgr_psoc_created_notification(struct wlan_objmgr_psoc *psoc,
void *arg_list)
{
struct wlan_if_mgr_obj *ifmgr_obj;
QDF_STATUS status = QDF_STATUS_SUCCESS;
ifmgr_obj = qdf_mem_malloc_atomic(sizeof(struct wlan_if_mgr_obj));
if (!ifmgr_obj) {
ifmgr_err("Failed to allocate memory");
return QDF_STATUS_E_NOMEM;
}
/* Attach scan private date to psoc */
status = wlan_objmgr_psoc_component_obj_attach(psoc,
WLAN_UMAC_COMP_IF_MGR,
(void *)ifmgr_obj,
QDF_STATUS_SUCCESS);
if (QDF_IS_STATUS_ERROR(status))
ifmgr_err("Failed to attach psoc scan component");
else
ifmgr_debug("interface mgr object attach to psoc successful");
return status;
}
QDF_STATUS
wlan_if_mgr_psoc_destroyed_notification(struct wlan_objmgr_psoc *psoc,
void *arg_list)
{
void *ifmgr_obj = NULL;
QDF_STATUS status = QDF_STATUS_SUCCESS;
ifmgr_obj = wlan_objmgr_psoc_get_comp_private_obj(psoc,
WLAN_UMAC_COMP_IF_MGR);
if (!ifmgr_obj) {
ifmgr_err("Failed to detach interface mgr in psoc ctx");
return QDF_STATUS_E_FAILURE;
}
status = wlan_objmgr_psoc_component_obj_detach(psoc,
WLAN_UMAC_COMP_IF_MGR,
ifmgr_obj);
if (QDF_IS_STATUS_ERROR(status))
ifmgr_err("Failed to detach psoc interface mgr component");
qdf_mem_free(ifmgr_obj);
return status;
}