linux/drivers/infiniband/hw/ehca
Hoang-Nam Nguyen bbdd267ef2 IB/ehca: Add "port connection autodetect mode"
This patch enhances ehca with a capability to "autodetect" the ports
being connected physically. In order to utilize that function the
module option nr_ports must be set to -1 (default is 2 - two
ports). This feature is experimental and will made the default later.

More detail:

If the user connects only one port to the switch, current code requires
  1) port one to be connected and
  2) module option nr_ports=1 to be given.

If autodetect is enabled, ehca will not wait at creation of the GSI QP
for the respective port to become active. Since firmware does not
accept modify_qp() while the port is down at initialization, we need
to cache all calls to modify_qp() for the SMI/GSI QP and just return a
good return code.

When a port is activated and we get a PORT_ACTIVE event, we replay the
cached modify-qp() parms and re-trigger any posted recv WRs. Only then
do we forward the PORT_ACTIVE event to registered clients.

The result of this autodetect patch is that all ports will be
accessible by the users. Depending on their respective cabling only
those ports that are connected properly will become operable. If a
user tries to modify a regular QP of a non-connected port, modify_qp()
will fail. Furthermore, ibv_devinfo should show the port state
accordingly.

Note that this patch primarily improves the loading behaviour of
ehca. If the cable is removed while the driver is operating and
plugged in again, firmware will handle that properly by sending an
appropriate async event.

Signed-off-by: Hoang-Nam Nguyen <hnguyen@de.ibm.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
2008-01-25 14:15:44 -08:00
..
ehca_av.c IB: Spelling fixes in comments 2008-01-25 14:15:29 -08:00
ehca_classes_pSeries.h IB/ehca: Fix warnings issued by checkpatch.pl 2007-07-17 18:37:40 -07:00
ehca_classes.h IB/ehca: Add "port connection autodetect mode" 2008-01-25 14:15:44 -08:00
ehca_cq.c drivers/infiniband: Add missing "space" 2008-01-25 14:15:26 -08:00
ehca_eq.c [POWERPC] ibmebus: Move to of_device and of_platform_driver, match eHCA and eHEA drivers 2007-10-17 22:30:08 +10:00
ehca_hca.c IB/ehca: Return physical link information in query_port() 2007-11-13 15:26:59 -08:00
ehca_irq.c IB/ehca: Add "port connection autodetect mode" 2008-01-25 14:15:44 -08:00
ehca_irq.h IB/ehca: Refactor sync between completions and destroy_cq using atomic_t 2007-07-09 20:12:27 -07:00
ehca_iverbs.h IB/ehca: Add "port connection autodetect mode" 2008-01-25 14:15:44 -08:00
ehca_main.c IB/ehca: Add "port connection autodetect mode" 2008-01-25 14:15:44 -08:00
ehca_mcast.c IB/ehca: Print return codes as signed decimal integers 2007-10-09 19:59:10 -07:00
ehca_mrmw.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband 2007-10-23 09:56:11 -07:00
ehca_mrmw.h IB/ehca: Support large page MRs 2007-07-20 21:19:43 -07:00
ehca_pd.c IB/ehca: Move extern declarations from .c files to .h files 2007-07-28 21:47:53 -07:00
ehca_qes.h IB/ehca: Fix warnings issued by checkpatch.pl 2007-07-17 18:37:40 -07:00
ehca_qp.c IB/ehca: Add "port connection autodetect mode" 2008-01-25 14:15:44 -08:00
ehca_reqs.c IB/ehca: Print return codes as signed decimal integers 2007-10-09 19:59:10 -07:00
ehca_sqp.c IB/ehca: Add "port connection autodetect mode" 2008-01-25 14:15:44 -08:00
ehca_tools.h IB/ehca: Replace get_paca()->paca_index by the more portable raw_smp_processor_id() 2007-10-09 19:59:11 -07:00
ehca_uverbs.c IB/ehca: Print return codes as signed decimal integers 2007-10-09 19:59:10 -07:00
hcp_if.c IB/ehca: Fix lock flag variable location, bump version number 2007-12-13 09:37:23 -08:00
hcp_if.h IB/ehca: QP code restructuring in preparation for SRQ 2007-07-09 20:12:27 -07:00
hcp_phyp.c IB/ehca: Fix warnings issued by checkpatch.pl 2007-07-17 18:37:40 -07:00
hcp_phyp.h IB/ehca: Add driver for IBM eHCA InfiniBand adapters 2006-09-22 15:22:22 -07:00
hipz_fns_core.h IB/ehca: Fix warnings issued by checkpatch.pl 2007-07-17 18:37:40 -07:00
hipz_fns.h IB/ehca: Add driver for IBM eHCA InfiniBand adapters 2006-09-22 15:22:22 -07:00
hipz_hw.h IB/ehca: Serialize HCA-related hCalls if necessary 2007-12-12 14:09:43 -08:00
ipz_pt_fn.c IB/ehca: Small QP userspace support 2007-10-09 19:59:07 -07:00
ipz_pt_fn.h IB/ehca: Move extern declarations from .c files to .h files 2007-07-28 21:47:53 -07:00
Kconfig IB: Use menuconfig for InfiniBand menu 2007-07-09 20:12:26 -07:00
Makefile IB/ehca: Add driver for IBM eHCA InfiniBand adapters 2006-09-22 15:22:22 -07:00