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

Commit a493f1a2 authored by Roland Dreier's avatar Roland Dreier
Browse files

Merge branches 'cxgb4', 'ipoib', 'misc' and 'qib' into for-next

Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -216,7 +216,9 @@ static int addr4_resolve(struct sockaddr_in *src_in,

	neigh = neigh_lookup(&arp_tbl, &rt->rt_gateway, rt->dst.dev);
	if (!neigh || !(neigh->nud_state & NUD_VALID)) {
		rcu_read_lock();
		neigh_event_send(dst_get_neighbour(&rt->dst), NULL);
		rcu_read_unlock();
		ret = -ENODATA;
		if (neigh)
			goto release;
@@ -274,15 +276,16 @@ static int addr6_resolve(struct sockaddr_in6 *src_in,
		goto put;
	}

	rcu_read_lock();
	neigh = dst_get_neighbour(dst);
	if (!neigh || !(neigh->nud_state & NUD_VALID)) {
		if (neigh)
			neigh_event_send(neigh, NULL);
		ret = -ENODATA;
		goto put;
	}

	} else {
		ret = rdma_copy_addr(addr, dst->dev, neigh->ha);
	}
	rcu_read_unlock();
put:
	dst_release(dst);
	return ret;
+4 −0
Original line number Diff line number Diff line
@@ -1375,8 +1375,10 @@ static int pass_accept_req(struct t3cdev *tdev, struct sk_buff *skb, void *ctx)
		goto reject;
	}
	dst = &rt->dst;
	rcu_read_lock();
	neigh = dst_get_neighbour(dst);
	l2t = t3_l2t_get(tdev, neigh, neigh->dev);
	rcu_read_unlock();
	if (!l2t) {
		printk(KERN_ERR MOD "%s - failed to allocate l2t entry!\n",
		       __func__);
@@ -1946,10 +1948,12 @@ int iwch_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
	}
	ep->dst = &rt->dst;

	rcu_read_lock();
	neigh = dst_get_neighbour(ep->dst);

	/* get a l2t entry */
	ep->l2t = t3_l2t_get(ep->com.tdev, neigh, neigh->dev);
	rcu_read_unlock();
	if (!ep->l2t) {
		printk(KERN_ERR MOD "%s - cannot alloc l2e.\n", __func__);
		err = -ENOMEM;
+6 −0
Original line number Diff line number Diff line
@@ -1596,6 +1596,7 @@ static int pass_accept_req(struct c4iw_dev *dev, struct sk_buff *skb)
		goto reject;
	}
	dst = &rt->dst;
	rcu_read_lock();
	neigh = dst_get_neighbour(dst);
	if (neigh->dev->flags & IFF_LOOPBACK) {
		pdev = ip_dev_find(&init_net, peer_ip);
@@ -1622,6 +1623,7 @@ static int pass_accept_req(struct c4iw_dev *dev, struct sk_buff *skb)
		rss_qid = dev->rdev.lldi.rxq_ids[
			  cxgb4_port_idx(neigh->dev) * step];
	}
	rcu_read_unlock();
	if (!l2t) {
		printk(KERN_ERR MOD "%s - failed to allocate l2t entry!\n",
		       __func__);
@@ -1822,6 +1824,7 @@ static int c4iw_reconnect(struct c4iw_ep *ep)
	}
	ep->dst = &rt->dst;

	rcu_read_lock();
	neigh = dst_get_neighbour(ep->dst);

	/* get a l2t entry */
@@ -1858,6 +1861,7 @@ static int c4iw_reconnect(struct c4iw_ep *ep)
		ep->rss_qid = ep->com.dev->rdev.lldi.rxq_ids[
			cxgb4_port_idx(neigh->dev) * step];
	}
	rcu_read_unlock();
	if (!ep->l2t) {
		printk(KERN_ERR MOD "%s - cannot alloc l2e.\n", __func__);
		err = -ENOMEM;
@@ -2303,6 +2307,7 @@ int c4iw_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
	}
	ep->dst = &rt->dst;

	rcu_read_lock();
	neigh = dst_get_neighbour(ep->dst);

	/* get a l2t entry */
