/* * Copyright (c) 2012-2014, 2017-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. */ #ifndef _WDI_EVENT_API_H_ #define _WDI_EVENT_API_H_ #include "wdi_event.h" #include #include struct ol_txrx_pdev_t; #ifdef WDI_EVENT_ENABLE /** * @brief Subscribe to a specified WDI event. * @details * This function adds the provided wdi_event_subscribe object to a list of * subscribers for the specified WDI event. * When the event in question happens, each subscriber for the event will * have their callback function invoked. * The order in which callback functions from multiple subscribers are * invoked is unspecified. * * @param soc_hdl - datapath soc handle * @param pdev_id - physical device instance id * @param event_cb_sub - the callback and context for the event subscriber * @param event - which event's notifications are being subscribed to * @return error code, or 0 for success */ int wdi_event_sub(struct cdp_soc_t *soc, uint8_t pdev_id, wdi_event_subscribe *event_cb_sub, uint32_t event); /** * @brief Unsubscribe from a specified WDI event. * @details * This function removes the provided event subscription object from the * list of subscribers for its event. * This function shall only be called if there was a successful prior call * to event_sub() on the same wdi_event_subscribe object. * * @param soc_hdl - datapath soc handle * @param pdev_id - physical device instance id * @param event_cb_sub - the event subscription object * @param event - which event is being unsubscribed * @return error code, or 0 for success */ int wdi_event_unsub(struct cdp_soc_t *soc, uint8_t pdev_id, wdi_event_subscribe *event_cb_sub, uint32_t event); void wdi_event_handler(enum WDI_EVENT event, uint8_t pdev_id, void *data); A_STATUS wdi_event_attach(struct ol_txrx_pdev_t *txrx_pdev); A_STATUS wdi_event_detach(struct ol_txrx_pdev_t *txrx_pdev); #else static inline void wdi_event_handler(enum WDI_EVENT event, uint8_t pdev_id, void *data) { } static inline A_STATUS wdi_event_attach(struct ol_txrx_pdev_t *txrx_pdev) { return A_OK; } static inline A_STATUS wdi_event_detach(struct ol_txrx_pdev_t *txrx_pdev) { return A_OK; } static inline int wdi_event_sub(struct cdp_soc_t *soc, uint8_t pdev_id, wdi_event_subscribe *event_cb_sub, uint32_t event) { return 0; } static inline int wdi_event_unsub(struct cdp_soc_t *soc, uint8_t pdev_id, wdi_event_subscribe *event_cb_sub, uint32_t event) { return 0; } #endif /* WDI_EVENT_ENABLE */ #endif /* _WDI_EVENT_API_H_ */