From: Igor Yarovinsky <[email protected]> core: Fix Raw Ethertype QP support.
Fix Raw Ethertype qp support: a. Need a new struct in the wr union in struct ib_send_wr b. Need new helper pack and unpack functions in ud_header.c Signed-off-by: Igor Yarovinsky <[email protected]> Signed-off-by: Jack Morgenstein <[email protected]> --- This is a repost of http://lists.openfabrics.org/pipermail/general/2008-August/053642.html Raw Ethertype packets on the wire contain only LRH, Raw Header (Ethernet Type), payload, and VCRC. Index: infiniband/include/rdma/ib_verbs.h =================================================================== --- infiniband.orig/include/rdma/ib_verbs.h 2008-08-11 10:37:01.000000000 +0300 +++ infiniband/include/rdma/ib_verbs.h 2008-08-12 16:29:49.000000000 +0300 @@ -752,6 +752,11 @@ struct ib_send_wr { int access_flags; u32 rkey; } fast_reg; + struct { + struct ib_unpacked_lrh *lrh; + u32 eth_type; + u8 static_rate; + } raw_ety; } wr; }; Index: infiniband/drivers/infiniband/core/ud_header.c =================================================================== --- infiniband.orig/drivers/infiniband/core/ud_header.c 2008-07-28 18:20:11.000000000 +0300 +++ infiniband/drivers/infiniband/core/ud_header.c 2008-08-12 10:55:10.000000000 +0300 @@ -241,6 +241,36 @@ void ib_ud_header_init(int pay EXPORT_SYMBOL(ib_ud_header_init); /** + * ib_lrh_header_pack - Pack LRH header struct into wire format + * @lrh:unpacked LRH header struct + * @buf:Buffer to pack into + * + * ib_lrh_header_pack() packs the LRH header structure @lrh into + * wire format in the buffer @buf. + */ +int ib_lrh_header_pack(struct ib_unpacked_lrh *lrh, void *buf) +{ + ib_pack(lrh_table, ARRAY_SIZE(lrh_table), lrh, buf); + return 0; +} +EXPORT_SYMBOL(ib_lrh_header_pack); + +/** + * ib_lrh_header_unpack - Unpack LRH structure from wire format + * @lrh:unpacked LRH header struct + * @buf:Buffer to pack into + * + * ib_lrh_header_unpack() unpacks the LRH header structure from + * wire format (in buf) into @lrh. + */ +int ib_lrh_header_unpack(void *buf, struct ib_unpacked_lrh *lrh) +{ + ib_unpack(lrh_table, ARRAY_SIZE(lrh_table), buf, lrh); + return 0; +} +EXPORT_SYMBOL(ib_lrh_header_unpack); + +/** * ib_ud_header_pack - Pack UD header struct into wire format * @header:UD header struct * @buf:Buffer to pack into Index: infiniband/include/rdma/ib_pack.h =================================================================== --- infiniband.orig/include/rdma/ib_pack.h 2008-07-28 18:20:15.000000000 +0300 +++ infiniband/include/rdma/ib_pack.h 2008-08-12 10:55:10.000000000 +0300 @@ -240,4 +240,7 @@ int ib_ud_header_pack(struct ib_ud_heade int ib_ud_header_unpack(void *buf, struct ib_ud_header *header); +int ib_lrh_header_pack(struct ib_unpacked_lrh *lrh, void *buf); +int ib_lrh_header_unpack(void *buf, struct ib_unpacked_lrh *lrh); + #endif /* IB_PACK_H */ _______________________________________________ general mailing list [email protected] http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general
