Blame view
drivers/infiniband/core/smi.h
3.26 KB
1da177e4c Linux-2.6.12-rc2 |
1 2 3 4 5 |
/* * Copyright (c) 2004 Mellanox Technologies Ltd. All rights reserved. * Copyright (c) 2004 Infinicon Corporation. All rights reserved. * Copyright (c) 2004 Intel Corporation. All rights reserved. * Copyright (c) 2004 Topspin Corporation. All rights reserved. |
de493d47d IB/mad: Change SM... |
6 |
* Copyright (c) 2004-2007 Voltaire Corporation. All rights reserved. |
1da177e4c Linux-2.6.12-rc2 |
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
* * This software is available to you under a choice of one of two * licenses. You may choose to be licensed under the terms of the GNU * General Public License (GPL) Version 2, available from the file * COPYING in the main directory of this source tree, or the * OpenIB.org BSD license below: * * Redistribution and use in source and binary forms, with or * without modification, are permitted provided that the following * conditions are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the following * disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * |
1da177e4c Linux-2.6.12-rc2 |
36 37 38 39 |
*/ #ifndef __SMI_H_ #define __SMI_H_ |
34816ad98 [IB] Fix MAD laye... |
40 |
#include <rdma/ib_smi.h> |
de493d47d IB/mad: Change SM... |
41 42 43 44 45 46 47 48 |
enum smi_action { IB_SMI_DISCARD, IB_SMI_HANDLE }; enum smi_forward_action { IB_SMI_LOCAL, /* SMP should be completed up the stack */ IB_SMI_SEND, /* received DR SMP should be forwarded to the send queue */ |
1bae4dbf9 IB/mad: Enhance S... |
49 |
IB_SMI_FORWARD /* SMP should be forwarded (for switches only) */ |
de493d47d IB/mad: Change SM... |
50 |
}; |
4139032b4 IB: Add rdma_cap_... |
51 |
enum smi_action smi_handle_dr_smp_recv(struct ib_smp *smp, bool is_switch, |
de493d47d IB/mad: Change SM... |
52 |
int port_num, int phys_port_cnt); |
1bae4dbf9 IB/mad: Enhance S... |
53 |
int smi_get_fwd_port(struct ib_smp *smp); |
de493d47d IB/mad: Change SM... |
54 55 |
extern enum smi_forward_action smi_check_forward_dr_smp(struct ib_smp *smp); extern enum smi_action smi_handle_dr_smp_send(struct ib_smp *smp, |
4139032b4 IB: Add rdma_cap_... |
56 |
bool is_switch, int port_num); |
1da177e4c Linux-2.6.12-rc2 |
57 58 |
/* |
727792da2 IB/mad: Enable lo... |
59 60 |
* Return IB_SMI_HANDLE if the SMP should be handled by the local SMA/SM * via process_mad |
1da177e4c Linux-2.6.12-rc2 |
61 |
*/ |
de493d47d IB/mad: Change SM... |
62 63 |
static inline enum smi_action smi_check_local_smp(struct ib_smp *smp, struct ib_device *device) |
1da177e4c Linux-2.6.12-rc2 |
64 65 66 |
{ /* C14-9:3 -- We're at the end of the DR segment of path */ /* C14-9:4 -- Hop Pointer = Hop Count + 1 -> give to SMA/SM */ |
5e9f71a16 IB/mad: Simplify ... |
67 |
return ((device->process_mad && |
1da177e4c Linux-2.6.12-rc2 |
68 |
!ib_get_smp_direction(smp) && |
de493d47d IB/mad: Change SM... |
69 70 |
(smp->hop_ptr == smp->hop_cnt + 1)) ? IB_SMI_HANDLE : IB_SMI_DISCARD); |
1da177e4c Linux-2.6.12-rc2 |
71 |
} |
727792da2 IB/mad: Enable lo... |
72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
/* * Return IB_SMI_HANDLE if the SMP should be handled by the local SMA/SM * via process_mad */ static inline enum smi_action smi_check_local_returning_smp(struct ib_smp *smp, struct ib_device *device) { /* C14-13:3 -- We're at the end of the DR segment of path */ /* C14-13:4 -- Hop Pointer == 0 -> give to SM */ return ((device->process_mad && ib_get_smp_direction(smp) && !smp->hop_ptr) ? IB_SMI_HANDLE : IB_SMI_DISCARD); } |
1da177e4c Linux-2.6.12-rc2 |
86 |
#endif /* __SMI_H_ */ |