From 188519459f89f430798906860ccb62e6177bd659 Mon Sep 17 00:00:00 2001 From: Bjarne von Horn Date: Fri, 26 Jan 2024 16:03:58 +0100 Subject: [PATCH] WARN_ONCE on querying ecdev before ecdev_offer for igb --- devices/igb/Kbuild.in | 4 ++ devices/igb/igb-5.14-ethercat.h | 11 +++- devices/igb/igb-5.15-ethercat.h | 11 +++- devices/igb/igb-6.1-ethercat.h | 11 +++- devices/igb/igb_main-5.14-ethercat.c | 92 +++++++++++++------------- devices/igb/igb_main-5.15-ethercat.c | 96 ++++++++++++++-------------- devices/igb/igb_main-6.1-ethercat.c | 94 ++++++++++++++------------- 7 files changed, 178 insertions(+), 141 deletions(-) diff --git a/devices/igb/Kbuild.in b/devices/igb/Kbuild.in index 65c1e58d..3be67397 100644 --- a/devices/igb/Kbuild.in +++ b/devices/igb/Kbuild.in @@ -37,6 +37,10 @@ REV := $(shell if test -s $(TOPDIR)/revision; then \ ifeq (@ENABLE_IGB@,1) obj-m += ec_igb.o +ifeq (@ENABLE_DRIVER_RESOURCE_VERIFYING@,1) + ccflags-y := -DEC_ENABLE_DRIVER_RESOURCE_VERIFYING +endif + ec_igb-objs := \ e1000_82575-@KERNEL_IGB@-ethercat.o \ e1000_i210-@KERNEL_IGB@-ethercat.o \ diff --git a/devices/igb/igb-5.14-ethercat.h b/devices/igb/igb-5.14-ethercat.h index 59392816..4170d7d4 100644 --- a/devices/igb/igb-5.14-ethercat.h +++ b/devices/igb/igb-5.14-ethercat.h @@ -670,11 +670,20 @@ struct igb_adapter { struct vf_mac_filter *vf_mac_list; /* EtherCAT device variables */ - ec_device_t *ecdev; + ec_device_t *ecdev_; unsigned long ec_watchdog_jiffies; struct irq_work ec_watchdog_kicker; + bool ecdev_initialized; }; +static inline ec_device_t *get_ecdev(struct igb_adapter *adapter) +{ +#ifdef EC_ENABLE_DRIVER_RESOURCE_VERIFYING + WARN_ON(!adapter->ecdev_initialized); +#endif + return adapter->ecdev_; +} + /* flags controlling PTP/1588 function */ #define IGB_PTP_ENABLED BIT(0) #define IGB_PTP_OVERFLOW_CHECK BIT(1) diff --git a/devices/igb/igb-5.15-ethercat.h b/devices/igb/igb-5.15-ethercat.h index 02c798fe..b28929e8 100644 --- a/devices/igb/igb-5.15-ethercat.h +++ b/devices/igb/igb-5.15-ethercat.h @@ -670,11 +670,20 @@ struct igb_adapter { struct vf_mac_filter *vf_mac_list; /* EtherCAT device variables */ - ec_device_t *ecdev; + ec_device_t *ecdev_; unsigned long ec_watchdog_jiffies; struct irq_work ec_watchdog_kicker; + bool ecdev_initialized; }; +static inline ec_device_t *get_ecdev(struct igb_adapter *adapter) +{ +#ifdef EC_ENABLE_DRIVER_RESOURCE_VERIFYING + WARN_ON(!adapter->ecdev_initialized); +#endif + return adapter->ecdev_; +} + /* flags controlling PTP/1588 function */ #define IGB_PTP_ENABLED BIT(0) #define IGB_PTP_OVERFLOW_CHECK BIT(1) diff --git a/devices/igb/igb-6.1-ethercat.h b/devices/igb/igb-6.1-ethercat.h index dbdf917d..8ed16222 100644 --- a/devices/igb/igb-6.1-ethercat.h +++ b/devices/igb/igb-6.1-ethercat.h @@ -672,11 +672,20 @@ struct igb_adapter { spinlock_t vfs_lock; /* EtherCAT device variables */ - ec_device_t *ecdev; + ec_device_t *ecdev_; unsigned long ec_watchdog_jiffies; struct irq_work ec_watchdog_kicker; + bool ecdev_initialized; }; +static inline ec_device_t *get_ecdev(struct igb_adapter *adapter) +{ +#ifdef EC_ENABLE_DRIVER_RESOURCE_VERIFYING + WARN_ON(!adapter->ecdev_initialized); +#endif + return adapter->ecdev_; +} + /* flags controlling PTP/1588 function */ #define IGB_PTP_ENABLED BIT(0) #define IGB_PTP_OVERFLOW_CHECK BIT(1) diff --git a/devices/igb/igb_main-5.14-ethercat.c b/devices/igb/igb_main-5.14-ethercat.c index c012e353..fd4a4008 100644 --- a/devices/igb/igb_main-5.14-ethercat.c +++ b/devices/igb/igb_main-5.14-ethercat.c @@ -946,7 +946,7 @@ static int igb_request_msix(struct igb_adapter *adapter) struct net_device *netdev = adapter->netdev; int i, err = 0, vector = 0, free_vector = 0; - if (adapter->ecdev) { + if (get_ecdev(adapter)) { return 0; } @@ -1047,7 +1047,7 @@ static void igb_reset_q_vector(struct igb_adapter *adapter, int v_idx) if (q_vector->rx.ring) adapter->rx_ring[q_vector->rx.ring->queue_index] = NULL; - if (!adapter->ecdev) + if (!get_ecdev(adapter)) netif_napi_del(&q_vector->napi); } @@ -1229,7 +1229,7 @@ static int igb_alloc_q_vector(struct igb_adapter *adapter, return -ENOMEM; /* initialize NAPI */ - if (!adapter->ecdev) { + if (get_ecdev(adapter)) { netif_napi_add(adapter->netdev, &q_vector->napi, igb_poll, 64); } @@ -1450,7 +1450,7 @@ static int igb_request_irq(struct igb_adapter *adapter) igb_assign_vector(adapter->q_vector[0], 0); - if (!adapter->ecdev && adapter->flags & IGB_FLAG_HAS_MSI) { + if (!get_ecdev(adapter) && adapter->flags & IGB_FLAG_HAS_MSI) { err = request_irq(pdev->irq, igb_intr_msi, 0, netdev->name, adapter); if (!err) @@ -1461,7 +1461,7 @@ static int igb_request_irq(struct igb_adapter *adapter) adapter->flags &= ~IGB_FLAG_HAS_MSI; } - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { err = request_irq(pdev->irq, igb_intr, IRQF_SHARED, netdev->name, adapter); @@ -1476,7 +1476,7 @@ request_done: static void igb_free_irq(struct igb_adapter *adapter) { - if (adapter->ecdev) + if (get_ecdev(adapter)) return; if (adapter->flags & IGB_FLAG_HAS_MSIX) { int vector = 0, i; @@ -1516,7 +1516,7 @@ static void igb_irq_disable(struct igb_adapter *adapter) wr32(E1000_IMC, ~0); wrfl(); - if (adapter->ecdev) { + if (get_ecdev(adapter)) { /* skip synchronizing IRQs */ return; } @@ -1538,7 +1538,7 @@ static void igb_irq_enable(struct igb_adapter *adapter) { struct e1000_hw *hw = &adapter->hw; - if (adapter->ecdev) + if (get_ecdev(adapter)) return; if (adapter->flags & IGB_FLAG_HAS_MSIX) { @@ -2156,7 +2156,7 @@ int igb_up(struct igb_adapter *adapter) clear_bit(__IGB_DOWN, &adapter->state); - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { for (i = 0; i < adapter->num_q_vectors; i++) napi_enable(&(adapter->q_vector[i]->napi)); } @@ -2179,7 +2179,7 @@ int igb_up(struct igb_adapter *adapter) wr32(E1000_CTRL_EXT, reg_data); } - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { netif_tx_start_all_queues(adapter->netdev); /* start the watchdog. */ @@ -2213,7 +2213,7 @@ void igb_down(struct igb_adapter *adapter) igb_nfc_filter_exit(adapter); - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { netif_carrier_off(netdev); netif_tx_stop_all_queues(netdev); } @@ -2231,7 +2231,7 @@ void igb_down(struct igb_adapter *adapter) adapter->flags &= ~IGB_FLAG_NEED_LINK_UPDATE; for (i = 0; i < adapter->num_q_vectors; i++) { - if (!adapter->ecdev && adapter->q_vector[i]) { + if (!get_ecdev(adapter) && adapter->q_vector[i]) { napi_synchronize(&adapter->q_vector[i]->napi); napi_disable(&adapter->q_vector[i]->napi); } @@ -2454,7 +2454,7 @@ void igb_reset(struct igb_adapter *adapter) break; } } - if (!adapter->ecdev && !netif_running(adapter->netdev)) + if (!get_ecdev(adapter) && !netif_running(adapter->netdev)) igb_power_down_link(adapter); igb_update_mng_vlan(adapter); @@ -2918,7 +2918,7 @@ static int igb_xdp_setup(struct net_device *dev, struct netdev_bpf *bpf) static int igb_xdp(struct net_device *dev, struct netdev_bpf *xdp) { struct igb_adapter *adapter = netdev_priv(dev); - if (adapter->ecdev) + if (get_ecdev(adapter)) return -EBUSY; @@ -2987,7 +2987,7 @@ static int igb_xdp_xmit(struct net_device *dev, int n, int nxmit = 0; int i; - if (adapter->ecdev) + if (get_ecdev(adapter)) return -EBUSY; if (unlikely(test_bit(__IGB_DOWN, &adapter->state))) @@ -3289,6 +3289,7 @@ static int igb_probe(struct pci_dev *pdev, const struct pci_device_id *ent) adapter = netdev_priv(netdev); adapter->netdev = netdev; adapter->pdev = pdev; + adapter->ecdev_initialized = 0; hw = &adapter->hw; hw->back = adapter; adapter->msg_enable = netif_msg_init(debug, DEFAULT_MSG_ENABLE); @@ -3576,12 +3577,13 @@ static int igb_probe(struct pci_dev *pdev, const struct pci_device_id *ent) igb_get_hw_control(adapter); - adapter->ecdev = ecdev_offer(netdev, ec_poll, THIS_MODULE); - if (adapter->ecdev) { + adapter->ecdev_ = ecdev_offer(netdev, ec_poll, THIS_MODULE); + adapter->ecdev_initialized = 1; + if (get_ecdev(adapter)) { init_irq_work(&adapter->ec_watchdog_kicker, ec_kick_watchdog); - err = ecdev_open(adapter->ecdev); + err = ecdev_open(get_ecdev(adapter)); if (err) { - ecdev_withdraw(adapter->ecdev); + ecdev_withdraw(get_ecdev(adapter)); goto err_register; } adapter->ec_watchdog_jiffies = jiffies; @@ -3881,10 +3883,10 @@ static void igb_remove(struct pci_dev *pdev) struct igb_adapter *adapter = netdev_priv(netdev); struct e1000_hw *hw = &adapter->hw; - if (adapter->ecdev) { - ecdev_close(adapter->ecdev); + if (get_ecdev(adapter)) { + ecdev_close(get_ecdev(adapter)); irq_work_sync(&adapter->ec_watchdog_kicker); - ecdev_withdraw(adapter->ecdev); + ecdev_withdraw(get_ecdev(adapter)); } pm_runtime_get_noresume(&pdev->dev); @@ -3921,7 +3923,7 @@ static void igb_remove(struct pci_dev *pdev) igb_disable_sriov(pdev); #endif - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { unregister_netdev(netdev); } @@ -4164,8 +4166,8 @@ static int __igb_open(struct net_device *netdev, bool resuming) if (!resuming) pm_runtime_get_sync(&pdev->dev); - if (adapter->ecdev) { - ecdev_set_link(adapter->ecdev, 0); + if (get_ecdev(adapter)) { + ecdev_set_link(get_ecdev(adapter), 0); } else { netif_carrier_off(netdev); } @@ -4193,7 +4195,7 @@ static int __igb_open(struct net_device *netdev, bool resuming) if (err) goto err_req_irq; - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { /* Notify the stack of the actual queue counts. */ err = netif_set_real_num_tx_queues(adapter->netdev, adapter->num_tx_queues); @@ -4209,7 +4211,7 @@ static int __igb_open(struct net_device *netdev, bool resuming) /* From here on the code is the same as igb_up() */ clear_bit(__IGB_DOWN, &adapter->state); - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { for (i = 0; i < adapter->num_q_vectors; i++) napi_enable(&(adapter->q_vector[i]->napi)); } @@ -4228,14 +4230,14 @@ static int __igb_open(struct net_device *netdev, bool resuming) wr32(E1000_CTRL_EXT, reg_data); } - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { netif_tx_start_all_queues(netdev); } if (!resuming) pm_runtime_put(&pdev->dev); - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { /* start the watchdog. */ hw->mac.get_link_status = 1; schedule_work(&adapter->watchdog_task); @@ -4484,7 +4486,7 @@ int igb_setup_rx_resources(struct igb_ring *rx_ring) rx_ring->next_to_clean = 0; rx_ring->next_to_use = 0; - if (!adapter->ecdev) + if (!get_ecdev(adapter)) rx_ring->xdp_prog = adapter->xdp_prog; /* XDP RX-queue info */ @@ -4795,7 +4797,7 @@ void igb_configure_rx_ring(struct igb_adapter *adapter, int reg_idx = ring->reg_idx; u32 rxdctl = 0; - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { xdp_rxq_info_unreg_mem_model(&ring->xdp_rxq); WARN_ON(xdp_rxq_info_reg_mem_model(&ring->xdp_rxq, MEM_TYPE_PAGE_SHARED, NULL)); @@ -4935,7 +4937,7 @@ static void igb_clean_tx_ring(struct igb_ring *tx_ring) /* Free all the Tx ring sk_buffs */ struct igb_adapter *adapter = netdev_priv(tx_ring->netdev); - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { dev_kfree_skb_any(tx_buffer->skb); } @@ -6206,7 +6208,7 @@ static int __igb_maybe_stop_tx(struct igb_ring *tx_ring, const u16 size) struct net_device *netdev = tx_ring->netdev; struct igb_adapter *adapter = netdev_priv(netdev); - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { netif_stop_subqueue(netdev, tx_ring->queue_index); } @@ -6223,7 +6225,7 @@ static int __igb_maybe_stop_tx(struct igb_ring *tx_ring, const u16 size) return -EBUSY; /* A reprieve! */ - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { netif_wake_subqueue(netdev, tx_ring->queue_index); } @@ -6379,7 +6381,7 @@ dma_error: DMA_TO_DEVICE); dma_unmap_len_set(tx_buffer, len, 0); - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { dev_kfree_skb_any(tx_buffer->skb); tx_buffer->skb = NULL; } @@ -6497,7 +6499,7 @@ netdev_tx_t igb_xmit_frame_ring(struct sk_buff *skb, first->bytecount = skb->len; first->gso_segs = 1; - if (unlikely(!adapter->ecdev && + if (unlikely(!get_ecdev(adapter) && skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP)) { if (adapter->tstamp_config.tx_type == HWTSTAMP_TX_ON && @@ -6536,12 +6538,12 @@ netdev_tx_t igb_xmit_frame_ring(struct sk_buff *skb, return NETDEV_TX_OK; out_drop: - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { dev_kfree_skb_any(first->skb); first->skb = NULL; } cleanup_tx_tstamp: - if (unlikely(!adapter->ecdev && tx_flags & IGB_TX_FLAGS_TSTAMP)) { + if (unlikely(!get_ecdev(adapter) && tx_flags & IGB_TX_FLAGS_TSTAMP)) { dev_kfree_skb_any(adapter->ptp_tx_skb); adapter->ptp_tx_skb = NULL; if (adapter->hw.mac.type == e1000_82576) @@ -8213,7 +8215,7 @@ static bool igb_clean_tx_irq(struct igb_q_vector *q_vector, int napi_budget) total_packets += tx_buffer->gso_segs; /* free the skb */ - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { if (tx_buffer->type == IGB_TYPE_SKB) napi_consume_skb(tx_buffer->skb, napi_budget); else @@ -8267,7 +8269,7 @@ static bool igb_clean_tx_irq(struct igb_q_vector *q_vector, int napi_budget) budget--; } while (likely(budget)); - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { netdev_tx_completed_queue(txring_txq(tx_ring), total_packets, total_bytes); } @@ -8280,7 +8282,7 @@ static bool igb_clean_tx_irq(struct igb_q_vector *q_vector, int napi_budget) q_vector->tx.total_bytes += total_bytes; q_vector->tx.total_packets += total_packets; - if (!adapter->ecdev && + if (!get_ecdev(adapter) && test_bit(IGB_RING_FLAG_TX_DETECT_HANG, &tx_ring->flags)) { struct e1000_hw *hw = &adapter->hw; @@ -8324,7 +8326,7 @@ static bool igb_clean_tx_irq(struct igb_q_vector *q_vector, int napi_budget) } #define TX_WAKE_THRESHOLD (DESC_NEEDED * 2) - if (unlikely(!adapter->ecdev && total_packets && + if (unlikely(!get_ecdev(adapter) && total_packets && netif_carrier_ok(tx_ring->netdev) && igb_desc_unused(tx_ring) >= TX_WAKE_THRESHOLD)) { /* Make sure that anybody stopping the queue after this @@ -8866,9 +8868,9 @@ static int igb_clean_rx_irq(struct igb_q_vector *q_vector, const int budget) rx_buffer = igb_get_rx_buffer(rx_ring, size, &rx_buf_pgcnt); pktbuf = page_address(rx_buffer->page) + rx_buffer->page_offset; - if (adapter->ecdev) { + if (get_ecdev(adapter)) { unsigned int size = le16_to_cpu(rx_desc->wb.upper.length); - ecdev_receive(adapter->ecdev, pktbuf, size); + ecdev_receive(get_ecdev(adapter), pktbuf, size); adapter->ec_watchdog_jiffies = jiffies; igb_reuse_rx_page(rx_ring, rx_buffer); } else { @@ -8931,7 +8933,7 @@ static int igb_clean_rx_irq(struct igb_q_vector *q_vector, const int budget) if (igb_is_non_eop(rx_ring, rx_desc)) continue; - if (adapter->ecdev) { + if (get_ecdev(adapter)) { total_packets++; continue; } diff --git a/devices/igb/igb_main-5.15-ethercat.c b/devices/igb/igb_main-5.15-ethercat.c index 4d3703a5..03dbfd6d 100644 --- a/devices/igb/igb_main-5.15-ethercat.c +++ b/devices/igb/igb_main-5.15-ethercat.c @@ -935,7 +935,7 @@ static int igb_request_msix(struct igb_adapter *adapter) struct net_device *netdev = adapter->netdev; int i, err = 0, vector = 0, free_vector = 0; - if (adapter->ecdev) { + if (get_ecdev(adapter)) { return 0; } @@ -1036,7 +1036,7 @@ static void igb_reset_q_vector(struct igb_adapter *adapter, int v_idx) if (q_vector->rx.ring) adapter->rx_ring[q_vector->rx.ring->queue_index] = NULL; - if (!adapter->ecdev) + if (!get_ecdev(adapter)) netif_napi_del(&q_vector->napi); } @@ -1218,7 +1218,7 @@ static int igb_alloc_q_vector(struct igb_adapter *adapter, return -ENOMEM; /* initialize NAPI */ - if (!adapter->ecdev) { + if (get_ecdev(adapter)) { netif_napi_add(adapter->netdev, &q_vector->napi, igb_poll, 64); } @@ -1439,7 +1439,7 @@ static int igb_request_irq(struct igb_adapter *adapter) igb_assign_vector(adapter->q_vector[0], 0); - if (!adapter->ecdev && adapter->flags & IGB_FLAG_HAS_MSI) { + if (!get_ecdev(adapter) && adapter->flags & IGB_FLAG_HAS_MSI) { err = request_irq(pdev->irq, igb_intr_msi, 0, netdev->name, adapter); if (!err) @@ -1450,7 +1450,7 @@ static int igb_request_irq(struct igb_adapter *adapter) adapter->flags &= ~IGB_FLAG_HAS_MSI; } - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { err = request_irq(pdev->irq, igb_intr, IRQF_SHARED, netdev->name, adapter); @@ -1465,7 +1465,7 @@ request_done: static void igb_free_irq(struct igb_adapter *adapter) { - if (adapter->ecdev) + if (get_ecdev(adapter)) return; if (adapter->flags & IGB_FLAG_HAS_MSIX) { int vector = 0, i; @@ -1505,7 +1505,7 @@ static void igb_irq_disable(struct igb_adapter *adapter) wr32(E1000_IMC, ~0); wrfl(); - if (adapter->ecdev) { + if (get_ecdev(adapter)) { /* skip synchronizing IRQs */ return; } @@ -1527,7 +1527,7 @@ static void igb_irq_enable(struct igb_adapter *adapter) { struct e1000_hw *hw = &adapter->hw; - if (adapter->ecdev) + if (get_ecdev(adapter)) return; if (adapter->flags & IGB_FLAG_HAS_MSIX) { @@ -2145,7 +2145,7 @@ int igb_up(struct igb_adapter *adapter) clear_bit(__IGB_DOWN, &adapter->state); - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { for (i = 0; i < adapter->num_q_vectors; i++) napi_enable(&(adapter->q_vector[i]->napi)); } @@ -2168,7 +2168,7 @@ int igb_up(struct igb_adapter *adapter) wr32(E1000_CTRL_EXT, reg_data); } - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { netif_tx_start_all_queues(adapter->netdev); /* start the watchdog. */ @@ -2202,7 +2202,7 @@ void igb_down(struct igb_adapter *adapter) igb_nfc_filter_exit(adapter); - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { netif_carrier_off(netdev); netif_tx_stop_all_queues(netdev); } @@ -2220,7 +2220,7 @@ void igb_down(struct igb_adapter *adapter) adapter->flags &= ~IGB_FLAG_NEED_LINK_UPDATE; for (i = 0; i < adapter->num_q_vectors; i++) { - if (!adapter->ecdev && adapter->q_vector[i]) { + if (!get_ecdev(adapter) && adapter->q_vector[i]) { napi_synchronize(&adapter->q_vector[i]->napi); napi_disable(&adapter->q_vector[i]->napi); } @@ -2443,7 +2443,7 @@ void igb_reset(struct igb_adapter *adapter) break; } } - if (!adapter->ecdev && !netif_running(adapter->netdev)) + if (!get_ecdev(adapter) && !netif_running(adapter->netdev)) igb_power_down_link(adapter); igb_update_mng_vlan(adapter); @@ -2907,7 +2907,7 @@ static int igb_xdp_setup(struct net_device *dev, struct netdev_bpf *bpf) static int igb_xdp(struct net_device *dev, struct netdev_bpf *xdp) { struct igb_adapter *adapter = netdev_priv(dev); - if (adapter->ecdev) + if (get_ecdev(adapter)) return -EBUSY; @@ -2976,7 +2976,7 @@ static int igb_xdp_xmit(struct net_device *dev, int n, int nxmit = 0; int i; - if (adapter->ecdev) + if (get_ecdev(adapter)) return -EBUSY; if (unlikely(test_bit(__IGB_DOWN, &adapter->state))) @@ -3278,6 +3278,7 @@ static int igb_probe(struct pci_dev *pdev, const struct pci_device_id *ent) adapter = netdev_priv(netdev); adapter->netdev = netdev; adapter->pdev = pdev; + adapter->ecdev_initialized = 0; hw = &adapter->hw; hw->back = adapter; adapter->msg_enable = netif_msg_init(debug, DEFAULT_MSG_ENABLE); @@ -3561,12 +3562,13 @@ static int igb_probe(struct pci_dev *pdev, const struct pci_device_id *ent) igb_get_hw_control(adapter); - adapter->ecdev = ecdev_offer(netdev, ec_poll, THIS_MODULE); - if (adapter->ecdev) { + adapter->ecdev_ = ecdev_offer(netdev, ec_poll, THIS_MODULE); + adapter->ecdev_initialized = 1; + if (get_ecdev(adapter)) { init_irq_work(&adapter->ec_watchdog_kicker, ec_kick_watchdog); - err = ecdev_open(adapter->ecdev); + err = ecdev_open(get_ecdev(adapter)); if (err) { - ecdev_withdraw(adapter->ecdev); + ecdev_withdraw(get_ecdev(adapter)); goto err_register; } adapter->ec_watchdog_jiffies = jiffies; @@ -3866,10 +3868,10 @@ static void igb_remove(struct pci_dev *pdev) struct igb_adapter *adapter = netdev_priv(netdev); struct e1000_hw *hw = &adapter->hw; - if (adapter->ecdev) { - ecdev_close(adapter->ecdev); + if (get_ecdev(adapter)) { + ecdev_close(get_ecdev(adapter)); irq_work_sync(&adapter->ec_watchdog_kicker); - ecdev_withdraw(adapter->ecdev); + ecdev_withdraw(get_ecdev(adapter)); } pm_runtime_get_noresume(&pdev->dev); @@ -3906,7 +3908,7 @@ static void igb_remove(struct pci_dev *pdev) igb_disable_sriov(pdev); #endif - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { unregister_netdev(netdev); } @@ -4149,8 +4151,8 @@ static int __igb_open(struct net_device *netdev, bool resuming) if (!resuming) pm_runtime_get_sync(&pdev->dev); - if (adapter->ecdev) { - ecdev_set_link(adapter->ecdev, 0); + if (get_ecdev(adapter)) { + ecdev_set_link(get_ecdev(adapter), 0); } else { netif_carrier_off(netdev); } @@ -4178,7 +4180,7 @@ static int __igb_open(struct net_device *netdev, bool resuming) if (err) goto err_req_irq; - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { /* Notify the stack of the actual queue counts. */ err = netif_set_real_num_tx_queues(adapter->netdev, adapter->num_tx_queues); @@ -4194,7 +4196,7 @@ static int __igb_open(struct net_device *netdev, bool resuming) /* From here on the code is the same as igb_up() */ clear_bit(__IGB_DOWN, &adapter->state); - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { for (i = 0; i < adapter->num_q_vectors; i++) napi_enable(&(adapter->q_vector[i]->napi)); } @@ -4213,14 +4215,14 @@ static int __igb_open(struct net_device *netdev, bool resuming) wr32(E1000_CTRL_EXT, reg_data); } - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { netif_tx_start_all_queues(netdev); } if (!resuming) pm_runtime_put(&pdev->dev); - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { /* start the watchdog. */ hw->mac.get_link_status = 1; schedule_work(&adapter->watchdog_task); @@ -4450,7 +4452,7 @@ int igb_setup_rx_resources(struct igb_ring *rx_ring) struct device *dev = rx_ring->dev; int size, res; - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { /* XDP RX-queue info */ if (xdp_rxq_info_is_reg(&rx_ring->xdp_rxq)) xdp_rxq_info_unreg(&rx_ring->xdp_rxq); @@ -4482,7 +4484,7 @@ int igb_setup_rx_resources(struct igb_ring *rx_ring) rx_ring->next_to_clean = 0; rx_ring->next_to_use = 0; - if (!adapter->ecdev) + if (!get_ecdev(adapter)) rx_ring->xdp_prog = adapter->xdp_prog; return 0; @@ -4789,7 +4791,7 @@ void igb_configure_rx_ring(struct igb_adapter *adapter, int reg_idx = ring->reg_idx; u32 rxdctl = 0; - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { xdp_rxq_info_unreg_mem_model(&ring->xdp_rxq); WARN_ON(xdp_rxq_info_reg_mem_model(&ring->xdp_rxq, MEM_TYPE_PAGE_SHARED, NULL)); @@ -4929,7 +4931,7 @@ static void igb_clean_tx_ring(struct igb_ring *tx_ring) /* Free all the Tx ring sk_buffs */ struct igb_adapter *adapter = netdev_priv(tx_ring->netdev); - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { dev_kfree_skb_any(tx_buffer->skb); } @@ -6196,7 +6198,7 @@ static int __igb_maybe_stop_tx(struct igb_ring *tx_ring, const u16 size) struct net_device *netdev = tx_ring->netdev; struct igb_adapter *adapter = netdev_priv(netdev); - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { netif_stop_subqueue(netdev, tx_ring->queue_index); } @@ -6213,7 +6215,7 @@ static int __igb_maybe_stop_tx(struct igb_ring *tx_ring, const u16 size) return -EBUSY; /* A reprieve! */ - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { netif_wake_subqueue(netdev, tx_ring->queue_index); } @@ -6369,7 +6371,7 @@ dma_error: DMA_TO_DEVICE); dma_unmap_len_set(tx_buffer, len, 0); - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { dev_kfree_skb_any(tx_buffer->skb); tx_buffer->skb = NULL; } @@ -6487,7 +6489,7 @@ netdev_tx_t igb_xmit_frame_ring(struct sk_buff *skb, first->bytecount = skb->len; first->gso_segs = 1; - if (unlikely(!adapter->ecdev && + if (unlikely(!get_ecdev(adapter) && skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP)) { if (adapter->tstamp_config.tx_type == HWTSTAMP_TX_ON && @@ -6526,12 +6528,12 @@ netdev_tx_t igb_xmit_frame_ring(struct sk_buff *skb, return NETDEV_TX_OK; out_drop: - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { dev_kfree_skb_any(first->skb); first->skb = NULL; } cleanup_tx_tstamp: - if (unlikely(!adapter->ecdev && tx_flags & IGB_TX_FLAGS_TSTAMP)) { + if (unlikely(!get_ecdev(adapter) && tx_flags & IGB_TX_FLAGS_TSTAMP)) { dev_kfree_skb_any(adapter->ptp_tx_skb); adapter->ptp_tx_skb = NULL; if (adapter->hw.mac.type == e1000_82576) @@ -8203,7 +8205,7 @@ static bool igb_clean_tx_irq(struct igb_q_vector *q_vector, int napi_budget) total_packets += tx_buffer->gso_segs; /* free the skb */ - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { if (tx_buffer->type == IGB_TYPE_SKB) napi_consume_skb(tx_buffer->skb, napi_budget); else @@ -8257,7 +8259,7 @@ static bool igb_clean_tx_irq(struct igb_q_vector *q_vector, int napi_budget) budget--; } while (likely(budget)); - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { netdev_tx_completed_queue(txring_txq(tx_ring), total_packets, total_bytes); } @@ -8270,7 +8272,7 @@ static bool igb_clean_tx_irq(struct igb_q_vector *q_vector, int napi_budget) q_vector->tx.total_bytes += total_bytes; q_vector->tx.total_packets += total_packets; - if (!adapter->ecdev && + if (!get_ecdev(adapter) && test_bit(IGB_RING_FLAG_TX_DETECT_HANG, &tx_ring->flags)) { struct e1000_hw *hw = &adapter->hw; @@ -8314,7 +8316,7 @@ static bool igb_clean_tx_irq(struct igb_q_vector *q_vector, int napi_budget) } #define TX_WAKE_THRESHOLD (DESC_NEEDED * 2) - if (unlikely(!adapter->ecdev && total_packets && + if (unlikely(!get_ecdev(adapter) && total_packets && netif_carrier_ok(tx_ring->netdev) && igb_desc_unused(tx_ring) >= TX_WAKE_THRESHOLD)) { /* Make sure that anybody stopping the queue after this @@ -8852,9 +8854,9 @@ static int igb_clean_rx_irq(struct igb_q_vector *q_vector, const int budget) rx_buffer = igb_get_rx_buffer(rx_ring, size, &rx_buf_pgcnt); pktbuf = page_address(rx_buffer->page) + rx_buffer->page_offset; - if (adapter->ecdev) { + if (get_ecdev(adapter)) { unsigned int size = le16_to_cpu(rx_desc->wb.upper.length); - ecdev_receive(adapter->ecdev, pktbuf, size); + ecdev_receive(get_ecdev(adapter), pktbuf, size); adapter->ec_watchdog_jiffies = jiffies; igb_reuse_rx_page(rx_ring, rx_buffer); } else { @@ -8917,11 +8919,11 @@ static int igb_clean_rx_irq(struct igb_q_vector *q_vector, const int budget) if (igb_is_non_eop(rx_ring, rx_desc)) continue; - if (adapter->ecdev) { + if (get_ecdev(adapter)) { total_packets++; continue; } - + /* verify the packet layout is correct */ if (igb_cleanup_headers(rx_ring, rx_desc, skb)) { skb = NULL; diff --git a/devices/igb/igb_main-6.1-ethercat.c b/devices/igb/igb_main-6.1-ethercat.c index 8c1c1165..f2a8d12c 100644 --- a/devices/igb/igb_main-6.1-ethercat.c +++ b/devices/igb/igb_main-6.1-ethercat.c @@ -933,7 +933,7 @@ static int igb_request_msix(struct igb_adapter *adapter) struct net_device *netdev = adapter->netdev; int i, err = 0, vector = 0, free_vector = 0; - if (adapter->ecdev) { + if (get_ecdev(adapter)) { return 0; } @@ -1034,7 +1034,7 @@ static void igb_reset_q_vector(struct igb_adapter *adapter, int v_idx) if (q_vector->rx.ring) adapter->rx_ring[q_vector->rx.ring->queue_index] = NULL; - if (!adapter->ecdev) + if (!get_ecdev(adapter)) netif_napi_del(&q_vector->napi); } @@ -1220,7 +1220,7 @@ static int igb_alloc_q_vector(struct igb_adapter *adapter, return -ENOMEM; /* initialize NAPI */ - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { netif_napi_add(adapter->netdev, &q_vector->napi, igb_poll); } @@ -1440,7 +1440,7 @@ static int igb_request_irq(struct igb_adapter *adapter) igb_assign_vector(adapter->q_vector[0], 0); - if (!adapter->ecdev && adapter->flags & IGB_FLAG_HAS_MSI) { + if (!get_ecdev(adapter) && adapter->flags & IGB_FLAG_HAS_MSI) { err = request_irq(pdev->irq, igb_intr_msi, 0, netdev->name, adapter); if (!err) @@ -1451,7 +1451,7 @@ static int igb_request_irq(struct igb_adapter *adapter) adapter->flags &= ~IGB_FLAG_HAS_MSI; } - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { err = request_irq(pdev->irq, igb_intr, IRQF_SHARED, netdev->name, adapter); @@ -1466,7 +1466,7 @@ request_done: static void igb_free_irq(struct igb_adapter *adapter) { - if (adapter->ecdev) + if (get_ecdev(adapter)) return; if (adapter->flags & IGB_FLAG_HAS_MSIX) { int vector = 0, i; @@ -1506,7 +1506,7 @@ static void igb_irq_disable(struct igb_adapter *adapter) wr32(E1000_IMC, ~0); wrfl(); - if (adapter->ecdev) { + if (get_ecdev(adapter)) { /* skip synchronizing IRQs */ return; } @@ -1528,7 +1528,7 @@ static void igb_irq_enable(struct igb_adapter *adapter) { struct e1000_hw *hw = &adapter->hw; - if (adapter->ecdev) + if (get_ecdev(adapter)) return; if (adapter->flags & IGB_FLAG_HAS_MSIX) { @@ -2146,7 +2146,7 @@ int igb_up(struct igb_adapter *adapter) clear_bit(__IGB_DOWN, &adapter->state); - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { for (i = 0; i < adapter->num_q_vectors; i++) napi_enable(&(adapter->q_vector[i]->napi)); } @@ -2169,7 +2169,7 @@ int igb_up(struct igb_adapter *adapter) wr32(E1000_CTRL_EXT, reg_data); } - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { netif_tx_start_all_queues(adapter->netdev); /* start the watchdog. */ @@ -2203,7 +2203,7 @@ void igb_down(struct igb_adapter *adapter) igb_nfc_filter_exit(adapter); - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { netif_carrier_off(netdev); netif_tx_stop_all_queues(netdev); } @@ -2221,7 +2221,7 @@ void igb_down(struct igb_adapter *adapter) adapter->flags &= ~IGB_FLAG_NEED_LINK_UPDATE; for (i = 0; i < adapter->num_q_vectors; i++) { - if (!adapter->ecdev && adapter->q_vector[i]) { + if (!get_ecdev(adapter) && adapter->q_vector[i]) { napi_synchronize(&adapter->q_vector[i]->napi); napi_disable(&adapter->q_vector[i]->napi); } @@ -2469,7 +2469,7 @@ void igb_reset(struct igb_adapter *adapter) break; } } - if (!adapter->ecdev && !netif_running(adapter->netdev)) + if (!get_ecdev(adapter) && !netif_running(adapter->netdev)) igb_power_down_link(adapter); igb_update_mng_vlan(adapter); @@ -2933,7 +2933,7 @@ static int igb_xdp_setup(struct net_device *dev, struct netdev_bpf *bpf) static int igb_xdp(struct net_device *dev, struct netdev_bpf *xdp) { struct igb_adapter *adapter = netdev_priv(dev); - if (adapter->ecdev) + if (get_ecdev(adapter)) return -EBUSY; @@ -3002,7 +3002,7 @@ static int igb_xdp_xmit(struct net_device *dev, int n, int nxmit = 0; int i; - if (adapter->ecdev) + if (get_ecdev(adapter)) return -EBUSY; if (unlikely(test_bit(__IGB_DOWN, &adapter->state))) @@ -3298,6 +3298,7 @@ static int igb_probe(struct pci_dev *pdev, const struct pci_device_id *ent) adapter = netdev_priv(netdev); adapter->netdev = netdev; adapter->pdev = pdev; + adapter->ecdev_initialized = 0; hw = &adapter->hw; hw->back = adapter; adapter->msg_enable = netif_msg_init(debug, DEFAULT_MSG_ENABLE); @@ -3580,12 +3581,13 @@ static int igb_probe(struct pci_dev *pdev, const struct pci_device_id *ent) igb_get_hw_control(adapter); - adapter->ecdev = ecdev_offer(netdev, ec_poll, THIS_MODULE); - if (adapter->ecdev) { + adapter->ecdev_ = ecdev_offer(netdev, ec_poll, THIS_MODULE); + adapter->ecdev_initialized = 1; + if (get_ecdev(adapter)) { init_irq_work(&adapter->ec_watchdog_kicker, ec_kick_watchdog); - err = ecdev_open(adapter->ecdev); + err = ecdev_open(get_ecdev(adapter)); if (err) { - ecdev_withdraw(adapter->ecdev); + ecdev_withdraw(get_ecdev(adapter)); goto err_register; } adapter->ec_watchdog_jiffies = jiffies; @@ -3893,10 +3895,10 @@ static void igb_remove(struct pci_dev *pdev) struct igb_adapter *adapter = netdev_priv(netdev); struct e1000_hw *hw = &adapter->hw; - if (adapter->ecdev) { - ecdev_close(adapter->ecdev); + if (get_ecdev(adapter)) { + ecdev_close(get_ecdev(adapter)); irq_work_sync(&adapter->ec_watchdog_kicker); - ecdev_withdraw(adapter->ecdev); + ecdev_withdraw(get_ecdev(adapter)); } pm_runtime_get_noresume(&pdev->dev); @@ -3933,7 +3935,7 @@ static void igb_remove(struct pci_dev *pdev) igb_disable_sriov(pdev); #endif - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { unregister_netdev(netdev); } @@ -4179,8 +4181,8 @@ static int __igb_open(struct net_device *netdev, bool resuming) if (!resuming) pm_runtime_get_sync(&pdev->dev); - if (adapter->ecdev) { - ecdev_set_link(adapter->ecdev, 0); + if (get_ecdev(adapter)) { + ecdev_set_link(get_ecdev(adapter), 0); } else { netif_carrier_off(netdev); } @@ -4208,7 +4210,7 @@ static int __igb_open(struct net_device *netdev, bool resuming) if (err) goto err_req_irq; - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { /* Notify the stack of the actual queue counts. */ err = netif_set_real_num_tx_queues(adapter->netdev, adapter->num_tx_queues); @@ -4224,7 +4226,7 @@ static int __igb_open(struct net_device *netdev, bool resuming) /* From here on the code is the same as igb_up() */ clear_bit(__IGB_DOWN, &adapter->state); - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { for (i = 0; i < adapter->num_q_vectors; i++) napi_enable(&(adapter->q_vector[i]->napi)); } @@ -4243,14 +4245,14 @@ static int __igb_open(struct net_device *netdev, bool resuming) wr32(E1000_CTRL_EXT, reg_data); } - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { netif_tx_start_all_queues(netdev); } if (!resuming) pm_runtime_put(&pdev->dev); - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { /* start the watchdog. */ hw->mac.get_link_status = 1; schedule_work(&adapter->watchdog_task); @@ -4480,7 +4482,7 @@ int igb_setup_rx_resources(struct igb_ring *rx_ring) struct device *dev = rx_ring->dev; int size, res; - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { /* XDP RX-queue info */ if (xdp_rxq_info_is_reg(&rx_ring->xdp_rxq)) xdp_rxq_info_unreg(&rx_ring->xdp_rxq); @@ -4512,7 +4514,7 @@ int igb_setup_rx_resources(struct igb_ring *rx_ring) rx_ring->next_to_clean = 0; rx_ring->next_to_use = 0; - if (!adapter->ecdev) + if (!get_ecdev(adapter)) rx_ring->xdp_prog = adapter->xdp_prog; return 0; @@ -4819,7 +4821,7 @@ void igb_configure_rx_ring(struct igb_adapter *adapter, int reg_idx = ring->reg_idx; u32 rxdctl = 0; - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { xdp_rxq_info_unreg_mem_model(&ring->xdp_rxq); WARN_ON(xdp_rxq_info_reg_mem_model(&ring->xdp_rxq, MEM_TYPE_PAGE_SHARED, NULL)); @@ -4959,7 +4961,7 @@ static void igb_clean_tx_ring(struct igb_ring *tx_ring) /* Free all the Tx ring sk_buffs or xdp frames */ struct igb_adapter *adapter = netdev_priv(tx_ring->netdev); - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { if (tx_buffer->type == IGB_TYPE_SKB) dev_kfree_skb_any(tx_buffer->skb); else @@ -6230,7 +6232,7 @@ static int __igb_maybe_stop_tx(struct igb_ring *tx_ring, const u16 size) struct net_device *netdev = tx_ring->netdev; struct igb_adapter *adapter = netdev_priv(netdev); - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { netif_stop_subqueue(netdev, tx_ring->queue_index); } @@ -6247,7 +6249,7 @@ static int __igb_maybe_stop_tx(struct igb_ring *tx_ring, const u16 size) return -EBUSY; /* A reprieve! */ - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { netif_wake_subqueue(netdev, tx_ring->queue_index); } @@ -6403,7 +6405,7 @@ dma_error: DMA_TO_DEVICE); dma_unmap_len_set(tx_buffer, len, 0); - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { dev_kfree_skb_any(tx_buffer->skb); tx_buffer->skb = NULL; } @@ -6555,7 +6557,7 @@ netdev_tx_t igb_xmit_frame_ring(struct sk_buff *skb, first->bytecount = skb->len; first->gso_segs = 1; - if (unlikely(!adapter->ecdev && + if (unlikely(!get_ecdev(adapter) && skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP)) { if (adapter->tstamp_config.tx_type == HWTSTAMP_TX_ON && @@ -6594,12 +6596,12 @@ netdev_tx_t igb_xmit_frame_ring(struct sk_buff *skb, return NETDEV_TX_OK; out_drop: - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { dev_kfree_skb_any(first->skb); first->skb = NULL; } cleanup_tx_tstamp: - if (unlikely(!adapter->ecdev && tx_flags & IGB_TX_FLAGS_TSTAMP)) { + if (unlikely(!get_ecdev(adapter) && tx_flags & IGB_TX_FLAGS_TSTAMP)) { dev_kfree_skb_any(adapter->ptp_tx_skb); adapter->ptp_tx_skb = NULL; if (adapter->hw.mac.type == e1000_82576) @@ -8356,7 +8358,7 @@ static bool igb_clean_tx_irq(struct igb_q_vector *q_vector, int napi_budget) total_packets += tx_buffer->gso_segs; /* free the skb */ - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { if (tx_buffer->type == IGB_TYPE_SKB) napi_consume_skb(tx_buffer->skb, napi_budget); else @@ -8410,7 +8412,7 @@ static bool igb_clean_tx_irq(struct igb_q_vector *q_vector, int napi_budget) budget--; } while (likely(budget)); - if (!adapter->ecdev) { + if (!get_ecdev(adapter)) { netdev_tx_completed_queue(txring_txq(tx_ring), total_packets, total_bytes); } @@ -8423,7 +8425,7 @@ static bool igb_clean_tx_irq(struct igb_q_vector *q_vector, int napi_budget) q_vector->tx.total_bytes += total_bytes; q_vector->tx.total_packets += total_packets; - if (!adapter->ecdev && + if (!get_ecdev(adapter) && test_bit(IGB_RING_FLAG_TX_DETECT_HANG, &tx_ring->flags)) { struct e1000_hw *hw = &adapter->hw; @@ -8467,7 +8469,7 @@ static bool igb_clean_tx_irq(struct igb_q_vector *q_vector, int napi_budget) } #define TX_WAKE_THRESHOLD (DESC_NEEDED * 2) - if (unlikely(!adapter->ecdev && total_packets && + if (unlikely(!get_ecdev(adapter) && total_packets && netif_carrier_ok(tx_ring->netdev) && igb_desc_unused(tx_ring) >= TX_WAKE_THRESHOLD)) { /* Make sure that anybody stopping the queue after this @@ -9005,9 +9007,9 @@ static int igb_clean_rx_irq(struct igb_q_vector *q_vector, const int budget) rx_buffer = igb_get_rx_buffer(rx_ring, size, &rx_buf_pgcnt); pktbuf = page_address(rx_buffer->page) + rx_buffer->page_offset; - if (adapter->ecdev) { + if (get_ecdev(adapter)) { unsigned int size = le16_to_cpu(rx_desc->wb.upper.length); - ecdev_receive(adapter->ecdev, pktbuf, size); + ecdev_receive(get_ecdev(adapter), pktbuf, size); adapter->ec_watchdog_jiffies = jiffies; igb_reuse_rx_page(rx_ring, rx_buffer); } else { @@ -9071,7 +9073,7 @@ static int igb_clean_rx_irq(struct igb_q_vector *q_vector, const int budget) if (igb_is_non_eop(rx_ring, rx_desc)) continue; - if (adapter->ecdev) { + if (get_ecdev(adapter)) { total_packets++; continue; }