240 lines
5.5 KiB
C
240 lines
5.5 KiB
C
|
/*
|
||
|
* 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
|