HNAE_PORT_DEBUG
 };
 
+/* mac media type */
+enum hnae_media_type {
+       HNAE_MEDIA_TYPE_UNKNOWN = 0,
+       HNAE_MEDIA_TYPE_FIBER,
+       HNAE_MEDIA_TYPE_COPPER,
+       HNAE_MEDIA_TYPE_BACKPLANE,
+};
+
 /* This struct defines the operation on the handle.
  *
  * get_handle(): (mandatory)
        u32 eport_id;
        u32 dport_id;   /* v2 tx bd should fill the dport_id */
        enum hnae_port_type port_type;
+       enum hnae_media_type media_type;
        struct list_head node;    /* list to hnae_ae_dev->handle_list */
        struct hnae_buf_ops *bops; /* operation for the buffer */
        struct hnae_queue **qs;  /* array base of all queues */
 
        ae_handle->phy_dev = vf_cb->mac_cb->phy_dev;
        ae_handle->if_support = vf_cb->mac_cb->if_support;
        ae_handle->port_type = vf_cb->mac_cb->mac_type;
+       ae_handle->media_type = vf_cb->mac_cb->media_type;
        ae_handle->dport_id = port_id;
 
        return ae_handle;
 
                        mac_cb->mac_id, addr);
 }
 
+#define MAC_MEDIA_TYPE_MAX_LEN         16
+
+static const struct {
+       enum hnae_media_type value;
+       const char *name;
+} media_type_defs[] = {
+       {HNAE_MEDIA_TYPE_UNKNOWN,       "unknown" },
+       {HNAE_MEDIA_TYPE_FIBER,         "fiber" },
+       {HNAE_MEDIA_TYPE_COPPER,        "copper" },
+       {HNAE_MEDIA_TYPE_BACKPLANE,     "backplane" },
+};
+
 /**
  *hns_mac_get_info  - get mac information from device node
  *@mac_cb: mac device
        struct device_node *np;
        struct regmap *syscon;
        struct of_phandle_args cpld_args;
+       const char *media_type;
+       u32 i;
        u32 ret;
 
        mac_cb->link = false;
        mac_cb->half_duplex = false;
+       mac_cb->media_type = HNAE_MEDIA_TYPE_UNKNOWN;
        mac_cb->speed = mac_phy_to_speed[mac_cb->phy_if];
        mac_cb->max_speed = mac_cb->speed;
 
                        mac_cb->mac_id);
        }
 
+       if (!fwnode_property_read_string(mac_cb->fw_port, "media-type",
+                                        &media_type)) {
+               for (i = 0; i < ARRAY_SIZE(media_type_defs); i++) {
+                       if (!strncmp(media_type_defs[i].name, media_type,
+                                    MAC_MEDIA_TYPE_MAX_LEN)) {
+                               mac_cb->media_type = media_type_defs[i].value;
+                               break;
+                       }
+               }
+       }
+
        return 0;
 }
 
 
        u64 txpkt_for_led;
        u64 rxpkt_for_led;
        enum hnae_port_type mac_type;
+       enum hnae_media_type media_type;
        phy_interface_t phy_if;
        enum hnae_loop loop_mode;
 
 
                cmd->advertising |= ADVERTISED_10000baseKR_Full;
        }
 
-       if (h->port_type == HNAE_PORT_SERVICE) {
+       switch (h->media_type) {
+       case HNAE_MEDIA_TYPE_FIBER:
                cmd->port = PORT_FIBRE;
-               cmd->supported |= SUPPORTED_Pause;
-       } else {
+               break;
+       case HNAE_MEDIA_TYPE_COPPER:
                cmd->port = PORT_TP;
+               break;
+       case HNAE_MEDIA_TYPE_UNKNOWN:
+       default:
+               break;
        }
 
+       if (!(AE_IS_VER1(priv->enet_ver) && h->port_type == HNAE_PORT_DEBUG))
+               cmd->supported |= SUPPORTED_Pause;
+
        cmd->transceiver = XCVR_EXTERNAL;
        cmd->mdio_support = (ETH_MDIO_SUPPORTS_C45 | ETH_MDIO_SUPPORTS_C22);
        hns_get_mdix_mode(net_dev, cmd);