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

Commit 7725ccfd authored by Jing Huang's avatar Jing Huang Committed by James Bottomley
Browse files

[SCSI] bfa: Brocade BFA FC SCSI driver



Add new driver for Brocade Hardware

Signed-off-by: default avatarJing Huang <huangj@brocade.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
parent 5415907a
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -1211,6 +1211,13 @@ L: netdev@vger.kernel.org
S:	Supported
F:	drivers/net/tg3.*

BROCADE BFA FC SCSI DRIVER
P:      Jing Huang
M:      huangj@brocade.com
L:      linux-scsi@vger.kernel.org
S:      Supported
F:      drivers/scsi/bfa/

BSG (block layer generic sg v4 driver)
M:	FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
L:	linux-scsi@vger.kernel.org
+10 −0
Original line number Diff line number Diff line
@@ -1827,6 +1827,16 @@ config SCSI_SRP
	  To compile this driver as a module, choose M here: the
	  module will be called libsrp.

config SCSI_BFA_FC
	tristate "Brocade BFA Fibre Channel Support"
	depends on PCI && SCSI
	select SCSI_FC_ATTRS
	help
	  This bfa driver supports all Brocade PCIe FC/FCOE host adapters.

	  To compile this driver as a module, choose M here. The module will
	  be called bfa.

endif # SCSI_LOWLEVEL

source "drivers/scsi/pcmcia/Kconfig"
+1 −0
Original line number Diff line number Diff line
@@ -86,6 +86,7 @@ obj-$(CONFIG_SCSI_QLOGIC_1280) += qla1280.o
obj-$(CONFIG_SCSI_QLA_FC)	+= qla2xxx/
obj-$(CONFIG_SCSI_QLA_ISCSI)	+= qla4xxx/
obj-$(CONFIG_SCSI_LPFC)		+= lpfc/
obj-$(CONFIG_SCSI_BFA_FC)	+= bfa/
obj-$(CONFIG_SCSI_PAS16)	+= pas16.o
obj-$(CONFIG_SCSI_T128)		+= t128.o
obj-$(CONFIG_SCSI_DMX3191D)	+= dmx3191d.o
+15 −0
Original line number Diff line number Diff line
obj-$(CONFIG_SCSI_BFA_FC) := bfa.o

bfa-y := bfad.o bfad_intr.o bfad_os.o bfad_im.o bfad_attr.o bfad_fwimg.o

bfa-y += bfa_core.o bfa_ioc.o bfa_iocfc.o bfa_fcxp.o bfa_lps.o
bfa-y += bfa_hw_cb.o bfa_hw_ct.o bfa_intr.o bfa_timer.o bfa_rport.o 
bfa-y += bfa_fcport.o bfa_port.o bfa_uf.o bfa_sgpg.o bfa_module.o bfa_ioim.o
bfa-y += bfa_itnim.o bfa_fcpim.o bfa_tskim.o bfa_log.o bfa_log_module.o
bfa-y += bfa_csdebug.o bfa_sm.o plog.o

bfa-y += fcbuild.o fabric.o fcpim.o vfapi.o fcptm.o bfa_fcs.o bfa_fcs_port.o 
bfa-y += bfa_fcs_uf.o bfa_fcs_lport.o fab.o fdmi.o ms.o ns.o scn.o loop.o
bfa-y += lport_api.o n2n.o rport.o rport_api.o rport_ftrs.o vport.o

ccflags-y := -I$(obj) -I$(obj)/include -I$(obj)/include/cna
+57 −0
Original line number Diff line number Diff line
/*
 * Copyright (c) 2005-2009 Brocade Communications Systems, Inc.
 * All rights reserved
 * www.brocade.com
 *
 * Linux driver for Brocade Fibre Channel Host Bus Adapter.
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License (GPL) Version 2 as
 * published by the Free Software Foundation
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 */

#ifndef __BFA_CALLBACK_PRIV_H__
#define __BFA_CALLBACK_PRIV_H__

#include <cs/bfa_q.h>

typedef void    (*bfa_cb_cbfn_t) (void *cbarg, bfa_boolean_t complete);

/**
 * Generic BFA callback element.
 */
struct bfa_cb_qe_s {
	struct list_head         qe;
	bfa_cb_cbfn_t  cbfn;
	bfa_boolean_t   once;
	u32		rsvd;
	void           *cbarg;
};

#define bfa_cb_queue(__bfa, __hcb_qe, __cbfn, __cbarg) do {		\
	(__hcb_qe)->cbfn  = (__cbfn);      \
	(__hcb_qe)->cbarg = (__cbarg);      \
	list_add_tail(&(__hcb_qe)->qe, &(__bfa)->comp_q);      \
} while (0)

#define bfa_cb_dequeue(__hcb_qe)	list_del(&(__hcb_qe)->qe)

#define bfa_cb_queue_once(__bfa, __hcb_qe, __cbfn, __cbarg) do {	\
	(__hcb_qe)->cbfn  = (__cbfn);      \
	(__hcb_qe)->cbarg = (__cbarg);      \
	if (!(__hcb_qe)->once) {      \
		list_add_tail((__hcb_qe), &(__bfa)->comp_q);      \
		(__hcb_qe)->once = BFA_TRUE;				\
	}								\
} while (0)

#define bfa_cb_queue_done(__hcb_qe) do {				\
	(__hcb_qe)->once = BFA_FALSE;					\
} while (0)

#endif /* __BFA_CALLBACK_PRIV_H__ */
Loading