Commit f3318099 authored by Shannon Nelson's avatar Shannon Nelson Committed by David S. Miller

ionic: extend ts_config set locking

Make sure the configuration is locked before
operating on it for the replay.
Signed-off-by: default avatarShannon Nelson <snelson@pensando.io>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 829600ce
...@@ -79,6 +79,8 @@ static int ionic_lif_hwstamp_set_ts_config(struct ionic_lif *lif, ...@@ -79,6 +79,8 @@ static int ionic_lif_hwstamp_set_ts_config(struct ionic_lif *lif,
if (!lif->phc || !lif->phc->ptp) if (!lif->phc || !lif->phc->ptp)
return -EOPNOTSUPP; return -EOPNOTSUPP;
mutex_lock(&lif->phc->config_lock);
if (new_ts) { if (new_ts) {
config = new_ts; config = new_ts;
} else { } else {
...@@ -96,12 +98,16 @@ static int ionic_lif_hwstamp_set_ts_config(struct ionic_lif *lif, ...@@ -96,12 +98,16 @@ static int ionic_lif_hwstamp_set_ts_config(struct ionic_lif *lif,
} }
tx_mode = ionic_hwstamp_tx_mode(config->tx_type); tx_mode = ionic_hwstamp_tx_mode(config->tx_type);
if (tx_mode < 0) if (tx_mode < 0) {
return tx_mode; err = tx_mode;
goto err_queues;
}
mask = cpu_to_le64(BIT_ULL(tx_mode)); mask = cpu_to_le64(BIT_ULL(tx_mode));
if ((ionic->ident.lif.eth.hwstamp_tx_modes & mask) != mask) if ((ionic->ident.lif.eth.hwstamp_tx_modes & mask) != mask) {
return -ERANGE; err = -ERANGE;
goto err_queues;
}
rx_filt = ionic_hwstamp_rx_filt(config->rx_filter); rx_filt = ionic_hwstamp_rx_filt(config->rx_filter);
rx_all = config->rx_filter != HWTSTAMP_FILTER_NONE && !rx_filt; rx_all = config->rx_filter != HWTSTAMP_FILTER_NONE && !rx_filt;
...@@ -116,8 +122,6 @@ static int ionic_lif_hwstamp_set_ts_config(struct ionic_lif *lif, ...@@ -116,8 +122,6 @@ static int ionic_lif_hwstamp_set_ts_config(struct ionic_lif *lif,
dev_dbg(ionic->dev, "config_rx_filter %d rx_filt %#llx rx_all %d\n", dev_dbg(ionic->dev, "config_rx_filter %d rx_filt %#llx rx_all %d\n",
config->rx_filter, rx_filt, rx_all); config->rx_filter, rx_filt, rx_all);
mutex_lock(&lif->phc->config_lock);
if (tx_mode) { if (tx_mode) {
err = ionic_lif_create_hwstamp_txq(lif); err = ionic_lif_create_hwstamp_txq(lif);
if (err) if (err)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment