Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 03b37ecd authored by Roland Dreier's avatar Roland Dreier
Browse files

Merge branches 'cxgb3', 'cxgb4', 'ehca', 'ipath', 'misc', 'nes', 'qib' and 'srp' into for-next

Loading
+6 −4
Original line number Original line Diff line number Diff line
@@ -2409,10 +2409,12 @@ int ib_send_cm_mra(struct ib_cm_id *cm_id,
		msg_response = CM_MSG_RESPONSE_REP;
		msg_response = CM_MSG_RESPONSE_REP;
		break;
		break;
	case IB_CM_ESTABLISHED:
	case IB_CM_ESTABLISHED:
		if (cm_id->lap_state == IB_CM_LAP_RCVD) {
			cm_state = cm_id->state;
			cm_state = cm_id->state;
			lap_state = IB_CM_MRA_LAP_SENT;
			lap_state = IB_CM_MRA_LAP_SENT;
			msg_response = CM_MSG_RESPONSE_OTHER;
			msg_response = CM_MSG_RESPONSE_OTHER;
			break;
			break;
		}
	default:
	default:
		ret = -EINVAL;
		ret = -EINVAL;
		goto error1;
		goto error1;
+0 −2
Original line number Original line Diff line number Diff line
@@ -1085,7 +1085,6 @@ static int ib_umad_init_port(struct ib_device *device, int port_num,
static void ib_umad_kill_port(struct ib_umad_port *port)
static void ib_umad_kill_port(struct ib_umad_port *port)
{
{
	struct ib_umad_file *file;
	struct ib_umad_file *file;
	int already_dead;
	int id;
	int id;


	dev_set_drvdata(port->dev,    NULL);
	dev_set_drvdata(port->dev,    NULL);
@@ -1103,7 +1102,6 @@ static void ib_umad_kill_port(struct ib_umad_port *port)


	list_for_each_entry(file, &port->file_list, port_list) {
	list_for_each_entry(file, &port->file_list, port_list) {
		mutex_lock(&file->mutex);
		mutex_lock(&file->mutex);
		already_dead = file->agents_dead;
		file->agents_dead = 1;
		file->agents_dead = 1;
		mutex_unlock(&file->mutex);
		mutex_unlock(&file->mutex);


+2 −2
Original line number Original line Diff line number Diff line
@@ -310,8 +310,8 @@ EXPORT_SYMBOL(ib_create_qp);


static const struct {
static const struct {
	int			valid;
	int			valid;
	enum ib_qp_attr_mask	req_param[IB_QPT_RAW_ETY + 1];
	enum ib_qp_attr_mask	req_param[IB_QPT_RAW_ETHERTYPE + 1];
	enum ib_qp_attr_mask	opt_param[IB_QPT_RAW_ETY + 1];
	enum ib_qp_attr_mask	opt_param[IB_QPT_RAW_ETHERTYPE + 1];
} qp_state_table[IB_QPS_ERR + 1][IB_QPS_ERR + 1] = {
} qp_state_table[IB_QPS_ERR + 1][IB_QPS_ERR + 1] = {
	[IB_QPS_RESET] = {
	[IB_QPS_RESET] = {
		[IB_QPS_RESET] = { .valid = 1 },
		[IB_QPS_RESET] = { .valid = 1 },
+50 −41
Original line number Original line Diff line number Diff line
@@ -61,6 +61,10 @@ static char *states[] = {
	NULL,
	NULL,
};
};


static int dack_mode;
module_param(dack_mode, int, 0644);
MODULE_PARM_DESC(dack_mode, "Delayed ack mode (default=0)");

int c4iw_max_read_depth = 8;
int c4iw_max_read_depth = 8;
module_param(c4iw_max_read_depth, int, 0644);
module_param(c4iw_max_read_depth, int, 0644);
MODULE_PARM_DESC(c4iw_max_read_depth, "Per-connection max ORD/IRD (default=8)");
MODULE_PARM_DESC(c4iw_max_read_depth, "Per-connection max ORD/IRD (default=8)");
@@ -469,11 +473,12 @@ static int send_connect(struct c4iw_ep *ep)
		       __func__);
		       __func__);
		return -ENOMEM;
		return -ENOMEM;
	}
	}
	set_wr_txq(skb, CPL_PRIORITY_SETUP, ep->txq_idx);
	set_wr_txq(skb, CPL_PRIORITY_SETUP, ep->ctrlq_idx);


	cxgb4_best_mtu(ep->com.dev->rdev.lldi.mtus, ep->mtu, &mtu_idx);
	cxgb4_best_mtu(ep->com.dev->rdev.lldi.mtus, ep->mtu, &mtu_idx);
	wscale = compute_wscale(rcv_win);
	wscale = compute_wscale(rcv_win);
	opt0 = KEEP_ALIVE(1) |
	opt0 = KEEP_ALIVE(1) |
	       DELACK(1) |
	       WND_SCALE(wscale) |
	       WND_SCALE(wscale) |
	       MSS_IDX(mtu_idx) |
	       MSS_IDX(mtu_idx) |
	       L2T_IDX(ep->l2t->idx) |
	       L2T_IDX(ep->l2t->idx) |
@@ -780,11 +785,11 @@ static void connect_reply_upcall(struct c4iw_ep *ep, int status)
		event.private_data_len = ep->plen;
		event.private_data_len = ep->plen;
		event.private_data = ep->mpa_pkt + sizeof(struct mpa_message);
		event.private_data = ep->mpa_pkt + sizeof(struct mpa_message);
	}
	}
	if (ep->com.cm_id) {

	PDBG("%s ep %p tid %u status %d\n", __func__, ep,
	PDBG("%s ep %p tid %u status %d\n", __func__, ep,
	     ep->hwtid, status);
	     ep->hwtid, status);
	ep->com.cm_id->event_handler(ep->com.cm_id, &event);
	ep->com.cm_id->event_handler(ep->com.cm_id, &event);
	}

	if (status < 0) {
	if (status < 0) {
		ep->com.cm_id->rem_ref(ep->com.cm_id);
		ep->com.cm_id->rem_ref(ep->com.cm_id);
		ep->com.cm_id = NULL;
		ep->com.cm_id = NULL;
@@ -845,8 +850,10 @@ static int update_rx_credits(struct c4iw_ep *ep, u32 credits)
	INIT_TP_WR(req, ep->hwtid);
	INIT_TP_WR(req, ep->hwtid);
	OPCODE_TID(req) = cpu_to_be32(MK_OPCODE_TID(CPL_RX_DATA_ACK,
	OPCODE_TID(req) = cpu_to_be32(MK_OPCODE_TID(CPL_RX_DATA_ACK,
						    ep->hwtid));
						    ep->hwtid));
	req->credit_dack = cpu_to_be32(credits);
	req->credit_dack = cpu_to_be32(credits | RX_FORCE_ACK(1) |
	set_wr_txq(skb, CPL_PRIORITY_ACK, ep->txq_idx);
				       F_RX_DACK_CHANGE |
				       V_RX_DACK_MODE(dack_mode));
	set_wr_txq(skb, CPL_PRIORITY_ACK, ep->ctrlq_idx);
	c4iw_ofld_send(&ep->com.dev->rdev, skb);
	c4iw_ofld_send(&ep->com.dev->rdev, skb);
	return credits;
	return credits;
}
}
@@ -1264,6 +1271,7 @@ static void accept_cr(struct c4iw_ep *ep, __be32 peer_ip, struct sk_buff *skb,
	cxgb4_best_mtu(ep->com.dev->rdev.lldi.mtus, ep->mtu, &mtu_idx);
	cxgb4_best_mtu(ep->com.dev->rdev.lldi.mtus, ep->mtu, &mtu_idx);
	wscale = compute_wscale(rcv_win);
	wscale = compute_wscale(rcv_win);
	opt0 = KEEP_ALIVE(1) |
	opt0 = KEEP_ALIVE(1) |
	       DELACK(1) |
	       WND_SCALE(wscale) |
	       WND_SCALE(wscale) |
	       MSS_IDX(mtu_idx) |
	       MSS_IDX(mtu_idx) |
	       L2T_IDX(ep->l2t->idx) |
	       L2T_IDX(ep->l2t->idx) |
@@ -1287,7 +1295,7 @@ static void accept_cr(struct c4iw_ep *ep, __be32 peer_ip, struct sk_buff *skb,
				      ep->hwtid));
				      ep->hwtid));
	rpl->opt0 = cpu_to_be64(opt0);
	rpl->opt0 = cpu_to_be64(opt0);
	rpl->opt2 = cpu_to_be32(opt2);
	rpl->opt2 = cpu_to_be32(opt2);
	set_wr_txq(skb, CPL_PRIORITY_SETUP, ep->txq_idx);
	set_wr_txq(skb, CPL_PRIORITY_SETUP, ep->ctrlq_idx);
	c4iw_l2t_send(&ep->com.dev->rdev, skb, ep->l2t);
	c4iw_l2t_send(&ep->com.dev->rdev, skb, ep->l2t);


	return;
	return;
@@ -1344,7 +1352,7 @@ static int pass_accept_req(struct c4iw_dev *dev, struct sk_buff *skb)
	u16 rss_qid;
	u16 rss_qid;
	u32 mtu;
	u32 mtu;
	int step;
	int step;
	int txq_idx;
	int txq_idx, ctrlq_idx;


	parent_ep = lookup_stid(t, stid);
	parent_ep = lookup_stid(t, stid);
	PDBG("%s parent ep %p tid %u\n", __func__, parent_ep, hwtid);
	PDBG("%s parent ep %p tid %u\n", __func__, parent_ep, hwtid);
@@ -1376,6 +1384,7 @@ static int pass_accept_req(struct c4iw_dev *dev, struct sk_buff *skb)
		smac_idx = (cxgb4_port_viid(pdev) & 0x7F) << 1;
		smac_idx = (cxgb4_port_viid(pdev) & 0x7F) << 1;
		step = dev->rdev.lldi.ntxq / dev->rdev.lldi.nchan;
		step = dev->rdev.lldi.ntxq / dev->rdev.lldi.nchan;
		txq_idx = cxgb4_port_idx(pdev) * step;
		txq_idx = cxgb4_port_idx(pdev) * step;
		ctrlq_idx = cxgb4_port_idx(pdev);
		step = dev->rdev.lldi.nrxq / dev->rdev.lldi.nchan;
		step = dev->rdev.lldi.nrxq / dev->rdev.lldi.nchan;
		rss_qid = dev->rdev.lldi.rxq_ids[cxgb4_port_idx(pdev) * step];
		rss_qid = dev->rdev.lldi.rxq_ids[cxgb4_port_idx(pdev) * step];
		dev_put(pdev);
		dev_put(pdev);
@@ -1387,6 +1396,7 @@ static int pass_accept_req(struct c4iw_dev *dev, struct sk_buff *skb)
		smac_idx = (cxgb4_port_viid(dst->neighbour->dev) & 0x7F) << 1;
		smac_idx = (cxgb4_port_viid(dst->neighbour->dev) & 0x7F) << 1;
		step = dev->rdev.lldi.ntxq / dev->rdev.lldi.nchan;
		step = dev->rdev.lldi.ntxq / dev->rdev.lldi.nchan;
		txq_idx = cxgb4_port_idx(dst->neighbour->dev) * step;
		txq_idx = cxgb4_port_idx(dst->neighbour->dev) * step;
		ctrlq_idx = cxgb4_port_idx(dst->neighbour->dev);
		step = dev->rdev.lldi.nrxq / dev->rdev.lldi.nchan;
		step = dev->rdev.lldi.nrxq / dev->rdev.lldi.nchan;
		rss_qid = dev->rdev.lldi.rxq_ids[
		rss_qid = dev->rdev.lldi.rxq_ids[
			  cxgb4_port_idx(dst->neighbour->dev) * step];
			  cxgb4_port_idx(dst->neighbour->dev) * step];
@@ -1426,6 +1436,7 @@ static int pass_accept_req(struct c4iw_dev *dev, struct sk_buff *skb)
	child_ep->rss_qid = rss_qid;
	child_ep->rss_qid = rss_qid;
	child_ep->mtu = mtu;
	child_ep->mtu = mtu;
	child_ep->txq_idx = txq_idx;
	child_ep->txq_idx = txq_idx;
	child_ep->ctrlq_idx = ctrlq_idx;


	PDBG("%s tx_chan %u smac_idx %u rss_qid %u\n", __func__,
	PDBG("%s tx_chan %u smac_idx %u rss_qid %u\n", __func__,
	     tx_chan, smac_idx, rss_qid);
	     tx_chan, smac_idx, rss_qid);
@@ -1473,8 +1484,6 @@ static int peer_close(struct c4iw_dev *dev, struct sk_buff *skb)
	int closing = 0;
	int closing = 0;
	struct tid_info *t = dev->rdev.lldi.tids;
	struct tid_info *t = dev->rdev.lldi.tids;
	unsigned int tid = GET_TID(hdr);
	unsigned int tid = GET_TID(hdr);
	int start_timer = 0;
	int stop_timer = 0;


	ep = lookup_tid(t, tid);
	ep = lookup_tid(t, tid);
	PDBG("%s ep %p tid %u\n", __func__, ep, ep->hwtid);
	PDBG("%s ep %p tid %u\n", __func__, ep, ep->hwtid);
@@ -1511,7 +1520,7 @@ static int peer_close(struct c4iw_dev *dev, struct sk_buff *skb)
		wake_up(&ep->com.waitq);
		wake_up(&ep->com.waitq);
		break;
		break;
	case FPDU_MODE:
	case FPDU_MODE:
		start_timer = 1;
		start_ep_timer(ep);
		__state_set(&ep->com, CLOSING);
		__state_set(&ep->com, CLOSING);
		closing = 1;
		closing = 1;
		peer_close_upcall(ep);
		peer_close_upcall(ep);
@@ -1524,7 +1533,7 @@ static int peer_close(struct c4iw_dev *dev, struct sk_buff *skb)
		disconnect = 0;
		disconnect = 0;
		break;
		break;
	case MORIBUND:
	case MORIBUND:
		stop_timer = 1;
		stop_ep_timer(ep);
		if (ep->com.cm_id && ep->com.qp) {
		if (ep->com.cm_id && ep->com.qp) {
			attrs.next_state = C4IW_QP_STATE_IDLE;
			attrs.next_state = C4IW_QP_STATE_IDLE;
			c4iw_modify_qp(ep->com.qp->rhp, ep->com.qp,
			c4iw_modify_qp(ep->com.qp->rhp, ep->com.qp,
@@ -1547,10 +1556,6 @@ static int peer_close(struct c4iw_dev *dev, struct sk_buff *skb)
		c4iw_modify_qp(ep->com.qp->rhp, ep->com.qp,
		c4iw_modify_qp(ep->com.qp->rhp, ep->com.qp,
			       C4IW_QP_ATTR_NEXT_STATE, &attrs, 1);
			       C4IW_QP_ATTR_NEXT_STATE, &attrs, 1);
	}
	}
	if (start_timer)
		start_ep_timer(ep);
	if (stop_timer)
		stop_ep_timer(ep);
	if (disconnect)
	if (disconnect)
		c4iw_ep_disconnect(ep, 0, GFP_KERNEL);
		c4iw_ep_disconnect(ep, 0, GFP_KERNEL);
	if (release)
	if (release)
@@ -1579,7 +1584,6 @@ static int peer_abort(struct c4iw_dev *dev, struct sk_buff *skb)
	unsigned long flags;
	unsigned long flags;
	struct tid_info *t = dev->rdev.lldi.tids;
	struct tid_info *t = dev->rdev.lldi.tids;
	unsigned int tid = GET_TID(req);
	unsigned int tid = GET_TID(req);
	int stop_timer = 0;


	ep = lookup_tid(t, tid);
	ep = lookup_tid(t, tid);
	if (is_neg_adv_abort(req->status)) {
	if (is_neg_adv_abort(req->status)) {
@@ -1594,10 +1598,10 @@ static int peer_abort(struct c4iw_dev *dev, struct sk_buff *skb)
	case CONNECTING:
	case CONNECTING:
		break;
		break;
	case MPA_REQ_WAIT:
	case MPA_REQ_WAIT:
		stop_timer = 1;
		stop_ep_timer(ep);
		break;
		break;
	case MPA_REQ_SENT:
	case MPA_REQ_SENT:
		stop_timer = 1;
		stop_ep_timer(ep);
		connect_reply_upcall(ep, -ECONNRESET);
		connect_reply_upcall(ep, -ECONNRESET);
		break;
		break;
	case MPA_REP_SENT:
	case MPA_REP_SENT:
@@ -1621,7 +1625,7 @@ static int peer_abort(struct c4iw_dev *dev, struct sk_buff *skb)
		break;
		break;
	case MORIBUND:
	case MORIBUND:
	case CLOSING:
	case CLOSING:
		stop_timer = 1;
		stop_ep_timer(ep);
		/*FALLTHROUGH*/
		/*FALLTHROUGH*/
	case FPDU_MODE:
	case FPDU_MODE:
		if (ep->com.cm_id && ep->com.qp) {
		if (ep->com.cm_id && ep->com.qp) {
@@ -1667,8 +1671,6 @@ static int peer_abort(struct c4iw_dev *dev, struct sk_buff *skb)
	rpl->cmd = CPL_ABORT_NO_RST;
	rpl->cmd = CPL_ABORT_NO_RST;
	c4iw_ofld_send(&ep->com.dev->rdev, rpl_skb);
	c4iw_ofld_send(&ep->com.dev->rdev, rpl_skb);
out:
out:
	if (stop_timer)
		stop_ep_timer(ep);
	if (release)
	if (release)
		release_ep_resources(ep);
		release_ep_resources(ep);
	return 0;
	return 0;
@@ -1683,7 +1685,6 @@ static int close_con_rpl(struct c4iw_dev *dev, struct sk_buff *skb)
	int release = 0;
	int release = 0;
	struct tid_info *t = dev->rdev.lldi.tids;
	struct tid_info *t = dev->rdev.lldi.tids;
	unsigned int tid = GET_TID(rpl);
	unsigned int tid = GET_TID(rpl);
	int stop_timer = 0;


	ep = lookup_tid(t, tid);
	ep = lookup_tid(t, tid);


@@ -1697,7 +1698,7 @@ static int close_con_rpl(struct c4iw_dev *dev, struct sk_buff *skb)
		__state_set(&ep->com, MORIBUND);
		__state_set(&ep->com, MORIBUND);
		break;
		break;
	case MORIBUND:
	case MORIBUND:
		stop_timer = 1;
		stop_ep_timer(ep);
		if ((ep->com.cm_id) && (ep->com.qp)) {
		if ((ep->com.cm_id) && (ep->com.qp)) {
			attrs.next_state = C4IW_QP_STATE_IDLE;
			attrs.next_state = C4IW_QP_STATE_IDLE;
			c4iw_modify_qp(ep->com.qp->rhp,
			c4iw_modify_qp(ep->com.qp->rhp,
@@ -1717,8 +1718,6 @@ static int close_con_rpl(struct c4iw_dev *dev, struct sk_buff *skb)
		break;
		break;
	}
	}
	spin_unlock_irqrestore(&ep->com.lock, flags);
	spin_unlock_irqrestore(&ep->com.lock, flags);
	if (stop_timer)
		stop_ep_timer(ep);
	if (release)
	if (release)
		release_ep_resources(ep);
		release_ep_resources(ep);
	return 0;
	return 0;
@@ -1957,6 +1956,7 @@ int c4iw_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
		ep->txq_idx = cxgb4_port_idx(pdev) * step;
		ep->txq_idx = cxgb4_port_idx(pdev) * step;
		step = ep->com.dev->rdev.lldi.nrxq /
		step = ep->com.dev->rdev.lldi.nrxq /
		       ep->com.dev->rdev.lldi.nchan;
		       ep->com.dev->rdev.lldi.nchan;
		ep->ctrlq_idx = cxgb4_port_idx(pdev);
		ep->rss_qid = ep->com.dev->rdev.lldi.rxq_ids[
		ep->rss_qid = ep->com.dev->rdev.lldi.rxq_ids[
			      cxgb4_port_idx(pdev) * step];
			      cxgb4_port_idx(pdev) * step];
		dev_put(pdev);
		dev_put(pdev);
@@ -1971,6 +1971,7 @@ int c4iw_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
		step = ep->com.dev->rdev.lldi.ntxq /
		step = ep->com.dev->rdev.lldi.ntxq /
		       ep->com.dev->rdev.lldi.nchan;
		       ep->com.dev->rdev.lldi.nchan;
		ep->txq_idx = cxgb4_port_idx(ep->dst->neighbour->dev) * step;
		ep->txq_idx = cxgb4_port_idx(ep->dst->neighbour->dev) * step;
		ep->ctrlq_idx = cxgb4_port_idx(ep->dst->neighbour->dev);
		step = ep->com.dev->rdev.lldi.nrxq /
		step = ep->com.dev->rdev.lldi.nrxq /
		       ep->com.dev->rdev.lldi.nchan;
		       ep->com.dev->rdev.lldi.nchan;
		ep->rss_qid = ep->com.dev->rdev.lldi.rxq_ids[
		ep->rss_qid = ep->com.dev->rdev.lldi.rxq_ids[
@@ -2049,8 +2050,15 @@ int c4iw_create_listen(struct iw_cm_id *cm_id, int backlog)
		goto fail3;
		goto fail3;


	/* wait for pass_open_rpl */
	/* wait for pass_open_rpl */
	wait_event(ep->com.waitq, ep->com.rpl_done);
	wait_event_timeout(ep->com.waitq, ep->com.rpl_done, C4IW_WR_TO);
	if (ep->com.rpl_done)
		err = ep->com.rpl_err;
		err = ep->com.rpl_err;
	else {
		printk(KERN_ERR MOD "Device %s not responding!\n",
		       pci_name(ep->com.dev->rdev.lldi.pdev));
		ep->com.dev->rdev.flags = T4_FATAL_ERROR;
		err = -EIO;
	}
	if (!err) {
	if (!err) {
		cm_id->provider_data = ep;
		cm_id->provider_data = ep;
		goto out;
		goto out;
@@ -2079,10 +2087,17 @@ int c4iw_destroy_listen(struct iw_cm_id *cm_id)
	err = listen_stop(ep);
	err = listen_stop(ep);
	if (err)
	if (err)
		goto done;
		goto done;
	wait_event(ep->com.waitq, ep->com.rpl_done);
	wait_event_timeout(ep->com.waitq, ep->com.rpl_done, C4IW_WR_TO);
	if (ep->com.rpl_done)
		err = ep->com.rpl_err;
	else {
		printk(KERN_ERR MOD "Device %s not responding!\n",
		       pci_name(ep->com.dev->rdev.lldi.pdev));
		ep->com.dev->rdev.flags = T4_FATAL_ERROR;
		err = -EIO;
	}
	cxgb4_free_stid(ep->com.dev->rdev.lldi.tids, ep->stid, PF_INET);
	cxgb4_free_stid(ep->com.dev->rdev.lldi.tids, ep->stid, PF_INET);
done:
done:
	err = ep->com.rpl_err;
	cm_id->rem_ref(cm_id);
	cm_id->rem_ref(cm_id);
	c4iw_put_ep(&ep->com);
	c4iw_put_ep(&ep->com);
	return err;
	return err;
@@ -2095,8 +2110,6 @@ int c4iw_ep_disconnect(struct c4iw_ep *ep, int abrupt, gfp_t gfp)
	int close = 0;
	int close = 0;
	int fatal = 0;
	int fatal = 0;
	struct c4iw_rdev *rdev;
	struct c4iw_rdev *rdev;
	int start_timer = 0;
	int stop_timer = 0;


	spin_lock_irqsave(&ep->com.lock, flags);
	spin_lock_irqsave(&ep->com.lock, flags);


@@ -2120,7 +2133,7 @@ int c4iw_ep_disconnect(struct c4iw_ep *ep, int abrupt, gfp_t gfp)
			ep->com.state = ABORTING;
			ep->com.state = ABORTING;
		else {
		else {
			ep->com.state = CLOSING;
			ep->com.state = CLOSING;
			start_timer = 1;
			start_ep_timer(ep);
		}
		}
		set_bit(CLOSE_SENT, &ep->com.flags);
		set_bit(CLOSE_SENT, &ep->com.flags);
		break;
		break;
@@ -2128,7 +2141,7 @@ int c4iw_ep_disconnect(struct c4iw_ep *ep, int abrupt, gfp_t gfp)
		if (!test_and_set_bit(CLOSE_SENT, &ep->com.flags)) {
		if (!test_and_set_bit(CLOSE_SENT, &ep->com.flags)) {
			close = 1;
			close = 1;
			if (abrupt) {
			if (abrupt) {
				stop_timer = 1;
				stop_ep_timer(ep);
				ep->com.state = ABORTING;
				ep->com.state = ABORTING;
			} else
			} else
				ep->com.state = MORIBUND;
				ep->com.state = MORIBUND;
@@ -2146,10 +2159,6 @@ int c4iw_ep_disconnect(struct c4iw_ep *ep, int abrupt, gfp_t gfp)
	}
	}


	spin_unlock_irqrestore(&ep->com.lock, flags);
	spin_unlock_irqrestore(&ep->com.lock, flags);
	if (start_timer)
		start_ep_timer(ep);
	if (stop_timer)
		stop_ep_timer(ep);
	if (close) {
	if (close) {
		if (abrupt)
		if (abrupt)
			ret = abort_connection(ep, NULL, gfp);
			ret = abort_connection(ep, NULL, gfp);
@@ -2244,7 +2253,7 @@ static void process_work(struct work_struct *work)
{
{
	struct sk_buff *skb = NULL;
	struct sk_buff *skb = NULL;
	struct c4iw_dev *dev;
	struct c4iw_dev *dev;
	struct cpl_act_establish *rpl = cplhdr(skb);
	struct cpl_act_establish *rpl;
	unsigned int opcode;
	unsigned int opcode;
	int ret;
	int ret;


+2 −2
Original line number Original line Diff line number Diff line
@@ -43,7 +43,7 @@ static int destroy_cq(struct c4iw_rdev *rdev, struct t4_cq *cq,
	int ret;
	int ret;


	wr_len = sizeof *res_wr + sizeof *res;
	wr_len = sizeof *res_wr + sizeof *res;
	skb = alloc_skb(wr_len, GFP_KERNEL | __GFP_NOFAIL);
	skb = alloc_skb(wr_len, GFP_KERNEL);
	if (!skb)
	if (!skb)
		return -ENOMEM;
		return -ENOMEM;
	set_wr_txq(skb, CPL_PRIORITY_CONTROL, 0);
	set_wr_txq(skb, CPL_PRIORITY_CONTROL, 0);
@@ -118,7 +118,7 @@ static int create_cq(struct c4iw_rdev *rdev, struct t4_cq *cq,
	/* build fw_ri_res_wr */
	/* build fw_ri_res_wr */
	wr_len = sizeof *res_wr + sizeof *res;
	wr_len = sizeof *res_wr + sizeof *res;


	skb = alloc_skb(wr_len, GFP_KERNEL | __GFP_NOFAIL);
	skb = alloc_skb(wr_len, GFP_KERNEL);
	if (!skb) {
	if (!skb) {
		ret = -ENOMEM;
		ret = -ENOMEM;
		goto err4;
		goto err4;
Loading