Lines Matching refs:ionic
273 dev_dbg(lif->ionic->dev, "notifyq event:\n"); in ionic_notifyq_service()
282 if (lif->ionic->idev.fw_status_ready && in ionic_notifyq_service()
390 err = ionic_heartbeat_check(lif->ionic); in ionic_adminq_post()
443 ionic_heartbeat_check(lif->ionic); in ionic_adminq_wait()
445 !lif->ionic->idev.fw_status_ready) || in ionic_adminq_wait()
457 dev_dbg(lif->ionic->dev, "%s: elapsed %d msecs\n", in ionic_adminq_wait()
471 if (!ionic_is_fw_running(&lif->ionic->idev)) in __ionic_adminq_post_wait()
489 static void ionic_dev_cmd_clean(struct ionic *ionic) in ionic_dev_cmd_clean() argument
491 struct ionic_dev *idev = &ionic->idev; in ionic_dev_cmd_clean()
500 void ionic_dev_cmd_dev_err_print(struct ionic *ionic, u8 opcode, u8 status, in ionic_dev_cmd_dev_err_print() argument
508 dev_err(ionic->dev, "DEV_CMD %s (%d) error, %s (%d) failed\n", in ionic_dev_cmd_dev_err_print()
512 static int __ionic_dev_cmd_wait(struct ionic *ionic, unsigned long max_seconds, in __ionic_dev_cmd_wait() argument
515 struct ionic_dev *idev = &ionic->idev; in __ionic_dev_cmd_wait()
541 dev_dbg(ionic->dev, "DEVCMD %s (%d) done=%d took %ld secs (%ld jiffies)\n", in __ionic_dev_cmd_wait()
546 ionic_dev_cmd_clean(ionic); in __ionic_dev_cmd_wait()
547 dev_warn(ionic->dev, "DEVCMD %s (%d) interrupted - FW is down\n", in __ionic_dev_cmd_wait()
553 ionic_dev_cmd_clean(ionic); in __ionic_dev_cmd_wait()
554 dev_warn(ionic->dev, "DEVCMD %s (%d) timeout after %ld secs\n", in __ionic_dev_cmd_wait()
559 err = ionic_dev_cmd_status(&ionic->idev); in __ionic_dev_cmd_wait()
563 dev_dbg(ionic->dev, "DEV_CMD %s (%d), %s (%d) retrying...\n", in __ionic_dev_cmd_wait()
575 ionic_dev_cmd_dev_err_print(ionic, opcode, err, in __ionic_dev_cmd_wait()
581 ionic_dev_cmd_clean(ionic); in __ionic_dev_cmd_wait()
586 int ionic_dev_cmd_wait(struct ionic *ionic, unsigned long max_seconds) in ionic_dev_cmd_wait() argument
588 return __ionic_dev_cmd_wait(ionic, max_seconds, true); in ionic_dev_cmd_wait()
591 int ionic_dev_cmd_wait_nomsg(struct ionic *ionic, unsigned long max_seconds) in ionic_dev_cmd_wait_nomsg() argument
593 return __ionic_dev_cmd_wait(ionic, max_seconds, false); in ionic_dev_cmd_wait_nomsg()
596 int ionic_setup(struct ionic *ionic) in ionic_setup() argument
600 err = ionic_dev_setup(ionic); in ionic_setup()
603 ionic_reset(ionic); in ionic_setup()
608 int ionic_identify(struct ionic *ionic) in ionic_identify() argument
610 struct ionic_identity *ident = &ionic->ident; in ionic_identify()
611 struct ionic_dev *idev = &ionic->idev; in ionic_identify()
621 mutex_lock(&ionic->dev_cmd_lock); in ionic_identify()
627 err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); in ionic_identify()
632 mutex_unlock(&ionic->dev_cmd_lock); in ionic_identify()
635 dev_err(ionic->dev, "Cannot identify ionic: %d\n", err); in ionic_identify()
641 dev_info(ionic->dev, "FW: %.*s\n", in ionic_identify()
645 dev_info(ionic->dev, "FW: (invalid string) 0x%02x 0x%02x 0x%02x 0x%02x ...\n", in ionic_identify()
651 err = ionic_lif_identify(ionic, IONIC_LIF_TYPE_CLASSIC, in ionic_identify()
652 &ionic->ident.lif); in ionic_identify()
654 dev_err(ionic->dev, "Cannot identify LIFs: %d\n", err); in ionic_identify()
664 int ionic_init(struct ionic *ionic) in ionic_init() argument
666 struct ionic_dev *idev = &ionic->idev; in ionic_init()
669 mutex_lock(&ionic->dev_cmd_lock); in ionic_init()
671 err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); in ionic_init()
672 mutex_unlock(&ionic->dev_cmd_lock); in ionic_init()
677 int ionic_reset(struct ionic *ionic) in ionic_reset() argument
679 struct ionic_dev *idev = &ionic->idev; in ionic_reset()
685 mutex_lock(&ionic->dev_cmd_lock); in ionic_reset()
687 err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); in ionic_reset()
688 mutex_unlock(&ionic->dev_cmd_lock); in ionic_reset()
693 int ionic_port_identify(struct ionic *ionic) in ionic_port_identify() argument
695 struct ionic_identity *ident = &ionic->ident; in ionic_port_identify()
696 struct ionic_dev *idev = &ionic->idev; in ionic_port_identify()
700 mutex_lock(&ionic->dev_cmd_lock); in ionic_port_identify()
703 err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); in ionic_port_identify()
709 mutex_unlock(&ionic->dev_cmd_lock); in ionic_port_identify()
714 int ionic_port_init(struct ionic *ionic) in ionic_port_init() argument
716 struct ionic_identity *ident = &ionic->ident; in ionic_port_init()
717 struct ionic_dev *idev = &ionic->idev; in ionic_port_init()
723 idev->port_info = dma_alloc_coherent(ionic->dev, in ionic_port_init()
733 mutex_lock(&ionic->dev_cmd_lock); in ionic_port_init()
737 err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); in ionic_port_init()
739 ionic_dev_cmd_port_state(&ionic->idev, IONIC_PORT_ADMIN_STATE_UP); in ionic_port_init()
740 ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); in ionic_port_init()
742 mutex_unlock(&ionic->dev_cmd_lock); in ionic_port_init()
744 dev_err(ionic->dev, "Failed to init port\n"); in ionic_port_init()
745 dma_free_coherent(ionic->dev, idev->port_info_sz, in ionic_port_init()
754 int ionic_port_reset(struct ionic *ionic) in ionic_port_reset() argument
756 struct ionic_dev *idev = &ionic->idev; in ionic_port_reset()
763 mutex_lock(&ionic->dev_cmd_lock); in ionic_port_reset()
765 err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); in ionic_port_reset()
766 mutex_unlock(&ionic->dev_cmd_lock); in ionic_port_reset()
769 dma_free_coherent(ionic->dev, idev->port_info_sz, in ionic_port_reset()