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

Commit 8c9ea7fe authored by Roland Dreier's avatar Roland Dreier
Browse files

Merge branches 'ehca', 'ipoib', 'iser', 'mlx4' and 'nes' into for-next

Loading
Loading
Loading
Loading
+9 −4
Original line number Original line Diff line number Diff line
@@ -543,14 +543,21 @@ static void *mlx4_ib_add(struct mlx4_dev *dev)
{
{
	static int mlx4_ib_version_printed;
	static int mlx4_ib_version_printed;
	struct mlx4_ib_dev *ibdev;
	struct mlx4_ib_dev *ibdev;
	int num_ports = 0;
	int i;
	int i;



	if (!mlx4_ib_version_printed) {
	if (!mlx4_ib_version_printed) {
		printk(KERN_INFO "%s", mlx4_ib_version);
		printk(KERN_INFO "%s", mlx4_ib_version);
		++mlx4_ib_version_printed;
		++mlx4_ib_version_printed;
	}
	}


	mlx4_foreach_port(i, dev, MLX4_PORT_TYPE_IB)
		num_ports++;

	/* No point in registering a device with no ports... */
	if (num_ports == 0)
		return NULL;

	ibdev = (struct mlx4_ib_dev *) ib_alloc_device(sizeof *ibdev);
	ibdev = (struct mlx4_ib_dev *) ib_alloc_device(sizeof *ibdev);
	if (!ibdev) {
	if (!ibdev) {
		dev_err(&dev->pdev->dev, "Device struct alloc failed\n");
		dev_err(&dev->pdev->dev, "Device struct alloc failed\n");
@@ -574,9 +581,7 @@ static void *mlx4_ib_add(struct mlx4_dev *dev)
	ibdev->ib_dev.owner		= THIS_MODULE;
	ibdev->ib_dev.owner		= THIS_MODULE;
	ibdev->ib_dev.node_type		= RDMA_NODE_IB_CA;
	ibdev->ib_dev.node_type		= RDMA_NODE_IB_CA;
	ibdev->ib_dev.local_dma_lkey	= dev->caps.reserved_lkey;
	ibdev->ib_dev.local_dma_lkey	= dev->caps.reserved_lkey;
	ibdev->num_ports = 0;
	ibdev->num_ports		= num_ports;
	mlx4_foreach_port(i, dev, MLX4_PORT_TYPE_IB)
		ibdev->num_ports++;
	ibdev->ib_dev.phys_port_cnt     = ibdev->num_ports;
	ibdev->ib_dev.phys_port_cnt     = ibdev->num_ports;
	ibdev->ib_dev.num_comp_vectors	= dev->caps.num_comp_vectors;
	ibdev->ib_dev.num_comp_vectors	= dev->caps.num_comp_vectors;
	ibdev->ib_dev.dma_device	= &dev->pdev->dev;
	ibdev->ib_dev.dma_device	= &dev->pdev->dev;
+9 −3
Original line number Original line Diff line number Diff line
@@ -778,12 +778,13 @@ static struct nes_cm_node *find_node(struct nes_cm_core *cm_core,
	unsigned long flags;
	unsigned long flags;
	struct list_head *hte;
	struct list_head *hte;
	struct nes_cm_node *cm_node;
	struct nes_cm_node *cm_node;
	__be32 tmp_addr = cpu_to_be32(loc_addr);


	/* get a handle on the hte */
	/* get a handle on the hte */
	hte = &cm_core->connected_nodes;
	hte = &cm_core->connected_nodes;


	nes_debug(NES_DBG_CM, "Searching for an owner node: %pI4:%x from core %p->%p\n",
	nes_debug(NES_DBG_CM, "Searching for an owner node: %pI4:%x from core %p->%p\n",
		  &loc_addr, loc_port, cm_core, hte);
		  &tmp_addr, loc_port, cm_core, hte);


	/* walk list and find cm_node associated with this session ID */
	/* walk list and find cm_node associated with this session ID */
	spin_lock_irqsave(&cm_core->ht_lock, flags);
	spin_lock_irqsave(&cm_core->ht_lock, flags);
@@ -816,6 +817,7 @@ static struct nes_cm_listener *find_listener(struct nes_cm_core *cm_core,
{
{
	unsigned long flags;
	unsigned long flags;
	struct nes_cm_listener *listen_node;
	struct nes_cm_listener *listen_node;
	__be32 tmp_addr = cpu_to_be32(dst_addr);


	/* walk list and find cm_node associated with this session ID */
	/* walk list and find cm_node associated with this session ID */
	spin_lock_irqsave(&cm_core->listen_list_lock, flags);
	spin_lock_irqsave(&cm_core->listen_list_lock, flags);
@@ -833,7 +835,7 @@ static struct nes_cm_listener *find_listener(struct nes_cm_core *cm_core,
	spin_unlock_irqrestore(&cm_core->listen_list_lock, flags);
	spin_unlock_irqrestore(&cm_core->listen_list_lock, flags);


	nes_debug(NES_DBG_CM, "Unable to find listener for %pI4:%x\n",
	nes_debug(NES_DBG_CM, "Unable to find listener for %pI4:%x\n",
		  &dst_addr, dst_port);
		  &tmp_addr, dst_port);


	/* no listener */
	/* no listener */
	return NULL;
	return NULL;
@@ -2059,6 +2061,7 @@ static int mini_cm_recv_pkt(struct nes_cm_core *cm_core,
	struct tcphdr *tcph;
	struct tcphdr *tcph;
	struct nes_cm_info nfo;
	struct nes_cm_info nfo;
	int skb_handled = 1;
	int skb_handled = 1;
	__be32 tmp_daddr, tmp_saddr;


	if (!skb)
	if (!skb)
		return 0;
		return 0;
@@ -2074,8 +2077,11 @@ static int mini_cm_recv_pkt(struct nes_cm_core *cm_core,
	nfo.rem_addr = ntohl(iph->saddr);
	nfo.rem_addr = ntohl(iph->saddr);
	nfo.rem_port = ntohs(tcph->source);
	nfo.rem_port = ntohs(tcph->source);


	tmp_daddr = cpu_to_be32(iph->daddr);
	tmp_saddr = cpu_to_be32(iph->saddr);

	nes_debug(NES_DBG_CM, "Received packet: dest=%pI4:0x%04X src=%pI4:0x%04X\n",
	nes_debug(NES_DBG_CM, "Received packet: dest=%pI4:0x%04X src=%pI4:0x%04X\n",
		  &iph->daddr, tcph->dest, &iph->saddr, tcph->source);
		  &tmp_daddr, tcph->dest, &tmp_saddr, tcph->source);


	do {
	do {
		cm_node = find_node(cm_core,
		cm_node = find_node(cm_core,
+3 −1
Original line number Original line Diff line number Diff line
@@ -655,6 +655,7 @@ int nes_arp_table(struct nes_device *nesdev, u32 ip_addr, u8 *mac_addr, u32 acti
	struct nes_adapter *nesadapter = nesdev->nesadapter;
	struct nes_adapter *nesadapter = nesdev->nesadapter;
	int arp_index;
	int arp_index;
	int err = 0;
	int err = 0;
	__be32 tmp_addr;


	for (arp_index = 0; (u32) arp_index < nesadapter->arp_table_size; arp_index++) {
	for (arp_index = 0; (u32) arp_index < nesadapter->arp_table_size; arp_index++) {
		if (nesadapter->arp_table[arp_index].ip_addr == ip_addr)
		if (nesadapter->arp_table[arp_index].ip_addr == ip_addr)
@@ -682,8 +683,9 @@ int nes_arp_table(struct nes_device *nesdev, u32 ip_addr, u8 *mac_addr, u32 acti


	/* DELETE or RESOLVE */
	/* DELETE or RESOLVE */
	if (arp_index == nesadapter->arp_table_size) {
	if (arp_index == nesadapter->arp_table_size) {
		tmp_addr = cpu_to_be32(ip_addr);
		nes_debug(NES_DBG_NETDEV, "MAC for %pI4 not in ARP table - cannot %s\n",
		nes_debug(NES_DBG_NETDEV, "MAC for %pI4 not in ARP table - cannot %s\n",
			  &ip_addr, action == NES_ARP_RESOLVE ? "resolve" : "delete");
			  &tmp_addr, action == NES_ARP_RESOLVE ? "resolve" : "delete");
		return -1;
		return -1;
	}
	}


+19 −19
Original line number Original line Diff line number Diff line
@@ -711,7 +711,6 @@ static int ipoib_start_xmit(struct sk_buff *skb, struct net_device *dev)


		neigh = *to_ipoib_neigh(skb->dst->neighbour);
		neigh = *to_ipoib_neigh(skb->dst->neighbour);


		if (neigh->ah)
		if (unlikely((memcmp(&neigh->dgid.raw,
		if (unlikely((memcmp(&neigh->dgid.raw,
				     skb->dst->neighbour->ha + 4,
				     skb->dst->neighbour->ha + 4,
				     sizeof(union ib_gid))) ||
				     sizeof(union ib_gid))) ||
@@ -724,6 +723,7 @@ static int ipoib_start_xmit(struct sk_buff *skb, struct net_device *dev)
			 * so ipoib_put_ah() will never do more than
			 * so ipoib_put_ah() will never do more than
			 * decrement the ref count.
			 * decrement the ref count.
			 */
			 */
			if (neigh->ah)
				ipoib_put_ah(neigh->ah);
				ipoib_put_ah(neigh->ah);
			list_del(&neigh->list);
			list_del(&neigh->list);
			ipoib_neigh_free(dev, neigh);
			ipoib_neigh_free(dev, neigh);
+3 −0
Original line number Original line Diff line number Diff line
@@ -529,6 +529,9 @@ void ipoib_mcast_join_task(struct work_struct *work)
	if (!priv->broadcast) {
	if (!priv->broadcast) {
		struct ipoib_mcast *broadcast;
		struct ipoib_mcast *broadcast;


		if (!test_bit(IPOIB_FLAG_ADMIN_UP, &priv->flags))
			return;

		broadcast = ipoib_mcast_alloc(dev, 1);
		broadcast = ipoib_mcast_alloc(dev, 1);
		if (!broadcast) {
		if (!broadcast) {
			ipoib_warn(priv, "failed to allocate broadcast group\n");
			ipoib_warn(priv, "failed to allocate broadcast group\n");
Loading