[Intel-wired-lan] [PATCH iwl-next v7 04/12] iavf: add support for negotiating flexible RXDID format
Simon Horman
horms at kernel.org
Sat Jun 8 12:56:30 UTC 2024
On Tue, Jun 04, 2024 at 09:13:52AM -0400, Mateusz Polchlopek wrote:
> From: Jacob Keller <jacob.e.keller at intel.com>
>
> Enable support for VIRTCHNL_VF_OFFLOAD_RX_FLEX_DESC, to enable the VF
> driver the ability to determine what Rx descriptor formats are
> available. This requires sending an additional message during
> initialization and reset, the VIRTCHNL_OP_GET_SUPPORTED_RXDIDS. This
> operation requests the supported Rx descriptor IDs available from the
> PF.
>
> This is treated the same way that VLAN V2 capabilities are handled. Add
> a new set of extended capability flags, used to process send and receipt
> of the VIRTCHNL_OP_GET_SUPPORTED_RXDIDS message.
>
> This ensures we finish negotiating for the supported descriptor formats
> prior to beginning configuration of receive queues.
>
> This change stores the supported format bitmap into the iavf_adapter
> structure. Additionally, if VIRTCHNL_VF_OFFLOAD_RX_FLEX_DESC is enabled
> by the PF, we need to make sure that the Rx queue configuration
> specifies the format.
>
> Signed-off-by: Jacob Keller <jacob.e.keller at intel.com>
> Reviewed-by: Wojciech Drewek <wojciech.drewek at intel.com>
> Co-developed-by: Mateusz Polchlopek <mateusz.polchlopek at intel.com>
> Signed-off-by: Mateusz Polchlopek <mateusz.polchlopek at intel.com>
Hi Mateusz, Jacob, all,
The nit below notwithstanding, this looks good to me.
Reviewed-by: Simon Horman <horms at kernel.org>
...
> @@ -262,6 +276,45 @@ int iavf_get_vf_vlan_v2_caps(struct iavf_adapter *adapter)
> return err;
> }
>
> +int iavf_get_vf_supported_rxdids(struct iavf_adapter *adapter)
> +{
> + struct iavf_hw *hw = &adapter->hw;
> + struct iavf_arq_event_info event;
> + enum virtchnl_ops op;
> + enum iavf_status err;
> + u16 len;
> +
> + len = sizeof(struct virtchnl_supported_rxdids);
> + event.buf_len = len;
> + event.msg_buf = kzalloc(event.buf_len, GFP_KERNEL);
> + if (!event.msg_buf) {
> + err = -ENOMEM;
> + goto out;
> + }
> +
> + while (1) {
> + /* When the AQ is empty, iavf_clean_arq_element will return
> + * nonzero and this loop will terminate.
> + */
> + err = iavf_clean_arq_element(hw, &event, NULL);
> + if (err != IAVF_SUCCESS)
> + goto out_alloc;
> + op = (enum virtchnl_ops)le32_to_cpu(event.desc.cookie_high);
> + if (op == VIRTCHNL_OP_GET_SUPPORTED_RXDIDS)
> + break;
> + }
> +
> + err = (enum iavf_status)le32_to_cpu(event.desc.cookie_low);
> + if (err)
> + goto out_alloc;
> +
> + memcpy(&adapter->supported_rxdids, event.msg_buf, min(event.msg_len, len));
If you need to respin for some other reason,
please consider wrapping the above to <= 80 columns wide.
Likewise for the 2nd call to iavf_ptp_cap_supported() in
iavf_ptp_process_caps() in
[PATCH v7 06/12] iavf: add initial framework for registering PTP clock
Flagged by: checkpatch.pl --max-line-length=80
> +out_alloc:
> + kfree(event.msg_buf);
> +out:
> + return err;
> +}
> +
> /**
> * iavf_configure_queues
> * @adapter: adapter structure
...
More information about the Intel-wired-lan
mailing list