net/txgbe: update device ID
authorJiawen Wu <jiawenwu@trustnetic.com>
Mon, 29 Mar 2021 03:17:19 +0000 (11:17 +0800)
committerFerruh Yigit <ferruh.yigit@intel.com>
Mon, 29 Mar 2021 15:49:34 +0000 (17:49 +0200)
For more different devices, update device ID and subsystem id.

Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
drivers/net/txgbe/base/txgbe_devids.h
drivers/net/txgbe/base/txgbe_hw.c
drivers/net/txgbe/base/txgbe_phy.c
drivers/net/txgbe/txgbe_ethdev.c
drivers/net/txgbe/txgbe_ethdev_vf.c

index 744f2f3..cb18617 100644 (file)
 /*
  * Device IDs
  */
-#define TXGBE_DEV_ID_RAPTOR_VF                  0x1000
-#define TXGBE_DEV_ID_RAPTOR_SFP                 0x1001 /* fiber */
-#define TXGBE_DEV_ID_RAPTOR_KR_KX_KX4           0x1002 /* backplane */
-#define TXGBE_DEV_ID_RAPTOR_XAUI                0x1003 /* copper */
-#define TXGBE_DEV_ID_RAPTOR_SGMII               0x1004 /* copper */
-#define TXGBE_DEV_ID_RAPTOR_QSFP                0x1011 /* fiber */
-#define TXGBE_DEV_ID_RAPTOR_VF_HV               0x2000
-#define TXGBE_DEV_ID_RAPTOR_T3_LOM              0x2001
-
-#define TXGBE_DEV_ID_WX1820_SFP                 0x2001
+#define TXGBE_DEV_ID_SP1000                    0x1001
+#define TXGBE_DEV_ID_WX1820                    0x2001
+#define TXGBE_DEV_ID_SP1000_VF                  0x1000
+#define TXGBE_DEV_ID_WX1820_VF                  0x2000
 
 /*
- * Subdevice IDs
+ * Subsystem IDs
  */
-#define TXGBE_SUBDEV_ID_RAPTOR                 0x0000
-#define TXGBE_SUBDEV_ID_MPW                    0x0001
+/* SFP */
+#define TXGBE_DEV_ID_SP1000_SFP                        0x0000
+#define TXGBE_DEV_ID_WX1820_SFP                        0x2000
+#define TXGBE_DEV_ID_SFP                       0x00
+/* copper */
+#define TXGBE_DEV_ID_SP1000_XAUI               0x1010
+#define TXGBE_DEV_ID_WX1820_XAUI               0x2010
+#define TXGBE_DEV_ID_XAUI                      0x10
+#define TXGBE_DEV_ID_SP1000_SGMII              0x1020
+#define TXGBE_DEV_ID_WX1820_SGMII              0x2020
+#define TXGBE_DEV_ID_SGMII                     0x20
+/* backplane */
+#define TXGBE_DEV_ID_SP1000_KR_KX_KX4          0x1030
+#define TXGBE_DEV_ID_WX1820_KR_KX_KX4          0x2030
+#define TXGBE_DEV_ID_KR_KX_KX4                 0x30
+/* MAC Interface */
+#define TXGBE_DEV_ID_SP1000_MAC_XAUI           0x1040
+#define TXGBE_DEV_ID_WX1820_MAC_XAUI           0x2040
+#define TXGBE_DEV_ID_MAC_XAUI                  0x40
+#define TXGBE_DEV_ID_SP1000_MAC_SGMII           0x1060
+#define TXGBE_DEV_ID_WX1820_MAC_SGMII           0x2060
+#define TXGBE_DEV_ID_MAC_SGMII                  0x60
+/* combined interface*/
+#define TXGBE_DEV_ID_SFI_XAUI                  0x50
+/* fiber qsfp*/
+#define TXGBE_DEV_ID_QSFP                      0x11
 
 #define TXGBE_ETHERTYPE_FLOW_CTRL   0x8808
 #define TXGBE_ETHERTYPE_IEEE_VLAN   0x8100  /* 802.1q protocol */
