Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d5fcff04 authored by Himanshu Madhani's avatar Himanshu Madhani Committed by David S. Miller
Browse files

qlcnic: fix initialize NIC mailbox command



Register for firmware based Inter Driver Communication (IDC) using initialize
NIC as the first mailbox command

Signed-off-by: default avatarHimanshu Madhani <himanshu.madhani@qlogic.com>
Signed-off-by: default avatarJitendra Kalsaria <jitendra.kalsaria@qlogic.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent daaba4fa
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1239,10 +1239,10 @@ void qlcnic_83xx_register_nic_idc_func(struct qlcnic_adapter *adapter,

	if (enable) {
		qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_INIT_NIC_FUNC);
		cmd.req.arg[1] = 1 | BIT_0;
		cmd.req.arg[1] = BIT_0 | BIT_31;
	} else {
		qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_STOP_NIC_FUNC);
		cmd.req.arg[1] = 0 | BIT_0;
		cmd.req.arg[1] = BIT_0 | BIT_31;
	}
	status = qlcnic_issue_cmd(adapter, &cmd);
	if (status)
+6 −3
Original line number Diff line number Diff line
@@ -585,6 +585,9 @@ static int qlcnic_83xx_idc_check_fan_failure(struct qlcnic_adapter *adapter)

static int qlcnic_83xx_idc_reattach_driver(struct qlcnic_adapter *adapter)
{
	/* register for NIC IDC AEN Events */
	qlcnic_83xx_register_nic_idc_func(adapter, 1);

	qlcnic_83xx_enable_mbx_intrpt(adapter);
	if ((adapter->flags & QLCNIC_MSIX_ENABLED)) {
		if (qlcnic_83xx_config_intrpt(adapter, 1)) {
@@ -2025,6 +2028,9 @@ int qlcnic_83xx_init(struct qlcnic_adapter *adapter)
	set_bit(QLC_83XX_MBX_READY, &adapter->ahw->idc.status);
	qlcnic_83xx_clear_function_resources(adapter);

	/* register for NIC IDC AEN Events */
	qlcnic_83xx_register_nic_idc_func(adapter, 1);

	if (!qlcnic_83xx_read_flash_descriptor_table(adapter))
		qlcnic_83xx_read_flash_mfg_id(adapter);

@@ -2041,9 +2047,6 @@ int qlcnic_83xx_init(struct qlcnic_adapter *adapter)

	INIT_DELAYED_WORK(&adapter->idc_aen_work, qlcnic_83xx_idc_aen_work);

	/* register for NIC IDC AEN Events */
	qlcnic_83xx_register_nic_idc_func(adapter, 1);

	/* Periodically monitor device status */
	qlcnic_83xx_idc_poll_dev_state(&adapter->fw_work.work);

+4 −2
Original line number Diff line number Diff line
@@ -1174,8 +1174,6 @@ qlcnic_set_mgmt_operations(struct qlcnic_adapter *adapter)

	qlcnic_dev_set_npar_ready(adapter);

	if (qlcnic_83xx_check(adapter))
		qlcnic_83xx_register_nic_idc_func(adapter, 1);
	return err;
}

@@ -3063,6 +3061,8 @@ static int qlcnic_attach_func(struct pci_dev *pdev)
	}

	if (qlcnic_83xx_check(adapter)) {
		/* register for NIC IDC AEN Events */
		qlcnic_83xx_register_nic_idc_func(adapter, 1);
		err = qlcnic_83xx_setup_mbx_intr(adapter);
		if (err) {
			dev_err(&adapter->pdev->dev,
@@ -3224,6 +3224,8 @@ int qlcnic_set_max_rss(struct qlcnic_adapter *adapter, u8 data, size_t len)
	}

	if (qlcnic_83xx_check(adapter)) {
		/* register for NIC IDC AEN Events */
		qlcnic_83xx_register_nic_idc_func(adapter, 1);
		err = qlcnic_83xx_setup_mbx_intr(adapter);
		if (err) {
			dev_err(&adapter->pdev->dev,