diff --git a/drivers/net/wireless/cnss2/debug.c b/drivers/net/wireless/cnss2/debug.c index 9ba655988f01..b6e7cba39242 100644 --- a/drivers/net/wireless/cnss2/debug.c +++ b/drivers/net/wireless/cnss2/debug.c @@ -705,6 +705,8 @@ static int cnss_show_quirks_state(struct seq_file *s, continue; case IGNORE_PCI_LINK_FAILURE: seq_puts(s, "IGNORE_PCI_LINK_FAILURE"); + case DISABLE_TIME_SYNC: + seq_puts(s, "DISABLE_TIME_SYNC"); continue; } diff --git a/drivers/net/wireless/cnss2/main.h b/drivers/net/wireless/cnss2/main.h index 8f677f03b7d6..172be260b280 100644 --- a/drivers/net/wireless/cnss2/main.h +++ b/drivers/net/wireless/cnss2/main.h @@ -324,6 +324,7 @@ enum cnss_debug_quirks { DISABLE_DRV, DISABLE_IO_COHERENCY, IGNORE_PCI_LINK_FAILURE, + DISABLE_TIME_SYNC, }; enum cnss_bdf_type { diff --git a/drivers/net/wireless/cnss2/pci.c b/drivers/net/wireless/cnss2/pci.c index baddb51e90fc..7fe4599179a2 100644 --- a/drivers/net/wireless/cnss2/pci.c +++ b/drivers/net/wireless/cnss2/pci.c @@ -1690,6 +1690,16 @@ static void cnss_pci_time_sync_work_hdlr(struct work_struct *work) unsigned int time_sync_period_ms = plat_priv->ctrl_params.time_sync_period; + if (test_bit(DISABLE_TIME_SYNC, &plat_priv->ctrl_params.quirks)) { + cnss_pr_dbg("Time sync is disabled\n"); + return; + } + + if (!time_sync_period_ms) { + cnss_pr_dbg("Skip time sync as time period is 0\n"); + return; + } + if (cnss_pci_is_device_down(&pci_priv->pci_dev->dev)) return;