Re: [ewg] [PATCHv8 05/11] ib_core: IBoE UD packet packing support

2010-05-23 Thread Eli Cohen
On Mon, May 17, 2010 at 09:18:54AM -0700, Roland Dreier wrote:
   I thought you were referring to the changes made by this patch
   920d706.  Should I re-send this patch?
 
 Yes, please work out what changes are still required and send a new patch.

OK. I am sending a series of three patches. The first one contains the
original changes. The following two are for mlx4 and mthca to sync
with the API changes. The patches are made agianst the iboe branch.
___
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg


Re: [ewg] [PATCHv8 05/11] ib_core: IBoE UD packet packing support

2010-05-17 Thread Eli Cohen
On Thu, May 13, 2010 at 10:36:27AM -0700, Roland Dreier wrote:
 
 Doesn't seem to be all there... eg there is nothing for ethernet headers.

I thought you were referring to the changes made by this patch
920d706.  Should I re-send this patch?
___
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg


Re: [ewg] [PATCHv8 05/11] ib_core: IBoE UD packet packing support

2010-05-17 Thread Roland Dreier
  I thought you were referring to the changes made by this patch
  920d706.  Should I re-send this patch?

Yes, please work out what changes are still required and send a new patch.
-- 
Roland Dreier rola...@cisco.com || For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/index.html
___
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg


Re: [ewg] [PATCHv8 05/11] ib_core: IBoE UD packet packing support

2010-05-13 Thread Eli Cohen
On Wed, May 12, 2010 at 01:06:36PM -0700, Roland Dreier wrote:
   2. Fix wrong implementation of ib_ud_header_init(). A different patch was 
 sent
  to Roland.
 
 This patch no longer applies, I guess because you already sent me this
 fix (which is now upstream since 2.6.34-rc1).

Right, it's already applied.
___
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg


Re: [ewg] [PATCHv8 05/11] ib_core: IBoE UD packet packing support

2010-05-13 Thread Roland Dreier
  Right, it's already applied.

Doesn't seem to be all there... eg there is nothing for ethernet headers.
-- 
Roland Dreier rola...@cisco.com || For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/index.html
___
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg


Re: [ewg] [PATCHv8 05/11] ib_core: IBoE UD packet packing support

2010-05-12 Thread Roland Dreier
  2. Fix wrong implementation of ib_ud_header_init(). A different patch was 
  sent
 to Roland.

This patch no longer applies, I guess because you already sent me this
fix (which is now upstream since 2.6.34-rc1).
-- 
Roland Dreier rola...@cisco.com || For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/index.html
___
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg


[ewg] [PATCHv8 05/11] ib_core: IBoE UD packet packing support

2010-02-18 Thread Eli Cohen
Add support functions to aid in packing IBoE packets.

Signed-off-by: Eli Cohen e...@mellanox.co.il
---
 drivers/infiniband/core/ud_header.c |  100 ++
 include/rdma/ib_pack.h  |   29 +-
 2 files changed, 92 insertions(+), 37 deletions(-)

Changes from v7:

1. Re-work the changes so they extend the original idea behind these functions.
2. Fix wrong implementation of ib_ud_header_init(). A different patch was sent
   to Roland.


diff --git a/drivers/infiniband/core/ud_header.c 
b/drivers/infiniband/core/ud_header.c
index 8ec7876..7650313 100644
--- a/drivers/infiniband/core/ud_header.c
+++ b/drivers/infiniband/core/ud_header.c
@@ -80,6 +80,29 @@ static const struct ib_field lrh_table[]  = {
  .size_bits= 16 }
 };
 
+static const struct ib_field eth_table[]  = {
+   { STRUCT_FIELD(eth, dmac_h),
+ .offset_words = 0,
+ .offset_bits  = 0,
+ .size_bits= 32 },
+   { STRUCT_FIELD(eth, dmac_l),
+ .offset_words = 1,
+ .offset_bits  = 0,
+ .size_bits= 16 },
+   { STRUCT_FIELD(eth, smac_h),
+ .offset_words = 1,
+ .offset_bits  = 16,
+ .size_bits= 16 },
+   { STRUCT_FIELD(eth, smac_l),
+ .offset_words = 2,
+ .offset_bits  = 0,
+ .size_bits= 32 },
+   { STRUCT_FIELD(eth, type),
+ .offset_words = 3,
+ .offset_bits  = 0,
+ .size_bits= 16 }
+};
+
 static const struct ib_field grh_table[]  = {
{ STRUCT_FIELD(grh, ip_version),
  .offset_words = 0,
@@ -180,56 +203,51 @@ static const struct ib_field deth_table[] = {
 /**
  * ib_ud_header_init - Initialize UD header structure
  * @payload_bytes:Length of packet payload
+ * @lrh_present: specify if LRH is present
+ * @eth_present: specify if Eth header is present
  * @grh_present:GRH flag (if non-zero, GRH will be included)
+ * @immediate_present: specify if immediate data is present
  * @header:Structure to initialize
- *
- * ib_ud_header_init() initializes the lrh.link_version, lrh.link_next_header,
- * lrh.packet_length, grh.ip_version, grh.payload_length,
- * grh.next_header, bth.opcode, bth.pad_count and
- * bth.transport_header_version fields of a struct ib_ud_header given
- * the payload length and whether a GRH will be included.
  */
 void ib_ud_header_init(int payload_bytes,
+  int  lrh_present,
+  int  eth_present,
   int  grh_present,
+  int  immediate_present,
   struct ib_ud_header *header)
 {
-   int header_len;
u16 packet_length;
 
memset(header, 0, sizeof *header);
 
-   header_len =
-   IB_LRH_BYTES  +
-   IB_BTH_BYTES  +
-   IB_DETH_BYTES;
-   if (grh_present) {
-   header_len += IB_GRH_BYTES;
+   if (lrh_present) {
+   header-lrh.link_version = 0;
+   header-lrh.link_next_header =
+   grh_present ? IB_LNH_IBA_GLOBAL : IB_LNH_IBA_LOCAL;
+   packet_length = IB_LRH_BYTES;
}
 
-   header-lrh.link_version = 0;
-   header-lrh.link_next_header =
-   grh_present ? IB_LNH_IBA_GLOBAL : IB_LNH_IBA_LOCAL;
-   packet_length= (IB_LRH_BYTES +
-   IB_BTH_BYTES +
-   IB_DETH_BYTES+
-   payload_bytes+
-   4+ /* ICRC */
-   3) / 4;/* round up */
-
-   header-grh_present  = grh_present;
+   if (eth_present)
+   packet_length = IB_ETH_BYTES;
+
+   packet_length += IB_BTH_BYTES + IB_DETH_BYTES + payload_bytes +
+   4   + /* ICRC */
+   3;/* round up */
+   packet_length /= 4;
if (grh_present) {
-   packet_length  += IB_GRH_BYTES / 4;
-   header-grh.ip_version  = 6;
-   header-grh.payload_length  =
-   cpu_to_be16((IB_BTH_BYTES +
-IB_DETH_BYTES+
-payload_bytes+
-4+ /* ICRC */
-3)  ~3);  /* round up */
+   packet_length += IB_GRH_BYTES / 4;
+   header-grh.ip_version = 6;
+   header-grh.payload_length =
+   cpu_to_be16((IB_BTH_BYTES  +
+IB_DETH_BYTES +
+payload_bytes +
+4 + /* ICRC */
+3)  ~3);   /*