0001
0002 #ifndef R819XUSB_CMDPKT_H
0003 #define R819XUSB_CMDPKT_H
0004
0005 #define CMPK_RX_TX_FB_SIZE sizeof(struct cmd_pkt_tx_feedback)
0006 #define CMPK_BOTH_QUERY_CONFIG_SIZE sizeof(struct cmd_pkt_set_configuration)
0007 #define CMPK_RX_TX_STS_SIZE sizeof(cmpk_tx_status_t)
0008 #define CMPK_TX_RAHIS_SIZE sizeof(cmpk_tx_rahis_t)
0009
0010
0011 #define ISR_TX_BCN_OK BIT(27)
0012 #define ISR_TX_BCN_ERR BIT(26)
0013 #define ISR_BCN_TIMER_INTR BIT(13)
0014
0015
0016
0017
0018
0019
0020 struct cmd_pkt_tx_feedback {
0021
0022 u8 element_id;
0023 u8 length;
0024
0025
0026 u8 TID:4;
0027 u8 fail_reason:3;
0028 u8 tok:1;
0029 u8 reserve1:4;
0030 u8 pkt_type:2;
0031 u8 bandwidth:1;
0032 u8 qos_pkt:1;
0033
0034
0035 u8 reserve2;
0036
0037 u8 retry_cnt;
0038 u16 pkt_id;
0039
0040
0041 u16 seq_num;
0042 u8 s_rate;
0043 u8 f_rate;
0044
0045
0046 u8 s_rts_rate;
0047 u8 f_rts_rate;
0048 u16 pkt_length;
0049
0050
0051 u16 reserve3;
0052 u16 duration;
0053 };
0054
0055
0056
0057
0058 struct cmd_pkt_interrupt_status {
0059 u8 element_id;
0060 u8 length;
0061 u16 reserve;
0062 u32 interrupt_status;
0063 };
0064
0065
0066 struct cmd_pkt_set_configuration {
0067 u8 element_id;
0068 u8 length;
0069 u16 reserve1;
0070
0071 u8 cfg_reserve1:3;
0072 u8 cfg_size:2;
0073 u8 cfg_type:2;
0074 u8 cfg_action:1;
0075 u8 cfg_reserve2;
0076 u8 cfg_page:4;
0077 u8 cfg_reserve3:4;
0078 u8 cfg_offset;
0079 u32 value;
0080 u32 mask;
0081 };
0082
0083
0084
0085
0086 #define cmpk_query_cfg cmd_pkt_set_configuration
0087
0088
0089 typedef struct tag_tx_stats_feedback {
0090
0091
0092
0093
0094 u16 reserve1;
0095 u8 length;
0096 u8 element_id;
0097
0098
0099 u16 txfail;
0100 u16 txok;
0101
0102
0103 u16 txmcok;
0104 u16 txretry;
0105
0106
0107 u16 txucok;
0108 u16 txbcok;
0109
0110
0111 u16 txbcfail;
0112 u16 txmcfail;
0113
0114
0115 u16 reserve2;
0116 u16 txucfail;
0117
0118
0119 u32 txmclength;
0120 u32 txbclength;
0121 u32 txuclength;
0122
0123
0124 u16 reserve3_23;
0125 u8 reserve3_1;
0126 u8 rate;
0127 } __packed cmpk_tx_status_t;
0128
0129
0130
0131 typedef struct tag_rx_debug_message_feedback {
0132
0133
0134 u16 reserve1;
0135 u8 length;
0136 u8 element_id;
0137
0138
0139
0140
0141 } cmpk_rx_dbginfo_t;
0142
0143
0144 typedef struct tag_tx_rate_history {
0145
0146
0147 u8 element_id;
0148 u8 length;
0149 u16 reserved1;
0150
0151
0152 u16 cck[4];
0153
0154
0155 u16 ofdm[8];
0156
0157
0158
0159
0160
0161
0162 u16 ht_mcs[4][16];
0163
0164 } __packed cmpk_tx_rahis_t;
0165
0166 typedef enum tag_command_packet_directories {
0167 RX_TX_FEEDBACK = 0,
0168 RX_INTERRUPT_STATUS = 1,
0169 TX_SET_CONFIG = 2,
0170 BOTH_QUERY_CONFIG = 3,
0171 RX_TX_STATUS = 4,
0172 RX_DBGINFO_FEEDBACK = 5,
0173 RX_TX_PER_PKT_FEEDBACK = 6,
0174 RX_TX_RATE_HISTORY = 7,
0175 RX_CMD_ELE_MAX
0176 } cmpk_element_e;
0177
0178 typedef enum _rt_status {
0179 RT_STATUS_SUCCESS,
0180 RT_STATUS_FAILURE,
0181 RT_STATUS_PENDING,
0182 RT_STATUS_RESOURCE
0183 } rt_status, *prt_status;
0184
0185 u32 cmpk_message_handle_rx(struct net_device *dev,
0186 struct ieee80211_rx_stats *pstats);
0187 rt_status SendTxCommandPacket(struct net_device *dev,
0188 void *pData, u32 DataLen);
0189
0190 #endif