req.selfrst_status = self_reset;
req.flags = flags;
- rc = hwrm_send_message(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT);
- if (rc == -EACCES)
- bnxt_print_admin_err(bp);
+ if (proc_type == FW_RESET_REQ_EMBEDDED_PROC_TYPE_AP) {
+ rc = hwrm_send_message_silent(bp, &req, sizeof(req),
+ HWRM_CMD_TIMEOUT);
+ } else {
+ rc = hwrm_send_message(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT);
+ if (rc == -EACCES)
+ bnxt_print_admin_err(bp);
+ }
return rc;
}
static int bnxt_reset(struct net_device *dev, u32 *flags)
{
struct bnxt *bp = netdev_priv(dev);
+ bool reload = false;
u32 req = *flags;
if (!req)
if (!bnxt_firmware_reset_chip(dev)) {
netdev_info(dev, "Firmware reset request successful.\n");
if (!(bp->fw_cap & BNXT_FW_CAP_HOT_RESET))
- netdev_info(dev, "Reload driver to complete reset\n");
+ reload = true;
*flags &= ~BNXT_FW_RESET_CHIP;
}
} else if (req == BNXT_FW_RESET_CHIP) {
if (bp->hwrm_spec_code >= 0x10803) {
if (!bnxt_firmware_reset_ap(dev)) {
netdev_info(dev, "Reset application processor successful.\n");
+ reload = true;
*flags &= ~BNXT_FW_RESET_AP;
}
} else if (req == BNXT_FW_RESET_AP) {
}
}
+ if (reload)
+ netdev_info(dev, "Reload driver to complete reset\n");
+
return 0;
}