Applied on 3050. (changes to the mlx4 driver were not applied, they are already 
applied to the new driver).

Thanks
Tzachi

From: [email protected] 
[mailto:[email protected]] On Behalf Of Tzachi Dar
Sent: Thursday, November 25, 2010 6:59 PM
To: [email protected]
Subject: [ofw] patch: Force using grh when RoCE is used

The following patch changes one of the places in which we have decided if to 
use grh or not.
In the case of an RDMA nic, grh will always be used.

Thanks
Tzachi

Index: D:/projinf1/trunk/core/al/kernel/al_cm_cep.c
===================================================================
--- D:/projinf1/trunk/core/al/kernel/al_cm_cep.c            (revision 6917)
+++ D:/projinf1/trunk/core/al/kernel/al_cm_cep.c         (revision 6918)
@@ -4335,6 +4335,7 @@
                                OUT                                       
kcep_av_t* const                                            p_av )
 {
                cep_agent_t*                   p_port_cep;
+             int force_grh;

                AL_ENTER( AL_DBG_CM );

@@ -4364,7 +4365,9 @@
                p_av->attr.grh.src_gid = p_path->sgid;
                p_av->attr.grh.dest_gid = p_path->dgid;

-              p_av->attr.grh_valid = !ib_gid_is_link_local( &p_path->dgid );
+             force_grh = 
p_port_cep->h_ca->obj.p_ci_ca->verbs.rdma_port_get_transport(p_port_cep-> 
h_ca->obj.p_ci_ca->h_ci_ca, p_port_cep->port_num) == RDMA_TRANSPORT_RDMAOE;
+             p_av->attr.grh_valid = force_grh || (!ib_gid_is_link_local( 
&p_path->dgid )) ||
+                                    (ib_path_rec_hop_limit(p_path) > 1);

                p_av->attr.static_rate = ib_path_rec_rate( p_path );
                p_av->attr.path_bits = (uint8_t)(p_path->slid - 
p_port_cep->base_lid);
Index: D:/projinf1/trunk/inc/iba/ib_ci.h
===================================================================
--- D:/projinf1/trunk/inc/iba/ib_ci.h        (revision 6917)
+++ D:/projinf1/trunk/inc/iba/ib_ci.h     (revision 6918)
@@ -74,7 +74,7 @@
  * definition.
  */
 #define VERBS_MAJOR_VER                                     (0x0002)
-#define VERBS_MINOR_VER                                    (0x0001)
+#define VERBS_MINOR_VER                                   (0x0002)

 #define VERBS_VERSION                                            
(((VERBS_MAJOR_VER) << 16) | (VERBS_MINOR_VER))
 #define MK_VERBS_VERSION(maj,min)              ((((maj) & 0xFFFF) << 16) | \
@@ -2935,7 +2935,28 @@



+typedef enum rdma_transport_type
+(*ci_rdma_port_get_transport) (
+             IN                                           const     
ib_ca_handle_t                                h_ca,
+             IN                                           const     uint8_t    
                                             port_num );
+/*
+* DESCRIPTION
+*           This routine Release page list for fast memory registration
+*
+* PARAMETERS
+*           h_ca
+*                           [in] Handle to HCA
+*           port_num
+*                           [in] port number to which this request is directed 
is to be sent.
+*
+* RETURN VALUE
+*                           rdma_transport_type identifying the type of the 
card
+* SEE ALSO
+*
+******
+*/

+
 #define               MAX_LIB_NAME                              32

 #ifdef CL_KERNEL
@@ -3094,6 +3115,9 @@
                ci_alloc_fast_reg_page_list         alloc_fast_reg_page_list;
                ci_free_fast_reg_page_list         free_fast_reg_page_list;

+             /* 2.2 verbs */
+             ci_rdma_port_get_transport rdma_port_get_transport;
+
 } ci_interface_t;
 /********/

Index: D:/projinf1/trunk/hw/mlx4/kernel/hca/data.h
===================================================================
--- D:/projinf1/trunk/hw/mlx4/kernel/hca/data.h            (revision 6917)
+++ D:/projinf1/trunk/hw/mlx4/kernel/hca/data.h         (revision 6918)
@@ -327,10 +327,6 @@
                IN           OUT                                       
ci_interface_t                                                    *p_interface 
);

 void
-mlnx_ca_if_livefish(
-              IN           OUT                                       
ci_interface_t                                                    *p_interface 
);
-
-void
 mlnx_mr_if_livefish(
                IN           OUT                                       
ci_interface_t                                                    *p_interface 
);

Index: D:/projinf1/trunk/hw/mlx4/kernel/hca/ca.c
===================================================================
--- D:/projinf1/trunk/hw/mlx4/kernel/hca/ca.c (revision 6917)
+++ D:/projinf1/trunk/hw/mlx4/kernel/hca/ca.c              (revision 6918)
@@ -407,8 +407,25 @@
                return IB_SUCCESS;
 }

+enum rdma_transport_type
+mlnx_port_get_transport (
+             IN                           const     ib_ca_handle_t             
   h_ca,
+             IN           const uint8_t                                        
             port_num )
+{
+             mlnx_hca_t *p_hca = (mlnx_hca_t *)h_ca;
+             struct ib_device *p_ibdev = hca2ibdev(p_hca);
+
+             HCA_ENTER(HCA_DBG_SHIM);

+             ASSERT (port_num >= start_port(p_ibdev) && port_num <= 
end_port(p_ibdev));

+             HCA_EXIT(HCA_DBG_SHIM);
+
+             return p_ibdev->get_port_transport(p_ibdev, port_num);
+
+
+}
+
 void
 mlnx_ca_if(
                IN           OUT                                       
ci_interface_t                                                    *p_interface )
@@ -419,14 +436,7 @@
                p_interface->close_ca = mlnx_close_ca;
                p_interface->register_event_handler = 
mlnx_register_event_handler;
                p_interface->unregister_event_handler = 
mlnx_unregister_event_handler;
+             p_interface->rdma_port_get_transport = mlnx_port_get_transport;
+
 }

-void
-mlnx_ca_if_livefish(
-              IN           OUT                                       
ci_interface_t                                                    *p_interface )
-{
-              p_interface->open_ca = mlnx_open_ca;
-              p_interface->query_ca = mlnx_query_ca;
-              p_interface->close_ca = mlnx_close_ca;
-}
-
Index: D:/projinf1/trunk/hw/mthca/kernel/hca_verbs.c
===================================================================
--- D:/projinf1/trunk/hw/mthca/kernel/hca_verbs.c      (revision 6917)
+++ D:/projinf1/trunk/hw/mthca/kernel/hca_verbs.c   (revision 6918)
@@ -1631,6 +1631,16 @@
 }


+
+enum rdma_transport_type
+mlnx_port_get_transport (
+             IN                           const     ib_ca_handle_t             
   h_ca,
+             IN           const uint8_t                                        
             port_num )
+{
+             UNREFERENCED_PARAMETER(h_ca);
+             UNREFERENCED_PARAMETER(port_num);
+             return RDMA_TRANSPORT_IB;
+}
 void
 setup_ci_interface(
                IN                           const     ib_net64_t               
                                                           ca_guid,
@@ -1686,6 +1696,7 @@
                p_interface->destroy_cq = mlnx_destroy_cq;

                p_interface->local_mad = mlnx_local_mad;
+             p_interface->rdma_port_get_transport = mlnx_port_get_transport;


                mlnx_memory_if(p_interface);
_______________________________________________
ofw mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw

Reply via email to