| /****************************************************************************** |
| * Copyright(c) 2008 - 2010 Realtek Corporation. All rights reserved. |
| * |
| * This program is distributed in the hope that it will be useful, but WITHOUT |
| * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| * more details. |
| * |
| * You should have received a copy of the GNU General Public License along with |
| * this program; if not, write to the Free Software Foundation, Inc., |
| * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA |
| * |
| * The full GNU General Public License is included in this distribution in the |
| * file called LICENSE. |
| * |
| * Contact Information: |
| * wlanfae <wlanfae@realtek.com> |
| ******************************************************************************/ |
| #ifndef R819XUSB_CMDPKT_H |
| #define R819XUSB_CMDPKT_H |
| #define CMPK_RX_TX_FB_SIZE sizeof(struct cmpk_txfb) |
| #define CMPK_TX_SET_CONFIG_SIZE sizeof(struct cmpk_set_cfg) |
| #define CMPK_BOTH_QUERY_CONFIG_SIZE sizeof(struct cmpk_set_cfg) |
| #define CMPK_RX_TX_STS_SIZE sizeof(struct cmpk_tx_status) |
| #define CMPK_RX_DBG_MSG_SIZE sizeof(struct cmpk_rx_dbginfo) |
| #define CMPK_TX_RAHIS_SIZE sizeof(struct cmpk_tx_rahis) |
| |
| #define ISR_TxBcnOk BIT27 |
| #define ISR_TxBcnErr BIT26 |
| #define ISR_BcnTimerIntr BIT13 |
| |
| |
| struct cmpk_txfb { |
| u8 element_id; |
| u8 length; |
| u8 TID:4; /* */ |
| u8 fail_reason:3; /* */ |
| u8 tok:1; |
| u8 reserve1:4; /* */ |
| u8 pkt_type:2; /* */ |
| u8 bandwidth:1; /* */ |
| u8 qos_pkt:1; /* */ |
| |
| u8 reserve2; /* */ |
| u8 retry_cnt; /* */ |
| u16 pkt_id; /* */ |
| |
| u16 seq_num; /* */ |
| u8 s_rate; |
| u8 f_rate; |
| |
| u8 s_rts_rate; /* */ |
| u8 f_rts_rate; /* */ |
| u16 pkt_length; /* */ |
| |
| u16 reserve3; /* */ |
| u16 duration; /* */ |
| }; |
| |
| struct cmpk_intr_sta { |
| u8 element_id; |
| u8 length; |
| u16 reserve; |
| u32 interrupt_status; |
| }; |
| |
| |
| struct cmpk_set_cfg { |
| u8 element_id; |
| u8 length; |
| u16 reserve1; |
| u8 cfg_reserve1:3; |
| u8 cfg_size:2; |
| u8 cfg_type:2; |
| u8 cfg_action:1; |
| u8 cfg_reserve2; |
| u8 cfg_page:4; |
| u8 cfg_reserve3:4; |
| u8 cfg_offset; |
| u32 value; |
| u32 mask; |
| }; |
| |
| #define cmpk_query_cfg_t struct cmpk_set_cfg |
| |
| struct cmpk_tx_status { |
| u16 reserve1; |
| u8 length; |
| u8 element_id; |
| |
| u16 txfail; |
| u16 txok; |
| |
| u16 txmcok; |
| u16 txretry; |
| |
| u16 txucok; |
| u16 txbcok; |
| |
| u16 txbcfail; |
| u16 txmcfail; |
| |
| u16 reserve2; |
| u16 txucfail; |
| |
| u32 txmclength; |
| u32 txbclength; |
| u32 txuclength; |
| |
| u16 reserve3_23; |
| u8 reserve3_1; |
| u8 rate; |
| } __packed; |
| |
| struct cmpk_rx_dbginfo { |
| u16 reserve1; |
| u8 length; |
| u8 element_id; |
| |
| |
| }; |
| |
| struct cmpk_tx_rahis { |
| u8 element_id; |
| u8 length; |
| u16 reserved1; |
| |
| u16 cck[4]; |
| |
| u16 ofdm[8]; |
| |
| |
| |
| |
| |
| u16 ht_mcs[4][16]; |
| |
| } __packed; |
| |
| enum cmpk_element { |
| RX_TX_FEEDBACK = 0, |
| RX_INTERRUPT_STATUS = 1, |
| TX_SET_CONFIG = 2, |
| BOTH_QUERY_CONFIG = 3, |
| RX_TX_STATUS = 4, |
| RX_DBGINFO_FEEDBACK = 5, |
| RX_TX_PER_PKT_FEEDBACK = 6, |
| RX_TX_RATE_HISTORY = 7, |
| RX_CMD_ELE_MAX |
| }; |
| |
| extern u32 cmpk_message_handle_rx(struct net_device *dev, |
| struct rtllib_rx_stats *pstats); |
| extern bool cmpk_message_handle_tx(struct net_device *dev, |
| u8 *codevirtualaddress, u32 packettype, |
| u32 buffer_len); |
| |
| |
| #endif |