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

Reply via email to