[DAPL2] DAPL Counters & 2.0.3 extensions to support counter retrieval.
[mirror/winof/.git] / ulp / dapl2 / dapl / common / dapl_evd_cq_async_error_callb.c
1 /*\r
2  * Copyright (c) 2002-2003, Network Appliance, Inc. All rights reserved.\r
3  *\r
4  * This Software is licensed under one of the following licenses:\r
5  *\r
6  * 1) under the terms of the "Common Public License 1.0" a copy of which is\r
7  *    available from the Open Source Initiative, see\r
8  *    http://www.opensource.org/licenses/cpl.php.\r
9  *\r
10  * 2) under the terms of the "The BSD License" a copy of which is\r
11  *    available from the Open Source Initiative, see\r
12  *    http://www.opensource.org/licenses/bsd-license.php.\r
13  *\r
14  * 3) under the terms of the "GNU General Public License (GPL) Version 2" a\r
15  *    copy of which is available from the Open Source Initiative, see\r
16  *    http://www.opensource.org/licenses/gpl-license.php.\r
17  *\r
18  * Licensee has the right to choose one of the above licenses.\r
19  *\r
20  * Redistributions of source code must retain the above copyright\r
21  * notice and one of the license notices.\r
22  *\r
23  * Redistributions in binary form must reproduce both the above copyright\r
24  * notice, one of the license notices in the documentation\r
25  * and/or other materials provided with the distribution.\r
26  */\r
27 \r
28 /**********************************************************************\r
29  * \r
30  * MODULE: dapl_evd_cq_async_error_callback.c\r
31  *\r
32  * PURPOSE: implements CQ async_callbacks from verbs\r
33  *\r
34  * $Id:$\r
35  **********************************************************************/\r
36 \r
37 #include "dapl.h"\r
38 #include "dapl_evd_util.h"\r
39 \r
40 /*\r
41  * dapl_evd_cq_async_error_callback\r
42  *\r
43  * The callback function registered with verbs for cq async errors\r
44  *\r
45  * Input:\r
46  *      ib_cm_handle,\r
47  *      ib_cm_event\r
48  *      cause_ptr\r
49  *      context (evd)\r
50  *\r
51  * Output:\r
52  *      None\r
53  *\r
54  */\r
55 \r
56 void \r
57 dapl_evd_cq_async_error_callback (\r
58         IN      ib_hca_handle_t         ib_hca_handle,\r
59         IN      ib_cq_handle_t          ib_cq_handle,\r
60         IN      ib_error_record_t *     cause_ptr,\r
61         IN      void *                  context)\r
62 \r
63 {\r
64     DAPL_EVD            *async_evd;\r
65     DAPL_EVD            *evd;\r
66     DAT_RETURN          dat_status;\r
67 \r
68     dapl_dbg_log (DAPL_DBG_TYPE_CALLBACK | DAPL_DBG_TYPE_EXCEPTION ,\r
69                   "dapl_evd_cq_async_error_callback (%p, %p, %p, %p)\n",\r
70                   ib_hca_handle, \r
71                   ib_cq_handle, \r
72                   cause_ptr, \r
73                   context);\r
74 \r
75     if ( NULL == context )\r
76     {\r
77         dapl_os_panic ("NULL == context\n");\r
78     }\r
79 \r
80     evd = (DAPL_EVD *) context;\r
81     async_evd = evd->header.owner_ia->async_error_evd;\r
82     DAPL_CNTR(evd->header.owner_ia, DCNT_IA_ASYNC_CQ_ERROR);\r
83 \r
84     dat_status = dapls_evd_post_async_error_event(\r
85         async_evd,\r
86         DAT_ASYNC_ERROR_EVD_OVERFLOW,\r
87         (DAT_IA_HANDLE) async_evd->header.owner_ia);\r
88 \r
89 \r
90     if ( dat_status != DAT_SUCCESS )\r
91     {\r
92         dapl_os_panic ("async EVD overflow\n");\r
93     }\r
94 \r
95     dapl_dbg_log (DAPL_DBG_TYPE_CALLBACK | DAPL_DBG_TYPE_EXCEPTION ,\r
96                   "dapl_evd_cq_async_error_callback () returns\n");\r
97 }\r