[MLTHCA] added polling mode support.
[mirror/winof/.git] / hw / mlx4 / kernel / bus / inc / ib_verbs_ex.h
1 /*
2  * Copyright (c) 2005 SilverStorm Technologies.  All rights reserved.
3  * Copyright (c) 1996-2003 Intel Corporation. All rights reserved. 
4  *
5  * This software is available to you under the OpenIB.org BSD license
6  * below:
7  *
8  *     Redistribution and use in source and binary forms, with or
9  *     without modification, are permitted provided that the following
10  *     conditions are met:
11  *
12  *      - Redistributions of source code must retain the above
13  *        copyright notice, this list of conditions and the following
14  *        disclaimer.
15  *
16  *      - Redistributions in binary form must reproduce the above
17  *        copyright notice, this list of conditions and the following
18  *        disclaimer in the documentation and/or other materials
19  *        provided with the distribution.
20  *
21  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
25  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
26  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
27  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
28  * SOFTWARE.
29  *
30  * $Id: al.c 1611 2006-08-20 14:48:55Z sleybo $
31  */
32
33 #pragma once
34
35 #include "shutter.h"
36
37 typedef struct _FDO_DEVICE_DATA *PFDO_DEVICE_DATA;
38 struct ib_cq;
39 struct ib_event_handler;
40
41 /* extension for ib_device */
42 struct ib_device_ex 
43 {
44         PFDO_DEVICE_DATA p_fdo;
45         int (*get_cached_gid)(struct ib_device *device,
46                 u8 port_num, int index, union ib_gid *gid);
47         int (*find_cached_gid)(struct ib_device *device,
48                 union ib_gid    *gid, u8 *port_num, u16 *index);
49         int (*get_cached_pkey)(struct ib_device *device,
50                 u8 port_num, int index, __be16 *pkey);
51         int (*find_cached_pkey)(struct ib_device *device,
52                 u8 port_num, __be16 pkey, u16 *index);
53         int (*register_ev_cb) (struct ib_event_handler *event_handler);
54         int (*unregister_ev_cb) (struct ib_event_handler *event_handler);
55 #if 1//WORKAROUND_POLL_EQ
56         void (*poll_eq)(struct ib_device *device, BOOLEAN bStart);
57 #endif
58 };
59
60
61 /* extension for ib_ucontext */
62 typedef struct {
63         PVOID   uva;
64         PMDL    mdl;
65         PVOID   kva;
66         int             mapped;
67 } umap_t;
68
69 struct ib_ucontext_ex 
70 {
71         cl_list_item_t          list_item;                      // chain of user contexts
72         umap_t                          uar;
73         umap_t                          bf;
74         atomic_t                        usecnt; /* count all resources */
75         // for tools support
76         struct mutex            mutex;
77         PMDL                            p_mdl;
78         PVOID                           va;
79         int                             fw_if_open;
80 };
81
82 /* extension for ib_event */
83 struct ib_event_ex 
84 {
85         uint64_t                vendor_specific;
86 };
87
88 /* extension for ib_cache */
89 struct ib_cache_ex 
90 {
91         shutter_t               work_thread;
92 };
93
94