char *buf, int len)
 {
        char data_str[ARRAY_SIZE(rx_queue_info_items)][HNS3_DBG_DATA_STR_LEN];
-       struct hnae3_ae_dev *ae_dev = pci_get_drvdata(h->pdev);
+       struct hnae3_ae_dev *ae_dev = hns3_get_ae_dev(h);
        char *result[ARRAY_SIZE(rx_queue_info_items)];
        struct hns3_nic_priv *priv = h->priv;
        char content[HNS3_DBG_INFO_LEN];
                                  char *buf, int len)
 {
        char data_str[ARRAY_SIZE(tx_queue_info_items)][HNS3_DBG_DATA_STR_LEN];
-       struct hnae3_ae_dev *ae_dev = pci_get_drvdata(h->pdev);
+       struct hnae3_ae_dev *ae_dev = hns3_get_ae_dev(h);
        char *result[ARRAY_SIZE(tx_queue_info_items)];
        struct hns3_nic_priv *priv = h->priv;
        char content[HNS3_DBG_INFO_LEN];
 static void
 hns3_dbg_dev_caps(struct hnae3_handle *h, char *buf, int len, int *pos)
 {
-       struct hnae3_ae_dev *ae_dev = pci_get_drvdata(h->pdev);
+       struct hnae3_ae_dev *ae_dev = hns3_get_ae_dev(h);
        unsigned long *caps = ae_dev->caps;
        u32 i, state;
 
 
 int hns3_dbg_init(struct hnae3_handle *handle)
 {
-       struct hnae3_ae_dev *ae_dev = pci_get_drvdata(handle->pdev);
+       struct hnae3_ae_dev *ae_dev = hns3_get_ae_dev(handle);
        const char *name = pci_name(handle->pdev);
        int ret;
        u32 i;
 
 static void hns3_vector_coalesce_init(struct hns3_enet_tqp_vector *tqp_vector,
                                      struct hns3_nic_priv *priv)
 {
-       struct hnae3_ae_dev *ae_dev = pci_get_drvdata(priv->ae_handle->pdev);
        struct hns3_enet_coalesce *tx_coal = &tqp_vector->tx_group.coal;
        struct hns3_enet_coalesce *rx_coal = &tqp_vector->rx_group.coal;
+       struct hnae3_ae_dev *ae_dev = hns3_get_ae_dev(priv->ae_handle);
        struct hns3_enet_coalesce *ptx_coal = &priv->tx_coal;
        struct hns3_enet_coalesce *prx_coal = &priv->rx_coal;
 
 static bool hns3_tunnel_csum_bug(struct sk_buff *skb)
 {
        struct hns3_nic_priv *priv = netdev_priv(skb->dev);
-       struct hnae3_ae_dev *ae_dev = pci_get_drvdata(priv->ae_handle->pdev);
+       struct hnae3_ae_dev *ae_dev = hns3_get_ae_dev(priv->ae_handle);
        union l4_hdr_info l4;
 
        /* device version above V3(include V3), the hardware can
         * VLAN enabled, only one VLAN header is allowed in skb, otherwise it
         * will cause RAS error.
         */
-       ae_dev = pci_get_drvdata(handle->pdev);
+       ae_dev = hns3_get_ae_dev(handle);
        if (unlikely(skb_vlan_tagged_multi(skb) &&
                     ae_dev->dev_version <= HNAE3_DEVICE_VERSION_V2 &&
                     handle->port_base_vlan_state ==
 
 static void hns3_nic_init_coal_cfg(struct hns3_nic_priv *priv)
 {
-       struct hnae3_ae_dev *ae_dev = pci_get_drvdata(priv->ae_handle->pdev);
+       struct hnae3_ae_dev *ae_dev = hns3_get_ae_dev(priv->ae_handle);
        struct hns3_enet_coalesce *tx_coal = &priv->tx_coal;
        struct hns3_enet_coalesce *rx_coal = &priv->rx_coal;
 
 static void hns3_set_cq_period_mode(struct hns3_nic_priv *priv,
                                    enum dim_cq_period_mode mode, bool is_tx)
 {
-       struct hnae3_ae_dev *ae_dev = pci_get_drvdata(priv->ae_handle->pdev);
+       struct hnae3_ae_dev *ae_dev = hns3_get_ae_dev(priv->ae_handle);
        struct hnae3_handle *handle = priv->ae_handle;
        int i;
 
 
 static void hns3_state_init(struct hnae3_handle *handle)
 {
-       struct hnae3_ae_dev *ae_dev = pci_get_drvdata(handle->pdev);
+       struct hnae3_ae_dev *ae_dev = hns3_get_ae_dev(handle);
        struct net_device *netdev = handle->kinfo.netdev;
        struct hns3_nic_priv *priv = netdev_priv(netdev);
 
 
 static int hns3_lp_setup(struct net_device *ndev, enum hnae3_loop loop, bool en)
 {
        struct hnae3_handle *h = hns3_get_handle(ndev);
-       struct hnae3_ae_dev *ae_dev = pci_get_drvdata(h->pdev);
+       struct hnae3_ae_dev *ae_dev = hns3_get_ae_dev(h);
        int ret;
 
        if (!h->ae_algo->ops->set_loopback ||
         * the purpose of mac or serdes selftest.
         */
        handle = hns3_get_handle(ndev);
-       ae_dev = pci_get_drvdata(handle->pdev);
+       ae_dev = hns3_get_ae_dev(handle);
        if (ae_dev->dev_version < HNAE3_DEVICE_VERSION_V2)
                ethh->h_dest[5] += HNS3_NIC_LB_DST_MAC_ADDR;
        eth_zero_addr(ethh->h_source);
                                struct ethtool_pauseparam *param)
 {
        struct hnae3_handle *h = hns3_get_handle(netdev);
-       struct hnae3_ae_dev *ae_dev = pci_get_drvdata(h->pdev);
+       struct hnae3_ae_dev *ae_dev = hns3_get_ae_dev(h);
 
        if (!test_bit(HNAE3_DEV_SUPPORT_PAUSE_B, ae_dev->caps))
                return;
                               struct ethtool_pauseparam *param)
 {
        struct hnae3_handle *h = hns3_get_handle(netdev);
-       struct hnae3_ae_dev *ae_dev = pci_get_drvdata(h->pdev);
+       struct hnae3_ae_dev *ae_dev = hns3_get_ae_dev(h);
 
        if (!test_bit(HNAE3_DEV_SUPPORT_PAUSE_B, ae_dev->caps))
                return -EOPNOTSUPP;
                                   struct ethtool_link_ksettings *cmd)
 {
        struct hnae3_handle *h = hns3_get_handle(netdev);
-       struct hnae3_ae_dev *ae_dev = pci_get_drvdata(h->pdev);
+       struct hnae3_ae_dev *ae_dev = hns3_get_ae_dev(h);
        const struct hnae3_ae_ops *ops;
        u8 module_type;
        u8 media_type;
                                   const struct ethtool_link_ksettings *cmd)
 {
        struct hnae3_handle *handle = hns3_get_handle(netdev);
-       struct hnae3_ae_dev *ae_dev = pci_get_drvdata(handle->pdev);
+       struct hnae3_ae_dev *ae_dev = hns3_get_ae_dev(handle);
        const struct hnae3_ae_ops *ops = handle->ae_algo->ops;
        int ret;
 
 static u32 hns3_get_rss_indir_size(struct net_device *netdev)
 {
        struct hnae3_handle *h = hns3_get_handle(netdev);
-       struct hnae3_ae_dev *ae_dev = pci_get_drvdata(h->pdev);
+       struct hnae3_ae_dev *ae_dev = hns3_get_ae_dev(h);
 
        return ae_dev->dev_specs.rss_ind_tbl_size;
 }
                        struct netlink_ext_ack *extack)
 {
        struct hnae3_handle *h = hns3_get_handle(netdev);
-       struct hnae3_ae_dev *ae_dev = pci_get_drvdata(h->pdev);
+       struct hnae3_ae_dev *ae_dev = hns3_get_ae_dev(h);
 
        if (!h->ae_algo->ops->set_rss)
                return -EOPNOTSUPP;
 {
        enum hnae3_reset_type rst_type = HNAE3_NONE_RESET;
        struct hnae3_handle *h = hns3_get_handle(netdev);
-       struct hnae3_ae_dev *ae_dev = pci_get_drvdata(h->pdev);
+       struct hnae3_ae_dev *ae_dev = hns3_get_ae_dev(h);
        const struct hnae3_ae_ops *ops = h->ae_algo->ops;
        const struct hns3_reset_type_map *rst_type_map;
        enum ethtool_reset_flags rst_flags;
 {
        struct hns3_nic_priv *priv = netdev_priv(netdev);
        struct hnae3_handle *h = hns3_get_handle(netdev);
-       struct hnae3_ae_dev *ae_dev = pci_get_drvdata(h->pdev);
+       struct hnae3_ae_dev *ae_dev = hns3_get_ae_dev(h);
        u32 old_state = test_bit(HNS3_NIC_STATE_TX_PUSH_ENABLE, &priv->state);
 
        if (!test_bit(HNAE3_DEV_SUPPORT_TX_PUSH_B, ae_dev->caps) && tx_push)
                                       struct ethtool_coalesce *cmd)
 {
        struct hnae3_handle *handle = hns3_get_handle(netdev);
-       struct hnae3_ae_dev *ae_dev = pci_get_drvdata(handle->pdev);
+       struct hnae3_ae_dev *ae_dev = hns3_get_ae_dev(handle);
        u32 rx_gl, tx_gl;
 
        if (cmd->rx_coalesce_usecs > ae_dev->dev_specs.max_int_gl) {
                                        struct ethtool_coalesce *cmd)
 {
        struct hnae3_handle *handle = hns3_get_handle(netdev);
-       struct hnae3_ae_dev *ae_dev = pci_get_drvdata(handle->pdev);
+       struct hnae3_ae_dev *ae_dev = hns3_get_ae_dev(handle);
 
        if ((cmd->tx_max_coalesced_frames || cmd->rx_max_coalesced_frames) &&
            !ae_dev->dev_specs.int_ql_max) {
                              struct kernel_ethtool_coalesce *kernel_coal)
 {
        struct hnae3_handle *handle = hns3_get_handle(netdev);
-       struct hnae3_ae_dev *ae_dev = pci_get_drvdata(handle->pdev);
+       struct hnae3_ae_dev *ae_dev = hns3_get_ae_dev(handle);
 
        if ((kernel_coal->use_cqe_mode_tx || kernel_coal->use_cqe_mode_rx) &&
            !hnae3_ae_dev_cq_supported(ae_dev)) {
                               struct ethtool_fec_stats *fec_stats)
 {
        struct hnae3_handle *handle = hns3_get_handle(netdev);
-       struct hnae3_ae_dev *ae_dev = pci_get_drvdata(handle->pdev);
+       struct hnae3_ae_dev *ae_dev = hns3_get_ae_dev(handle);
        const struct hnae3_ae_ops *ops = handle->ae_algo->ops;
 
        if (!hnae3_ae_dev_fec_stats_supported(ae_dev) || !ops->get_fec_stats)
                             struct ethtool_fecparam *fec)
 {
        struct hnae3_handle *handle = hns3_get_handle(netdev);
-       struct hnae3_ae_dev *ae_dev = pci_get_drvdata(handle->pdev);
+       struct hnae3_ae_dev *ae_dev = hns3_get_ae_dev(handle);
        const struct hnae3_ae_ops *ops = handle->ae_algo->ops;
        u8 fec_ability;
        u8 fec_mode;
                             struct ethtool_fecparam *fec)
 {
        struct hnae3_handle *handle = hns3_get_handle(netdev);
-       struct hnae3_ae_dev *ae_dev = pci_get_drvdata(handle->pdev);
+       struct hnae3_ae_dev *ae_dev = hns3_get_ae_dev(handle);
        const struct hnae3_ae_ops *ops = handle->ae_algo->ops;
        u32 fec_mode;
 
 #define HNS3_SFF_8636_V1_3 0x03
 
        struct hnae3_handle *handle = hns3_get_handle(netdev);
-       struct hnae3_ae_dev *ae_dev = pci_get_drvdata(handle->pdev);
+       struct hnae3_ae_dev *ae_dev = hns3_get_ae_dev(handle);
        const struct hnae3_ae_ops *ops = handle->ae_algo->ops;
        struct hns3_sfp_type sfp_type;
        int ret;
                                  struct ethtool_eeprom *ee, u8 *data)
 {
        struct hnae3_handle *handle = hns3_get_handle(netdev);
-       struct hnae3_ae_dev *ae_dev = pci_get_drvdata(handle->pdev);
+       struct hnae3_ae_dev *ae_dev = hns3_get_ae_dev(handle);
        const struct hnae3_ae_ops *ops = handle->ae_algo->ops;
 
        if (ae_dev->dev_version < HNAE3_DEVICE_VERSION_V2 ||