Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
cmd.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2006 Cisco Systems, Inc. All rights reserved.
3  *
4  * This software is available to you under a choice of one of two
5  * licenses. You may choose to be licensed under the terms of the GNU
6  * General Public License (GPL) Version 2, available from the file
7  * COPYING in the main directory of this source tree, or the
8  * OpenIB.org BSD license below:
9  *
10  * Redistribution and use in source and binary forms, with or
11  * without modification, are permitted provided that the following
12  * conditions are met:
13  *
14  * - Redistributions of source code must retain the above
15  * copyright notice, this list of conditions and the following
16  * disclaimer.
17  *
18  * - Redistributions in binary form must reproduce the above
19  * copyright notice, this list of conditions and the following
20  * disclaimer in the documentation and/or other materials
21  * provided with the distribution.
22  *
23  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
27  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
28  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
29  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
30  * SOFTWARE.
31  */
32 
33 #ifndef MLX4_CMD_H
34 #define MLX4_CMD_H
35 
36 #include <linux/dma-mapping.h>
37 
38 enum {
39  /* initialization and general commands */
42  MLX4_CMD_MAP_FA = 0xfff,
44  MLX4_CMD_RUN_FW = 0xff6,
69  /*master notify fw on finish for slave's flr*/
71 
72  /* TPT commands */
79 
80  /* EQ commands */
85 
86  /* CQ commands */
91 
92  /* SRQ commands */
97 
98  /* QP/EE commands */
113  /* special QP and management commands */
116 
117  /* multicast commands */
121 
122  /* miscellaneous commands */
124  MLX4_CMD_NOP = 0x31,
127 
128  /* Ethernet specific commands */
132 
133  /* Communication channel commands */
136 
137  /* virtual commands */
145 
146  /* debug commands */
149 
150  /* statistics commands */
153 
154  /* set port opcode modifiers */
157 
158  /* register/delete flow steering network rules */
161 };
162 
163 enum {
167 };
168 
169 enum {
172 };
173 
174 enum {
175  /* set port opcode modifiers */
182 };
183 
184 enum {
187 };
188 
189 struct mlx4_dev;
190 
192  void *buf;
194 };
195 
196 int __mlx4_cmd(struct mlx4_dev *dev, u64 in_param, u64 *out_param,
197  int out_is_imm, u32 in_modifier, u8 op_modifier,
198  u16 op, unsigned long timeout, int native);
199 
200 /* Invoke a command with no output parameter */
201 static inline int mlx4_cmd(struct mlx4_dev *dev, u64 in_param, u32 in_modifier,
202  u8 op_modifier, u16 op, unsigned long timeout,
203  int native)
204 {
205  return __mlx4_cmd(dev, in_param, NULL, 0, in_modifier,
206  op_modifier, op, timeout, native);
207 }
208 
209 /* Invoke a command with an output mailbox */
210 static inline int mlx4_cmd_box(struct mlx4_dev *dev, u64 in_param, u64 out_param,
211  u32 in_modifier, u8 op_modifier, u16 op,
212  unsigned long timeout, int native)
213 {
214  return __mlx4_cmd(dev, in_param, &out_param, 0, in_modifier,
215  op_modifier, op, timeout, native);
216 }
217 
218 /*
219  * Invoke a command with an immediate output parameter (and copy the
220  * output into the caller's out_param pointer after the command
221  * executes).
222  */
223 static inline int mlx4_cmd_imm(struct mlx4_dev *dev, u64 in_param, u64 *out_param,
224  u32 in_modifier, u8 op_modifier, u16 op,
225  unsigned long timeout, int native)
226 {
227  return __mlx4_cmd(dev, in_param, out_param, 1, in_modifier,
228  op_modifier, op, timeout, native);
229 }
230 
233 
235 
236 #define MLX4_COMM_GET_IF_REV(cmd_chan_ver) (u8)((cmd_chan_ver) >> 8)
237 
238 #endif /* MLX4_CMD_H */