diff options
author | Bhanu Prakash Gollapudi <bprakash@broadcom.com> | 2012-12-21 19:40:31 -0800 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2013-01-30 10:48:48 +1100 |
commit | e7f4fed5fa96d3da12c3e1c8ed9f536235eec3b5 (patch) | |
tree | a13ac74c4e452af823c18f06e3b9891d1f497ff7 /drivers/scsi/bnx2fc/bnx2fc.h | |
parent | 26bf62a3dd0752f29609b2dea85a4f0b806da315 (diff) | |
download | linux-e7f4fed5fa96d3da12c3e1c8ed9f536235eec3b5.tar.gz linux-e7f4fed5fa96d3da12c3e1c8ed9f536235eec3b5.tar.bz2 linux-e7f4fed5fa96d3da12c3e1c8ed9f536235eec3b5.zip |
[SCSI] bnx2fc: Map the doorbell register between offload and enable requests
We used to map doorbell register after FW enable request is complete.
This causes a race condition when unsolicited event is received, and FW
sends a CQE for it. Since the doorbell is not mapped, driver does not
arm CQ, which means FW will not notify the driver for further CQ
completions. To resolve this, map the doorbell between offload and
enable, so that driver is ready to receive the unsolicited packets and
arm the CQ as soon as FW enable is performed.
Signed-off-by: Bhanu Prakash Gollapudi <bprakash@broadcom.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/bnx2fc/bnx2fc.h')
-rw-r--r-- | drivers/scsi/bnx2fc/bnx2fc.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/scsi/bnx2fc/bnx2fc.h b/drivers/scsi/bnx2fc/bnx2fc.h index 3486845ba301..6c9e71792674 100644 --- a/drivers/scsi/bnx2fc/bnx2fc.h +++ b/drivers/scsi/bnx2fc/bnx2fc.h @@ -280,6 +280,7 @@ struct bnx2fc_rport { #define BNX2FC_FLAG_UPLD_REQ_COMPL 0x7 #define BNX2FC_FLAG_EXPL_LOGO 0x8 #define BNX2FC_FLAG_DISABLE_FAILED 0x9 +#define BNX2FC_FLAG_ENABLED 0xa u8 src_addr[ETH_ALEN]; u32 max_sqes; @@ -468,6 +469,8 @@ int bnx2fc_send_fw_fcoe_init_msg(struct bnx2fc_hba *hba); int bnx2fc_send_fw_fcoe_destroy_msg(struct bnx2fc_hba *hba); int bnx2fc_send_session_ofld_req(struct fcoe_port *port, struct bnx2fc_rport *tgt); +int bnx2fc_send_session_enable_req(struct fcoe_port *port, + struct bnx2fc_rport *tgt); int bnx2fc_send_session_disable_req(struct fcoe_port *port, struct bnx2fc_rport *tgt); int bnx2fc_send_session_destroy_req(struct bnx2fc_hba *hba, |