Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: phy: dp83640: add HW timestamp configuration reporting

The driver stores configuration of TX timestamping and can technically
report it. Patch RX timestamp configuration storage to be more precise
on reporting and add callback to actually report it.

Reviewed-by: Kory Maincent <kory.maincent@bootlin.com>
Signed-off-by: Vadim Fedorenko <vadim.fedorenko@linux.dev>
Link: https://patch.msgid.link/20251124181151.277256-5-vadim.fedorenko@linux.dev
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Vadim Fedorenko and committed by
Jakub Kicinski
036bb4a5 1cff8392

+17 -4
+17 -4
drivers/net/phy/dp83640.c
··· 1176 1176 return IRQ_HANDLED; 1177 1177 } 1178 1178 1179 + static int dp83640_hwtstamp_get(struct mii_timestamper *mii_ts, 1180 + struct kernel_hwtstamp_config *cfg) 1181 + { 1182 + struct dp83640_private *dp83640 = 1183 + container_of(mii_ts, struct dp83640_private, mii_ts); 1184 + 1185 + cfg->rx_filter = dp83640->hwts_rx_en; 1186 + cfg->tx_type = dp83640->hwts_tx_en; 1187 + 1188 + return 0; 1189 + } 1190 + 1179 1191 static int dp83640_hwtstamp_set(struct mii_timestamper *mii_ts, 1180 1192 struct kernel_hwtstamp_config *cfg, 1181 1193 struct netlink_ext_ack *extack) ··· 1210 1198 case HWTSTAMP_FILTER_PTP_V1_L4_EVENT: 1211 1199 case HWTSTAMP_FILTER_PTP_V1_L4_SYNC: 1212 1200 case HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ: 1213 - dp83640->hwts_rx_en = 1; 1201 + dp83640->hwts_rx_en = HWTSTAMP_FILTER_PTP_V1_L4_EVENT; 1214 1202 dp83640->layer = PTP_CLASS_L4; 1215 1203 dp83640->version = PTP_CLASS_V1; 1216 1204 cfg->rx_filter = HWTSTAMP_FILTER_PTP_V1_L4_EVENT; ··· 1218 1206 case HWTSTAMP_FILTER_PTP_V2_L4_EVENT: 1219 1207 case HWTSTAMP_FILTER_PTP_V2_L4_SYNC: 1220 1208 case HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ: 1221 - dp83640->hwts_rx_en = 1; 1209 + dp83640->hwts_rx_en = HWTSTAMP_FILTER_PTP_V2_L4_EVENT; 1222 1210 dp83640->layer = PTP_CLASS_L4; 1223 1211 dp83640->version = PTP_CLASS_V2; 1224 1212 cfg->rx_filter = HWTSTAMP_FILTER_PTP_V2_L4_EVENT; ··· 1226 1214 case HWTSTAMP_FILTER_PTP_V2_L2_EVENT: 1227 1215 case HWTSTAMP_FILTER_PTP_V2_L2_SYNC: 1228 1216 case HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ: 1229 - dp83640->hwts_rx_en = 1; 1217 + dp83640->hwts_rx_en = HWTSTAMP_FILTER_PTP_V2_L2_EVENT; 1230 1218 dp83640->layer = PTP_CLASS_L2; 1231 1219 dp83640->version = PTP_CLASS_V2; 1232 1220 cfg->rx_filter = HWTSTAMP_FILTER_PTP_V2_L2_EVENT; ··· 1234 1222 case HWTSTAMP_FILTER_PTP_V2_EVENT: 1235 1223 case HWTSTAMP_FILTER_PTP_V2_SYNC: 1236 1224 case HWTSTAMP_FILTER_PTP_V2_DELAY_REQ: 1237 - dp83640->hwts_rx_en = 1; 1225 + dp83640->hwts_rx_en = HWTSTAMP_FILTER_PTP_V2_EVENT; 1238 1226 dp83640->layer = PTP_CLASS_L4 | PTP_CLASS_L2; 1239 1227 dp83640->version = PTP_CLASS_V2; 1240 1228 cfg->rx_filter = HWTSTAMP_FILTER_PTP_V2_EVENT; ··· 1420 1408 dp83640->mii_ts.rxtstamp = dp83640_rxtstamp; 1421 1409 dp83640->mii_ts.txtstamp = dp83640_txtstamp; 1422 1410 dp83640->mii_ts.hwtstamp_set = dp83640_hwtstamp_set; 1411 + dp83640->mii_ts.hwtstamp_get = dp83640_hwtstamp_get; 1423 1412 dp83640->mii_ts.ts_info = dp83640_ts_info; 1424 1413 1425 1414 INIT_DELAYED_WORK(&dp83640->ts_work, rx_timestamp_work);