Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/dev/pci/ixgbe - Remove extra callout_stop() in ixgbe_det...
details: https://anonhg.NetBSD.org/src/rev/0dd0f630f1e7
branches: trunk
changeset: 943631:0dd0f630f1e7
user: msaitoh <msaitoh%NetBSD.org@localhost>
date: Mon Sep 07 05:50:58 2020 +0000
description:
- Remove extra callout_stop() in ixgbe_detach(). Found by knakahara@.
- Rename ix{gbe,v}_free_workqueue() to ix{gbe,v}_free_deferred_handlers().
- Add KASSERT() to functions who are called from ixgbe_handle_admin().
diffstat:
sys/dev/pci/ixgbe/if_fdir.c | 2 ++
sys/dev/pci/ixgbe/if_sriov.c | 2 ++
sys/dev/pci/ixgbe/ixgbe.c | 26 ++++++++++++++++----------
sys/dev/pci/ixgbe/ixv.c | 12 ++++++------
4 files changed, 26 insertions(+), 16 deletions(-)
diffs (189 lines):
diff -r 7c966825ab4a -r 0dd0f630f1e7 sys/dev/pci/ixgbe/if_fdir.c
--- a/sys/dev/pci/ixgbe/if_fdir.c Mon Sep 07 05:32:12 2020 +0000
+++ b/sys/dev/pci/ixgbe/if_fdir.c Mon Sep 07 05:50:58 2020 +0000
@@ -55,6 +55,8 @@
struct adapter *adapter = context;
struct ifnet *ifp = adapter->ifp;
+ KASSERT(mutex_owned(&adapter->core_mtx));
+
if (!(adapter->feat_en & IXGBE_FEATURE_FDIR))
return;
if (adapter->fdir_reinit != 1) /* Shouldn't happen */
diff -r 7c966825ab4a -r 0dd0f630f1e7 sys/dev/pci/ixgbe/if_sriov.c
--- a/sys/dev/pci/ixgbe/if_sriov.c Mon Sep 07 05:32:12 2020 +0000
+++ b/sys/dev/pci/ixgbe/if_sriov.c Mon Sep 07 05:50:58 2020 +0000
@@ -643,6 +643,8 @@
struct ixgbe_vf *vf;
int i;
+ KASSERT(mutex_owned(&adapter->core_mtx));
+
hw = &adapter->hw;
for (i = 0; i < adapter->num_vfs; i++) {
diff -r 7c966825ab4a -r 0dd0f630f1e7 sys/dev/pci/ixgbe/ixgbe.c
--- a/sys/dev/pci/ixgbe/ixgbe.c Mon Sep 07 05:32:12 2020 +0000
+++ b/sys/dev/pci/ixgbe/ixgbe.c Mon Sep 07 05:50:58 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: ixgbe.c,v 1.256 2020/09/07 04:15:12 msaitoh Exp $ */
+/* $NetBSD: ixgbe.c,v 1.257 2020/09/07 05:50:58 msaitoh Exp $ */
/******************************************************************************
@@ -181,7 +181,7 @@
static int ixgbe_media_change(struct ifnet *);
static int ixgbe_allocate_pci_resources(struct adapter *,
const struct pci_attach_args *);
-static void ixgbe_free_workqueue(struct adapter *);
+static void ixgbe_free_deferred_handlers(struct adapter *);
static void ixgbe_get_slot_info(struct adapter *);
static int ixgbe_allocate_msix(struct adapter *,
const struct pci_attach_args *);
@@ -1279,7 +1279,7 @@
ctrl_ext = IXGBE_READ_REG(&adapter->hw, IXGBE_CTRL_EXT);
ctrl_ext &= ~IXGBE_CTRL_EXT_DRV_LOAD;
IXGBE_WRITE_REG(&adapter->hw, IXGBE_CTRL_EXT, ctrl_ext);
- ixgbe_free_workqueue(adapter);
+ ixgbe_free_deferred_handlers(adapter);
ixgbe_free_pci_resources(adapter);
if (adapter->mta != NULL)
free(adapter->mta, M_DEVBUF);
@@ -3518,7 +3518,7 @@
} /* ixgbe_allocate_pci_resources */
static void
-ixgbe_free_workqueue(struct adapter *adapter)
+ixgbe_free_deferred_handlers(struct adapter *adapter)
{
struct ix_queue *que = adapter->queues;
struct tx_ring *txr = adapter->tx_rings;
@@ -3558,7 +3558,7 @@
workqueue_destroy(adapter->recovery_mode_timer_wq);
adapter->recovery_mode_timer_wq = NULL;
}
-} /* ixgbe_free_workqueue */
+} /* ixgbe_free_deferred_handlers */
/************************************************************************
* ixgbe_detach - Device removal routine
@@ -3610,10 +3610,8 @@
ixgbe_setup_low_power_mode(adapter);
callout_halt(&adapter->timer, NULL);
- if (adapter->feat_en & IXGBE_FEATURE_RECOVERY_MODE) {
- callout_stop(&adapter->recovery_mode_timer);
+ if (adapter->feat_en & IXGBE_FEATURE_RECOVERY_MODE)
callout_halt(&adapter->recovery_mode_timer, NULL);
- }
workqueue_wait(adapter->admin_wq, &adapter->admin_wc);
atomic_store_relaxed(&adapter->admin_pending, 0);
@@ -3624,7 +3622,7 @@
ether_ifdetach(adapter->ifp);
- ixgbe_free_workqueue(adapter);
+ ixgbe_free_deferred_handlers(adapter);
/* let hardware know driver is unloading */
ctrl_ext = IXGBE_READ_REG(&adapter->hw, IXGBE_CTRL_EXT);
@@ -4673,6 +4671,8 @@
u32 err;
bool last_unsupported_sfp_recovery;
+ KASSERT(mutex_owned(&adapter->core_mtx));
+
last_sfp_type = hw->phy.sfp_type;
last_unsupported_sfp_recovery = hw->need_unsupported_sfp_recovery;
++adapter->mod_workev.ev_count;
@@ -4754,6 +4754,8 @@
u32 autoneg;
bool negotiate;
+ KASSERT(mutex_owned(&adapter->core_mtx));
+
++adapter->msf_workev.ev_count;
autoneg = hw->phy.autoneg_advertised;
@@ -4773,6 +4775,8 @@
struct ixgbe_hw *hw = &adapter->hw;
int error;
+ KASSERT(mutex_owned(&adapter->core_mtx));
+
++adapter->phy_workev.ev_count;
error = hw->phy.ops.handle_lasi(hw);
if (error == IXGBE_ERR_OVERTEMP)
@@ -6884,7 +6888,7 @@
err_out:
kcpuset_destroy(affinity);
- ixgbe_free_workqueue(adapter);
+ ixgbe_free_deferred_handlers(adapter);
ixgbe_free_pciintr_resources(adapter);
return (error);
} /* ixgbe_allocate_msix */
@@ -7008,6 +7012,8 @@
struct adapter *adapter = context;
struct ixgbe_hw *hw = &adapter->hw;
+ KASSERT(mutex_owned(&adapter->core_mtx));
+
++adapter->link_workev.ev_count;
ixgbe_check_link(hw, &adapter->link_speed, &adapter->link_up, 0);
ixgbe_update_link_status(adapter);
diff -r 7c966825ab4a -r 0dd0f630f1e7 sys/dev/pci/ixgbe/ixv.c
--- a/sys/dev/pci/ixgbe/ixv.c Mon Sep 07 05:32:12 2020 +0000
+++ b/sys/dev/pci/ixgbe/ixv.c Mon Sep 07 05:50:58 2020 +0000
@@ -1,4 +1,4 @@
-/*$NetBSD: ixv.c,v 1.153 2020/08/31 14:12:50 msaitoh Exp $*/
+/*$NetBSD: ixv.c,v 1.154 2020/09/07 05:50:58 msaitoh Exp $*/
/******************************************************************************
@@ -96,7 +96,7 @@
static int ixv_media_change(struct ifnet *);
static int ixv_allocate_pci_resources(struct adapter *,
const struct pci_attach_args *);
-static void ixv_free_workqueue(struct adapter *);
+static void ixv_free_deferred_handlers(struct adapter *);
static int ixv_allocate_msix(struct adapter *,
const struct pci_attach_args *);
static int ixv_configure_interrupts(struct adapter *);
@@ -608,7 +608,7 @@
ether_ifdetach(adapter->ifp);
callout_halt(&adapter->timer, NULL);
- ixv_free_workqueue(adapter);
+ ixv_free_deferred_handlers(adapter);
if (adapter->feat_en & IXGBE_FEATURE_NETMAP)
netmap_detach(adapter->ifp);
@@ -1530,7 +1530,7 @@
} /* ixv_allocate_pci_resources */
static void
-ixv_free_workqueue(struct adapter *adapter)
+ixv_free_deferred_handlers(struct adapter *adapter)
{
struct ix_queue *que = adapter->queues;
struct tx_ring *txr = adapter->tx_rings;
@@ -1560,7 +1560,7 @@
workqueue_destroy(adapter->timer_wq);
adapter->timer_wq = NULL;
}
-} /* ixv_free_workqueue */
+} /* ixv_free_deferred_handlers */
/************************************************************************
* ixv_free_pci_resources
@@ -3413,7 +3413,7 @@
return (0);
err_out:
kcpuset_destroy(affinity);
- ixv_free_workqueue(adapter);
+ ixv_free_deferred_handlers(adapter);
ixv_free_pci_resources(adapter);
return (error);
} /* ixv_allocate_msix */
Home |
Main Index |
Thread Index |
Old Index