Message ID | 20220809092002.17571-4-ihuguet@redhat.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | sfc: add support for PTP over IPv6 and 802.3 | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Clearly marked for net-next |
netdev/fixes_present | success | Fixes tag not required for -next series |
netdev/subject_prefix | success | Link |
netdev/cover_letter | success | Series has a cover letter |
netdev/patch_count | success | Link |
netdev/header_inline | success | No static functions without inline keyword in header files |
netdev/build_32bit | success | Errors and warnings before: 3 this patch: 3 |
netdev/cc_maintainers | success | CCed 7 of 7 maintainers |
netdev/build_clang | success | Errors and warnings before: 0 this patch: 0 |
netdev/module_param | success | Was 0 now: 0 |
netdev/verify_signedoff | success | Signed-off-by tag matches author and committer |
netdev/check_selftest | success | No net selftest shell script |
netdev/verify_fixes | success | No Fixes tag |
netdev/build_allmodconfig_warn | success | Errors and warnings before: 3 this patch: 3 |
netdev/checkpatch | warning | WARNING: line length of 83 exceeds 80 columns |
netdev/kdoc | success | Errors and warnings before: 0 this patch: 0 |
netdev/source_inline | success | Was 0 now: 0 |
On 09/08/2022 10:20, Íñigo Huguet wrote: > The previous patch add support for PTP over IPv6/UDP (only for 8000 > series and newer) and this one add support for PTP over 802.3. > > Tested: sync as master and as slave is correct with ptp4l. PTP over IPv4 > and IPv6 still works fine. > > Suggested-by: Edward Cree <ecree.xilinx@gmail.com> > Signed-off-by: Íñigo Huguet <ihuguet@redhat.com> Reviewed-by: Edward Cree <ecree.xilinx@gmail.com>
diff --git a/drivers/net/ethernet/sfc/ptp.c b/drivers/net/ethernet/sfc/ptp.c index 1e6a70fce77a..7e8390a5a757 100644 --- a/drivers/net/ethernet/sfc/ptp.c +++ b/drivers/net/ethernet/sfc/ptp.c @@ -118,13 +118,14 @@ #define PTP_MIN_LENGTH 63 -#define PTP_RXFILTERS_LEN 4 +#define PTP_RXFILTERS_LEN 5 #define PTP_ADDR_IPV4 htonl(0xe0000181) /* 224.0.1.129 */ #define PTP_ADDR_IPV6 {0xff, 0x0e, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ 0, 0x01, 0x81} /* ff0e::181 */ #define PTP_EVENT_PORT htons(319) #define PTP_GENERAL_PORT htons(320) +#define PTP_ADDR_ETHER {0x01, 0x1b, 0x19, 0, 0, 0} /* 01-1B-19-00-00-00 */ /* Annoyingly the format of the version numbers are different between * versions 1 and 2 so it isn't possible to simply look for 1 or 2. @@ -1339,6 +1340,18 @@ static int efx_ptp_insert_ipv6_filter(struct efx_nic *efx, __be16 port) return efx_ptp_insert_filter(efx, &rxfilter); } +static int efx_ptp_insert_eth_filter(struct efx_nic *efx) +{ + const u8 addr[ETH_ALEN] = PTP_ADDR_ETHER; + struct efx_filter_spec rxfilter; + + efx_ptp_init_filter(efx, &rxfilter); + efx_filter_set_eth_local(&rxfilter, EFX_FILTER_VID_UNSPEC, addr); + rxfilter.match_flags |= EFX_FILTER_MATCH_ETHER_TYPE; + rxfilter.ether_type = htons(ETH_P_1588); + return efx_ptp_insert_filter(efx, &rxfilter); +} + static int efx_ptp_insert_multicast_filters(struct efx_nic *efx) { struct efx_ptp_data *ptp = efx->ptp_data; @@ -1356,7 +1369,7 @@ static int efx_ptp_insert_multicast_filters(struct efx_nic *efx) goto fail; /* if the NIC supports hw timestamps by the MAC, we can support - * PTP over IPv6 + * PTP over IPv6 and Ethernet */ if (efx_ptp_use_mac_tx_timestamps(efx)) { rc = efx_ptp_insert_ipv6_filter(efx, PTP_EVENT_PORT); @@ -1366,6 +1379,10 @@ static int efx_ptp_insert_multicast_filters(struct efx_nic *efx) rc = efx_ptp_insert_ipv6_filter(efx, PTP_GENERAL_PORT); if (rc < 0) goto fail; + + rc = efx_ptp_insert_eth_filter(efx); + if (rc < 0) + goto fail; } return 0;
The previous patch add support for PTP over IPv6/UDP (only for 8000 series and newer) and this one add support for PTP over 802.3. Tested: sync as master and as slave is correct with ptp4l. PTP over IPv4 and IPv6 still works fine. Suggested-by: Edward Cree <ecree.xilinx@gmail.com> Signed-off-by: Íñigo Huguet <ihuguet@redhat.com> --- drivers/net/ethernet/sfc/ptp.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-)