On Wed, Aug 20, 2025 at 10:30:17PM +0200, Andrew Lunn wrote: > > +int mucse_mbx_get_capability(struct mucse_hw *hw) > > +{ > > + struct hw_abilities ability = {}; > > + int try_cnt = 3; > > + int err = -EIO; > > + > > + while (try_cnt--) { > > + err = mucse_fw_get_capability(hw, &ability); > > + if (err) > > + continue; > > + hw->pfvfnum = le16_to_cpu(ability.pfnum); > > + hw->fw_version = le32_to_cpu(ability.fw_version); > > + hw->usecstocount = le32_to_cpu(ability.axi_mhz); > > If you can get it from the hardware, why do you need to initialise it > in the earlier patch? > > I guess you have a bootstrap problem, you need it to get it. But > cannot you just initialise it to a single pessimistic value which will > work well enough for all hardware variants until you can actually ask > the hardware? > > Andrew > It is a problem related with fw version. Older fw may return with axi_mhz 0, So I init a no-zero default value first. Also, I missed to check the axi_mhz here. The 'usecstocount' is removed in v6, I will update here like this in the patch which truely use 'usecstocount': if (le32_to_cpu(ability.axi_mhz)) hw->usecstocount = le32_to_cpu(ability.axi_mhz); /* else keep use the default value */ Thanks for your feedback.