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

ionic: catch no ptp support earlier

If PTP configuration is attempted on ports that don't support
it, such as VF ports, the driver will return an error status
-95, or EOPNOSUPP and print an error message
    enp98s0: hwstamp set failed: -95

Because some daemons can retry every few seconds, this can end
up filling the dmesg log and pushing out other more useful
messages.

We can catch this issue earlier in our handling and return
the error without a log message.

Fixes: 829600ce ("ionic: add ts_config replay")
Signed-off-by: default avatarShannon Nelson <snelson@pensando.io>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 6840e17b
...@@ -302,7 +302,7 @@ int ionic_lif_identify(struct ionic *ionic, u8 lif_type, ...@@ -302,7 +302,7 @@ int ionic_lif_identify(struct ionic *ionic, u8 lif_type,
int ionic_lif_size(struct ionic *ionic); int ionic_lif_size(struct ionic *ionic);
#if IS_ENABLED(CONFIG_PTP_1588_CLOCK) #if IS_ENABLED(CONFIG_PTP_1588_CLOCK)
int ionic_lif_hwstamp_replay(struct ionic_lif *lif); void ionic_lif_hwstamp_replay(struct ionic_lif *lif);
int ionic_lif_hwstamp_set(struct ionic_lif *lif, struct ifreq *ifr); int ionic_lif_hwstamp_set(struct ionic_lif *lif, struct ifreq *ifr);
int ionic_lif_hwstamp_get(struct ionic_lif *lif, struct ifreq *ifr); int ionic_lif_hwstamp_get(struct ionic_lif *lif, struct ifreq *ifr);
ktime_t ionic_lif_phc_ktime(struct ionic_lif *lif, u64 counter); ktime_t ionic_lif_phc_ktime(struct ionic_lif *lif, u64 counter);
...@@ -311,10 +311,7 @@ void ionic_lif_unregister_phc(struct ionic_lif *lif); ...@@ -311,10 +311,7 @@ void ionic_lif_unregister_phc(struct ionic_lif *lif);
void ionic_lif_alloc_phc(struct ionic_lif *lif); void ionic_lif_alloc_phc(struct ionic_lif *lif);
void ionic_lif_free_phc(struct ionic_lif *lif); void ionic_lif_free_phc(struct ionic_lif *lif);
#else #else
static inline int ionic_lif_hwstamp_replay(struct ionic_lif *lif) static inline void ionic_lif_hwstamp_replay(struct ionic_lif *lif) {}
{
return -EOPNOTSUPP;
}
static inline int ionic_lif_hwstamp_set(struct ionic_lif *lif, struct ifreq *ifr) static inline int ionic_lif_hwstamp_set(struct ionic_lif *lif, struct ifreq *ifr)
{ {
......
...@@ -188,6 +188,9 @@ int ionic_lif_hwstamp_set(struct ionic_lif *lif, struct ifreq *ifr) ...@@ -188,6 +188,9 @@ int ionic_lif_hwstamp_set(struct ionic_lif *lif, struct ifreq *ifr)
struct hwtstamp_config config; struct hwtstamp_config config;
int err; int err;
if (!lif->phc || !lif->phc->ptp)
return -EOPNOTSUPP;
if (copy_from_user(&config, ifr->ifr_data, sizeof(config))) if (copy_from_user(&config, ifr->ifr_data, sizeof(config)))
return -EFAULT; return -EFAULT;
...@@ -203,15 +206,16 @@ int ionic_lif_hwstamp_set(struct ionic_lif *lif, struct ifreq *ifr) ...@@ -203,15 +206,16 @@ int ionic_lif_hwstamp_set(struct ionic_lif *lif, struct ifreq *ifr)
return 0; return 0;
} }
int ionic_lif_hwstamp_replay(struct ionic_lif *lif) void ionic_lif_hwstamp_replay(struct ionic_lif *lif)
{ {
int err; int err;
if (!lif->phc || !lif->phc->ptp)
return;
err = ionic_lif_hwstamp_set_ts_config(lif, NULL); err = ionic_lif_hwstamp_set_ts_config(lif, NULL);
if (err) if (err)
netdev_info(lif->netdev, "hwstamp replay failed: %d\n", err); netdev_info(lif->netdev, "hwstamp replay failed: %d\n", err);
return err;
} }
int ionic_lif_hwstamp_get(struct ionic_lif *lif, struct ifreq *ifr) int ionic_lif_hwstamp_get(struct ionic_lif *lif, struct ifreq *ifr)
......
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