[ofw] [PATCH] Support for I/O completion ports
Leonid Keller
leonid at mellanox.co.il
Wed Jul 2 03:38:41 PDT 2008
Applied in 1319. Thank you.
> -----Original Message-----
> From: ofw-bounces at lists.openfabrics.org
> [mailto:ofw-bounces at lists.openfabrics.org] On Behalf Of Fab Tillier
> Sent: Tuesday, July 01, 2008 9:31 PM
> To: ofw at lists.openfabrics.org
> Subject: [ofw] [PATCH] Support for I/O completion ports
>
> Memory registrations in IBAL require a user-mode structure.
> However, registration and deregistration operations in
> NetworkDirect (and WinVerbs) are defined as overlapped
> operations (overlapped means asynchronous). Clients that use
> I/O completion ports (IOCP) expect these operations to
> complete to said IOCP.
>
> Add code to allow user-mode code to register memory via the
> existing IBAL IOCTLs, and if that succeeds, issue a no-op
> IOCTL that completes the user's overlapped request to their
> IOCP (or whatever mechanism they are using - the I/O manager
> will take care of it).
>
> Signed-off-by: Fab Tillier <ftillier at microsoft.com>
>
> diff -up -r -X trunk\docs\dontdiff.txt -I \$Id:
> old\core\al\al_dev.h trunk\core\al\al_dev.h
> --- old\core\al\al_dev.h Tue Jul 01 11:17:08 2008
> +++ trunk\core\al\al_dev.h Tue Jul 01 11:23:34 2008
> @@ -55,7 +55,7 @@
> #define AL_DEVICE_NAME L"\\Device\\ibal"
> #define ALDEV_KEY (0x3B) /* Matches
> FILE_DEVICE_INFINIBAND from wdm.h */
>
> -#define AL_IOCTL_VERSION (5)
> +#define AL_IOCTL_VERSION (6)
>
> /* max number of devices with non-default pkey */
> #define MAX_NUM_PKEY 16
> @@ -403,6 +403,7 @@ typedef enum _al_ndi_ops
> ual_ndi_rtu_cm_ioctl_cmd,
> ual_ndi_rej_cm_ioctl_cmd,
> ual_ndi_dreq_cm_ioctl_cmd,
> + ual_ndi_noop,
>
> al_ndi_maxops
>
> @@ -424,6 +425,7 @@ typedef enum _al_ndi_ops
> #define UAL_NDI_RTU_CM IOCTL_CODE(ALDEV_KEY,
> ual_ndi_rtu_cm_ioctl_cmd)
> #define UAL_NDI_REJ_CM IOCTL_CODE(ALDEV_KEY,
> ual_ndi_rej_cm_ioctl_cmd)
> #define UAL_NDI_DREQ_CM
> IOCTL_CODE(ALDEV_KEY, ual_ndi_dreq_cm_ioctl_cmd)
> +#define UAL_NDI_NOOP IOCTL_CODE(ALDEV_KEY, ual_ndi_noop)
>
> /*
> * Various Operation Allowable on the System Helper diff -up
> -r -X trunk\docs\dontdiff.txt -I \$Id:
> old\core\al\kernel\al_proxy_ndi.c trunk\core\al\kernel\al_proxy_ndi.c
> --- old\core\al\kernel\al_proxy_ndi.c Mon Jun 30 14:50:58 2008
> +++ trunk\core\al\kernel\al_proxy_ndi.c Tue Jul 01 11:23:34 2008
> @@ -631,6 +631,9 @@ ndi_ioctl(
> case UAL_NDI_DREQ_CM:
> cl_status = __ndi_dreq_cm( p_context,
> h_ioctl, p_ret_bytes );
> break;
> + case UAL_NDI_NOOP:
> + cl_status = CL_SUCCESS;
> + break;
> default:
> cl_status = CL_INVALID_PARAMETER;
> break;
>
More information about the ofw
mailing list