Skip to content

Commit 208a211

Browse files
committed
Merge branch '40GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue
Tony Nguyen says: ==================== Intel Wired LAN Driver Updates 2023-01-20 (iavf) This series contains updates to iavf driver only. Michal Schmidt converts single iavf workqueue to per adapter to avoid deadlock issues. Marcin moves setting of VLAN related netdev features to watchdog task to avoid RTNL deadlock. Stefan Assmann schedules immediate watchdog task execution on changing primary MAC to avoid excessive delay. * '40GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue: iavf: schedule watchdog immediately when changing primary MAC iavf: Move netdev_update_features() into watchdog task iavf: fix temporary deadlock and failure to set MAC address ==================== Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
2 parents 571cca7 + e2b53ea commit 208a211

File tree

4 files changed

+66
-69
lines changed

4 files changed

+66
-69
lines changed

drivers/net/ethernet/intel/iavf/iavf.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,7 @@ struct iavf_cloud_filter {
249249

250250
/* board specific private data structure */
251251
struct iavf_adapter {
252+
struct workqueue_struct *wq;
252253
struct work_struct reset_task;
253254
struct work_struct adminq_task;
254255
struct delayed_work client_task;
@@ -459,7 +460,6 @@ struct iavf_device {
459460

460461
/* needed by iavf_ethtool.c */
461462
extern char iavf_driver_name[];
462-
extern struct workqueue_struct *iavf_wq;
463463

464464
static inline const char *iavf_state_str(enum iavf_state_t state)
465465
{

drivers/net/ethernet/intel/iavf/iavf_ethtool.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -532,7 +532,7 @@ static int iavf_set_priv_flags(struct net_device *netdev, u32 flags)
532532
if (changed_flags & IAVF_FLAG_LEGACY_RX) {
533533
if (netif_running(netdev)) {
534534
adapter->flags |= IAVF_FLAG_RESET_NEEDED;
535-
queue_work(iavf_wq, &adapter->reset_task);
535+
queue_work(adapter->wq, &adapter->reset_task);
536536
}
537537
}
538538

@@ -672,7 +672,7 @@ static int iavf_set_ringparam(struct net_device *netdev,
672672

673673
if (netif_running(netdev)) {
674674
adapter->flags |= IAVF_FLAG_RESET_NEEDED;
675-
queue_work(iavf_wq, &adapter->reset_task);
675+
queue_work(adapter->wq, &adapter->reset_task);
676676
}
677677

678678
return 0;
@@ -1433,7 +1433,7 @@ static int iavf_add_fdir_ethtool(struct iavf_adapter *adapter, struct ethtool_rx
14331433
adapter->aq_required |= IAVF_FLAG_AQ_ADD_FDIR_FILTER;
14341434
spin_unlock_bh(&adapter->fdir_fltr_lock);
14351435

1436-
mod_delayed_work(iavf_wq, &adapter->watchdog_task, 0);
1436+
mod_delayed_work(adapter->wq, &adapter->watchdog_task, 0);
14371437

14381438
ret:
14391439
if (err && fltr)
@@ -1474,7 +1474,7 @@ static int iavf_del_fdir_ethtool(struct iavf_adapter *adapter, struct ethtool_rx
14741474
spin_unlock_bh(&adapter->fdir_fltr_lock);
14751475

14761476
if (fltr && fltr->state == IAVF_FDIR_FLTR_DEL_REQUEST)
1477-
mod_delayed_work(iavf_wq, &adapter->watchdog_task, 0);
1477+
mod_delayed_work(adapter->wq, &adapter->watchdog_task, 0);
14781478

14791479
return err;
14801480
}
@@ -1658,7 +1658,7 @@ iavf_set_adv_rss_hash_opt(struct iavf_adapter *adapter,
16581658
spin_unlock_bh(&adapter->adv_rss_lock);
16591659

16601660
if (!err)
1661-
mod_delayed_work(iavf_wq, &adapter->watchdog_task, 0);
1661+
mod_delayed_work(adapter->wq, &adapter->watchdog_task, 0);
16621662

16631663
mutex_unlock(&adapter->crit_lock);
16641664

0 commit comments

Comments
 (0)