Re: [PATCH v2 3/6] qedi: Add QLogic FastLinQ offload iSCSI driver framework.
Hi Hannes, Please find the response below, On 11/11/16 10:13 PM, "Hannes Reinecke" wrote: >On 11/08/2016 07:57 AM, Manish Rangankar wrote: >> The QLogic FastLinQ Driver for iSCSI (qedi) is the iSCSI specific module >> for 41000 Series Converged Network Adapters by QLogic. >> >> This patch consists of following changes: >> - MAINTAINERS Makefile and Kconfig changes for qedi, >> - PCI driver registration, >> - iSCSI host level initialization, >> - Debugfs and log level infrastructure. >> >> Signed-off-by: Nilesh Javali >> Signed-off-by: Adheer Chandravanshi >> Signed-off-by: Chad Dupuis >> Signed-off-by: Saurav Kashyap >> Signed-off-by: Arun Easi >> Signed-off-by: Manish Rangankar >> --- >> MAINTAINERS |6 + >> drivers/net/ethernet/qlogic/Kconfig | 12 - >> drivers/scsi/Kconfig|1 + >> drivers/scsi/Makefile |1 + >> drivers/scsi/qedi/Kconfig | 10 + >> drivers/scsi/qedi/Makefile |5 + >> drivers/scsi/qedi/qedi.h| 291 +++ >> drivers/scsi/qedi/qedi_dbg.c| 143 >> drivers/scsi/qedi/qedi_dbg.h| 144 >> drivers/scsi/qedi/qedi_debugfs.c| 244 ++ >> drivers/scsi/qedi/qedi_hsi.h| 52 ++ >> drivers/scsi/qedi/qedi_main.c | 1616 >>+++ >> drivers/scsi/qedi/qedi_sysfs.c | 52 ++ >> drivers/scsi/qedi/qedi_version.h| 14 + >> 14 files changed, 2579 insertions(+), 12 deletions(-) >> create mode 100644 drivers/scsi/qedi/Kconfig >> create mode 100644 drivers/scsi/qedi/Makefile >> create mode 100644 drivers/scsi/qedi/qedi.h >> create mode 100644 drivers/scsi/qedi/qedi_dbg.c >> create mode 100644 drivers/scsi/qedi/qedi_dbg.h >> create mode 100644 drivers/scsi/qedi/qedi_debugfs.c >> create mode 100644 drivers/scsi/qedi/qedi_hsi.h >> create mode 100644 drivers/scsi/qedi/qedi_main.c >> create mode 100644 drivers/scsi/qedi/qedi_sysfs.c >> create mode 100644 drivers/scsi/qedi/qedi_version.h >> [...] >> >> +static enum qed_int_mode qedi_int_mode_to_enum(void) >> +{ >> +switch (int_mode) { >> +case 0: return QED_INT_MODE_MSIX; >> +case 1: return QED_INT_MODE_INTA; >> +case 2: return QED_INT_MODE_MSI; >> +default: >> +QEDI_ERR(NULL, "Unknown qede_int_mode=%08x; " >> + "Defaulting to MSI-x\n", int_mode); >> +return QED_INT_MODE_MSIX; >> +} >> +} >Errm. A per-driver interrupt mode? >How very curious. >You surely want to make that per-HBA, right? This was added for testing purpose, we will remove this code. [...] >> +static int qedi_request_msix_irq(struct qedi_ctx *qedi) >> +{ >> +int i, rc, cpu; >> + >> +cpu = cpumask_first(cpu_online_mask); >> +for (i = 0; i < MIN_NUM_CPUS_MSIX(qedi); i++) { >> +rc = request_irq(qedi->int_info.msix[i].vector, >> + qedi_msix_handler, 0, "qedi", >> + &qedi->fp_array[i]); >> + >> +if (rc) { >> +QEDI_WARN(&qedi->dbg_ctx, "request_irq failed.\n"); >> +qedi_sync_free_irqs(qedi); >> +return rc; >> +} >> +qedi->int_info.used_cnt++; >> +rc = irq_set_affinity_hint(qedi->int_info.msix[i].vector, >> + get_cpu_mask(cpu)); >> +cpu = cpumask_next(cpu, cpu_online_mask); >> +} >> + >> +return 0; >> +} >Please use the irq-affinity rework from Christoph here; that'll save you >the additional msix vectors allocation. The existing qed* driver(s) and common module (qed) framework is built on top of the older pci_enable_msix_*() API. The new framework requires re-work on the existing qed common module API. That would need co-ordination among other dependent drivers (e.g.: qede network driver, which is already in the tree). We would prefer to add this as a follow on (to the initial submission) effort, with additional testing done and submission co-ordinated across protocol drivers. Thanks, Manish -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v2 3/6] qedi: Add QLogic FastLinQ offload iSCSI driver framework.
On 11/15/2016 07:14 AM, Rangankar, Manish wrote: > Hi Hannes, > > Please find the response below, > > On 11/11/16 10:13 PM, "Hannes Reinecke" wrote: > [ .. ] >> Please use the irq-affinity rework from Christoph here; that'll save you >> the additional msix vectors allocation. > > The existing qed* driver(s) and common module (qed) framework is built on > top of the older pci_enable_msix_*() API. The new framework requires > re-work on the existing qed common module API. That would need > co-ordination among other dependent drivers (e.g.: qede network driver, > which is already in the tree). We would prefer to add this as a follow on > (to the initial submission) effort, with additional testing done and > submission co-ordinated across protocol drivers. > Ok, fair enough. Cheers, Hannes -- Dr. Hannes ReineckeTeamlead Storage & Networking h...@suse.de +49 911 74053 688 SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton HRB 21284 (AG Nürnberg) -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v2 3/6] qedi: Add QLogic FastLinQ offload iSCSI driver framework.
On 11/08/2016 07:57 AM, Manish Rangankar wrote: The QLogic FastLinQ Driver for iSCSI (qedi) is the iSCSI specific module for 41000 Series Converged Network Adapters by QLogic. This patch consists of following changes: - MAINTAINERS Makefile and Kconfig changes for qedi, - PCI driver registration, - iSCSI host level initialization, - Debugfs and log level infrastructure. Signed-off-by: Nilesh Javali Signed-off-by: Adheer Chandravanshi Signed-off-by: Chad Dupuis Signed-off-by: Saurav Kashyap Signed-off-by: Arun Easi Signed-off-by: Manish Rangankar --- MAINTAINERS |6 + drivers/net/ethernet/qlogic/Kconfig | 12 - drivers/scsi/Kconfig|1 + drivers/scsi/Makefile |1 + drivers/scsi/qedi/Kconfig | 10 + drivers/scsi/qedi/Makefile |5 + drivers/scsi/qedi/qedi.h| 291 +++ drivers/scsi/qedi/qedi_dbg.c| 143 drivers/scsi/qedi/qedi_dbg.h| 144 drivers/scsi/qedi/qedi_debugfs.c| 244 ++ drivers/scsi/qedi/qedi_hsi.h| 52 ++ drivers/scsi/qedi/qedi_main.c | 1616 +++ drivers/scsi/qedi/qedi_sysfs.c | 52 ++ drivers/scsi/qedi/qedi_version.h| 14 + 14 files changed, 2579 insertions(+), 12 deletions(-) create mode 100644 drivers/scsi/qedi/Kconfig create mode 100644 drivers/scsi/qedi/Makefile create mode 100644 drivers/scsi/qedi/qedi.h create mode 100644 drivers/scsi/qedi/qedi_dbg.c create mode 100644 drivers/scsi/qedi/qedi_dbg.h create mode 100644 drivers/scsi/qedi/qedi_debugfs.c create mode 100644 drivers/scsi/qedi/qedi_hsi.h create mode 100644 drivers/scsi/qedi/qedi_main.c create mode 100644 drivers/scsi/qedi/qedi_sysfs.c create mode 100644 drivers/scsi/qedi/qedi_version.h diff --git a/MAINTAINERS b/MAINTAINERS index e5c17a9..04eec14 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -9934,6 +9934,12 @@ F: drivers/net/ethernet/qlogic/qed/ F: include/linux/qed/ F: drivers/net/ethernet/qlogic/qede/ +QLOGIC QL41xxx ISCSI DRIVER +M: qlogic-storage-upstr...@cavium.com +L: linux-scsi@vger.kernel.org +S: Supported +F: drivers/scsi/qedi/ + QNX4 FILESYSTEM M: Anders Larsen W: http://www.alarsen.net/linux/qnx4fs/ diff --git a/drivers/net/ethernet/qlogic/Kconfig b/drivers/net/ethernet/qlogic/Kconfig index 2832570..3cfd105 100644 --- a/drivers/net/ethernet/qlogic/Kconfig +++ b/drivers/net/ethernet/qlogic/Kconfig @@ -113,16 +113,4 @@ config QED_RDMA config QED_ISCSI bool -config QEDI - tristate "QLogic QED 25/40/100Gb iSCSI driver" - depends on QED - select QED_LL2 - select QED_ISCSI - default n - ---help--- - This provides a temporary node that allows the compilation - and logical testing of the hardware offload iSCSI support - for QLogic QED. This would be replaced by the 'real' option - once the QEDI driver is added [+relocated]. - endif # NET_VENDOR_QLOGIC diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig index 3e2bdb9..5cf03db 100644 --- a/drivers/scsi/Kconfig +++ b/drivers/scsi/Kconfig @@ -1254,6 +1254,7 @@ config SCSI_QLOGICPTI source "drivers/scsi/qla2xxx/Kconfig" source "drivers/scsi/qla4xxx/Kconfig" +source "drivers/scsi/qedi/Kconfig" config SCSI_LPFC tristate "Emulex LightPulse Fibre Channel Support" diff --git a/drivers/scsi/Makefile b/drivers/scsi/Makefile index 38d938d..da9e312 100644 --- a/drivers/scsi/Makefile +++ b/drivers/scsi/Makefile @@ -132,6 +132,7 @@ obj-$(CONFIG_PS3_ROM) += ps3rom.o obj-$(CONFIG_SCSI_CXGB3_ISCSI) += libiscsi.o libiscsi_tcp.o cxgbi/ obj-$(CONFIG_SCSI_CXGB4_ISCSI) += libiscsi.o libiscsi_tcp.o cxgbi/ obj-$(CONFIG_SCSI_BNX2_ISCSI) += libiscsi.o bnx2i/ +obj-$(CONFIG_QEDI) += libiscsi.o qedi/ obj-$(CONFIG_BE2ISCSI) += libiscsi.o be2iscsi/ obj-$(CONFIG_SCSI_ESAS2R) += esas2r/ obj-$(CONFIG_SCSI_PMCRAID) += pmcraid.o diff --git a/drivers/scsi/qedi/Kconfig b/drivers/scsi/qedi/Kconfig new file mode 100644 index 000..23ca8a2 --- /dev/null +++ b/drivers/scsi/qedi/Kconfig @@ -0,0 +1,10 @@ +config QEDI + tristate "QLogic QEDI 25/40/100Gb iSCSI Initiator Driver Support" + depends on PCI && SCSI + depends on QED + select SCSI_ISCSI_ATTRS + select QED_LL2 + select QED_ISCSI + ---help--- + This driver supports iSCSI offload for the QLogic FastLinQ + 41000 Series Converged Network Adapters. diff --git a/drivers/scsi/qedi/Makefile b/drivers/scsi/qedi/Makefile new file mode 100644 index 000..2b3e16b --- /dev/null +++ b/drivers/scsi/qedi/Makefile @@ -0,0 +1,5 @@ +obj-$(CONFIG_QEDI) := qedi.o +qedi-y := qedi_main.o qedi_iscsi.o qedi_fw.o qedi_sysfs.o \ + qedi_dbg.o + +qedi-$(CONFIG_DEBUG_FS) += qedi_debugfs.o diff --git a/drivers/scsi/qedi/qedi.h b/drivers/scsi/qedi/qedi.h new file mode 100644 index 000..92136a3 --- /dev/null +++
Re: [PATCH v2 3/6] qedi: Add QLogic FastLinQ offload iSCSI driver framework.
> "Arun" == Arun Easi writes: >> It's fine to post the patches split up to ease the review >> process. But whatever we commit must obviously be bisectable. Arun> If it is alright with you, we would like to have all of our Arun> initial patches for the driver (qedi) squashed as a single commit Arun> to the tree. We will ensure that this single combined commit Arun> compiles clean. That's fine with me. -- Martin K. Petersen Oracle Linux Engineering -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v2 3/6] qedi: Add QLogic FastLinQ offload iSCSI driver framework.
Martin, On Tue, 8 Nov 2016, 3:49pm -, Martin K. Petersen wrote: > > "Arun" == Arun Easi writes: > > Arun, > > Arun> qedi is the new iSCSI driver, which we are trying to submit, for > Arun> our 41000 series CNA. This patch series were broken up into > Arun> logical blocks for review purpose, but were not made to compile > Arun> individually. It is our impression that this is acceptable for > Arun> SCSI and all the initial "qedi" patches will be squashed and > Arun> committed as a single commit. Please let us know if we are > Arun> mistaken, and if so, we will post another series with this taken > Arun> care of. > > It's fine to post the patches split up to ease the review process. But > whatever we commit must obviously be bisectable. > If it is alright with you, we would like to have all of our initial patches for the driver (qedi) squashed as a single commit to the tree. We will ensure that this single combined commit compiles clean. Regards, -Arun -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v2 3/6] qedi: Add QLogic FastLinQ offload iSCSI driver framework.
> "Arun" == Arun Easi writes: Arun, Arun> qedi is the new iSCSI driver, which we are trying to submit, for Arun> our 41000 series CNA. This patch series were broken up into Arun> logical blocks for review purpose, but were not made to compile Arun> individually. It is our impression that this is acceptable for Arun> SCSI and all the initial "qedi" patches will be squashed and Arun> committed as a single commit. Please let us know if we are Arun> mistaken, and if so, we will post another series with this taken Arun> care of. It's fine to post the patches split up to ease the review process. But whatever we commit must obviously be bisectable. -- Martin K. Petersen Oracle Linux Engineering -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v2 3/6] qedi: Add QLogic FastLinQ offload iSCSI driver framework.
[ Sending on behalf of Manish to cover for the time difference. ] Hi Martin, James, I would like to request your input on this kbuild test error on the series, where they compile fine together, but is not bisectable. qedi is the new iSCSI driver, which we are trying to submit, for our 41000 series CNA. This patch series were broken up into logical blocks for review purpose, but were not made to compile individually. It is our impression that this is acceptable for SCSI and all the initial "qedi" patches will be squashed and committed as a single commit. Please let us know if we are mistaken, and if so, we will post another series with this taken care of. FYI, this series accompany additions to the common core module, "qed", that goes under drivers/net/. The patches for the qed module compiles fine individually and so is bisectable. In regards to the additional warnings brought out by kbuild test on "PATCH v2 6/6" and "PATCH v2 3/6", we will post a v3 with the fixes. Regards, -Arun On Tue, 8 Nov 2016, 2:52am -, kbuild test robot wrote: > Hi Manish, > > [auto build test ERROR on net-next/master] > [also build test ERROR on v4.9-rc4] > [if your patch is applied to the wrong git tree, please drop us a note to > help improve the system] > > url: > https://github.com/0day-ci/linux/commits/Manish-Rangankar/qed-Add-support-for-hardware-offloaded-iSCSI/20161108-180027 > config: ia64-allmodconfig (attached as .config) > compiler: ia64-linux-gcc (GCC) 6.2.0 > reproduce: > wget > https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross > -O ~/bin/make.cross > chmod +x ~/bin/make.cross > # save the attached .config to linux build tree > make.cross ARCH=ia64 > > Note: the > linux-review/Manish-Rangankar/qed-Add-support-for-hardware-offloaded-iSCSI/20161108-180027 > HEAD dd4d1d0e0785d20cdcfdf9b2c792c564a79b2de2 builds fine. > It only hurts bisectibility. > -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v2 3/6] qedi: Add QLogic FastLinQ offload iSCSI driver framework.
Hi Manish, [auto build test ERROR on net-next/master] [also build test ERROR on v4.9-rc4 next-20161028] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Manish-Rangankar/qed-Add-support-for-hardware-offloaded-iSCSI/20161108-180027 config: parisc-allyesconfig (attached as .config) compiler: hppa-linux-gnu-gcc (Debian 6.1.1-9) 6.1.1 20160705 reproduce: wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=parisc All errors (new ones prefixed by >>): drivers/scsi/qedi/qedi_main.c: In function 'qedi_iscsi_event_cb': drivers/scsi/qedi/qedi_main.c:87:14: error: dereferencing pointer to incomplete type 'struct qedi_endpoint' if (qedi_ep->state == EP_STATE_OFLDCONN_START) ^~ drivers/scsi/qedi/qedi_main.c:87:25: error: 'EP_STATE_OFLDCONN_START' undeclared (first use in this function) if (qedi_ep->state == EP_STATE_OFLDCONN_START) ^~~ drivers/scsi/qedi/qedi_main.c:87:25: note: each undeclared identifier is reported only once for each function it appears in drivers/scsi/qedi/qedi_main.c:88:21: error: 'EP_STATE_OFLDCONN_COMPL' undeclared (first use in this function) qedi_ep->state = EP_STATE_OFLDCONN_COMPL; ^~~ drivers/scsi/qedi/qedi_main.c:93:20: error: 'EP_STATE_DISCONN_COMPL' undeclared (first use in this function) qedi_ep->state = EP_STATE_DISCONN_COMPL; ^~ drivers/scsi/qedi/qedi_main.c:97:3: error: implicit declaration of function 'qedi_process_iscsi_error' [-Werror=implicit-function-declaration] qedi_process_iscsi_error(qedi_ep, data); ^~~~ drivers/scsi/qedi/qedi_main.c:106:3: error: implicit declaration of function 'qedi_process_tcp_error' [-Werror=implicit-function-declaration] qedi_process_tcp_error(qedi_ep, data); ^~ drivers/scsi/qedi/qedi_main.c: In function 'qedi_host_alloc': drivers/scsi/qedi/qedi_main.c:414:28: error: 'qedi_host_template' undeclared (first use in this function) shost = iscsi_host_alloc(&qedi_host_template, ^~ drivers/scsi/qedi/qedi_main.c:433:27: error: 'ISCSI_MAX_SESS_PER_HBA' undeclared (first use in this function) qedi->max_active_conns = ISCSI_MAX_SESS_PER_HBA; ^~ drivers/scsi/qedi/qedi_main.c: In function 'qedi_set_iscsi_pf_param': >> drivers/scsi/qedi/qedi_main.c:463:4: error: passing argument 3 of >> 'pci_alloc_consistent' from incompatible pointer type >> [-Werror=incompatible-pointer-types] &qedi->hw_p_cpuq); ^ In file included from include/linux/pci.h:2131:0, from drivers/scsi/qedi/qedi_main.c:11: include/linux/pci-dma-compat.h:16:1: note: expected 'dma_addr_t * {aka unsigned int *}' but argument is of type 'u64 * {aka long long unsigned int *}' pci_alloc_consistent(struct pci_dev *hwdev, size_t size, ^~~~ drivers/scsi/qedi/qedi_main.c: In function 'qedi_queue_cqe': drivers/scsi/qedi/qedi_main.c:571:15: error: dereferencing pointer to incomplete type 'struct qedi_conn' conn = q_conn->cls_conn->dd_data; ^~ drivers/scsi/qedi/qedi_main.c:581:27: error: dereferencing pointer to incomplete type 'struct qedi_cmd' INIT_LIST_HEAD(&qedi_cmd->cqe_work.list); ^~ drivers/scsi/qedi/qedi_main.c: At top level: drivers/scsi/qedi/qedi_main.c:1095:15: error: variable 'qedi_ll2_cb_ops' has initializer but incomplete type static struct qed_ll2_cb_ops qedi_ll2_cb_ops = { ^~ drivers/scsi/qedi/qedi_main.c:1096:2: error: unknown field 'rx_cb' specified in initializer .rx_cb = qedi_ll2_rx, ^ drivers/scsi/qedi/qedi_main.c:1096:11: error: 'qedi_ll2_rx' undeclared here (not in a function) .rx_cb = qedi_ll2_rx, ^~~ drivers/scsi/qedi/qedi_main.c:1096:11: warning: excess elements in struct initializer drivers/scsi/qedi/qedi_main.c:1096:11: note: (near initialization for 'qedi_ll2_cb_ops') drivers/scsi/qedi/qedi_main.c:1097:2: error: unknown field 'tx_cb' specified in initializer .tx_cb = NULL, ^ In file included from include/uapi/linux/posix_types.h:4:0, from include/uapi/linux/types.h:13, from include/linux/types.h:5, from include/linux/list.h:4, from include/linux/module.h:9, from drivers/scsi/qedi/qedi_main.c:10: include/linux/stddef.h:7:14: warning: excess elements in struct initializer #de
Re: [PATCH v2 3/6] qedi: Add QLogic FastLinQ offload iSCSI driver framework.
Hi Manish, [auto build test ERROR on net-next/master] [also build test ERROR on v4.9-rc4] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Manish-Rangankar/qed-Add-support-for-hardware-offloaded-iSCSI/20161108-180027 config: ia64-allmodconfig (attached as .config) compiler: ia64-linux-gcc (GCC) 6.2.0 reproduce: wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=ia64 Note: the linux-review/Manish-Rangankar/qed-Add-support-for-hardware-offloaded-iSCSI/20161108-180027 HEAD dd4d1d0e0785d20cdcfdf9b2c792c564a79b2de2 builds fine. It only hurts bisectibility. All error/warnings (new ones prefixed by >>): drivers/scsi/qedi/qedi_main.c: In function 'qedi_iscsi_event_cb': >> drivers/scsi/qedi/qedi_main.c:87:14: error: dereferencing pointer to >> incomplete type 'struct qedi_endpoint' if (qedi_ep->state == EP_STATE_OFLDCONN_START) ^~ >> drivers/scsi/qedi/qedi_main.c:87:25: error: 'EP_STATE_OFLDCONN_START' >> undeclared (first use in this function) if (qedi_ep->state == EP_STATE_OFLDCONN_START) ^~~ drivers/scsi/qedi/qedi_main.c:87:25: note: each undeclared identifier is reported only once for each function it appears in >> drivers/scsi/qedi/qedi_main.c:88:21: error: 'EP_STATE_OFLDCONN_COMPL' >> undeclared (first use in this function) qedi_ep->state = EP_STATE_OFLDCONN_COMPL; ^~~ >> drivers/scsi/qedi/qedi_main.c:93:20: error: 'EP_STATE_DISCONN_COMPL' >> undeclared (first use in this function) qedi_ep->state = EP_STATE_DISCONN_COMPL; ^~ >> drivers/scsi/qedi/qedi_main.c:97:3: error: implicit declaration of function >> 'qedi_process_iscsi_error' [-Werror=implicit-function-declaration] qedi_process_iscsi_error(qedi_ep, data); ^~~~ >> drivers/scsi/qedi/qedi_main.c:106:3: error: implicit declaration of function >> 'qedi_process_tcp_error' [-Werror=implicit-function-declaration] qedi_process_tcp_error(qedi_ep, data); ^~ drivers/scsi/qedi/qedi_main.c: In function 'qedi_host_alloc': >> drivers/scsi/qedi/qedi_main.c:414:28: error: 'qedi_host_template' undeclared >> (first use in this function) shost = iscsi_host_alloc(&qedi_host_template, ^~ >> drivers/scsi/qedi/qedi_main.c:433:27: error: 'ISCSI_MAX_SESS_PER_HBA' >> undeclared (first use in this function) qedi->max_active_conns = ISCSI_MAX_SESS_PER_HBA; ^~ drivers/scsi/qedi/qedi_main.c: In function 'qedi_queue_cqe': >> drivers/scsi/qedi/qedi_main.c:571:15: error: dereferencing pointer to >> incomplete type 'struct qedi_conn' conn = q_conn->cls_conn->dd_data; ^~ >> drivers/scsi/qedi/qedi_main.c:581:27: error: dereferencing pointer to >> incomplete type 'struct qedi_cmd' INIT_LIST_HEAD(&qedi_cmd->cqe_work.list); ^~ drivers/scsi/qedi/qedi_main.c: At top level: drivers/scsi/qedi/qedi_main.c:1095:15: error: variable 'qedi_ll2_cb_ops' has initializer but incomplete type static struct qed_ll2_cb_ops qedi_ll2_cb_ops = { ^~ drivers/scsi/qedi/qedi_main.c:1096:2: error: unknown field 'rx_cb' specified in initializer .rx_cb = qedi_ll2_rx, ^ drivers/scsi/qedi/qedi_main.c:1096:11: error: 'qedi_ll2_rx' undeclared here (not in a function) .rx_cb = qedi_ll2_rx, ^~~ drivers/scsi/qedi/qedi_main.c:1096:11: warning: excess elements in struct initializer drivers/scsi/qedi/qedi_main.c:1096:11: note: (near initialization for 'qedi_ll2_cb_ops') drivers/scsi/qedi/qedi_main.c:1097:2: error: unknown field 'tx_cb' specified in initializer .tx_cb = NULL, ^ In file included from include/uapi/linux/posix_types.h:4:0, from include/uapi/linux/types.h:13, from include/linux/types.h:5, from include/linux/list.h:4, from include/linux/module.h:9, from drivers/scsi/qedi/qedi_main.c:10: include/linux/stddef.h:7:14: warning: excess elements in struct initializer #define NULL ((void *)0) ^ drivers/scsi/qedi/qedi_main.c:1097:11: note: in expansion of macro 'NULL' .tx_cb = NULL, ^~~~ include/linux/stddef.h:7:14: note: (near initialization for 'qedi_ll2_cb_ops') #define NULL ((void *)0) ^ drivers/scsi/qedi/qedi_main.c:1097:11: note: in expansion of macro 'NULL' .tx_cb = NULL, ^~~~ drivers/scsi/qedi/qedi_main.
[PATCH v2 3/6] qedi: Add QLogic FastLinQ offload iSCSI driver framework.
The QLogic FastLinQ Driver for iSCSI (qedi) is the iSCSI specific module for 41000 Series Converged Network Adapters by QLogic. This patch consists of following changes: - MAINTAINERS Makefile and Kconfig changes for qedi, - PCI driver registration, - iSCSI host level initialization, - Debugfs and log level infrastructure. Signed-off-by: Nilesh Javali Signed-off-by: Adheer Chandravanshi Signed-off-by: Chad Dupuis Signed-off-by: Saurav Kashyap Signed-off-by: Arun Easi Signed-off-by: Manish Rangankar --- MAINTAINERS |6 + drivers/net/ethernet/qlogic/Kconfig | 12 - drivers/scsi/Kconfig|1 + drivers/scsi/Makefile |1 + drivers/scsi/qedi/Kconfig | 10 + drivers/scsi/qedi/Makefile |5 + drivers/scsi/qedi/qedi.h| 291 +++ drivers/scsi/qedi/qedi_dbg.c| 143 drivers/scsi/qedi/qedi_dbg.h| 144 drivers/scsi/qedi/qedi_debugfs.c| 244 ++ drivers/scsi/qedi/qedi_hsi.h| 52 ++ drivers/scsi/qedi/qedi_main.c | 1616 +++ drivers/scsi/qedi/qedi_sysfs.c | 52 ++ drivers/scsi/qedi/qedi_version.h| 14 + 14 files changed, 2579 insertions(+), 12 deletions(-) create mode 100644 drivers/scsi/qedi/Kconfig create mode 100644 drivers/scsi/qedi/Makefile create mode 100644 drivers/scsi/qedi/qedi.h create mode 100644 drivers/scsi/qedi/qedi_dbg.c create mode 100644 drivers/scsi/qedi/qedi_dbg.h create mode 100644 drivers/scsi/qedi/qedi_debugfs.c create mode 100644 drivers/scsi/qedi/qedi_hsi.h create mode 100644 drivers/scsi/qedi/qedi_main.c create mode 100644 drivers/scsi/qedi/qedi_sysfs.c create mode 100644 drivers/scsi/qedi/qedi_version.h diff --git a/MAINTAINERS b/MAINTAINERS index e5c17a9..04eec14 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -9934,6 +9934,12 @@ F: drivers/net/ethernet/qlogic/qed/ F: include/linux/qed/ F: drivers/net/ethernet/qlogic/qede/ +QLOGIC QL41xxx ISCSI DRIVER +M: qlogic-storage-upstr...@cavium.com +L: linux-scsi@vger.kernel.org +S: Supported +F: drivers/scsi/qedi/ + QNX4 FILESYSTEM M: Anders Larsen W: http://www.alarsen.net/linux/qnx4fs/ diff --git a/drivers/net/ethernet/qlogic/Kconfig b/drivers/net/ethernet/qlogic/Kconfig index 2832570..3cfd105 100644 --- a/drivers/net/ethernet/qlogic/Kconfig +++ b/drivers/net/ethernet/qlogic/Kconfig @@ -113,16 +113,4 @@ config QED_RDMA config QED_ISCSI bool -config QEDI - tristate "QLogic QED 25/40/100Gb iSCSI driver" - depends on QED - select QED_LL2 - select QED_ISCSI - default n - ---help--- - This provides a temporary node that allows the compilation - and logical testing of the hardware offload iSCSI support - for QLogic QED. This would be replaced by the 'real' option - once the QEDI driver is added [+relocated]. - endif # NET_VENDOR_QLOGIC diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig index 3e2bdb9..5cf03db 100644 --- a/drivers/scsi/Kconfig +++ b/drivers/scsi/Kconfig @@ -1254,6 +1254,7 @@ config SCSI_QLOGICPTI source "drivers/scsi/qla2xxx/Kconfig" source "drivers/scsi/qla4xxx/Kconfig" +source "drivers/scsi/qedi/Kconfig" config SCSI_LPFC tristate "Emulex LightPulse Fibre Channel Support" diff --git a/drivers/scsi/Makefile b/drivers/scsi/Makefile index 38d938d..da9e312 100644 --- a/drivers/scsi/Makefile +++ b/drivers/scsi/Makefile @@ -132,6 +132,7 @@ obj-$(CONFIG_PS3_ROM) += ps3rom.o obj-$(CONFIG_SCSI_CXGB3_ISCSI) += libiscsi.o libiscsi_tcp.o cxgbi/ obj-$(CONFIG_SCSI_CXGB4_ISCSI) += libiscsi.o libiscsi_tcp.o cxgbi/ obj-$(CONFIG_SCSI_BNX2_ISCSI) += libiscsi.o bnx2i/ +obj-$(CONFIG_QEDI) += libiscsi.o qedi/ obj-$(CONFIG_BE2ISCSI) += libiscsi.o be2iscsi/ obj-$(CONFIG_SCSI_ESAS2R) += esas2r/ obj-$(CONFIG_SCSI_PMCRAID) += pmcraid.o diff --git a/drivers/scsi/qedi/Kconfig b/drivers/scsi/qedi/Kconfig new file mode 100644 index 000..23ca8a2 --- /dev/null +++ b/drivers/scsi/qedi/Kconfig @@ -0,0 +1,10 @@ +config QEDI + tristate "QLogic QEDI 25/40/100Gb iSCSI Initiator Driver Support" + depends on PCI && SCSI + depends on QED + select SCSI_ISCSI_ATTRS + select QED_LL2 + select QED_ISCSI + ---help--- + This driver supports iSCSI offload for the QLogic FastLinQ + 41000 Series Converged Network Adapters. diff --git a/drivers/scsi/qedi/Makefile b/drivers/scsi/qedi/Makefile new file mode 100644 index 000..2b3e16b --- /dev/null +++ b/drivers/scsi/qedi/Makefile @@ -0,0 +1,5 @@ +obj-$(CONFIG_QEDI) := qedi.o +qedi-y := qedi_main.o qedi_iscsi.o qedi_fw.o qedi_sysfs.o \ + qedi_dbg.o + +qedi-$(CONFIG_DEBUG_FS) += qedi_debugfs.o diff --git a/drivers/scsi/qedi/qedi.h b/drivers/scsi/qedi/qedi.h new file mode 100644 index 000..92136a3 --- /dev/null +++ b/drivers/scsi/qedi/qedi.h @@ -0,0 +1,291 @@