From: Arun Easi
This adds the backbone required for the various HW initalizations
which are necessary for the FCoE driver (qedf) for QLogic FastLinQ
4 line of adapters - FW notification, resource initializations, etc.
Signed-off-by: Arun Easi
Signed-off-by: Yuval Mintz
---
drivers/net/ethernet/qlogic/Kconfig |3 +
drivers/net/ethernet/qlogic/qed/Makefile |1 +
drivers/net/ethernet/qlogic/qed/qed.h | 11 +
drivers/net/ethernet/qlogic/qed/qed_cxt.c | 98 +-
drivers/net/ethernet/qlogic/qed/qed_cxt.h |3 +
drivers/net/ethernet/qlogic/qed/qed_dcbx.c| 13 +-
drivers/net/ethernet/qlogic/qed/qed_dcbx.h|5 +-
drivers/net/ethernet/qlogic/qed/qed_dev.c | 205 -
drivers/net/ethernet/qlogic/qed/qed_dev_api.h | 42 +
drivers/net/ethernet/qlogic/qed/qed_fcoe.c| 1014 +
drivers/net/ethernet/qlogic/qed/qed_fcoe.h| 76 ++
drivers/net/ethernet/qlogic/qed/qed_hsi.h | 781 +++-
drivers/net/ethernet/qlogic/qed/qed_hw.c |3 +
drivers/net/ethernet/qlogic/qed/qed_ll2.c | 25 +
drivers/net/ethernet/qlogic/qed/qed_ll2.h |2 +-
drivers/net/ethernet/qlogic/qed/qed_main.c|7 +
drivers/net/ethernet/qlogic/qed/qed_mcp.c |3 +
drivers/net/ethernet/qlogic/qed/qed_mcp.h |1 +
drivers/net/ethernet/qlogic/qed/qed_reg_addr.h|8 +
drivers/net/ethernet/qlogic/qed/qed_sp.h |4 +
drivers/net/ethernet/qlogic/qed/qed_sp_commands.c |3 +
include/linux/qed/common_hsi.h| 10 +-
include/linux/qed/fcoe_common.h | 715 +++
include/linux/qed/qed_fcoe_if.h | 145 +++
include/linux/qed/qed_if.h| 41 +-
25 files changed, 3200 insertions(+), 19 deletions(-)
create mode 100644 drivers/net/ethernet/qlogic/qed/qed_fcoe.c
create mode 100644 drivers/net/ethernet/qlogic/qed/qed_fcoe.h
create mode 100644 include/linux/qed/fcoe_common.h
create mode 100644 include/linux/qed/qed_fcoe_if.h
diff --git a/drivers/net/ethernet/qlogic/Kconfig
b/drivers/net/ethernet/qlogic/Kconfig
index 3cfd105..737b303 100644
--- a/drivers/net/ethernet/qlogic/Kconfig
+++ b/drivers/net/ethernet/qlogic/Kconfig
@@ -113,4 +113,7 @@ config QED_RDMA
config QED_ISCSI
bool
+config QED_FCOE
+ bool
+
endif # NET_VENDOR_QLOGIC
diff --git a/drivers/net/ethernet/qlogic/qed/Makefile
b/drivers/net/ethernet/qlogic/qed/Makefile
index 729e437..e234083 100644
--- a/drivers/net/ethernet/qlogic/qed/Makefile
+++ b/drivers/net/ethernet/qlogic/qed/Makefile
@@ -7,3 +7,4 @@ qed-$(CONFIG_QED_SRIOV) += qed_sriov.o qed_vf.o
qed-$(CONFIG_QED_LL2) += qed_ll2.o
qed-$(CONFIG_QED_RDMA) += qed_roce.o
qed-$(CONFIG_QED_ISCSI) += qed_iscsi.o qed_ooo.o
+qed-$(CONFIG_QED_FCOE) += qed_fcoe.o
diff --git a/drivers/net/ethernet/qlogic/qed/qed.h
b/drivers/net/ethernet/qlogic/qed/qed.h
index 1f61cf3..08f2885 100644
--- a/drivers/net/ethernet/qlogic/qed/qed.h
+++ b/drivers/net/ethernet/qlogic/qed/qed.h
@@ -60,6 +60,7 @@
#define QED_WFQ_UNIT 100
#define ISCSI_BDQ_ID(_port_id) (_port_id)
+#define FCOE_BDQ_ID(_port_id) ((_port_id) + 2)
#define QED_WID_SIZE(1024)
#define QED_PF_DEMS_SIZE(4)
@@ -167,6 +168,7 @@ struct qed_tunn_update_params {
*/
enum qed_pci_personality {
QED_PCI_ETH,
+ QED_PCI_FCOE,
QED_PCI_ISCSI,
QED_PCI_ETH_ROCE,
QED_PCI_DEFAULT /* default in shmem */
@@ -204,6 +206,7 @@ enum QED_FEATURE {
QED_VF,
QED_RDMA_CNQ,
QED_VF_L2_QUE,
+ QED_FCOE_CQ,
QED_MAX_FEATURES,
};
@@ -221,6 +224,7 @@ enum QED_PORT_MODE {
enum qed_dev_cap {
QED_DEV_CAP_ETH,
+ QED_DEV_CAP_FCOE,
QED_DEV_CAP_ISCSI,
QED_DEV_CAP_ROCE,
};
@@ -255,6 +259,10 @@ struct qed_hw_info {
u32 part_num[4];
unsigned char hw_mac_addr[ETH_ALEN];
+ u64 node_wwn;
+ u64 port_wwn;
+
+ u16 num_fcoe_conns;
struct qed_igu_info *p_igu_info;
@@ -410,6 +418,7 @@ struct qed_hwfn {
struct qed_ooo_info *p_ooo_info;
struct qed_rdma_info*p_rdma_info;
struct qed_iscsi_info *p_iscsi_info;
+ struct qed_fcoe_info*p_fcoe_info;
struct qed_pf_paramspf_params;
bool b_rdma_enabled_in_prs;
@@ -618,11 +627,13 @@ struct qed_dev {
u8 protocol;
#define IS_QED_ETH_IF(cdev) ((cdev)->protocol == QED_PROTOCOL_ETH)
+#define IS_QED_FCOE_IF(cdev)((cdev)->protocol == QED_PROTOCOL_FCOE)
/* Callbacks to protocol driver */
union {
struct qed_common_cb_ops*common;