Message ID | 20240604131400.13655-2-mateusz.polchlopek@intel.com (mailing list archive) |
---|---|
State | Awaiting Upstream |
Headers | show |
Series | Add support for Rx timestamping for both ice and iavf drivers. | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Guessing tree name failed - patch did not apply |
On Tue, Jun 04, 2024 at 09:13:49AM -0400, Mateusz Polchlopek wrote: > From: Jacob Keller <jacob.e.keller@intel.com> > > Add support for allowing a VF to enable PTP feature - Rx timestamps > > The new capability is gated by VIRTCHNL_VF_CAP_PTP, which must be > set by the VF to request access to the new operations. In addition, the > VIRTCHNL_OP_1588_PTP_CAPS command is used to determine the specific > capabilities available to the VF. > > This support includes the following additional capabilities: > > * Rx timestamps enabled in the Rx queues (when using flexible advanced > descriptors) > * Read access to PHC time over virtchnl using > VIRTCHNL_OP_1588_PTP_GET_TIME > > Extra space is reserved in most structures to allow for future > extension (like set clock, Tx timestamps). Additional opcode numbers > are reserved and space in the virtchnl_ptp_caps structure is > specifically set aside for this. > Additionally, each structure has some space reserved for future > extensions to allow some flexibility. > > Signed-off-by: Jacob Keller <jacob.e.keller@intel.com> > Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com> > Reviewed-by: Rahul Rameshbabu <rrameshbabu@nvidia.com> > Signed-off-by: Mateusz Polchlopek <mateusz.polchlopek@intel.com> Hi Mateusz, Jacob, all, If you need to respin this for some reason, please consider updating the Kernel doc for the following to include a short description. Else, please consider doing so as a follow-up * struct virtchnl_ptp_caps * struct virtchnl_phc_time Likewise as a follow-up, as it was not introduced by this patch, for: * virtchnl_vc_validate_vf_msg Flagged by kernel-doc -none -Wall The above not withstanding, this looks good to me. Reviewed-by: Simon Horman <horms@kernel.org> ...
On 6/8/2024 2:55 PM, Simon Horman wrote: > On Tue, Jun 04, 2024 at 09:13:49AM -0400, Mateusz Polchlopek wrote: >> From: Jacob Keller <jacob.e.keller@intel.com> >> >> Add support for allowing a VF to enable PTP feature - Rx timestamps >> >> The new capability is gated by VIRTCHNL_VF_CAP_PTP, which must be >> set by the VF to request access to the new operations. In addition, the >> VIRTCHNL_OP_1588_PTP_CAPS command is used to determine the specific >> capabilities available to the VF. >> >> This support includes the following additional capabilities: >> >> * Rx timestamps enabled in the Rx queues (when using flexible advanced >> descriptors) >> * Read access to PHC time over virtchnl using >> VIRTCHNL_OP_1588_PTP_GET_TIME >> >> Extra space is reserved in most structures to allow for future >> extension (like set clock, Tx timestamps). Additional opcode numbers >> are reserved and space in the virtchnl_ptp_caps structure is >> specifically set aside for this. >> Additionally, each structure has some space reserved for future >> extensions to allow some flexibility. >> >> Signed-off-by: Jacob Keller <jacob.e.keller@intel.com> >> Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com> >> Reviewed-by: Rahul Rameshbabu <rrameshbabu@nvidia.com> >> Signed-off-by: Mateusz Polchlopek <mateusz.polchlopek@intel.com> > > Hi Mateusz, Jacob, all, > > If you need to respin this for some reason, please consider updating > the Kernel doc for the following to include a short description. > Else, please consider doing so as a follow-up > > * struct virtchnl_ptp_caps > * struct virtchnl_phc_time > > Likewise as a follow-up, as it was not introduced by this patch, for: > > * virtchnl_vc_validate_vf_msg > > Flagged by kernel-doc -none -Wall > > The above not withstanding, this looks good to me. > > Reviewed-by: Simon Horman <horms@kernel.org> > > ... Hello Simon! Thanks for Your review - I appreciate it. I thought about followup series after this being merged but I received one warning from kernel-bot regarding ARM architecture issue. That being said I will post (probably tomorrow) v8 with fix for ARM architecture issue and I will also include fixes for virtchnl_ptp_caps and virtchnl_phc_time (and exceeded 80 chars issues in commit 6). As You pointed, the virtchnl_vc_validate_vf_msg function has not been introduced in this patch so I do not want to mix that. I will create post-merge followup with documentation changes for mentioned function (virtchnl_vc_validate_vf_msg) and also for one docs leftover from my previous series (related to tx scheduler). Mateusz
On 6/8/2024 5:55 AM, Simon Horman wrote: > If you need to respin this for some reason, please consider updating > the Kernel doc for the following to include a short description. > Else, please consider doing so as a follow-up > > * struct virtchnl_ptp_caps > * struct virtchnl_phc_time > > Likewise as a follow-up, as it was not introduced by this patch, for: > > * virtchnl_vc_validate_vf_msg > > Flagged by kernel-doc -none -Wall > > The above not withstanding, this looks good to me. > > Reviewed-by: Simon Horman <horms@kernel.org> > > ... At some point I would like to do the work to cleanup all of the remaining doc warnings in ice so that we can get a clean slate :D
diff --git a/include/linux/avf/virtchnl.h b/include/linux/avf/virtchnl.h index f41395264dca..3663ad743de1 100644 --- a/include/linux/avf/virtchnl.h +++ b/include/linux/avf/virtchnl.h @@ -151,6 +151,9 @@ enum virtchnl_ops { VIRTCHNL_OP_DISABLE_VLAN_STRIPPING_V2 = 55, VIRTCHNL_OP_ENABLE_VLAN_INSERTION_V2 = 56, VIRTCHNL_OP_DISABLE_VLAN_INSERTION_V2 = 57, + /* opcode 58 and 59 are reserved */ + VIRTCHNL_OP_1588_PTP_GET_CAPS = 60, + VIRTCHNL_OP_1588_PTP_GET_TIME = 61, VIRTCHNL_OP_MAX, }; @@ -261,6 +264,7 @@ VIRTCHNL_CHECK_STRUCT_LEN(16, virtchnl_vsi_resource); #define VIRTCHNL_VF_OFFLOAD_RX_FLEX_DESC BIT(26) #define VIRTCHNL_VF_OFFLOAD_ADV_RSS_PF BIT(27) #define VIRTCHNL_VF_OFFLOAD_FDIR_PF BIT(28) +#define VIRTCHNL_VF_CAP_PTP BIT(31) #define VF_BASE_MODE_OFFLOADS (VIRTCHNL_VF_OFFLOAD_L2 | \ VIRTCHNL_VF_OFFLOAD_VLAN | \ @@ -1416,6 +1420,62 @@ struct virtchnl_fdir_del { VIRTCHNL_CHECK_STRUCT_LEN(12, virtchnl_fdir_del); +#define VIRTCHNL_1588_PTP_CAP_RX_TSTAMP BIT(1) +#define VIRTCHNL_1588_PTP_CAP_READ_PHC BIT(2) + +/** + * struct virtchnl_ptp_caps + * + * Structure that defines the PTP capabilities available to the VF. The VF + * sends VIRTCHNL_OP_1588_PTP_GET_CAPS, and must fill in the ptp_caps field + * indicating what capabilities it is requesting. The PF will respond with the + * same message with the virtchnl_ptp_caps structure indicating what is + * enabled for the VF. + * + * @caps: On send, VF sets what capabilities it requests. On reply, PF + * indicates what has been enabled for this VF. The PF shall not set + * bits which were not requested by the VF. + * @rsvd: Reserved bits for future extension. + * + * PTP capabilities + * + * VIRTCHNL_1588_PTP_CAP_RX_TSTAMP indicates that the VF receive queues have + * receive timestamps enabled in the flexible descriptors. Note that this + * requires a VF to also negotiate to enable advanced flexible descriptors in + * the receive path instead of the default legacy descriptor format. + * + * VIRTCHNL_1588_PTP_CAP_READ_PHC indicates that the VF may read the PHC time + * via the VIRTCHNL_OP_1588_PTP_GET_TIME command. + * + * Note that in the future, additional capability flags may be added which + * indicate additional extended support. All fields marked as reserved by this + * header will be set to zero. VF implementations should verify this to ensure + * that future extensions do not break compatibility. + */ +struct virtchnl_ptp_caps { + u32 caps; + u8 rsvd[44]; +}; +VIRTCHNL_CHECK_STRUCT_LEN(48, virtchnl_ptp_caps); + +/** + * struct virtchnl_phc_time + * @time: PHC time in nanoseconds + * @rsvd: Reserved for future extension + * + * Structure received with VIRTCHNL_OP_1588_PTP_GET_TIME. Contains the 64bits + * of PHC clock time in * nanoseconds. + * + * VIRTCHNL_OP_1588_PTP_GET_TIME may be sent to request the current time of + * the PHC. This op is available in case direct access via the PHC registers + * is not available. + */ +struct virtchnl_phc_time { + u64 time; + u8 rsvd[8]; +}; +VIRTCHNL_CHECK_STRUCT_LEN(16, virtchnl_phc_time); + #define __vss_byone(p, member, count, old) \ (struct_size(p, member, count) + (old - 1 - struct_size(p, member, 0))) @@ -1637,6 +1697,12 @@ virtchnl_vc_validate_vf_msg(struct virtchnl_version_info *ver, u32 v_opcode, case VIRTCHNL_OP_DISABLE_VLAN_INSERTION_V2: valid_len = sizeof(struct virtchnl_vlan_setting); break; + case VIRTCHNL_OP_1588_PTP_GET_CAPS: + valid_len = sizeof(struct virtchnl_ptp_caps); + break; + case VIRTCHNL_OP_1588_PTP_GET_TIME: + valid_len = sizeof(struct virtchnl_phc_time); + break; /* These are always errors coming from the VF. */ case VIRTCHNL_OP_EVENT: case VIRTCHNL_OP_UNKNOWN: