rtl8180: detect rtl8187se card
authorAndrea Merello <andrea.merello@gmail.com>
Wed, 26 Mar 2014 20:04:05 +0000 (21:04 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Thu, 27 Mar 2014 18:20:09 +0000 (14:20 -0400)
Add case to detect the rtl8187se card and its RF frontend.
In this case set also accordingly mac80211 queue number.

Signed-off-by: Andrea Merello <andrea.merello@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/rtl818x/rtl8180/dev.c

index a14dfd931fa47084b9013d45c4f513caa5482d54..2046fe2f1065d67acdf1c4ea8a91310cb399409a 100644 (file)
@@ -1740,6 +1740,12 @@ static int rtl8180_probe(struct pci_dev *pdev,
                chip_name = "RTL8185vD";
                priv->chip_family = RTL818X_CHIP_FAMILY_RTL8185;
                break;
+
+       case RTL818X_TX_CONF_RTL8187SE:
+               chip_name = "RTL8187SE";
+               priv->chip_family = RTL818X_CHIP_FAMILY_RTL8187SE;
+               break;
+
        default:
                printk(KERN_ERR "%s (rtl8180): Unknown chip! (0x%x)\n",
                       pci_name(pdev), reg >> 25);
@@ -1753,7 +1759,10 @@ static int rtl8180_probe(struct pci_dev *pdev,
         * with mac80211, however the beacon queue is an exception and it
         * is mapped on the highst tx ring IDX.
         */
-       dev->queues = RTL8180_NR_TX_QUEUES - 1;
+       if (priv->chip_family == RTL818X_CHIP_FAMILY_RTL8187SE)
+               dev->queues = RTL8187SE_NR_TX_QUEUES - 1;
+       else
+               dev->queues = RTL8180_NR_TX_QUEUES - 1;
 
        if (priv->chip_family != RTL818X_CHIP_FAMILY_RTL8180) {
                priv->band.n_bitrates = ARRAY_SIZE(rtl818x_rates);
@@ -1773,7 +1782,11 @@ static int rtl8180_probe(struct pci_dev *pdev,
                break;
        case 5: priv->rf = &grf5101_rf_ops;
                break;
-       case 9: priv->rf = rtl8180_detect_rf(dev);
+       case 9:
+               if (priv->chip_family == RTL818X_CHIP_FAMILY_RTL8187SE)
+                       priv->rf = rtl8187se_detect_rf(dev);
+               else
+                       priv->rf = rtl8180_detect_rf(dev);
                break;
        case 10:
                rf_name = "RTL8255";