Lines Matching refs:ionic

272 	dev_dbg(lif->ionic->dev, "notifyq event:\n");  in ionic_notifyq_service()
281 if (lif->ionic->idev.fw_status_ready && in ionic_notifyq_service()
389 err = ionic_heartbeat_check(lif->ionic); in ionic_adminq_post()
442 ionic_heartbeat_check(lif->ionic); in ionic_adminq_wait()
444 !lif->ionic->idev.fw_status_ready) || in ionic_adminq_wait()
456 dev_dbg(lif->ionic->dev, "%s: elapsed %d msecs\n", in ionic_adminq_wait()
470 if (!ionic_is_fw_running(&lif->ionic->idev)) in __ionic_adminq_post_wait()
488 static void ionic_dev_cmd_clean(struct ionic *ionic) in ionic_dev_cmd_clean() argument
490 struct ionic_dev *idev = &ionic->idev; in ionic_dev_cmd_clean()
499 void ionic_dev_cmd_dev_err_print(struct ionic *ionic, u8 opcode, u8 status, in ionic_dev_cmd_dev_err_print() argument
507 dev_err(ionic->dev, "DEV_CMD %s (%d) error, %s (%d) failed\n", in ionic_dev_cmd_dev_err_print()
511 static int __ionic_dev_cmd_wait(struct ionic *ionic, unsigned long max_seconds, in __ionic_dev_cmd_wait() argument
514 struct ionic_dev *idev = &ionic->idev; in __ionic_dev_cmd_wait()
540 dev_dbg(ionic->dev, "DEVCMD %s (%d) done=%d took %ld secs (%ld jiffies)\n", in __ionic_dev_cmd_wait()
545 ionic_dev_cmd_clean(ionic); in __ionic_dev_cmd_wait()
546 dev_warn(ionic->dev, "DEVCMD %s (%d) interrupted - FW is down\n", in __ionic_dev_cmd_wait()
552 ionic_dev_cmd_clean(ionic); in __ionic_dev_cmd_wait()
553 dev_warn(ionic->dev, "DEVCMD %s (%d) timeout after %ld secs\n", in __ionic_dev_cmd_wait()
558 err = ionic_dev_cmd_status(&ionic->idev); in __ionic_dev_cmd_wait()
562 dev_dbg(ionic->dev, "DEV_CMD %s (%d), %s (%d) retrying...\n", in __ionic_dev_cmd_wait()
574 ionic_dev_cmd_dev_err_print(ionic, opcode, err, in __ionic_dev_cmd_wait()
580 ionic_dev_cmd_clean(ionic); in __ionic_dev_cmd_wait()
585 int ionic_dev_cmd_wait(struct ionic *ionic, unsigned long max_seconds) in ionic_dev_cmd_wait() argument
587 return __ionic_dev_cmd_wait(ionic, max_seconds, true); in ionic_dev_cmd_wait()
590 int ionic_dev_cmd_wait_nomsg(struct ionic *ionic, unsigned long max_seconds) in ionic_dev_cmd_wait_nomsg() argument
592 return __ionic_dev_cmd_wait(ionic, max_seconds, false); in ionic_dev_cmd_wait_nomsg()
595 int ionic_setup(struct ionic *ionic) in ionic_setup() argument
599 err = ionic_dev_setup(ionic); in ionic_setup()
602 ionic_reset(ionic); in ionic_setup()
607 int ionic_identify(struct ionic *ionic) in ionic_identify() argument
609 struct ionic_identity *ident = &ionic->ident; in ionic_identify()
610 struct ionic_dev *idev = &ionic->idev; in ionic_identify()
620 mutex_lock(&ionic->dev_cmd_lock); in ionic_identify()
626 err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); in ionic_identify()
631 mutex_unlock(&ionic->dev_cmd_lock); in ionic_identify()
634 dev_err(ionic->dev, "Cannot identify ionic: %d\n", err); in ionic_identify()
640 dev_info(ionic->dev, "FW: %.*s\n", in ionic_identify()
644 dev_info(ionic->dev, "FW: (invalid string) 0x%02x 0x%02x 0x%02x 0x%02x ...\n", in ionic_identify()
650 err = ionic_lif_identify(ionic, IONIC_LIF_TYPE_CLASSIC, in ionic_identify()
651 &ionic->ident.lif); in ionic_identify()
653 dev_err(ionic->dev, "Cannot identify LIFs: %d\n", err); in ionic_identify()
663 int ionic_init(struct ionic *ionic) in ionic_init() argument
665 struct ionic_dev *idev = &ionic->idev; in ionic_init()
668 mutex_lock(&ionic->dev_cmd_lock); in ionic_init()
670 err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); in ionic_init()
671 mutex_unlock(&ionic->dev_cmd_lock); in ionic_init()
676 int ionic_reset(struct ionic *ionic) in ionic_reset() argument
678 struct ionic_dev *idev = &ionic->idev; in ionic_reset()
684 mutex_lock(&ionic->dev_cmd_lock); in ionic_reset()
686 err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); in ionic_reset()
687 mutex_unlock(&ionic->dev_cmd_lock); in ionic_reset()
692 int ionic_port_identify(struct ionic *ionic) in ionic_port_identify() argument
694 struct ionic_identity *ident = &ionic->ident; in ionic_port_identify()
695 struct ionic_dev *idev = &ionic->idev; in ionic_port_identify()
699 mutex_lock(&ionic->dev_cmd_lock); in ionic_port_identify()
702 err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); in ionic_port_identify()
708 mutex_unlock(&ionic->dev_cmd_lock); in ionic_port_identify()
713 int ionic_port_init(struct ionic *ionic) in ionic_port_init() argument
715 struct ionic_identity *ident = &ionic->ident; in ionic_port_init()
716 struct ionic_dev *idev = &ionic->idev; in ionic_port_init()
722 idev->port_info = dma_alloc_coherent(ionic->dev, in ionic_port_init()
732 mutex_lock(&ionic->dev_cmd_lock); in ionic_port_init()
736 err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); in ionic_port_init()
738 ionic_dev_cmd_port_state(&ionic->idev, IONIC_PORT_ADMIN_STATE_UP); in ionic_port_init()
739 ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); in ionic_port_init()
741 mutex_unlock(&ionic->dev_cmd_lock); in ionic_port_init()
743 dev_err(ionic->dev, "Failed to init port\n"); in ionic_port_init()
744 dma_free_coherent(ionic->dev, idev->port_info_sz, in ionic_port_init()
753 int ionic_port_reset(struct ionic *ionic) in ionic_port_reset() argument
755 struct ionic_dev *idev = &ionic->idev; in ionic_port_reset()
762 mutex_lock(&ionic->dev_cmd_lock); in ionic_port_reset()
764 err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); in ionic_port_reset()
765 mutex_unlock(&ionic->dev_cmd_lock); in ionic_port_reset()
768 dma_free_coherent(ionic->dev, idev->port_info_sz, in ionic_port_reset()