From: David S. Miller <davem@davemloft.net>
Date: Thu, 5 Sep 2013 18:58:52 +0000 (-0400)
Subject: Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
X-Git-Tag: v3.12-rc1~132^2~1
X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=06c54055bebf;p=linux.git

Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net

Conflicts:
	drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
	net/bridge/br_multicast.c
	net/ipv6/sit.c

The conflicts were minor:

1) sit.c changes overlap with change to ip_tunnel_xmit() signature.

2) br_multicast.c had an overlap between computing max_delay using
   msecs_to_jiffies and turning MLDV2_MRC() into an inline function
   with a name using lowercase instead of uppercase letters.

3) stmmac had two overlapping changes, one which conditionally allocated
   and hooked up a dma_cfg based upon the presence of the pbl OF property,
   and another one handling store-and-forward DMA made.  The latter of
   which should not go into the new of_find_property() basic block.

Signed-off-by: David S. Miller <davem@davemloft.net>
---

06c54055bebf919249aa1eb68312887c3cfe77b4
diff --cc drivers/net/ethernet/renesas/sh_eth.c
index 474c8a86a2af,3426d32a1803..5cd831ebfa83
--- a/drivers/net/ethernet/renesas/sh_eth.c
+++ b/drivers/net/ethernet/renesas/sh_eth.c
@@@ -1343,12 -1297,9 +1343,12 @@@ static int sh_eth_rx(struct net_device 
  			mdp->rx_skbuff[entry] = NULL;
  			if (mdp->cd->rpadir)
  				skb_reserve(skb, NET_IP_ALIGN);
 +			dma_sync_single_for_cpu(&ndev->dev, rxdesc->addr,
 +						mdp->rx_buf_sz,
 +						DMA_FROM_DEVICE);
  			skb_put(skb, pkt_len);
  			skb->protocol = eth_type_trans(skb, ndev);
- 			netif_rx(skb);
+ 			netif_receive_skb(skb);
  			ndev->stats.rx_packets++;
  			ndev->stats.rx_bytes += pkt_len;
  		}
diff --cc drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
index 623ebc50fe6b,1c83a44c547b..7a0072003f34
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
@@@ -71,19 -71,18 +71,22 @@@ static int stmmac_probe_config_dt(struc
  		plat->force_sf_dma_mode = 1;
  	}
  
- 	dma_cfg = devm_kzalloc(&pdev->dev, sizeof(*dma_cfg), GFP_KERNEL);
- 	if (!dma_cfg)
- 		return -ENOMEM;
- 
- 	plat->dma_cfg = dma_cfg;
- 	of_property_read_u32(np, "snps,pbl", &dma_cfg->pbl);
- 	dma_cfg->fixed_burst = of_property_read_bool(np, "snps,fixed-burst");
- 	dma_cfg->mixed_burst = of_property_read_bool(np, "snps,mixed-burst");
+ 	if (of_find_property(np, "snps,pbl", NULL)) {
+ 		dma_cfg = devm_kzalloc(&pdev->dev, sizeof(*dma_cfg),
+ 				       GFP_KERNEL);
+ 		if (!dma_cfg)
+ 			return -ENOMEM;
+ 		plat->dma_cfg = dma_cfg;
+ 		of_property_read_u32(np, "snps,pbl", &dma_cfg->pbl);
+ 		dma_cfg->fixed_burst =
+ 			of_property_read_bool(np, "snps,fixed-burst");
+ 		dma_cfg->mixed_burst =
+ 			of_property_read_bool(np, "snps,mixed-burst");
+ 	}
 +	plat->force_thresh_dma_mode = of_property_read_bool(np, "snps,force_thresh_dma_mode");
 +	if (plat->force_thresh_dma_mode) {
 +		plat->force_sf_dma_mode = 0;
 +		pr_warn("force_sf_dma_mode is ignored if force_thresh_dma_mode is set.");
- 	}
  
  	return 0;
  }
diff --cc net/bridge/br_multicast.c
index 23531471f16a,bbcb43582496..d1c578630678
--- a/net/bridge/br_multicast.c
+++ b/net/bridge/br_multicast.c
@@@ -1205,11 -1255,11 +1256,11 @@@ static int br_ip6_multicast_query(struc
  		if (!mld2q->mld2q_nsrcs)
  			group = &mld2q->mld2q_mca;
  
 -		max_delay = max(msecs_to_jiffies(MLDV2_MRC(ntohs(mld2q->mld2q_mrc))), 1UL);
 +		max_delay = max(msecs_to_jiffies(mldv2_mrc(mld2q)), 1UL);
  	}
  
- 	br_multicast_query_received(br, port, !ipv6_addr_any(&ip6h->saddr),
- 				    max_delay);
+ 	br_multicast_query_received(br, port, &br->ip6_querier,
+ 				    !ipv6_addr_any(&ip6h->saddr), max_delay);
  
  	if (!group)
  		goto out;
@@@ -1354,8 -1406,11 +1407,11 @@@ static void br_ip6_multicast_leave_grou
  					 __u16 vid)
  {
  	struct br_ip br_group;
+ 	struct bridge_mcast_query *query = port ? &port->ip6_query :
+ 						  &br->ip6_query;
+ 
  
 -	if (!ipv6_is_transient_multicast(group))
 +	if (ipv6_addr_is_ll_all_nodes(group))
  		return;
  
  	br_group.u.ip6 = *group;
diff --cc net/ipv6/sit.c
index 19abcc9d6a1a,21b25dd8466b..7ee5cb96db34
--- a/net/ipv6/sit.c
+++ b/net/ipv6/sit.c
@@@ -881,8 -886,13 +879,13 @@@ static netdev_tx_t ipip6_tunnel_xmit(st
  		ttl = iph6->hop_limit;
  	tos = INET_ECN_encapsulate(tos, ipv6_get_dsfield(iph6));
  
+ 	if (likely(!skb->encapsulation)) {
+ 		skb_reset_inner_headers(skb);
+ 		skb->encapsulation = 1;
+ 	}
+ 
 -	err = iptunnel_xmit(dev_net(dev), rt, skb, fl4.saddr, fl4.daddr,
 -			    IPPROTO_IPV6, tos, ttl, df);
 +	err = iptunnel_xmit(rt, skb, fl4.saddr, fl4.daddr, IPPROTO_IPV6, tos,
 +			    ttl, df, !net_eq(tunnel->net, dev_net(dev)));
  	iptunnel_xmit_stats(err, &dev->stats, dev->tstats);
  	return NETDEV_TX_OK;