Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 54b3c9cf authored by Jeff Kirsher's avatar Jeff Kirsher
Browse files

fm10k: start service timer on probe



Since the service task handles varying work that doesn't all require the
interface to be up, launch the service timer immediately. This ensures
that we continually check the mailbox, as well as handle other tasks
while the device is down.

Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
Acked-by: default avatarMatthew Vick <matthew.vick@intel.com>
Tested-by: default avatarKrishneil Singh <krishneil.k.singh@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
parent 41857562
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -1511,7 +1511,7 @@ void fm10k_up(struct fm10k_intfc *interface)
	/* enable transmits */
	netif_tx_start_all_queues(interface->netdev);

	/* kick off the service timer */
	/* kick off the service timer now */
	hw->mac.get_host_state = 1;
	mod_timer(&interface->service_timer, jiffies);
}
@@ -1551,8 +1551,6 @@ void fm10k_down(struct fm10k_intfc *interface)
	/* disable polling routines */
	fm10k_napi_disable_all(interface);

	del_timer_sync(&interface->service_timer);

	/* capture stats one last time before stopping interface */
	fm10k_update_stats(interface);

@@ -1678,6 +1676,9 @@ static int fm10k_sw_init(struct fm10k_intfc *interface,
		    (unsigned long)interface);
	INIT_WORK(&interface->service_task, fm10k_service_task);

	/* kick off service timer now, even when interface is down */
	mod_timer(&interface->service_timer, (HZ * 2) + jiffies);

	/* Intitialize timestamp data */
	fm10k_ts_init(interface);

@@ -1894,6 +1895,8 @@ static void fm10k_remove(struct pci_dev *pdev)
	struct fm10k_intfc *interface = pci_get_drvdata(pdev);
	struct net_device *netdev = interface->netdev;

	del_timer_sync(&interface->service_timer);

	set_bit(__FM10K_SERVICE_DISABLE, &interface->state);
	cancel_work_sync(&interface->service_task);