ixgbe/base: rework host interface command
[dpdk.git] / lib / librte_pmd_ixgbe / ixgbe / ixgbe_x550.c
index e01d985..c543764 100644 (file)
@@ -109,9 +109,11 @@ STATIC s32 ixgbe_identify_phy_x550em(struct ixgbe_hw *hw)
                hw->phy.type = ixgbe_phy_x550em_kx4;
                break;
        case IXGBE_DEV_ID_X550EM_X_KR:
-       case IXGBE_DEV_ID_X550EM_X:
                hw->phy.type = ixgbe_phy_x550em_kr;
                break;
+       case IXGBE_DEV_ID_X550EM_X_1G_T:
+       case IXGBE_DEV_ID_X550EM_X_10G_T:
+               return ixgbe_identify_phy_generic(hw);
        default:
                break;
        }
@@ -401,8 +403,7 @@ s32 ixgbe_setup_eee_X550(struct ixgbe_hw *hw, bool enable_eee)
 
                        hw->phy.ops.write_reg(hw, IXGBE_MDIO_AUTO_NEG_EEE_ADVT,
                                IXGBE_MDIO_AUTO_NEG_DEV_TYPE, autoneg_eee_reg);
-               } else if (hw->device_id == IXGBE_DEV_ID_X550EM_X_KR ||
-                          hw->device_id == IXGBE_DEV_ID_X550EM_X) {
+               } else if (hw->device_id == IXGBE_DEV_ID_X550EM_X_KR) {
                        status = ixgbe_read_iosf_sb_reg_x550(hw,
                                IXGBE_KRM_LINK_CTRL_1(hw->bus.lan_id),
                                IXGBE_SB_IOSF_TARGET_KR_PHY, &link_reg);
@@ -432,8 +433,7 @@ s32 ixgbe_setup_eee_X550(struct ixgbe_hw *hw, bool enable_eee)
 
                        hw->phy.ops.write_reg(hw, IXGBE_MDIO_AUTO_NEG_EEE_ADVT,
                                IXGBE_MDIO_AUTO_NEG_DEV_TYPE, autoneg_eee_reg);
-               } else if (hw->device_id == IXGBE_DEV_ID_X550EM_X_KR ||
-                          hw->device_id == IXGBE_DEV_ID_X550EM_X) {
+               } else if (hw->device_id == IXGBE_DEV_ID_X550EM_X_KR) {
                        status = ixgbe_read_iosf_sb_reg_x550(hw,
                                IXGBE_KRM_LINK_CTRL_1(hw->bus.lan_id),
                                IXGBE_SB_IOSF_TARGET_KR_PHY, &link_reg);
@@ -764,7 +764,6 @@ enum ixgbe_media_type ixgbe_get_media_type_X550em(struct ixgbe_hw *hw)
 
        /* Detect if there is a copper PHY attached. */
        switch (hw->device_id) {
-       case IXGBE_DEV_ID_X550EM_X:
        case IXGBE_DEV_ID_X550EM_X_KR:
        case IXGBE_DEV_ID_X550EM_X_KX4:
                media_type = ixgbe_media_type_backplane;
@@ -772,6 +771,10 @@ enum ixgbe_media_type ixgbe_get_media_type_X550em(struct ixgbe_hw *hw)
        case IXGBE_DEV_ID_X550EM_X_SFP:
                media_type = ixgbe_media_type_fiber;
                break;
+       case IXGBE_DEV_ID_X550EM_X_1G_T:
+       case IXGBE_DEV_ID_X550EM_X_10G_T:
+               media_type = ixgbe_media_type_copper;
+               break;
        default:
                media_type = ixgbe_media_type_unknown;
                break;
@@ -1499,10 +1502,10 @@ s32 ixgbe_read_ee_hostif_data_X550(struct ixgbe_hw *hw, u16 offset,
        struct ixgbe_hic_read_shadow_ram buffer;
 
        DEBUGFUNC("ixgbe_read_ee_hostif_data_X550");
-       buffer.hdr.cmd = FW_READ_SHADOW_RAM_CMD;
-       buffer.hdr.buf_len1 = 0;
-       buffer.hdr.buf_len2 = FW_READ_SHADOW_RAM_LEN;
-       buffer.hdr.checksum = FW_DEFAULT_CHECKSUM;
+       buffer.hdr.req.cmd = FW_READ_SHADOW_RAM_CMD;
+       buffer.hdr.req.buf_lenh = 0;
+       buffer.hdr.req.buf_lenl = FW_READ_SHADOW_RAM_LEN;
+       buffer.hdr.req.checksum = FW_DEFAULT_CHECKSUM;
 
        /* convert offset from words to bytes */
        buffer.address = IXGBE_CPU_TO_BE32(offset * 2);
@@ -1579,10 +1582,10 @@ s32 ixgbe_read_ee_hostif_buffer_X550(struct ixgbe_hw *hw,
                else
                        words_to_read = words;
 
-               buffer.hdr.cmd = FW_READ_SHADOW_RAM_CMD;
-               buffer.hdr.buf_len1 = 0;
-               buffer.hdr.buf_len2 = FW_READ_SHADOW_RAM_LEN;
-               buffer.hdr.checksum = FW_DEFAULT_CHECKSUM;
+               buffer.hdr.req.cmd = FW_READ_SHADOW_RAM_CMD;
+               buffer.hdr.req.buf_lenh = 0;
+               buffer.hdr.req.buf_lenl = FW_READ_SHADOW_RAM_LEN;
+               buffer.hdr.req.checksum = FW_DEFAULT_CHECKSUM;
 
                /* convert offset from words to bytes */
                buffer.address = IXGBE_CPU_TO_BE32((offset + current_word) * 2);
@@ -1634,10 +1637,10 @@ s32 ixgbe_write_ee_hostif_data_X550(struct ixgbe_hw *hw, u16 offset,
 
        DEBUGFUNC("ixgbe_write_ee_hostif_data_X550");
 
-       buffer.hdr.cmd = FW_WRITE_SHADOW_RAM_CMD;
-       buffer.hdr.buf_len1 = 0;
-       buffer.hdr.buf_len2 = FW_WRITE_SHADOW_RAM_LEN;
-       buffer.hdr.checksum = FW_DEFAULT_CHECKSUM;
+       buffer.hdr.req.cmd = FW_WRITE_SHADOW_RAM_CMD;
+       buffer.hdr.req.buf_lenh = 0;
+       buffer.hdr.req.buf_lenl = FW_WRITE_SHADOW_RAM_LEN;
+       buffer.hdr.req.checksum = FW_DEFAULT_CHECKSUM;
 
         /* one word */
        buffer.length = IXGBE_CPU_TO_BE16(sizeof(u16));
@@ -1984,14 +1987,14 @@ s32 ixgbe_update_eeprom_checksum_X550(struct ixgbe_hw *hw)
 s32 ixgbe_update_flash_X550(struct ixgbe_hw *hw)
 {
        s32 status = IXGBE_SUCCESS;
-       struct ixgbe_hic_hdr2 buffer;
+       union ixgbe_hic_hdr2 buffer;
 
        DEBUGFUNC("ixgbe_update_flash_X550");
 
-       buffer.cmd = FW_SHADOW_RAM_DUMP_CMD;
-       buffer.buf_len1 = 0;
-       buffer.buf_len2 = FW_SHADOW_RAM_DUMP_LEN;
-       buffer.checksum = FW_DEFAULT_CHECKSUM;
+       buffer.req.cmd = FW_SHADOW_RAM_DUMP_CMD;
+       buffer.req.buf_lenh = 0;
+       buffer.req.buf_lenl = FW_SHADOW_RAM_DUMP_LEN;
+       buffer.req.checksum = FW_DEFAULT_CHECKSUM;
 
        status = ixgbe_host_interface_command(hw, (u32 *)&buffer,
                                              sizeof(buffer), false);