diff options
Diffstat (limited to 'drivers/scsi/bnx2i/bnx2i.h')
-rw-r--r-- | drivers/scsi/bnx2i/bnx2i.h | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/drivers/scsi/bnx2i/bnx2i.h b/drivers/scsi/bnx2i/bnx2i.h index e7cb7ecf6847..dc5700765db4 100644 --- a/drivers/scsi/bnx2i/bnx2i.h +++ b/drivers/scsi/bnx2i/bnx2i.h | |||
@@ -1,6 +1,6 @@ | |||
1 | /* bnx2i.h: Broadcom NetXtreme II iSCSI driver. | 1 | /* bnx2i.h: Broadcom NetXtreme II iSCSI driver. |
2 | * | 2 | * |
3 | * Copyright (c) 2006 - 2010 Broadcom Corporation | 3 | * Copyright (c) 2006 - 2011 Broadcom Corporation |
4 | * Copyright (c) 2007, 2008 Red Hat, Inc. All rights reserved. | 4 | * Copyright (c) 2007, 2008 Red Hat, Inc. All rights reserved. |
5 | * Copyright (c) 2007, 2008 Mike Christie | 5 | * Copyright (c) 2007, 2008 Mike Christie |
6 | * | 6 | * |
@@ -22,11 +22,14 @@ | |||
22 | #include <linux/pci.h> | 22 | #include <linux/pci.h> |
23 | #include <linux/spinlock.h> | 23 | #include <linux/spinlock.h> |
24 | #include <linux/interrupt.h> | 24 | #include <linux/interrupt.h> |
25 | #include <linux/delay.h> | ||
25 | #include <linux/sched.h> | 26 | #include <linux/sched.h> |
26 | #include <linux/in.h> | 27 | #include <linux/in.h> |
27 | #include <linux/kfifo.h> | 28 | #include <linux/kfifo.h> |
28 | #include <linux/netdevice.h> | 29 | #include <linux/netdevice.h> |
29 | #include <linux/completion.h> | 30 | #include <linux/completion.h> |
31 | #include <linux/kthread.h> | ||
32 | #include <linux/cpu.h> | ||
30 | 33 | ||
31 | #include <scsi/scsi_cmnd.h> | 34 | #include <scsi/scsi_cmnd.h> |
32 | #include <scsi/scsi_device.h> | 35 | #include <scsi/scsi_device.h> |
@@ -202,10 +205,13 @@ struct io_bdt { | |||
202 | /** | 205 | /** |
203 | * bnx2i_cmd - iscsi command structure | 206 | * bnx2i_cmd - iscsi command structure |
204 | * | 207 | * |
208 | * @hdr: iSCSI header | ||
209 | * @conn: iscsi_conn pointer | ||
205 | * @scsi_cmd: SCSI-ML task pointer corresponding to this iscsi cmd | 210 | * @scsi_cmd: SCSI-ML task pointer corresponding to this iscsi cmd |
206 | * @sg: SG list | 211 | * @sg: SG list |
207 | * @io_tbl: buffer descriptor (BD) table | 212 | * @io_tbl: buffer descriptor (BD) table |
208 | * @bd_tbl_dma: buffer descriptor (BD) table's dma address | 213 | * @bd_tbl_dma: buffer descriptor (BD) table's dma address |
214 | * @req: bnx2i specific command request struct | ||
209 | */ | 215 | */ |
210 | struct bnx2i_cmd { | 216 | struct bnx2i_cmd { |
211 | struct iscsi_hdr hdr; | 217 | struct iscsi_hdr hdr; |
@@ -229,6 +235,7 @@ struct bnx2i_cmd { | |||
229 | * @gen_pdu: login/nopout/logout pdu resources | 235 | * @gen_pdu: login/nopout/logout pdu resources |
230 | * @violation_notified: bit mask used to track iscsi error/warning messages | 236 | * @violation_notified: bit mask used to track iscsi error/warning messages |
231 | * already printed out | 237 | * already printed out |
238 | * @work_cnt: keeps track of the number of outstanding work | ||
232 | * | 239 | * |
233 | * iSCSI connection structure | 240 | * iSCSI connection structure |
234 | */ | 241 | */ |
@@ -252,6 +259,8 @@ struct bnx2i_conn { | |||
252 | */ | 259 | */ |
253 | struct generic_pdu_resc gen_pdu; | 260 | struct generic_pdu_resc gen_pdu; |
254 | u64 violation_notified; | 261 | u64 violation_notified; |
262 | |||
263 | atomic_t work_cnt; | ||
255 | }; | 264 | }; |
256 | 265 | ||
257 | 266 | ||
@@ -661,7 +670,6 @@ enum { | |||
661 | * @hba: adapter to which this connection belongs | 670 | * @hba: adapter to which this connection belongs |
662 | * @conn: iscsi connection this EP is linked to | 671 | * @conn: iscsi connection this EP is linked to |
663 | * @cls_ep: associated iSCSI endpoint pointer | 672 | * @cls_ep: associated iSCSI endpoint pointer |
664 | * @sess: iscsi session this EP is linked to | ||
665 | * @cm_sk: cnic sock struct | 673 | * @cm_sk: cnic sock struct |
666 | * @hba_age: age to detect if 'iscsid' issues ep_disconnect() | 674 | * @hba_age: age to detect if 'iscsid' issues ep_disconnect() |
667 | * after HBA reset is completed by bnx2i/cnic/bnx2 | 675 | * after HBA reset is completed by bnx2i/cnic/bnx2 |
@@ -687,7 +695,7 @@ struct bnx2i_endpoint { | |||
687 | u32 hba_age; | 695 | u32 hba_age; |
688 | u32 state; | 696 | u32 state; |
689 | unsigned long timestamp; | 697 | unsigned long timestamp; |
690 | int num_active_cmds; | 698 | atomic_t num_active_cmds; |
691 | u32 ec_shift; | 699 | u32 ec_shift; |
692 | 700 | ||
693 | struct qp_info qp; | 701 | struct qp_info qp; |
@@ -700,6 +708,19 @@ struct bnx2i_endpoint { | |||
700 | }; | 708 | }; |
701 | 709 | ||
702 | 710 | ||
711 | struct bnx2i_work { | ||
712 | struct list_head list; | ||
713 | struct iscsi_session *session; | ||
714 | struct bnx2i_conn *bnx2i_conn; | ||
715 | struct cqe cqe; | ||
716 | }; | ||
717 | |||
718 | struct bnx2i_percpu_s { | ||
719 | struct task_struct *iothread; | ||
720 | struct list_head work_list; | ||
721 | spinlock_t p_work_lock; | ||
722 | }; | ||
723 | |||
703 | 724 | ||
704 | /* Global variables */ | 725 | /* Global variables */ |
705 | extern unsigned int error_mask1, error_mask2; | 726 | extern unsigned int error_mask1, error_mask2; |
@@ -783,7 +804,7 @@ extern struct bnx2i_endpoint *bnx2i_find_ep_in_destroy_list( | |||
783 | struct bnx2i_hba *hba, u32 iscsi_cid); | 804 | struct bnx2i_hba *hba, u32 iscsi_cid); |
784 | 805 | ||
785 | extern int bnx2i_map_ep_dbell_regs(struct bnx2i_endpoint *ep); | 806 | extern int bnx2i_map_ep_dbell_regs(struct bnx2i_endpoint *ep); |
786 | extern void bnx2i_arm_cq_event_coalescing(struct bnx2i_endpoint *ep, u8 action); | 807 | extern int bnx2i_arm_cq_event_coalescing(struct bnx2i_endpoint *ep, u8 action); |
787 | 808 | ||
788 | extern int bnx2i_hw_ep_disconnect(struct bnx2i_endpoint *bnx2i_ep); | 809 | extern int bnx2i_hw_ep_disconnect(struct bnx2i_endpoint *bnx2i_ep); |
789 | 810 | ||
@@ -793,4 +814,8 @@ extern void bnx2i_print_active_cmd_queue(struct bnx2i_conn *conn); | |||
793 | extern void bnx2i_print_xmit_pdu_queue(struct bnx2i_conn *conn); | 814 | extern void bnx2i_print_xmit_pdu_queue(struct bnx2i_conn *conn); |
794 | extern void bnx2i_print_recv_state(struct bnx2i_conn *conn); | 815 | extern void bnx2i_print_recv_state(struct bnx2i_conn *conn); |
795 | 816 | ||
817 | extern int bnx2i_percpu_io_thread(void *arg); | ||
818 | extern int bnx2i_process_scsi_cmd_resp(struct iscsi_session *session, | ||
819 | struct bnx2i_conn *bnx2i_conn, | ||
820 | struct cqe *cqe); | ||
796 | #endif | 821 | #endif |