On Thu, Sep 04, 2025 at 12:53:27AM +0200, Andrew Lunn wrote: > > * rnpgbe_add_adapter - Add netdev for this pci_dev > > * @pdev: PCI device information structure > > @@ -78,6 +129,38 @@ static int rnpgbe_add_adapter(struct pci_dev *pdev, > > > > hw->hw_addr = hw_addr; > > info->init(hw); > > + mucse_init_mbx_params_pf(hw); > > + err = hw->ops->echo_fw_status(hw, true, mucse_fw_powerup); > > + if (err) { > > + dev_warn(&pdev->dev, "Send powerup to hw failed %d\n", err); > > + dev_warn(&pdev->dev, "Maybe low performance\n"); > > + } > > + > > + err = mucse_mbx_sync_fw(hw); > > + if (err) { > > + dev_err(&pdev->dev, "Sync fw failed! %d\n", err); > > + goto err_free_net; > > + } > > The order here seems odd. Don't you want to synchronise the mbox > before you power up? If your are out of sync, the power up could fail, > and you keep in lower power mode? > As I explained before, powerup sends mbx and wait fw read out, but without response data from fw. mucse_mbx_sync_fw sends mbx and wait for the corect response from fw, after mucse_mbx_sync_fw, driver->fw request and fw->driver response will be both ok. > > + netdev->netdev_ops = &rnpgbe_netdev_ops; > > + netdev->watchdog_timeo = 5 * HZ; > > + err = hw->ops->reset_hw(hw); > > + if (err) { > > + dev_err(&pdev->dev, "Hw reset failed %d\n", err); > > + goto err_free_net; > > + } > > + err = hw->ops->get_perm_mac(hw); > > + if (err == -EINVAL) { > > + dev_warn(&pdev->dev, "Try to use random MAC\n"); > > + eth_random_addr(hw->perm_addr); > > eth_random_addr() cannot fail. So you don't try to use a random MAC > address, you are using a random MAC address/ > > Andrew > Maybe update it like this? if (err == -EINVAL) { dev_warn(&pdev->dev, "Using a random MAC\n"); .... Thanks for your feedback.