Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

RDMA/cma: Define native IB address

Define AF_IB and sockaddr_ib to allow the rdma_cm to use native IB
addressing.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>

authored by

Sean Hefty and committed by
Roland Dreier
8d36eb01 fedaf4ff

+91
+2
include/linux/socket.h
··· 167 167 #define AF_PPPOX 24 /* PPPoX sockets */ 168 168 #define AF_WANPIPE 25 /* Wanpipe API Sockets */ 169 169 #define AF_LLC 26 /* Linux LLC */ 170 + #define AF_IB 27 /* Native InfiniBand address */ 170 171 #define AF_CAN 29 /* Controller Area Network */ 171 172 #define AF_TIPC 30 /* TIPC sockets */ 172 173 #define AF_BLUETOOTH 31 /* Bluetooth sockets */ ··· 212 211 #define PF_PPPOX AF_PPPOX 213 212 #define PF_WANPIPE AF_WANPIPE 214 213 #define PF_LLC AF_LLC 214 + #define PF_IB AF_IB 215 215 #define PF_CAN AF_CAN 216 216 #define PF_TIPC AF_TIPC 217 217 #define PF_BLUETOOTH AF_BLUETOOTH
+89
include/rdma/ib.h
··· 1 + /* 2 + * Copyright (c) 2010 Intel Corporation. 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 + #if !defined(_RDMA_IB_H) 34 + #define _RDMA_IB_H 35 + 36 + #include <linux/types.h> 37 + 38 + struct ib_addr { 39 + union { 40 + __u8 uib_addr8[16]; 41 + __be16 uib_addr16[8]; 42 + __be32 uib_addr32[4]; 43 + __be64 uib_addr64[2]; 44 + } ib_u; 45 + #define sib_addr8 ib_u.uib_addr8 46 + #define sib_addr16 ib_u.uib_addr16 47 + #define sib_addr32 ib_u.uib_addr32 48 + #define sib_addr64 ib_u.uib_addr64 49 + #define sib_raw ib_u.uib_addr8 50 + #define sib_subnet_prefix ib_u.uib_addr64[0] 51 + #define sib_interface_id ib_u.uib_addr64[1] 52 + }; 53 + 54 + static inline int ib_addr_any(const struct ib_addr *a) 55 + { 56 + return ((a->sib_addr64[0] | a->sib_addr64[1]) == 0); 57 + } 58 + 59 + static inline int ib_addr_loopback(const struct ib_addr *a) 60 + { 61 + return ((a->sib_addr32[0] | a->sib_addr32[1] | 62 + a->sib_addr32[2] | (a->sib_addr32[3] ^ htonl(1))) == 0); 63 + } 64 + 65 + static inline void ib_addr_set(struct ib_addr *addr, 66 + __be32 w1, __be32 w2, __be32 w3, __be32 w4) 67 + { 68 + addr->sib_addr32[0] = w1; 69 + addr->sib_addr32[1] = w2; 70 + addr->sib_addr32[2] = w3; 71 + addr->sib_addr32[3] = w4; 72 + } 73 + 74 + static inline int ib_addr_cmp(const struct ib_addr *a1, const struct ib_addr *a2) 75 + { 76 + return memcmp(a1, a2, sizeof(struct ib_addr)); 77 + } 78 + 79 + struct sockaddr_ib { 80 + unsigned short int sib_family; /* AF_IB */ 81 + __be16 sib_pkey; 82 + __be32 sib_flowinfo; 83 + struct ib_addr sib_addr; 84 + __be64 sib_sid; 85 + __be64 sib_sid_mask; 86 + __u64 sib_scope_id; 87 + }; 88 + 89 + #endif /* _RDMA_IB_H */