mirror of
https://gitee.com/Vancouver2017/luban-lite.git
synced 2025-12-26 05:58:54 +00:00
160 lines
4.5 KiB
C
160 lines
4.5 KiB
C
/**
|
|
* rwnx_utils.h
|
|
*/
|
|
#ifndef _RWNX_UTILS_H_
|
|
#define _RWNX_UTILS_H_
|
|
|
|
#include "aic_plat_types.h"
|
|
#include "aic_plat_log.h"
|
|
#include "fhost.h"
|
|
|
|
/// Macro defining an invalid VIF index
|
|
#define INVALID_VIF_IDX 0xFF
|
|
#define INVALID_STA_IDX 0xFF
|
|
|
|
#define AICWF_RX_REORDER 1
|
|
#define AICWF_RWNX_TIMER_EN 1
|
|
#define REORDER_DEBUG 0
|
|
|
|
#if !REORDER_DEBUG
|
|
#define DBG_REORD(...) do {} while (0)
|
|
#define WRN_REORD(...) do {} while (0)
|
|
#define DBG_TIMER(...) do {} while (0)
|
|
#define WRN_TIMER(...) do {} while (0)
|
|
#else
|
|
#define DBG_REORD(...) DBG_MACIF_VRB(__VA_ARGS__)
|
|
#define WRN_REORD(...) DBG_MACIF_WRN(__VA_ARGS__)
|
|
#define DBG_TIMER(...) DBG_MACIF_VRB(__VA_ARGS__)
|
|
#define WRN_TIMER(...) DBG_MACIF_WRN(__VA_ARGS__)
|
|
#endif
|
|
#define ERR_REORD(...) DBG_MACIF_ERR(__VA_ARGS__)
|
|
#define ERR_TIMER(...) DBG_MACIF_ERR(__VA_ARGS__)
|
|
|
|
#ifdef CONFIG_RWNX_DBG
|
|
#define RWNX_DBG AIC_LOG_PRINTF
|
|
#else
|
|
#define RWNX_DBG(a...) do {} while (0)
|
|
#endif
|
|
|
|
#define RWNX_FN_ENTRY_STR ">>> %s()\n", __func__
|
|
|
|
struct rwnx_hw;
|
|
typedef uint32_t dma_addr_t;
|
|
|
|
/// 802.11 Status Code
|
|
#define MAC_ST_SUCCESSFUL 0
|
|
#define MAC_ST_FAILURE 1
|
|
#define MAC_ST_RESERVED 2
|
|
#define MAC_ST_CAPA_NOT_SUPPORTED 10
|
|
#define MAC_ST_REASSOC_NOT_ASSOC 11
|
|
#define MAC_ST_ASSOC_DENIED 12
|
|
#define MAC_ST_AUTH_ALGO_NOT_SUPPORTED 13
|
|
#define MAC_ST_AUTH_FRAME_WRONG_SEQ 14
|
|
#define MAC_ST_AUTH_CHALLENGE_FAILED 15
|
|
#define MAC_ST_AUTH_TIMEOUT 16
|
|
#define MAC_ST_ASSOC_TOO_MANY_STA 17
|
|
#define MAC_ST_ASSOC_RATES_NOT_SUPPORTED 18
|
|
#define MAC_ST_ASSOC_PREAMBLE_NOT_SUPPORTED 19
|
|
|
|
#define MAC_ST_ASSOC_SPECTRUM_REQUIRED 22
|
|
#define MAC_ST_ASSOC_POWER_CAPA 23
|
|
#define MAC_ST_ASSOC_SUPPORTED_CHANNEL 24
|
|
#define MAC_ST_ASSOC_SLOT_NOT_SUPPORTED 25
|
|
|
|
#define MAC_ST_REFUSED_TEMPORARILY 30
|
|
#define MAC_ST_INVALID_MFP_POLICY 31
|
|
|
|
#define MAC_ST_INVALID_IE 40 // draft 7.0 extention
|
|
#define MAC_ST_GROUP_CIPHER_INVALID 41 // draft 7.0 extention
|
|
#define MAC_ST_PAIRWISE_CIPHER_INVALID 42 // draft 7.0 extention
|
|
#define MAC_ST_AKMP_INVALID 43 // draft 7.0 extention
|
|
#define MAC_ST_UNSUPPORTED_RSNE_VERSION 44 // draft 7.0 extention
|
|
#define MAC_ST_INVALID_RSNE_CAPA 45 // draft 7.0 extention
|
|
#define MAC_ST_CIPHER_SUITE_REJECTED 46 // draft 7.0 extention
|
|
|
|
|
|
#if (AICWF_RWNX_TIMER_EN)
|
|
typedef void (*rwnx_timer_cb_t)(void * arg,void * arg1);
|
|
|
|
enum rwnx_timer_state_e {
|
|
RWNX_TIMER_STATE_FREE = 0,
|
|
RWNX_TIMER_STATE_POST = 1,
|
|
RWNX_TIMER_STATE_STOP = 2,
|
|
};
|
|
|
|
enum rwnx_timer_action_e {
|
|
RWNX_TIMER_ACTION_CREATE = 0,
|
|
RWNX_TIMER_ACTION_START = 1,
|
|
RWNX_TIMER_ACTION_RESTART = 2,
|
|
RWNX_TIMER_ACTION_STOP = 3,
|
|
RWNX_TIMER_ACTION_DELETE = 4,
|
|
RWNX_TIMER_ACTION_NONE = 5,
|
|
};
|
|
|
|
struct rwnx_timer_node_s {
|
|
struct co_list_hdr hdr;
|
|
rwnx_timer_cb_t cb;
|
|
void *arg;
|
|
void *arg1;
|
|
uint32_t expired_ms; // remained
|
|
enum rwnx_timer_state_e state;
|
|
enum rwnx_timer_action_e action;
|
|
bool periodic;
|
|
bool auto_load;
|
|
};
|
|
|
|
typedef struct rwnx_timer_node_s * rwnx_timer_handle;
|
|
#endif
|
|
|
|
#if (AICWF_RX_REORDER)
|
|
#define MAX_REORD_RXFRAME 250
|
|
#define REORDER_UPDATE_TIME 50
|
|
#define AICWF_REORDER_WINSIZE 64
|
|
#define SN_LESS(a, b) (((a-b)&0x800) != 0)
|
|
#define SN_EQUAL(a, b) (a == b)
|
|
|
|
struct reord_ctrl {
|
|
uint8_t enable;
|
|
uint8_t wsize_b;
|
|
uint16_t ind_sn;
|
|
uint16_t list_cnt;
|
|
struct co_list reord_list;
|
|
rtos_mutex reord_list_lock;
|
|
#if (AICWF_RWNX_TIMER_EN)
|
|
rwnx_timer_handle reord_timer;
|
|
#else
|
|
rtos_timer reord_timer;
|
|
#endif
|
|
};
|
|
|
|
struct reord_ctrl_info {
|
|
struct co_list_hdr hdr;
|
|
uint8_t mac_addr[6];
|
|
struct reord_ctrl preorder_ctrl[8];
|
|
};
|
|
|
|
struct fhost_rx_buf_tag;
|
|
|
|
struct recv_msdu {
|
|
struct co_list_hdr hdr;
|
|
struct fhost_rx_buf_tag *rx_buf;
|
|
#ifdef CONFIG_RX_NOCOPY
|
|
void *lwip_msg;
|
|
#endif
|
|
uint16_t buf_len;
|
|
uint16_t seq_num;
|
|
uint8_t tid;
|
|
uint8_t forward;
|
|
//struct reord_ctrl *preorder_ctrl;
|
|
};
|
|
|
|
int rwnx_rxdataind_aicwf(struct fhost_rx_buf_tag *buf);
|
|
void rwnx_reord_init(void);
|
|
void rwnx_reord_deinit(void);
|
|
int reord_single_frame_ind(struct recv_msdu *prframe);
|
|
void reord_deinit_sta_by_mac(const uint8_t *mac_addr);
|
|
#endif
|
|
|
|
int8_t data_pkt_rssi_get(uint8_t *mac_addr);
|
|
#endif /* _RWNX_UTILS_H_ */
|