index 3cee8b8..81efb64 100644 (file)
@@ -60,9 +60,9 @@ bool txgbe_device_supports_autoneg_fc(struct txgbe_hw *hw)
                break;
        case txgbe_media_type_copper:
                /* only some copper devices support flow control autoneg */
-               switch (hw->device_id) {
-               case TXGBE_DEV_ID_RAPTOR_XAUI:
-               case TXGBE_DEV_ID_RAPTOR_SGMII:
+               switch (hw->subsystem_device_id & 0xFF) {
+               case TXGBE_DEV_ID_XAUI:
+               case TXGBE_DEV_ID_SGMII:
                        supported = true;
                        break;
                default:
@@ -2525,26 +2525,12 @@ s32 txgbe_set_mac_type(struct txgbe_hw *hw)
        }
 
        switch (hw->device_id) {
-       case TXGBE_DEV_ID_RAPTOR_KR_KX_KX4:
-               hw->phy.media_type = txgbe_media_type_backplane;
+       case TXGBE_DEV_ID_SP1000:
+       case TXGBE_DEV_ID_WX1820:
                hw->mac.type = txgbe_mac_raptor;
                break;
-       case TXGBE_DEV_ID_RAPTOR_XAUI:
-       case TXGBE_DEV_ID_RAPTOR_SGMII:
-               hw->phy.media_type = txgbe_media_type_copper;
-               hw->mac.type = txgbe_mac_raptor;
-               break;
-       case TXGBE_DEV_ID_RAPTOR_SFP:
-       case TXGBE_DEV_ID_WX1820_SFP:
-               hw->phy.media_type = txgbe_media_type_fiber;
-               hw->mac.type = txgbe_mac_raptor;
-               break;
-       case TXGBE_DEV_ID_RAPTOR_QSFP:
-               hw->phy.media_type = txgbe_media_type_fiber_qsfp;
-               hw->mac.type = txgbe_mac_raptor;
-               break;
-       case TXGBE_DEV_ID_RAPTOR_VF:
-       case TXGBE_DEV_ID_RAPTOR_VF_HV:
+       case TXGBE_DEV_ID_SP1000_VF:
+       case TXGBE_DEV_ID_WX1820_VF:
                hw->phy.media_type = txgbe_media_type_virtual;
                hw->mac.type = txgbe_mac_raptor_vf;
                break;
@@ -2554,8 +2540,8 @@ s32 txgbe_set_mac_type(struct txgbe_hw *hw)
                break;
        }
 
-       DEBUGOUT("found mac: %d media: %d, returns: %d\n",
-                 hw->mac.type, hw->phy.media_type, err);
+       DEBUGOUT("found mac: %d, returns: %d\n",
+                 hw->mac.type, err);
        return err;
 }
 
@@ -2613,7 +2599,7 @@ s32 txgbe_init_phy_raptor(struct txgbe_hw *hw)
 
        DEBUGFUNC("txgbe_init_phy_raptor");
 
