| /* |
| * Copyright (c) 2013-2015 The Linux Foundation. All rights reserved. |
| * |
| * Previously licensed under the ISC license by Qualcomm Atheros, Inc. |
| * |
| * |
| * 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. |
| */ |
| |
| /* |
| * This file was originally distributed by Qualcomm Atheros, Inc. |
| * under proprietary terms before Copyright ownership was assigned |
| * to the Linux Foundation. |
| */ |
| |
| #ifndef TXRX_H |
| #define TXRX_H |
| |
| #include "vos_api.h" |
| #include "adf_nbuf.h" |
| #include "csrApi.h" |
| #include "sapApi.h" |
| #include "adf_nbuf.h" |
| #include "ol_txrx_osif_api.h" |
| #include "wlan_qct_tl.h" |
| |
| /* wait on peer deletion timeout value in milliseconds */ |
| #define PEER_DELETION_TIMEOUT 500 |
| |
| enum txrx_wmm_ac { |
| TXRX_WMM_AC_BE, |
| TXRX_WMM_AC_BK, |
| TXRX_WMM_AC_VI, |
| TXRX_WMM_AC_VO, |
| |
| TXRX_NUM_WMM_AC |
| }; |
| |
| struct txrx_rx_metainfo { |
| u8 up; |
| u16 dest_staid; |
| }; |
| |
| enum bt_frame_type { |
| /* BT-AMP packet of type data */ |
| TXRX_BT_AMP_TYPE_DATA = 0x0001, |
| |
| /* BT-AMP packet of type activity report */ |
| TXRX_BT_AMP_TYPE_AR = 0x0002, |
| |
| /* BT-AMP packet of type security frame */ |
| TXRX_BT_AMP_TYPE_SEC = 0x0003, |
| |
| /* BT-AMP packet of type Link Supervision request frame */ |
| TXRX_BT_AMP_TYPE_LS_REQ = 0x0004, |
| |
| /* BT-AMP packet of type Link Supervision reply frame */ |
| TXRX_BT_AMP_TYPE_LS_REP = 0x0005, |
| |
| /* Invalid Frame */ |
| TXRX_BAP_INVALID_FRAME |
| |
| }; |
| |
| enum wlan_ts_direction { |
| /* uplink */ |
| WLAN_TX_DIR = 0, |
| |
| /* downlink */ |
| WLAN_RX_DIR = 1, |
| |
| /*bidirectional*/ |
| WLAN_BI_DIR = 2, |
| }; |
| |
| enum wlan_sta_state { |
| /* Transition in this state made upon creation*/ |
| WLAN_STA_INIT = 0, |
| |
| /* Transition happens after Assoc success if second level authentication |
| is needed*/ |
| WLAN_STA_CONNECTED, |
| |
| /* Transition happens when second level auth is successful and keys are |
| properly installed */ |
| WLAN_STA_AUTHENTICATED, |
| |
| /* Transition happens when connectivity is lost*/ |
| WLAN_STA_DISCONNECTED, |
| |
| WLAN_STA_MAX_STATE |
| }; |
| |
| struct wlan_txrx_stats { |
| /* Define various txrx stats here*/ |
| }; |
| |
| struct ol_txrx_vdev_t; |
| |
| VOS_STATUS wlan_register_mgmt_client(void *pdev_txrx, |
| VOS_STATUS (*rx_mgmt)(void *g_vosctx, |
| void *buf)); |
| |
| typedef void (*ol_txrx_vdev_delete_cb)(void *context); |
| |
| /** |
| * @typedef ol_txrx_tx_fp |
| * @brief top-level transmit function |
| */ |
| typedef adf_nbuf_t |
| (*ol_txrx_tx_fp)(struct ol_txrx_vdev_t *vdev, adf_nbuf_t msdu_list); |
| |
| typedef void |
| (*ol_txrx_mgmt_tx_cb)(void *ctxt, adf_nbuf_t tx_mgmt_frm, int had_error); |
| |
| /* If RSSI realm is changed, send notification to Clients, SME, HDD */ |
| typedef VOS_STATUS (*wlan_txrx_rssi_cross_thresh) (void *adapter, u8 rssi, |
| void *usr_ctx, v_S7_t avg_rssi); |
| |
| struct wlan_txrx_ind_req { |
| u16 msgType; // message type is same as the request type |
| u16 msgLen; // length of the entire request |
| u8 sessionId; //sme Session Id |
| u8 rssiNotification; |
| u8 avgRssi; |
| void *tlCallback; |
| void *pAdapter; |
| void *pUserCtxt; |
| }; |
| |
| struct wlan_txrx_config_param { |
| u32 uDelayedTriggerFrmInt; |
| u8 uMinFramesProcThres; |
| }; |
| |
| /* Rx callback registered with txrx */ |
| typedef int (*wlan_txrx_cb_type)( void *g_vosctx, adf_nbuf_t buf, u8 sta_id, |
| struct txrx_rx_metainfo *rx_meta_info); |
| |
| static inline int wlan_txrx_get_rssi(void *g_vosctx, u8 sta_id, v_S7_t *rssi) |
| { |
| return 0; |
| } |
| |
| static inline int wlan_txrx_enable_uapsd_ac(void *g_vosctx, u8 sta_id, |
| enum txrx_wmm_ac ac, u8 tid, u8 up, |
| u32 srv_int, u32 suspend_int, |
| enum wlan_ts_direction ts_dir) |
| { |
| return 0; |
| } |
| |
| static inline int wlan_txrx_disable_uapsd_ac(void *g_vosctx, u8 sta_id, |
| enum txrx_wmm_ac ac) |
| { |
| return 0; |
| } |
| |
| static inline int wlan_change_sta_state(void *g_vosctx, u8 sta_id, |
| enum wlan_sta_state state) |
| { |
| return 0; |
| } |
| |
| static inline int wlan_deregister_mgmt_client(void *g_vosctx) |
| { |
| return 0; |
| } |
| |
| static inline void wlan_assoc_failed(u8 staid) |
| { |
| } |
| |
| static inline int wlan_get_ap_stats(void *g_vosctx, tSap_SoftapStats *buf, |
| bool reset) |
| { |
| return 0; |
| } |
| |
| static inline int wlan_get_txrx_stats(void *g_vosctx, struct wlan_txrx_stats *stats, |
| u8 sta_id) |
| { |
| return 0; |
| } |
| |
| static inline int wlan_txrx_update_rssi_bmps(void *g_vosctx, u8 sta_id, |
| v_S7_t rssi) |
| { |
| return 0; |
| } |
| |
| static inline int wlan_txrx_deregister_rssi_indcb(void *g_vosctx, |
| v_S7_t rssi_val, |
| u8 trigger_event, |
| wlan_txrx_rssi_cross_thresh cb, |
| int mod_id) |
| { |
| return 0; |
| } |
| |
| static inline int wlan_txrx_register_rssi_indcb(void *g_vosctx, |
| v_S7_t rssi_val, |
| u8 trigger_event, |
| wlan_txrx_rssi_cross_thresh cb, |
| int mod_id, void *usr_ctx) |
| { |
| return 0; |
| } |
| |
| /* FIXME: The following stubs will be removed eventually */ |
| static inline int wlan_txrx_mc_process_msg(void *g_vosctx, vos_msg_t *msg) |
| { |
| return 0; |
| } |
| |
| static inline int wlan_txrx_tx_process_msg(void *g_vosctx, vos_msg_t *msg) |
| { |
| return 0; |
| } |
| |
| static inline void wlan_txrx_mc_free_msg(void *g_vosctx, vos_msg_t *msg) |
| { |
| } |
| static inline void wlan_txrx_tx_free_msg(void *g_vosctx, vos_msg_t *msg) |
| { |
| } |
| #endif |