else
                val &= ~PFINT_OICR_TSYN_TX_M;
        wr32(&pf->hw, PFINT_OICR_ENA, val);
+
+       pf->ptp.tstamp_config.tx_type = on ? HWTSTAMP_TX_ON : HWTSTAMP_TX_OFF;
 }
 
 /**
                        continue;
                vsi->rx_rings[i]->ptp_rx = on;
        }
+
+       pf->ptp.tstamp_config.rx_filter = on ? HWTSTAMP_FILTER_ALL :
+                                              HWTSTAMP_FILTER_NONE;
 }
 
 /**
 {
        ice_set_tx_tstamp(pf, ena);
        ice_set_rx_tstamp(pf, ena);
-
-       if (ena) {
-               pf->ptp.tstamp_config.rx_filter = HWTSTAMP_FILTER_ALL;
-               pf->ptp.tstamp_config.tx_type = HWTSTAMP_TX_ON;
-       } else {
-               pf->ptp.tstamp_config.rx_filter = HWTSTAMP_FILTER_NONE;
-               pf->ptp.tstamp_config.tx_type = HWTSTAMP_TX_OFF;
-       }
 }
 
 /**
        case HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ:
        case HWTSTAMP_FILTER_NTP_ALL:
        case HWTSTAMP_FILTER_ALL:
-               config->rx_filter = HWTSTAMP_FILTER_ALL;
                ice_set_rx_tstamp(pf, true);
                break;
        default:
        if (err)
                return err;
 
-       /* Save these settings for future reference */
-       pf->ptp.tstamp_config = config;
+       /* Return the actual configuration set */
+       config = pf->ptp.tstamp_config;
 
        return copy_to_user(ifr->ifr_data, &config, sizeof(config)) ?
                -EFAULT : 0;