diff options
Diffstat (limited to 'include/rdma/ib_pack.h')
-rw-r--r-- | include/rdma/ib_pack.h | 39 |
1 files changed, 31 insertions, 8 deletions
diff --git a/include/rdma/ib_pack.h b/include/rdma/ib_pack.h index cbb50f4da3dd..b37fe3b10a9d 100644 --- a/include/rdma/ib_pack.h +++ b/include/rdma/ib_pack.h | |||
@@ -37,6 +37,8 @@ | |||
37 | 37 | ||
38 | enum { | 38 | enum { |
39 | IB_LRH_BYTES = 8, | 39 | IB_LRH_BYTES = 8, |
40 | IB_ETH_BYTES = 14, | ||
41 | IB_VLAN_BYTES = 4, | ||
40 | IB_GRH_BYTES = 40, | 42 | IB_GRH_BYTES = 40, |
41 | IB_BTH_BYTES = 12, | 43 | IB_BTH_BYTES = 12, |
42 | IB_DETH_BYTES = 8 | 44 | IB_DETH_BYTES = 8 |
@@ -210,14 +212,32 @@ struct ib_unpacked_deth { | |||
210 | __be32 source_qpn; | 212 | __be32 source_qpn; |
211 | }; | 213 | }; |
212 | 214 | ||
215 | struct ib_unpacked_eth { | ||
216 | u8 dmac_h[4]; | ||
217 | u8 dmac_l[2]; | ||
218 | u8 smac_h[2]; | ||
219 | u8 smac_l[4]; | ||
220 | __be16 type; | ||
221 | }; | ||
222 | |||
223 | struct ib_unpacked_vlan { | ||
224 | __be16 tag; | ||
225 | __be16 type; | ||
226 | }; | ||
227 | |||
213 | struct ib_ud_header { | 228 | struct ib_ud_header { |
229 | int lrh_present; | ||
214 | struct ib_unpacked_lrh lrh; | 230 | struct ib_unpacked_lrh lrh; |
215 | int grh_present; | 231 | int eth_present; |
216 | struct ib_unpacked_grh grh; | 232 | struct ib_unpacked_eth eth; |
217 | struct ib_unpacked_bth bth; | 233 | int vlan_present; |
234 | struct ib_unpacked_vlan vlan; | ||
235 | int grh_present; | ||
236 | struct ib_unpacked_grh grh; | ||
237 | struct ib_unpacked_bth bth; | ||
218 | struct ib_unpacked_deth deth; | 238 | struct ib_unpacked_deth deth; |
219 | int immediate_present; | 239 | int immediate_present; |
220 | __be32 immediate_data; | 240 | __be32 immediate_data; |
221 | }; | 241 | }; |
222 | 242 | ||
223 | void ib_pack(const struct ib_field *desc, | 243 | void ib_pack(const struct ib_field *desc, |
@@ -230,9 +250,12 @@ void ib_unpack(const struct ib_field *desc, | |||
230 | void *buf, | 250 | void *buf, |
231 | void *structure); | 251 | void *structure); |
232 | 252 | ||
233 | void ib_ud_header_init(int payload_bytes, | 253 | void ib_ud_header_init(int payload_bytes, |
234 | int grh_present, | 254 | int lrh_present, |
235 | int immediate_present, | 255 | int eth_present, |
256 | int vlan_present, | ||
257 | int grh_present, | ||
258 | int immediate_present, | ||
236 | struct ib_ud_header *header); | 259 | struct ib_ud_header *header); |
237 | 260 | ||
238 | int ib_ud_header_pack(struct ib_ud_header *header, | 261 | int ib_ud_header_pack(struct ib_ud_header *header, |