rtl8xxxu: Make PBP tuning a fileops parameter
authorJes Sorensen <Jes.Sorensen@redhat.com>
Thu, 14 Apr 2016 18:59:03 +0000 (14:59 -0400)
committerKalle Valo <kvalo@codeaurora.org>
Fri, 15 Apr 2016 18:36:43 +0000 (21:36 +0300)
Rather than scattering the code with #ifdefs, use the fileops
structure to hold device specific PBP values.

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h

index c12a4c8cb63a3e68157edd039d9af1ce36711b3a..3e3ca28d5709ffb9b9624e980c66b1fbc8162793 100644 (file)
@@ -7687,14 +7687,11 @@ static int rtl8xxxu_init_device(struct ieee80211_hw *hw)
        }
 
        /*
-        * Transfer page size is always 128
+        * The vendor drivers set PBP for all devices, except 8192e.
+        * There is no explanation for this in any of the sources.
         */
-       if (priv->rtl_chip == RTL8723B)
-               val8 = (PBP_PAGE_SIZE_256 << PBP_PAGE_SIZE_RX_SHIFT) |
-                       (PBP_PAGE_SIZE_256 << PBP_PAGE_SIZE_TX_SHIFT);
-       else
-               val8 = (PBP_PAGE_SIZE_128 << PBP_PAGE_SIZE_RX_SHIFT) |
-                       (PBP_PAGE_SIZE_128 << PBP_PAGE_SIZE_TX_SHIFT);
+       val8 = (priv->fops->pbp_rx << PBP_PAGE_SIZE_RX_SHIFT) |
+               (priv->fops->pbp_tx << PBP_PAGE_SIZE_TX_SHIFT);
        if (priv->rtl_chip != RTL8192E)
                rtl8xxxu_write8(priv, REG_PBP, val8);
 
@@ -9728,6 +9725,8 @@ static struct rtl8xxxu_fileops rtl8723au_fops = {
        .adda_2t_path_on_a = 0x04db25a4,
        .adda_2t_path_on_b = 0x0b1b25a4,
        .trxff_boundary = 0x27ff,
+       .pbp_rx = PBP_PAGE_SIZE_128,
+       .pbp_tx = PBP_PAGE_SIZE_128,
        .mactable = rtl8723a_mac_init_table,
 };
 
@@ -9761,6 +9760,8 @@ static struct rtl8xxxu_fileops rtl8723bu_fops = {
        .adda_2t_path_on_a = 0x01c00014,
        .adda_2t_path_on_b = 0x01c00014,
        .trxff_boundary = 0x3f7f,
+       .pbp_rx = PBP_PAGE_SIZE_256,
+       .pbp_tx = PBP_PAGE_SIZE_256,
        .mactable = rtl8723b_mac_init_table,
 };
 
@@ -9792,6 +9793,8 @@ static struct rtl8xxxu_fileops rtl8192cu_fops = {
        .adda_2t_path_on_a = 0x04db25a4,
        .adda_2t_path_on_b = 0x0b1b25a4,
        .trxff_boundary = 0x27ff,
+       .pbp_rx = PBP_PAGE_SIZE_128,
+       .pbp_tx = PBP_PAGE_SIZE_128,
        .mactable = rtl8723a_mac_init_table,
 };
 
index b87cd2bef53cb08357fb95b08e61fccb9dea2022..8064b264ad0b829b10ad33f3af7663b6475451da 100644 (file)
@@ -1310,6 +1310,8 @@ struct rtl8xxxu_fileops {
        u32 adda_2t_path_on_a;
        u32 adda_2t_path_on_b;
        u16 trxff_boundary;
+       u8 pbp_rx;
+       u8 pbp_tx;
        struct rtl8xxxu_reg8val *mactable;
        u8 total_page_num;
        u8 page_num_hi;