~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/rdma/ib_pack.h

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /include/rdma/ib_pack.h (Version linux-6.11.5) and /include/rdma/ib_pack.h (Version policy-sample)


  1 /* SPDX-License-Identifier: GPL-2.0 OR Linux-O      1 
  2 /*                                                
  3  * Copyright (c) 2004 Topspin Corporation.  Al    
  4  */                                               
  5                                                   
  6 #ifndef IB_PACK_H                                 
  7 #define IB_PACK_H                                 
  8                                                   
  9 #include <rdma/ib_verbs.h>                        
 10 #include <uapi/linux/if_ether.h>                  
 11                                                   
 12 enum {                                            
 13         IB_LRH_BYTES            = 8,              
 14         IB_ETH_BYTES            = 14,             
 15         IB_VLAN_BYTES           = 4,              
 16         IB_GRH_BYTES            = 40,             
 17         IB_IP4_BYTES            = 20,             
 18         IB_UDP_BYTES            = 8,              
 19         IB_BTH_BYTES            = 12,             
 20         IB_DETH_BYTES           = 8,              
 21         IB_EXT_ATOMICETH_BYTES  = 28,             
 22         IB_EXT_XRC_BYTES        = 4,              
 23         IB_ICRC_BYTES           = 4               
 24 };                                                
 25                                                   
 26 struct ib_field {                                 
 27         size_t struct_offset_bytes;               
 28         size_t struct_size_bytes;                 
 29         int    offset_words;                      
 30         int    offset_bits;                       
 31         int    size_bits;                         
 32         char  *field_name;                        
 33 };                                                
 34                                                   
 35 #define RESERVED \                                
 36         .field_name          = "reserved"         
 37                                                   
 38 /*                                                
 39  * This macro cleans up the definitions of con    
 40  * It is used to define constants such as IB_O    
 41  * which becomes IB_OPCODE_UD + IB_OPCODE_SEND    
 42  * the correct value.                             
 43  *                                                
 44  * In short, user code should use the constant    
 45  * macro rather than worrying about adding tog    
 46 */                                                
 47 #define IB_OPCODE(transport, op) \                
 48         IB_OPCODE_ ## transport ## _ ## op = \    
 49                 IB_OPCODE_ ## transport + IB_O    
 50                                                   
 51 enum {                                            
 52         /* transport types -- just used to def    
 53         IB_OPCODE_RC                              
 54         IB_OPCODE_UC                              
 55         IB_OPCODE_RD                              
 56         IB_OPCODE_UD                              
 57         /* per IBTA 1.3 vol 1 Table 38, A10.3.    
 58         IB_OPCODE_CNP                             
 59         /* Manufacturer specific */               
 60         IB_OPCODE_MSP                             
 61                                                   
 62         /* operations -- just used to define r    
 63         IB_OPCODE_SEND_FIRST                      
 64         IB_OPCODE_SEND_MIDDLE                     
 65         IB_OPCODE_SEND_LAST                       
 66         IB_OPCODE_SEND_LAST_WITH_IMMEDIATE        
 67         IB_OPCODE_SEND_ONLY                       
 68         IB_OPCODE_SEND_ONLY_WITH_IMMEDIATE        
 69         IB_OPCODE_RDMA_WRITE_FIRST                
 70         IB_OPCODE_RDMA_WRITE_MIDDLE               
 71         IB_OPCODE_RDMA_WRITE_LAST                 
 72         IB_OPCODE_RDMA_WRITE_LAST_WITH_IMMEDIA    
 73         IB_OPCODE_RDMA_WRITE_ONLY                 
 74         IB_OPCODE_RDMA_WRITE_ONLY_WITH_IMMEDIA    
 75         IB_OPCODE_RDMA_READ_REQUEST               
 76         IB_OPCODE_RDMA_READ_RESPONSE_FIRST        
 77         IB_OPCODE_RDMA_READ_RESPONSE_MIDDLE       
 78         IB_OPCODE_RDMA_READ_RESPONSE_LAST         
 79         IB_OPCODE_RDMA_READ_RESPONSE_ONLY         
 80         IB_OPCODE_ACKNOWLEDGE                     
 81         IB_OPCODE_ATOMIC_ACKNOWLEDGE              
 82         IB_OPCODE_COMPARE_SWAP                    
 83         IB_OPCODE_FETCH_ADD                       
 84         /* opcode 0x15 is reserved */             
 85         IB_OPCODE_SEND_LAST_WITH_INVALIDATE       
 86         IB_OPCODE_SEND_ONLY_WITH_INVALIDATE       
 87         IB_OPCODE_FLUSH                           
 88         IB_OPCODE_ATOMIC_WRITE                    
 89                                                   
 90         /* real constants follow -- see commen    
 91            macro for more details */              
 92                                                   
 93         /* RC */                                  
 94         IB_OPCODE(RC, SEND_FIRST),                
 95         IB_OPCODE(RC, SEND_MIDDLE),               
 96         IB_OPCODE(RC, SEND_LAST),                 
 97         IB_OPCODE(RC, SEND_LAST_WITH_IMMEDIATE    
 98         IB_OPCODE(RC, SEND_ONLY),                 
 99         IB_OPCODE(RC, SEND_ONLY_WITH_IMMEDIATE    
100         IB_OPCODE(RC, RDMA_WRITE_FIRST),          
101         IB_OPCODE(RC, RDMA_WRITE_MIDDLE),         
102         IB_OPCODE(RC, RDMA_WRITE_LAST),           
103         IB_OPCODE(RC, RDMA_WRITE_LAST_WITH_IMM    
104         IB_OPCODE(RC, RDMA_WRITE_ONLY),           
105         IB_OPCODE(RC, RDMA_WRITE_ONLY_WITH_IMM    
106         IB_OPCODE(RC, RDMA_READ_REQUEST),         
107         IB_OPCODE(RC, RDMA_READ_RESPONSE_FIRST    
108         IB_OPCODE(RC, RDMA_READ_RESPONSE_MIDDL    
109         IB_OPCODE(RC, RDMA_READ_RESPONSE_LAST)    
110         IB_OPCODE(RC, RDMA_READ_RESPONSE_ONLY)    
111         IB_OPCODE(RC, ACKNOWLEDGE),               
112         IB_OPCODE(RC, ATOMIC_ACKNOWLEDGE),        
113         IB_OPCODE(RC, COMPARE_SWAP),              
114         IB_OPCODE(RC, FETCH_ADD),                 
115         IB_OPCODE(RC, SEND_LAST_WITH_INVALIDAT    
116         IB_OPCODE(RC, SEND_ONLY_WITH_INVALIDAT    
117         IB_OPCODE(RC, FLUSH),                     
118         IB_OPCODE(RC, ATOMIC_WRITE),              
119                                                   
120         /* UC */                                  
121         IB_OPCODE(UC, SEND_FIRST),                
122         IB_OPCODE(UC, SEND_MIDDLE),               
123         IB_OPCODE(UC, SEND_LAST),                 
124         IB_OPCODE(UC, SEND_LAST_WITH_IMMEDIATE    
125         IB_OPCODE(UC, SEND_ONLY),                 
126         IB_OPCODE(UC, SEND_ONLY_WITH_IMMEDIATE    
127         IB_OPCODE(UC, RDMA_WRITE_FIRST),          
128         IB_OPCODE(UC, RDMA_WRITE_MIDDLE),         
129         IB_OPCODE(UC, RDMA_WRITE_LAST),           
130         IB_OPCODE(UC, RDMA_WRITE_LAST_WITH_IMM    
131         IB_OPCODE(UC, RDMA_WRITE_ONLY),           
132         IB_OPCODE(UC, RDMA_WRITE_ONLY_WITH_IMM    
133                                                   
134         /* RD */                                  
135         IB_OPCODE(RD, SEND_FIRST),                
136         IB_OPCODE(RD, SEND_MIDDLE),               
137         IB_OPCODE(RD, SEND_LAST),                 
138         IB_OPCODE(RD, SEND_LAST_WITH_IMMEDIATE    
139         IB_OPCODE(RD, SEND_ONLY),                 
140         IB_OPCODE(RD, SEND_ONLY_WITH_IMMEDIATE    
141         IB_OPCODE(RD, RDMA_WRITE_FIRST),          
142         IB_OPCODE(RD, RDMA_WRITE_MIDDLE),         
143         IB_OPCODE(RD, RDMA_WRITE_LAST),           
144         IB_OPCODE(RD, RDMA_WRITE_LAST_WITH_IMM    
145         IB_OPCODE(RD, RDMA_WRITE_ONLY),           
146         IB_OPCODE(RD, RDMA_WRITE_ONLY_WITH_IMM    
147         IB_OPCODE(RD, RDMA_READ_REQUEST),         
148         IB_OPCODE(RD, RDMA_READ_RESPONSE_FIRST    
149         IB_OPCODE(RD, RDMA_READ_RESPONSE_MIDDL    
150         IB_OPCODE(RD, RDMA_READ_RESPONSE_LAST)    
151         IB_OPCODE(RD, RDMA_READ_RESPONSE_ONLY)    
152         IB_OPCODE(RD, ACKNOWLEDGE),               
153         IB_OPCODE(RD, ATOMIC_ACKNOWLEDGE),        
154         IB_OPCODE(RD, COMPARE_SWAP),              
155         IB_OPCODE(RD, FETCH_ADD),                 
156         IB_OPCODE(RD, FLUSH),                     
157                                                   
158         /* UD */                                  
159         IB_OPCODE(UD, SEND_ONLY),                 
160         IB_OPCODE(UD, SEND_ONLY_WITH_IMMEDIATE    
161 };                                                
162                                                   
163 enum {                                            
164         IB_LNH_RAW        = 0,                    
165         IB_LNH_IP         = 1,                    
166         IB_LNH_IBA_LOCAL  = 2,                    
167         IB_LNH_IBA_GLOBAL = 3                     
168 };                                                
169                                                   
170 struct ib_unpacked_lrh {                          
171         u8        virtual_lane;                   
172         u8        link_version;                   
173         u8        service_level;                  
174         u8        link_next_header;               
175         __be16    destination_lid;                
176         __be16    packet_length;                  
177         __be16    source_lid;                     
178 };                                                
179                                                   
180 struct ib_unpacked_grh {                          
181         u8           ip_version;                  
182         u8           traffic_class;               
183         __be32       flow_label;                  
184         __be16       payload_length;              
185         u8           next_header;                 
186         u8           hop_limit;                   
187         union ib_gid source_gid;                  
188         union ib_gid destination_gid;             
189 };                                                
190                                                   
191 struct ib_unpacked_bth {                          
192         u8           opcode;                      
193         u8           solicited_event;             
194         u8           mig_req;                     
195         u8           pad_count;                   
196         u8           transport_header_version;    
197         __be16       pkey;                        
198         __be32       destination_qpn;             
199         u8           ack_req;                     
200         __be32       psn;                         
201 };                                                
202                                                   
203 struct ib_unpacked_deth {                         
204         __be32       qkey;                        
205         __be32       source_qpn;                  
206 };                                                
207                                                   
208 struct ib_unpacked_eth {                          
209         u8      dmac_h[4];                        
210         u8      dmac_l[2];                        
211         u8      smac_h[2];                        
212         u8      smac_l[4];                        
213         __be16  type;                             
214 };                                                
215                                                   
216 struct ib_unpacked_ip4 {                          
217         u8      ver;                              
218         u8      hdr_len;                          
219         u8      tos;                              
220         __be16  tot_len;                          
221         __be16  id;                               
222         __be16  frag_off;                         
223         u8      ttl;                              
224         u8      protocol;                         
225         __sum16 check;                            
226         __be32  saddr;                            
227         __be32  daddr;                            
228 };                                                
229                                                   
230 struct ib_unpacked_udp {                          
231         __be16  sport;                            
232         __be16  dport;                            
233         __be16  length;                           
234         __be16  csum;                             
235 };                                                
236                                                   
237 struct ib_unpacked_vlan {                         
238         __be16  tag;                              
239         __be16  type;                             
240 };                                                
241                                                   
242 struct ib_ud_header {                             
243         int                     lrh_present;      
244         struct ib_unpacked_lrh  lrh;              
245         int                     eth_present;      
246         struct ib_unpacked_eth  eth;              
247         int                     vlan_present;     
248         struct ib_unpacked_vlan vlan;             
249         int                     grh_present;      
250         struct ib_unpacked_grh  grh;              
251         int                     ipv4_present;     
252         struct ib_unpacked_ip4  ip4;              
253         int                     udp_present;      
254         struct ib_unpacked_udp  udp;              
255         struct ib_unpacked_bth  bth;              
256         struct ib_unpacked_deth deth;             
257         int                     immediate_pres    
258         __be32                  immediate_data    
259 };                                                
260                                                   
261 void ib_pack(const struct ib_field        *des    
262              int                           des    
263              void                         *str    
264              void                         *buf    
265                                                   
266 void ib_unpack(const struct ib_field        *d    
267                int                           d    
268                void                         *b    
269                void                         *s    
270                                                   
271 __sum16 ib_ud_ip4_csum(struct ib_ud_header *he    
272                                                   
273 int ib_ud_header_init(int                   pa    
274                       int                   lr    
275                       int                   et    
276                       int                   vl    
277                       int                   gr    
278                       int                   ip    
279                       int                   ud    
280                       int                   im    
281                       struct ib_ud_header *hea    
282                                                   
283 int ib_ud_header_pack(struct ib_ud_header *hea    
284                       void                *buf    
285                                                   
286 int ib_ud_header_unpack(void                *b    
287                         struct ib_ud_header *h    
288                                                   
289 #endif /* IB_PACK_H */                            
290                                                   

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php