mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
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>
This commit is contained in:
committed by
Jakub Kicinski
parent
1cff8392df
commit
036bb4a537
@@ -1176,6 +1176,18 @@ static irqreturn_t dp83640_handle_interrupt(struct phy_device *phydev)
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
static int dp83640_hwtstamp_get(struct mii_timestamper *mii_ts,
|
||||
struct kernel_hwtstamp_config *cfg)
|
||||
{
|
||||
struct dp83640_private *dp83640 =
|
||||
container_of(mii_ts, struct dp83640_private, mii_ts);
|
||||
|
||||
cfg->rx_filter = dp83640->hwts_rx_en;
|
||||
cfg->tx_type = dp83640->hwts_tx_en;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int dp83640_hwtstamp_set(struct mii_timestamper *mii_ts,
|
||||
struct kernel_hwtstamp_config *cfg,
|
||||
struct netlink_ext_ack *extack)
|
||||
@@ -1198,7 +1210,7 @@ static int dp83640_hwtstamp_set(struct mii_timestamper *mii_ts,
|
||||
case HWTSTAMP_FILTER_PTP_V1_L4_EVENT:
|
||||
case HWTSTAMP_FILTER_PTP_V1_L4_SYNC:
|
||||
case HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ:
|
||||
dp83640->hwts_rx_en = 1;
|
||||
dp83640->hwts_rx_en = HWTSTAMP_FILTER_PTP_V1_L4_EVENT;
|
||||
dp83640->layer = PTP_CLASS_L4;
|
||||
dp83640->version = PTP_CLASS_V1;
|
||||
cfg->rx_filter = HWTSTAMP_FILTER_PTP_V1_L4_EVENT;
|
||||
@@ -1206,7 +1218,7 @@ static int dp83640_hwtstamp_set(struct mii_timestamper *mii_ts,
|
||||
case HWTSTAMP_FILTER_PTP_V2_L4_EVENT:
|
||||
case HWTSTAMP_FILTER_PTP_V2_L4_SYNC:
|
||||
case HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ:
|
||||
dp83640->hwts_rx_en = 1;
|
||||
dp83640->hwts_rx_en = HWTSTAMP_FILTER_PTP_V2_L4_EVENT;
|
||||
dp83640->layer = PTP_CLASS_L4;
|
||||
dp83640->version = PTP_CLASS_V2;
|
||||
cfg->rx_filter = HWTSTAMP_FILTER_PTP_V2_L4_EVENT;
|
||||
@@ -1214,7 +1226,7 @@ static int dp83640_hwtstamp_set(struct mii_timestamper *mii_ts,
|
||||
case HWTSTAMP_FILTER_PTP_V2_L2_EVENT:
|
||||
case HWTSTAMP_FILTER_PTP_V2_L2_SYNC:
|
||||
case HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ:
|
||||
dp83640->hwts_rx_en = 1;
|
||||
dp83640->hwts_rx_en = HWTSTAMP_FILTER_PTP_V2_L2_EVENT;
|
||||
dp83640->layer = PTP_CLASS_L2;
|
||||
dp83640->version = PTP_CLASS_V2;
|
||||
cfg->rx_filter = HWTSTAMP_FILTER_PTP_V2_L2_EVENT;
|
||||
@@ -1222,7 +1234,7 @@ static int dp83640_hwtstamp_set(struct mii_timestamper *mii_ts,
|
||||
case HWTSTAMP_FILTER_PTP_V2_EVENT:
|
||||
case HWTSTAMP_FILTER_PTP_V2_SYNC:
|
||||
case HWTSTAMP_FILTER_PTP_V2_DELAY_REQ:
|
||||
dp83640->hwts_rx_en = 1;
|
||||
dp83640->hwts_rx_en = HWTSTAMP_FILTER_PTP_V2_EVENT;
|
||||
dp83640->layer = PTP_CLASS_L4 | PTP_CLASS_L2;
|
||||
dp83640->version = PTP_CLASS_V2;
|
||||
cfg->rx_filter = HWTSTAMP_FILTER_PTP_V2_EVENT;
|
||||
@@ -1408,6 +1420,7 @@ static int dp83640_probe(struct phy_device *phydev)
|
||||
dp83640->mii_ts.rxtstamp = dp83640_rxtstamp;
|
||||
dp83640->mii_ts.txtstamp = dp83640_txtstamp;
|
||||
dp83640->mii_ts.hwtstamp_set = dp83640_hwtstamp_set;
|
||||
dp83640->mii_ts.hwtstamp_get = dp83640_hwtstamp_get;
|
||||
dp83640->mii_ts.ts_info = dp83640_ts_info;
|
||||
|
||||
INIT_DELAYED_WORK(&dp83640->ts_work, rx_timestamp_work);
|
||||
|
||||
Reference in New Issue
Block a user