[openib-general] [PATCH] ib_mad: Change completion hander WC status handling not to restart port

Hal Rosenstock
Wed Oct 6 06:00:15 PDT 2004


ib_mad: Change completion handler WC status handling to not restart port

Index: ib_mad.c
===================================================================
--- ib_mad.c    (revision 935)
+++ ib_mad.c    (working copy)
@@ -80,7 +80,6 @@
 static int add_mad_reg_req(struct ib_mad_reg_req *mad_reg_req,
                           struct ib_mad_agent_private *priv);
 static void remove_mad_reg_req(struct ib_mad_agent_private *priv); 
-static int ib_mad_port_restart(struct ib_mad_port_private *priv);
 static int ib_mad_post_receive_mad(struct ib_mad_port_private
*port_priv,
                                   struct ib_qp *qp);
 static int ib_mad_post_receive_mads(struct ib_mad_port_private *priv);
@@ -1010,35 +1009,22 @@
 static void ib_mad_completion_handler(struct ib_mad_port_private
*port_priv)
 {
        struct ib_wc wc;
-       int err_status = 0;
 
        ib_req_notify_cq(port_priv->cq, IB_CQ_NEXT_COMP);
        
        while (ib_poll_cq(port_priv->cq, 1, &wc) == 1) {
                printk(KERN_DEBUG "Completion opcode 0x%x WRID 0x%Lx\n", wc.opcode,
wc.wr_id);
-               if (wc.status != IB_WC_SUCCESS) {
-                       switch (wc.opcode) {
-                       case IB_WC_SEND:
-                               printk(KERN_ERR "Send completion error %d\n",
-                                       wc.status);
-                               break;
-                       case IB_WC_RECV:
-                               printk(KERN_ERR "Recv completion error %d\n",
-                                       wc.status);
-                               break;
-                       default:
-                               printk(KERN_ERR "Unknown completion 0x%x with error %d\n",
wc.opcode, wc.status);
-                               break;
-                       }
-                       err_status = 1;
-                       break;
-               }
-
                switch (wc.opcode) {
                case IB_WC_SEND:
+                       if (wc.status != IB_WC_SUCCESS)
+                               printk(KERN_ERR "Send completion error %d\n",
+                                      wc.status);
                        ib_mad_send_done_handler(port_priv, &wc);
                        break;
                case IB_WC_RECV:
+                       if (wc.status != IB_WC_SUCCESS)
+                               printk(KERN_ERR "Recv completion error %d\n",
+                                      wc.status);
                        ib_mad_recv_done_handler(port_priv, &wc);
                        break;
                default:
@@ -1049,9 +1035,6 @@
                        }
                }
        }
-
-       if (err_status)
-               ib_mad_port_restart(port_priv);
 }
 
 static void cancel_mads(struct ib_mad_agent_private *mad_agent_priv)
@@ -1567,23 +1550,6 @@
 }
 
 /*
- * Restart the port
- */
-static int ib_mad_port_restart(struct ib_mad_port_private *port_priv)
-{
-       int ret;
-
-       ib_mad_port_stop(port_priv);
-       ret = ib_mad_port_start(port_priv);
-       if (ret) {
-               printk(KERN_ERR "Couldn't restart %s port %d\n",
-                       port_priv->device->name, port_priv->port_num);
-       }       
-
-       return ret;
-}
-
-/*
  * Open the port
  * Create the QP, PD, MR, and CQ if needed
  */





More information about the openib-general mailing list