-       if (hw->device_id == TXGBE_DEV_ID_RAPTOR_QSFP) {
+       if ((hw->device_id & 0xFF) == TXGBE_DEV_ID_QSFP) {
                /* Store flag indicating I2C bus access control unit. */
                hw->phy.qsfp_shared_i2c_bus = TRUE;
 
@@ -3017,22 +3003,29 @@ u32 txgbe_get_media_type_raptor(struct txgbe_hw *hw)
                break;
        }
 
-       switch (hw->device_id) {
-       case TXGBE_DEV_ID_RAPTOR_KR_KX_KX4:
+       switch (hw->subsystem_device_id & 0xFF) {
+       case TXGBE_DEV_ID_KR_KX_KX4:
+       case TXGBE_DEV_ID_MAC_SGMII:
+       case TXGBE_DEV_ID_MAC_XAUI:
                /* Default device ID is mezzanine card KX/KX4 */
                media_type = txgbe_media_type_backplane;
                break;
-       case TXGBE_DEV_ID_RAPTOR_SFP:
-       case TXGBE_DEV_ID_WX1820_SFP:
+       case TXGBE_DEV_ID_SFP:
                media_type = txgbe_media_type_fiber;
                break;
-       case TXGBE_DEV_ID_RAPTOR_QSFP:
+       case TXGBE_DEV_ID_QSFP:
                media_type = txgbe_media_type_fiber_qsfp;
                break;
-       case TXGBE_DEV_ID_RAPTOR_XAUI:
-       case TXGBE_DEV_ID_RAPTOR_SGMII:
+       case TXGBE_DEV_ID_XAUI:
+       case TXGBE_DEV_ID_SGMII:
                media_type = txgbe_media_type_copper;
                break;
+       case TXGBE_DEV_ID_SFI_XAUI:
+               if (hw->bus.lan_id == 0)
+                       media_type = txgbe_media_type_fiber;
+               else
+                       media_type = txgbe_media_type_copper;
+               break;
        default:
                media_type = txgbe_media_type_unknown;
                break;
index bdd6bf7..37c4109 100644 (file)
@@ -2126,26 +2126,32 @@ u64 txgbe_autoc_read(struct txgbe_hw *hw)
        u32 sr_pma_ctl1;
        u32 sr_an_ctl;
        u32 sr_an_adv_reg2;
+       u8 type = hw->subsystem_device_id & 0xFF;
 
        if (hw->phy.multispeed_fiber) {
                autoc |= TXGBE_AUTOC_LMS_10G;
-       } else if (hw->device_id == TXGBE_DEV_ID_RAPTOR_SFP ||
-                  hw->device_id == TXGBE_DEV_ID_WX1820_SFP) {
-               autoc |= TXGBE_AUTOC_LMS_10G |
-                        TXGBE_AUTOC_10GS_SFI;
-       } else if (hw->device_id == TXGBE_DEV_ID_RAPTOR_QSFP) {
+       } else if (type == TXGBE_DEV_ID_SFP) {
+               autoc |= TXGBE_AUTOC_LMS_10G;
+               autoc |= TXGBE_AUTOC_10GS_SFI;
+       } else if (type == TXGBE_DEV_ID_QSFP) {
                autoc = 0; /*TBD*/
-       } else if (hw->device_id == TXGBE_DEV_ID_RAPTOR_XAUI) {
-               autoc |= TXGBE_AUTOC_LMS_10G_LINK_NO_AN |
-                        TXGBE_AUTOC_10G_XAUI;
+       } else if (type == TXGBE_DEV_ID_XAUI || type == TXGBE_DEV_ID_SFI_XAUI) {
+               autoc |= TXGBE_AUTOC_LMS_10G_LINK_NO_AN;
+               autoc |= TXGBE_AUTOC_10G_XAUI;
                hw->phy.link_mode = TXGBE_PHYSICAL_LAYER_10GBASE_T;
-       } else if (hw->device_id == TXGBE_DEV_ID_RAPTOR_SGMII) {
+       } else if (type == TXGBE_DEV_ID_SGMII) {
                autoc |= TXGBE_AUTOC_LMS_SGMII_1G_100M;
                hw->phy.link_mode = TXGBE_PHYSICAL_LAYER_1000BASE_T |
                                TXGBE_PHYSICAL_LAYER_100BASE_TX;
+       } else if (type == TXGBE_DEV_ID_MAC_XAUI) {
+               autoc |= TXGBE_AUTOC_LMS_10G_LINK_NO_AN;
+               hw->phy.link_mode = TXGBE_PHYSICAL_LAYER_10GBASE_KX4;
+       } else if (type == TXGBE_DEV_ID_MAC_SGMII) {
+               autoc |= TXGBE_AUTOC_LMS_1G_LINK_NO_AN;
+               hw->phy.link_mode = TXGBE_PHYSICAL_LAYER_1000BASE_KX;
        }
 
-       if (hw->device_id != TXGBE_DEV_ID_RAPTOR_SGMII)
+       if (type != TXGBE_DEV_ID_KR_KX_KX4)
                return autoc;
 
        sr_pcs_ctl = rd32_epcs(hw, SR_XS_PCS_CTRL2);
@@ -2201,13 +2207,14 @@ void txgbe_autoc_write(struct txgbe_hw *hw, u64 autoc)
        bool autoneg;
        u32 speed;
        u32 mactxcfg = 0;
+       u8 device_type = hw->subsystem_device_id & 0xFF;
 
        speed = TXGBE_AUTOC_SPEED(autoc);
        autoc &= ~TXGBE_AUTOC_SPEED_MASK;
        autoneg = (autoc & TXGBE_AUTOC_AUTONEG ? true : false);
        autoc &= ~TXGBE_AUTOC_AUTONEG;
 
-       if (hw->device_id == TXGBE_DEV_ID_RAPTOR_KR_KX_KX4) {
+       if (device_type == TXGBE_DEV_ID_KR_KX_KX4) {
                if (!autoneg) {
                        switch (hw->phy.link_mode) {
                        case TXGBE_PHYSICAL_LAYER_10GBASE_KR:
@@ -2223,16 +2230,19 @@ void txgbe_autoc_write(struct txgbe_hw *hw, u64 autoc)
                                return;
                        }
                }
-       } else if (hw->device_id == TXGBE_DEV_ID_RAPTOR_XAUI ||
-                  hw->device_id == TXGBE_DEV_ID_RAPTOR_SGMII) {
+       } else if (device_type == TXGBE_DEV_ID_XAUI ||
+                  device_type == TXGBE_DEV_ID_SGMII ||
+                  device_type == TXGBE_DEV_ID_MAC_XAUI ||
+                  device_type == TXGBE_DEV_ID_MAC_SGMII ||
+                  (device_type == TXGBE_DEV_ID_SFI_XAUI &&
+                  hw->phy.media_type == txgbe_media_type_copper)) {
                if (speed == TXGBE_LINK_SPEED_10GB_FULL) {
                        txgbe_set_link_to_kx4(hw, autoneg);
                } else {
                        txgbe_set_link_to_kx(hw, speed, 0);
                        txgbe_set_sgmii_an37_ability(hw);
                }
-       } else if (hw->device_id == TXGBE_DEV_ID_RAPTOR_SFP ||
-                  hw->device_id == TXGBE_DEV_ID_WX1820_SFP) {
+       } else if (hw->phy.media_type == txgbe_media_type_fiber) {
                txgbe_set_link_to_sfi(hw, speed);
        }
 
index 9949d4e..58713ae 100644 (file)
@@ -138,8 +138,8 @@ static void txgbe_l2_tunnel_conf(struct rte_eth_dev *dev);
  * The set of PCI devices this driver supports
  */
 static const struct rte_pci_id pci_id_txgbe_map[] = {
-       { RTE_PCI_DEVICE(PCI_VENDOR_ID_WANGXUN, TXGBE_DEV_ID_RAPTOR_SFP) },
-       { RTE_PCI_DEVICE(PCI_VENDOR_ID_WANGXUN, TXGBE_DEV_ID_WX1820_SFP) },
+       { RTE_PCI_DEVICE(PCI_VENDOR_ID_WANGXUN, TXGBE_DEV_ID_SP1000) },
+       { RTE_PCI_DEVICE(PCI_VENDOR_ID_WANGXUN, TXGBE_DEV_ID_WX1820) },
        { .vendor_id = 0, /* sentinel */ },
 };
 
index 63a45d3..3a51237 100644 (file)
@@ -71,8 +71,8 @@ static void txgbevf_dev_interrupt_handler(void *param);
  * The set of PCI devices this driver supports (for VF)
  */
 static const struct rte_pci_id pci_id_txgbevf_map[] = {
-       { RTE_PCI_DEVICE(PCI_VENDOR_ID_WANGXUN, TXGBE_DEV_ID_RAPTOR_VF) },
-       { RTE_PCI_DEVICE(PCI_VENDOR_ID_WANGXUN, TXGBE_DEV_ID_RAPTOR_VF_HV) },
+       { RTE_PCI_DEVICE(PCI_VENDOR_ID_WANGXUN, TXGBE_DEV_ID_SP1000_VF) },
+       { RTE_PCI_DEVICE(PCI_VENDOR_ID_WANGXUN, TXGBE_DEV_ID_WX1820_VF) },
        { .vendor_id = 0, /* sentinel */ },
 };