@@ -2341,6 +2346,7 @@ int c4iw_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
		ep->retry_with_mpa_v1 = 0;
		ep->tried_with_mpa_v1 = 0;
	}
	rcu_read_unlock();
	if (!ep->l2t) {
		printk(KERN_ERR MOD "%s - cannot alloc l2e.\n", __func__);
		err = -ENOMEM;
+4 −2
Original line number Diff line number Diff line
@@ -1377,9 +1377,11 @@ static int nes_addr_resolve_neigh(struct nes_vnic *nesvnic, u32 dst_ip, int arpi
		neigh_release(neigh);
	}

	if ((neigh == NULL) || (!(neigh->nud_state & NUD_VALID)))
	if ((neigh == NULL) || (!(neigh->nud_state & NUD_VALID))) {
		rcu_read_lock();
		neigh_event_send(dst_get_neighbour(&rt->dst), NULL);

		rcu_read_unlock();
	}
	ip_rt_put(rt);
	return rc;
}
+9 −9
Original line number Diff line number Diff line
@@ -2307,19 +2307,11 @@ static int qib_7322_bringup_serdes(struct qib_pportdata *ppd)
		SYM_LSB(IBCCtrlA_0, MaxPktLen);
	ppd->cpspec->ibcctrl_a = ibc; /* without linkcmd or linkinitcmd! */

	/* initially come up waiting for TS1, without sending anything. */
	val = ppd->cpspec->ibcctrl_a | (QLOGIC_IB_IBCC_LINKINITCMD_DISABLE <<
		QLOGIC_IB_IBCC_LINKINITCMD_SHIFT);

	ppd->cpspec->ibcctrl_a = val;
	/*
	 * Reset the PCS interface to the serdes (and also ibc, which is still
	 * in reset from above).  Writes new value of ibcctrl_a as last step.
	 */
	qib_7322_mini_pcs_reset(ppd);
	qib_write_kreg(dd, kr_scratch, 0ULL);
	/* clear the linkinit cmds */
	ppd->cpspec->ibcctrl_a &= ~SYM_MASK(IBCCtrlA_0, LinkInitCmd);

	if (!ppd->cpspec->ibcctrl_b) {
		unsigned lse = ppd->link_speed_enabled;
@@ -2385,6 +2377,14 @@ static int qib_7322_bringup_serdes(struct qib_pportdata *ppd)
	ppd->cpspec->ibcctrl_a |= SYM_MASK(IBCCtrlA_0, IBLinkEn);
	set_vls(ppd);

	/* initially come up DISABLED, without sending anything. */
	val = ppd->cpspec->ibcctrl_a | (QLOGIC_IB_IBCC_LINKINITCMD_DISABLE <<
					QLOGIC_IB_IBCC_LINKINITCMD_SHIFT);
	qib_write_kreg_port(ppd, krp_ibcctrl_a, val);
	qib_write_kreg(dd, kr_scratch, 0ULL);
	/* clear the linkinit cmds */
	ppd->cpspec->ibcctrl_a = val & ~SYM_MASK(IBCCtrlA_0, LinkInitCmd);

	/* be paranoid against later code motion, etc. */
	spin_lock_irqsave(&dd->cspec->rcvmod_lock, flags);
	ppd->p_rcvctrl |= SYM_MASK(RcvCtrl_0, RcvIBPortEnable);
@@ -5241,7 +5241,7 @@ static int qib_7322_ib_updown(struct qib_pportdata *ppd, int ibup, u64 ibcs)
			   off */
			if (ppd->dd->flags & QIB_HAS_QSFP) {
				qd->t_insert = get_jiffies_64();
				schedule_work(&qd->work);
				queue_work(ib_wq, &qd->work);
			}
			spin_lock_irqsave(&ppd->sdma_lock, flags);
			if (__qib_sdma_running(ppd))
Loading