diff options
Diffstat (limited to 'drivers/infiniband/core/smi.h')
-rw-r--r-- | drivers/infiniband/core/smi.h | 34 |
1 files changed, 20 insertions, 14 deletions
diff --git a/drivers/infiniband/core/smi.h b/drivers/infiniband/core/smi.h index 3011bfd86dc..9a4b349efc3 100644 --- a/drivers/infiniband/core/smi.h +++ b/drivers/infiniband/core/smi.h | |||
@@ -3,7 +3,7 @@ | |||
3 | * Copyright (c) 2004 Infinicon Corporation. All rights reserved. | 3 | * Copyright (c) 2004 Infinicon Corporation. All rights reserved. |
4 | * Copyright (c) 2004 Intel Corporation. All rights reserved. | 4 | * Copyright (c) 2004 Intel Corporation. All rights reserved. |
5 | * Copyright (c) 2004 Topspin Corporation. All rights reserved. | 5 | * Copyright (c) 2004 Topspin Corporation. All rights reserved. |
6 | * Copyright (c) 2004 Voltaire Corporation. All rights reserved. | 6 | * Copyright (c) 2004-2007 Voltaire Corporation. All rights reserved. |
7 | * | 7 | * |
8 | * This software is available to you under a choice of one of two | 8 | * This software is available to you under a choice of one of two |
9 | * licenses. You may choose to be licensed under the terms of the GNU | 9 | * licenses. You may choose to be licensed under the terms of the GNU |
@@ -33,7 +33,6 @@ | |||
33 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | 33 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
34 | * SOFTWARE. | 34 | * SOFTWARE. |
35 | * | 35 | * |
36 | * $Id: smi.h 1389 2004-12-27 22:56:47Z roland $ | ||
37 | */ | 36 | */ |
38 | 37 | ||
39 | #ifndef __SMI_H_ | 38 | #ifndef __SMI_H_ |
@@ -41,26 +40,33 @@ | |||
41 | 40 | ||
42 | #include <rdma/ib_smi.h> | 41 | #include <rdma/ib_smi.h> |
43 | 42 | ||
44 | int smi_handle_dr_smp_recv(struct ib_smp *smp, | 43 | enum smi_action { |
45 | u8 node_type, | 44 | IB_SMI_DISCARD, |
46 | int port_num, | 45 | IB_SMI_HANDLE |
47 | int phys_port_cnt); | 46 | }; |
48 | extern int smi_check_forward_dr_smp(struct ib_smp *smp); | 47 | |
49 | extern int smi_handle_dr_smp_send(struct ib_smp *smp, | 48 | enum smi_forward_action { |
50 | u8 node_type, | 49 | IB_SMI_LOCAL, /* SMP should be completed up the stack */ |
51 | int port_num); | 50 | IB_SMI_SEND, /* received DR SMP should be forwarded to the send queue */ |
51 | }; | ||
52 | |||
53 | enum smi_action smi_handle_dr_smp_recv(struct ib_smp *smp, u8 node_type, | ||
54 | int port_num, int phys_port_cnt); | ||
55 | extern enum smi_forward_action smi_check_forward_dr_smp(struct ib_smp *smp); | ||
56 | extern enum smi_action smi_handle_dr_smp_send(struct ib_smp *smp, | ||
57 | u8 node_type, int port_num); | ||
52 | 58 | ||
53 | /* | 59 | /* |
54 | * Return 1 if the SMP should be handled by the local SMA/SM via process_mad | 60 | * Return 1 if the SMP should be handled by the local SMA/SM via process_mad |
55 | */ | 61 | */ |
56 | static inline int smi_check_local_smp(struct ib_smp *smp, | 62 | static inline enum smi_action smi_check_local_smp(struct ib_smp *smp, |
57 | struct ib_device *device) | 63 | struct ib_device *device) |
58 | { | 64 | { |
59 | /* C14-9:3 -- We're at the end of the DR segment of path */ | 65 | /* C14-9:3 -- We're at the end of the DR segment of path */ |
60 | /* C14-9:4 -- Hop Pointer = Hop Count + 1 -> give to SMA/SM */ | 66 | /* C14-9:4 -- Hop Pointer = Hop Count + 1 -> give to SMA/SM */ |
61 | return ((device->process_mad && | 67 | return ((device->process_mad && |
62 | !ib_get_smp_direction(smp) && | 68 | !ib_get_smp_direction(smp) && |
63 | (smp->hop_ptr == smp->hop_cnt + 1))); | 69 | (smp->hop_ptr == smp->hop_cnt + 1)) ? |
70 | IB_SMI_HANDLE : IB_SMI_DISCARD); | ||
64 | } | 71 | } |
65 | |||
66 | #endif /* __SMI_H_ */ | 72 | #endif /* __SMI_H_ */ |