Skip to content

Commit

Permalink
qlcnic: handshake with card after fw load
Browse files Browse the repository at this point in the history
Instead of delaying rcv handshake till interface comes up,
do it just after fw load.

Signed-off-by: Amit Kumar Salecha <amit.salecha@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Amit Kumar Salecha authored and David S. Miller committed Jun 23, 2010
1 parent 9665982 commit 900c6cf
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 7 deletions.
1 change: 0 additions & 1 deletion drivers/net/qlcnic/qlcnic.h
Original file line number Diff line number Diff line change
Expand Up @@ -1105,7 +1105,6 @@ int qlcnic_wol_supported(struct qlcnic_adapter *adapter);
int qlcnic_config_led(struct qlcnic_adapter *adapter, u32 state, u32 rate);

/* Functions from qlcnic_init.c */
int qlcnic_phantom_init(struct qlcnic_adapter *adapter);
int qlcnic_load_firmware(struct qlcnic_adapter *adapter);
int qlcnic_need_fw_reset(struct qlcnic_adapter *adapter);
void qlcnic_request_firmware(struct qlcnic_adapter *adapter);
Expand Down
9 changes: 7 additions & 2 deletions drivers/net/qlcnic/qlcnic_init.c
Original file line number Diff line number Diff line change
Expand Up @@ -1138,7 +1138,7 @@ qlcnic_release_firmware(struct qlcnic_adapter *adapter)
adapter->fw = NULL;
}

int qlcnic_phantom_init(struct qlcnic_adapter *adapter)
static int qlcnic_cmd_peg_ready(struct qlcnic_adapter *adapter)
{
u32 val;
int retries = 60;
Expand All @@ -1163,7 +1163,8 @@ int qlcnic_phantom_init(struct qlcnic_adapter *adapter)
QLCWR32(adapter, CRB_CMDPEG_STATE, PHAN_INITIALIZE_FAILED);

out_err:
dev_err(&adapter->pdev->dev, "firmware init failed\n");
dev_err(&adapter->pdev->dev, "Command Peg initialization not "
"complete, state: 0x%x.\n", val);
return -EIO;
}

Expand Down Expand Up @@ -1196,6 +1197,10 @@ int qlcnic_init_firmware(struct qlcnic_adapter *adapter)
{
int err;

err = qlcnic_cmd_peg_ready(adapter);
if (err)
return err;

err = qlcnic_receive_peg_ready(adapter);
if (err)
return err;
Expand Down
6 changes: 2 additions & 4 deletions drivers/net/qlcnic/qlcnic_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -758,6 +758,7 @@ qlcnic_start_firmware(struct qlcnic_adapter *adapter)

if (first_boot != 0x55555555) {
QLCWR32(adapter, CRB_CMDPEG_STATE, 0);
QLCWR32(adapter, CRB_RCVPEG_STATE, 0);
qlcnic_pinit_from_rom(adapter);
msleep(1);
}
Expand All @@ -780,7 +781,7 @@ qlcnic_start_firmware(struct qlcnic_adapter *adapter)

wait_init:
/* Handshake with the card before we register the devices. */
err = qlcnic_phantom_init(adapter);
err = qlcnic_init_firmware(adapter);
if (err)
goto err_out;

Expand Down Expand Up @@ -962,9 +963,6 @@ qlcnic_attach(struct qlcnic_adapter *adapter)
if (adapter->is_up == QLCNIC_ADAPTER_UP_MAGIC)
return 0;

err = qlcnic_init_firmware(adapter);
if (err)
return err;

err = qlcnic_napi_add(adapter, netdev);
if (err)
Expand Down

0 comments on commit 900c6cf

Please sign in to comment.