priv->systime_flags);
                write_unlock_irqrestore(&priv->ptp_lock, flags);
                break;
-       case PTP_CLK_REQ_EXTTS:
+       case PTP_CLK_REQ_EXTTS: {
+               u8 channel;
+
                mutex_lock(&priv->aux_ts_lock);
                acr_value = readl(ptpaddr + PTP_ACR);
+               channel = ilog2(FIELD_GET(PTP_ACR_MASK, acr_value));
                acr_value &= ~PTP_ACR_MASK;
+
                if (on) {
+                       if (FIELD_GET(PTP_ACR_MASK, acr_value)) {
+                               netdev_err(priv->dev,
+                                          "Cannot enable auxiliary snapshot %d as auxiliary snapshot %d is already enabled",
+                                       rq->extts.index, channel);
+                               mutex_unlock(&priv->aux_ts_lock);
+                               return -EBUSY;
+                       }
+
                        priv->plat->flags |= STMMAC_FLAG_EXT_SNAPSHOT_EN;
 
                        /* Enable External snapshot trigger */
                                         !(acr_value & PTP_ACR_ATSFC),
                                         10, 10000);
                break;
+       }
 
        default:
                break;