<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=us-ascii" http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 8.00.6001.18702"></HEAD>
<BODY>
<DIV><FONT size=1>
<P><FONT size=2 face=Arial><SPAN class=762132615-16092009>Signed off by: <A 
href="mailto:leonid@mellanox.co.il">leonid@mellanox.co.il</A></SPAN></FONT></P>
<P><FONT size=2 face=Arial>[HW] fixes to APM support: missed some lines and 
apm_state was not converted into low-driver format</FONT></P>
<P><FONT size=2 face=Arial>Index: 
Q:/projinf4/trunk/hw/mlx4/kernel/hca/data.c<BR>===================================================================<BR>--- 
Q:/projinf4/trunk/hw/mlx4/kernel/hca/data.c (revision 4811)<BR>+++ 
Q:/projinf4/trunk/hw/mlx4/kernel/hca/data.c (revision 4812)<BR>@@ -551,6 
+551,14 @@<BR>  return ib_qps;<BR> }<BR> <BR>+enum 
ib_mig_state to_apm_state(ib_apm_state_t apm)<BR>+{<BR>+ if (apm == 
IB_APM_MIGRATED) return IB_MIG_MIGRATED;<BR>+ if (apm == IB_APM_REARM) 
return IB_MIG_REARM;<BR>+ if (apm == IB_APM_ARMED) return 
IB_MIG_ARMED;<BR>+ return 
0xffffffff;<BR>+}<BR>+<BR> ib_api_status_t<BR> to_qp_attr(<BR>  IN  
const struct ib_qp *p_ib_qp,<BR>@@ -794,7 +802,7 
@@<BR>     // 
IB_QP_PATH_MIG_STATE<BR>     if 
(p_ib_qp_mod->state.rts.opts & IB_MOD_QP_APM_STATE) 
{<BR>      *p_qp_attr_mask |= 
IB_QP_PATH_MIG_STATE; <BR>-     p_ib_qp_attr->path_mig_state 
=  
p_ib_qp_mod->state.rts.apm_state;<BR>+     p_ib_qp_attr->path_mig_state 
=  
to_apm_state(p_ib_qp_mod->state.rts.apm_state);<BR>     }<BR> <BR>     // 
IB_QP_ACCESS_FLAGS<BR>@@ -812,7 +820,8 
@@<BR>       status = 
IB_ERROR;<BR>       break;<BR>      }<BR>-     p_ib_qp_attr->alt_timeout   
= p_ib_qp_mod->state.rts.alternate_av.conn.local_ack_timeout; // XXX: 
conv<BR>+     p_ib_qp_attr->alt_timeout  = 
p_ib_qp_mod->state.rts.alternate_av.conn.local_ack_timeout; // XXX: 
conv<BR>+     p_ib_qp_attr->alt_port_num  = 
p_ib_qp_mod->state.rts.alternate_av.port_num;<BR>     }<BR>     break;<BR>     <BR>@@ 
-841,7 +850,7 @@<BR>     // 
IB_QP_PATH_MIG_STATE<BR>     if 
(p_ib_qp_mod->state.rts.opts & IB_MOD_QP_APM_STATE) 
{<BR>      *p_qp_attr_mask |= 
IB_QP_PATH_MIG_STATE; <BR>-     p_ib_qp_attr->path_mig_state 
=  
p_ib_qp_mod->state.rts.apm_state;<BR>+     p_ib_qp_attr->path_mig_state 
=  
to_apm_state(p_ib_qp_mod->state.rts.apm_state);<BR>     }<BR> <BR>     // 
IB_QP_ACCESS_FLAGS<BR>@@ -859,6 +868,8 
@@<BR>       status = 
IB_ERROR;<BR>       break;<BR>      }<BR>+     p_ib_qp_attr->alt_timeout  = 
p_ib_qp_mod->state.rts.alternate_av.conn.local_ack_timeout; // XXX: 
conv<BR>+     p_ib_qp_attr->alt_port_num  = 
p_ib_qp_mod->state.rts.alternate_av.port_num;<BR>     }<BR>     break;<BR>      <BR>Index: 
Q:/projinf4/trunk/hw/mthca/kernel/hca_data.c<BR>===================================================================<BR>--- 
Q:/projinf4/trunk/hw/mthca/kernel/hca_data.c (revision 4811)<BR>+++ 
Q:/projinf4/trunk/hw/mthca/kernel/hca_data.c (revision 4812)<BR>@@ -409,6 
+409,14 @@<BR>  return qps;<BR> }<BR> <BR>+enum ib_mig_state 
to_apm_state(ib_apm_state_t apm)<BR>+{<BR>+ if (apm == IB_APM_MIGRATED) 
return IB_MIG_MIGRATED;<BR>+ if (apm == IB_APM_REARM) return 
IB_MIG_REARM;<BR>+ if (apm == IB_APM_ARMED) return 
IB_MIG_ARMED;<BR>+ return 
0xffffffff;<BR>+}<BR>+<BR> ib_api_status_t<BR> mlnx_conv_qp_modify_attr(<BR>  IN  
const struct ib_qp *ib_qp_p,<BR>@@ -644,7 +652,7 
@@<BR>     // 
IB_QP_PATH_MIG_STATE<BR>     if 
(modify_attr_p->state.rts.opts & IB_MOD_QP_APM_STATE) 
{<BR>      *qp_attr_mask_p |= 
IB_QP_PATH_MIG_STATE; <BR>-     qp_attr_p->path_mig_state 
=  
modify_attr_p->state.rts.apm_state;<BR>+     qp_attr_p->path_mig_state 
=  
to_apm_state(modify_attr_p->state.rts.apm_state);<BR>     }<BR> <BR>     // 
IB_QP_ACCESS_FLAGS<BR>@@ -691,7 +699,7 @@<BR>     // 
IB_QP_PATH_MIG_STATE<BR>     if 
(modify_attr_p->state.rts.opts & IB_MOD_QP_APM_STATE) 
{<BR>      *qp_attr_mask_p |= 
IB_QP_PATH_MIG_STATE; <BR>-     qp_attr_p->path_mig_state 
=  
modify_attr_p->state.rts.apm_state;<BR>+     qp_attr_p->path_mig_state 
=  
to_apm_state(modify_attr_p->state.rts.apm_state);<BR>     }<BR> <BR>     // 
IB_QP_ACCESS_FLAGS<BR></FONT></P></FONT></DIV></BODY></HTML>