[openib-general] [PATCH] MAD thread doesn't get killed on failure to open port
Krishna Kumar
Mon Oct 18 13:11:19 PDT 2004
This patch should fix above problem, as well as get rid of redundant
initialization code.
Thanks,
- KK
--- ib_mad.c.org 2004-10-18 12:42:18.000000000 -0700
+++ ib_mad.c 2004-10-18 12:44:20.000000000 -0700
@@ -1676,9 +1676,6 @@ static int ib_mad_port_open(struct ib_de
port_priv->device = device;
port_priv->port_num = port_num;
spin_lock_init(&port_priv->reg_lock);
- for (i = 0; i < MAX_MGMT_VERSION; i++) {
- port_priv->version[i] = NULL;
- }
cq_size = (IB_MAD_QP_SEND_SIZE + IB_MAD_QP_RECV_SIZE) * 2;
port_priv->cq = ib_create_cq(port_priv->device,
@@ -1737,12 +1734,8 @@ static int ib_mad_port_open(struct ib_de
spin_lock_init(&port_priv->send_list_lock);
INIT_LIST_HEAD(&port_priv->agent_list);
INIT_LIST_HEAD(&port_priv->send_posted_mad_list);
- port_priv->send_posted_mad_count = 0;
- for (i = 0; i < IB_MAD_QPS_CORE; i++) {
+ for (i = 0; i < IB_MAD_QPS_CORE; i++)
INIT_LIST_HEAD(&port_priv->recv_posted_mad_list[i]);
- port_priv->recv_posted_mad_count[i] = 0;
- port_priv->recv_wr_index[i] = 0;
- }
ret = ib_mad_thread_init(port_priv);
if (ret)
@@ -1751,7 +1744,7 @@ static int ib_mad_port_open(struct ib_de
ret = ib_mad_port_start(port_priv);
if (ret) {
printk(KERN_ERR PFX "Couldn't start port\n");
- goto error8;
+ goto error9;
}
spin_lock_irqsave(&ib_mad_port_list_lock, flags);
@@ -1760,6 +1753,8 @@ static int ib_mad_port_open(struct ib_de
return 0;
+error9:
+ kthread_stop(port_priv->mad_thread);
error8:
ib_destroy_qp(port_priv->qp[1]);
error7:
More information about the openib-general mailing list