Skip to content

Commit

Permalink
qlcnic: check device class
Browse files Browse the repository at this point in the history
pci-func class can be other than ethernet in Qlogic CNA device.

Signed-off-by: Sucheta Chakraborty <sucheta.chakraborty@qlogic.com>
Signed-off-by: Amit Kumar Salecha <amit.salecha@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Sucheta Chakraborty authored and David S. Miller committed May 14, 2010
1 parent 96f8118 commit b3a2464
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 8 deletions.
2 changes: 1 addition & 1 deletion drivers/net/qlcnic/qlcnic.h
Original file line number Diff line number Diff line change
Expand Up @@ -1037,7 +1037,7 @@ int qlcnic_need_fw_reset(struct qlcnic_adapter *adapter);
void qlcnic_request_firmware(struct qlcnic_adapter *adapter);
void qlcnic_release_firmware(struct qlcnic_adapter *adapter);
int qlcnic_pinit_from_rom(struct qlcnic_adapter *adapter);
void qlcnic_setup_idc_param(struct qlcnic_adapter *adapter);
int qlcnic_setup_idc_param(struct qlcnic_adapter *adapter);

int qlcnic_rom_fast_read(struct qlcnic_adapter *adapter, int addr, int *valp);
int qlcnic_rom_fast_read_words(struct qlcnic_adapter *adapter, int addr,
Expand Down
16 changes: 15 additions & 1 deletion drivers/net/qlcnic/qlcnic_init.c
Original file line number Diff line number Diff line change
Expand Up @@ -514,10 +514,22 @@ int qlcnic_pinit_from_rom(struct qlcnic_adapter *adapter)
return 0;
}

void
int
qlcnic_setup_idc_param(struct qlcnic_adapter *adapter) {

int timeo;
u32 val;

val = QLCRD32(adapter, QLCNIC_CRB_DEV_PARTITION_INFO);
val = (val >> (adapter->portnum * 4)) & 0xf;

if ((val & 0x3) != 1) {
dev_err(&adapter->pdev->dev, "Not an Ethernet NIC func=%u\n",
val);
return -EIO;
}

adapter->physical_port = (val >> 2);

if (qlcnic_rom_fast_read(adapter, QLCNIC_ROM_DEV_INIT_TIMEOUT, &timeo))
timeo = 30;
Expand All @@ -528,6 +540,8 @@ qlcnic_setup_idc_param(struct qlcnic_adapter *adapter) {
timeo = 10;

adapter->reset_ack_timeo = timeo;

return 0;
}

static int
Expand Down
8 changes: 2 additions & 6 deletions drivers/net/qlcnic/qlcnic_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1080,17 +1080,13 @@ qlcnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
goto err_out_iounmap;
}

qlcnic_setup_idc_param(adapter);
if (qlcnic_setup_idc_param(adapter))
goto err_out_iounmap;

err = qlcnic_start_firmware(adapter);
if (err)
goto err_out_decr_ref;

/*
* See if the firmware gave us a virtual-physical port mapping.
*/
adapter->physical_port = adapter->portnum;

qlcnic_clear_stats(adapter);

qlcnic_setup_intr(adapter);
Expand Down

0 comments on commit b3a2464

Please sign in to comment.