static const struct net_device_ops iavf_netdev_ops;
 struct workqueue_struct *iavf_wq;
 
+/**
+ * iavf_pdev_to_adapter - go from pci_dev to adapter
+ * @pdev: pci_dev pointer
+ */
+static struct iavf_adapter *iavf_pdev_to_adapter(struct pci_dev *pdev)
+{
+       return netdev_priv(pci_get_drvdata(pdev));
+}
+
 /**
  * iavf_allocate_dma_mem_d - OS specific memory alloc for shared code
  * @hw:   pointer to the HW structure
  **/
 static void iavf_shutdown(struct pci_dev *pdev)
 {
-       struct net_device *netdev = pci_get_drvdata(pdev);
-       struct iavf_adapter *adapter = netdev_priv(netdev);
+       struct iavf_adapter *adapter = iavf_pdev_to_adapter(pdev);
+       struct net_device *netdev = adapter->netdev;
 
        netif_device_detach(netdev);
 
 static int __maybe_unused iavf_resume(struct device *dev_d)
 {
        struct pci_dev *pdev = to_pci_dev(dev_d);
-       struct net_device *netdev = pci_get_drvdata(pdev);
-       struct iavf_adapter *adapter = netdev_priv(netdev);
+       struct iavf_adapter *adapter;
        u32 err;
 
+       adapter = iavf_pdev_to_adapter(pdev);
+
        pci_set_master(pdev);
 
        rtnl_lock();
 
        queue_work(iavf_wq, &adapter->reset_task);
 
-       netif_device_attach(netdev);
+       netif_device_attach(adapter->netdev);
 
        return err;
 }
  **/
 static void iavf_remove(struct pci_dev *pdev)
 {
-       struct net_device *netdev = pci_get_drvdata(pdev);
-       struct iavf_adapter *adapter = netdev_priv(netdev);
+       struct iavf_adapter *adapter = iavf_pdev_to_adapter(pdev);
+       struct net_device *netdev = adapter->netdev;
        struct iavf_fdir_fltr *fdir, *fdirtmp;
        struct iavf_vlan_filter *vlf, *vlftmp;
        struct iavf_adv_rss *rss, *rsstmp;