On Tue, Jun 04, 2024 at 09:13:52AM -0400, Mateusz Polchlopek wrote: > From: Jacob Keller <[email protected]> > > 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 <[email protected]> > Reviewed-by: Wojciech Drewek <[email protected]> > Co-developed-by: Mateusz Polchlopek <[email protected]> > Signed-off-by: Mateusz Polchlopek <[email protected]>
Hi Mateusz, Jacob, all, The nit below notwithstanding, this looks good to me. Reviewed-by: Simon Horman <[email protected]> ... > @@ -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 ...
