Resending this patch again aligned with the latest trunk. 
The change is now also at IPoIB_NDIS6_CM.
This patch is essential for 4K MTU support

Index: hw/mlx4/kernel/bus/net/port.c
===================================================================
--- hw/mlx4/kernel/bus/net/port.c       (revision 2934)
+++ hw/mlx4/kernel/bus/net/port.c       (working copy)
@@ -355,6 +355,14 @@
                                    ETH_HLEN + ETH_FCS_LEN);
                ((__be16 *) mailbox->buf)[4] = cpu_to_be16(1 << 15);
                ((__be16 *) mailbox->buf)[6] = cpu_to_be16(1 << 15);
+       } else {
+       /* IB PORT */
+               
+               ((__be32 *) mailbox->buf)[0] |= cpu_to_be32((1 << 22) | (1 << 
21) | (5 << 12) | (2 << 4));
+               /* Set mmc bit no. 22 to allow MAX_MTU_SIZE change */
+               /* Set mvc bit no. 21 to allow vl_cap change /*
+               /* Always set MAX_MTU_SIZE == 4K for MLX4 - bits 12:15 */
+               /* Change vl_cap to be maximum 4 - bits 5:7 */
        }
        err = mlx4_cmd(dev, mailbox->dma.da, port, is_eth, MLX4_CMD_SET_PORT,
                       MLX4_CMD_TIME_CLASS_B);
Index: ulp/ipoib_NDIS6_CM/kernel/ipoib_driver.cpp
===================================================================
--- ulp/ipoib_NDIS6_CM/kernel/ipoib_driver.cpp  (revision 2934)
+++ ulp/ipoib_NDIS6_CM/kernel/ipoib_driver.cpp  (working copy)
@@ -1038,7 +1038,10 @@
        gat.MediaConnectState = MediaConnectStateConnected; //TODO NDIS60 Check 
the current state
        gat.MediaDuplexState = MediaDuplexStateFull;
 
-       gat.MtuSize = DEFAULT_PAYLOAD_MTU;
+       //TODO add support for CM MTU
+       gat.MtuSize = p_adapter->params.payload_mtu;
+       // TODO Can we set gat.MtuSize = p_adapter->params.payload_mtu + sizeof 
(ipoib_hdr_t) 
+       // That is because we replace ETH header by IPoIB header and do not 
allocate additional place
        gat.LookaheadSize = MAX_XFER_BLOCK_SIZE;
        gat.MacOptions = NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA | 
                                         NDIS_MAC_OPTION_TRANSFERS_NOT_PEND |

From: Alex Naslednikov 
Sent: Thursday, December 17, 2009 5:42 PM
To: [email protected]
Subject: [ofw] [PATCH] [ibbus]

This patch enables 4K MTU support for CX and CX-II cards with FW ver. 2.7.000 
and upper
Signed of by: Alexander Naslednikov (xalex at mellanox.co.il)
===================================================================
--- D:/windows/MLNX_WinOF_trunk/hw/mlx4/kernel/bus/net/port.c (revision 5259)
+++ D:/windows/MLNX_WinOF_trunk/hw/mlx4/kernel/bus/net/port.c (revision 5260)
@@ -355,6 +355,14 @@
         ETH_HLEN + ETH_FCS_LEN);
   ((__be16 *) mailbox->buf)[4] = cpu_to_be16(1 << 15);
   ((__be16 *) mailbox->buf)[6] = cpu_to_be16(1 << 15);
+ } else {
+ /* IB PORT */
+  
+  ((__be32 *) mailbox->buf)[0] |= cpu_to_be32((1 << 22) | (1 << 21) | (5 << 
12) | (2 << 4));
+  /* Set mmc bit no. 22 to allow MAX_MTU_SIZE change */
+  /* Set mvc bit no. 21 to allow vl_cap change /*
+  /* Always set MAX_MTU_SIZE == 4K for MLX4 - bits 12:15 */
+  /* Change vl_cap to be maximum 4 - bits 5:7 */
  }
  err = mlx4_cmd(dev, mailbox->dma.da, port, is_eth, MLX4_CMD_SET_PORT,
          MLX4_CMD_TIME_CLASS_B);
_______________________________________________
ofw mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw

Reply via email to