Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
[cascardo/linux.git] / drivers / net / wireless / realtek / rtl8xxxu / rtl8xxxu.h
index 4341d56..1016628 100644 (file)
@@ -29,6 +29,7 @@
 #define RTL8XXXU_DEBUG_H2C             0x800
 #define RTL8XXXU_DEBUG_ACTION          0x1000
 #define RTL8XXXU_DEBUG_EFUSE           0x2000
+#define RTL8XXXU_DEBUG_INTERRUPT       0x4000
 
 #define RTW_USB_CONTROL_MSG_TIMEOUT    500
 #define RTL8XXXU_MAX_REG_POLL          500
@@ -43,6 +44,7 @@
 
 #define TX_TOTAL_PAGE_NUM              0xf8
 #define TX_TOTAL_PAGE_NUM_8192E                0xf3
+#define TX_TOTAL_PAGE_NUM_8723B                0xf7
 /* (HPQ + LPQ + NPQ + PUBQ) = TX_TOTAL_PAGE_NUM */
 #define TX_PAGE_NUM_PUBQ               0xe7
 #define TX_PAGE_NUM_HI_PQ              0x0c
 #define TX_PAGE_NUM_LO_PQ_8192E                0x0c
 #define TX_PAGE_NUM_NORM_PQ_8192E      0x00
 
+#define TX_PAGE_NUM_PUBQ_8723B         0xe7
+#define TX_PAGE_NUM_HI_PQ_8723B                0x0c
+#define TX_PAGE_NUM_LO_PQ_8723B                0x02
+#define TX_PAGE_NUM_NORM_PQ_8723B      0x02
+
 #define RTL_FW_PAGE_SIZE               4096
 #define RTL8XXXU_FIRMWARE_POLL_MAX     1000
 
@@ -1312,7 +1319,7 @@ struct rtl8xxxu_fileops {
        int (*power_on) (struct rtl8xxxu_priv *priv);
        void (*power_off) (struct rtl8xxxu_priv *priv);
        void (*reset_8051) (struct rtl8xxxu_priv *priv);
-       int (*llt_init) (struct rtl8xxxu_priv *priv, u8 last_tx_page);
+       int (*llt_init) (struct rtl8xxxu_priv *priv);
        void (*init_phy_bb) (struct rtl8xxxu_priv *priv);
        int (*init_phy_rf) (struct rtl8xxxu_priv *priv);
        void (*phy_init_antenna_selection) (struct rtl8xxxu_priv *priv);
@@ -1330,11 +1337,17 @@ struct rtl8xxxu_fileops {
                                  u32 ramask, int sgi);
        void (*report_connect) (struct rtl8xxxu_priv *priv,
                                u8 macid, bool connect);
+       void (*fill_txdesc) (struct ieee80211_hdr *hdr,
+                            struct rtl8xxxu_txdesc32 *tx_desc, u32 rate,
+                            u16 rate_flag, bool sgi, bool short_preamble,
+                            bool ampdu_enable);
        int writeN_block_size;
        int rx_agg_buf_size;
        char tx_desc_size;
        char rx_desc_size;
-       char has_s0s1;
+       u8 has_s0s1:1;
+       u8 has_tx_report:1;
+       u8 gen2_thermal_meter:1;
        u32 adda_1t_init;
        u32 adda_1t_path_on;
        u32 adda_2t_path_on_a;
@@ -1388,14 +1401,14 @@ int rtl8xxxu_load_firmware(struct rtl8xxxu_priv *priv, char *fw_name);
 void rtl8xxxu_firmware_self_reset(struct rtl8xxxu_priv *priv);
 void rtl8xxxu_power_off(struct rtl8xxxu_priv *priv);
 void rtl8xxxu_reset_8051(struct rtl8xxxu_priv *priv);
-int rtl8xxxu_auto_llt_table(struct rtl8xxxu_priv *priv, u8 last_tx_page);
+int rtl8xxxu_auto_llt_table(struct rtl8xxxu_priv *priv);
 void rtl8xxxu_gen2_prepare_calibrate(struct rtl8xxxu_priv *priv, u8 start);
 int rtl8xxxu_flush_fifo(struct rtl8xxxu_priv *priv);
 int rtl8xxxu_gen2_h2c_cmd(struct rtl8xxxu_priv *priv,
                          struct h2c_cmd *h2c, int len);
 int rtl8xxxu_active_to_lps(struct rtl8xxxu_priv *priv);
 void rtl8xxxu_disabled_to_emu(struct rtl8xxxu_priv *priv);
-int rtl8xxxu_init_llt_table(struct rtl8xxxu_priv *priv, u8 last_tx_page);
+int rtl8xxxu_init_llt_table(struct rtl8xxxu_priv *priv);
 void rtl8xxxu_gen1_phy_iq_calibrate(struct rtl8xxxu_priv *priv);
 void rtl8xxxu_gen1_init_phy_bb(struct rtl8xxxu_priv *priv);
 void rtl8xxxu_gen1_set_tx_power(struct rtl8xxxu_priv *priv,
@@ -1421,6 +1434,14 @@ int rtl8xxxu_parse_rxdesc24(struct rtl8xxxu_priv *priv, struct sk_buff *skb);
 int rtl8xxxu_gen2_channel_to_group(int channel);
 bool rtl8xxxu_gen2_simularity_compare(struct rtl8xxxu_priv *priv,
                                      int result[][8], int c1, int c2);
+void rtl8xxxu_fill_txdesc_v1(struct ieee80211_hdr *hdr,
+                            struct rtl8xxxu_txdesc32 *tx_desc, u32 rate,
+                            u16 rate_flag, bool sgi, bool short_preamble,
+                            bool ampdu_enable);
+void rtl8xxxu_fill_txdesc_v2(struct ieee80211_hdr *hdr,
+                            struct rtl8xxxu_txdesc32 *tx_desc32, u32 rate,
+                            u16 rate_flag, bool sgi, bool short_preamble,
+                            bool ampdu_enable);
 
 extern struct rtl8xxxu_fileops rtl8192cu_fops;
 extern struct rtl8xxxu_fileops rtl8192eu_fops;