diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-07-28 05:58:19 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-07-28 05:58:19 -0700 | 
| commit | d5eab9152a3b4ce962c02ad0a0e4d0ec94aadd92 (patch) | |
| tree | 3147f8de2805da0f026ea18103a9be46f3bc2a18 /net | |
| parent | 6140333d3656f62ac7e6a5af87e7fe92cfb8d655 (diff) | |
| parent | a051294423b015c5c89f2ed78f7fe0893b775098 (diff) | |
| download | linux-d5eab9152a3b4ce962c02ad0a0e4d0ec94aadd92.tar.bz2 | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (32 commits)
  tg3: Remove 5719 jumbo frames and TSO blocks
  tg3: Break larger frags into 4k chunks for 5719
  tg3: Add tx BD budgeting code
  tg3: Consolidate code that calls tg3_tx_set_bd()
  tg3: Add partial fragment unmapping code
  tg3: Generalize tg3_skb_error_unmap()
  tg3: Remove short DMA check for 1st fragment
  tg3: Simplify tx bd assignments
  tg3: Reintroduce tg3_tx_ring_info
  ASIX: Use only 11 bits of header for data size
  ASIX: Simplify condition in rx_fixup()
  Fix cdc-phonet build
  bonding: reduce noise during init
  bonding: fix string comparison errors
  net: Audit drivers to identify those needing IFF_TX_SKB_SHARING cleared
  net: add IFF_SKB_TX_SHARED flag to priv_flags
  net: sock_sendmsg_nosec() is static
  forcedeth: fix vlans
  gianfar: fix bug caused by 87c288c6e9aa31720b72e2bc2d665e24e1653c3e
  gro: Only reset frag0 when skb can be pulled
  ...
Diffstat (limited to 'net')
| -rw-r--r-- | net/8021q/vlan_dev.c | 2 | ||||
| -rw-r--r-- | net/bluetooth/bnep/netdev.c | 1 | ||||
| -rw-r--r-- | net/core/dev.c | 4 | ||||
| -rw-r--r-- | net/core/pktgen.c | 8 | ||||
| -rw-r--r-- | net/ethernet/eth.c | 2 | ||||
| -rw-r--r-- | net/ipv4/devinet.c | 16 | ||||
| -rw-r--r-- | net/ipv6/addrconf.c | 2 | ||||
| -rw-r--r-- | net/l2tp/l2tp_eth.c | 2 | ||||
| -rw-r--r-- | net/mac80211/iface.c | 1 | ||||
| -rw-r--r-- | net/socket.c | 2 | ||||
| -rw-r--r-- | net/wireless/reg.c | 7 | 
11 files changed, 28 insertions, 19 deletions
diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c index 934e221c1d07..9d40a071d038 100644 --- a/net/8021q/vlan_dev.c +++ b/net/8021q/vlan_dev.c @@ -695,7 +695,7 @@ void vlan_setup(struct net_device *dev)  	ether_setup(dev);  	dev->priv_flags		|= IFF_802_1Q_VLAN; -	dev->priv_flags		&= ~IFF_XMIT_DST_RELEASE; +	dev->priv_flags		&= ~(IFF_XMIT_DST_RELEASE | IFF_TX_SKB_SHARING);  	dev->tx_queue_len	= 0;  	dev->netdev_ops		= &vlan_netdev_ops; diff --git a/net/bluetooth/bnep/netdev.c b/net/bluetooth/bnep/netdev.c index 8c100c9dae28..d4f5dff7c955 100644 --- a/net/bluetooth/bnep/netdev.c +++ b/net/bluetooth/bnep/netdev.c @@ -231,6 +231,7 @@ void bnep_net_setup(struct net_device *dev)  	dev->addr_len = ETH_ALEN;  	ether_setup(dev); +	dev->priv_flags &= ~IFF_TX_SKB_SHARING;  	dev->netdev_ops = &bnep_netdev_ops;  	dev->watchdog_timeo  = HZ * 2; diff --git a/net/core/dev.c b/net/core/dev.c index 9444c5cb4137..17d67b579beb 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -4497,10 +4497,10 @@ void __dev_set_rx_mode(struct net_device *dev)  		 */  		if (!netdev_uc_empty(dev) && !dev->uc_promisc) {  			__dev_set_promiscuity(dev, 1); -			dev->uc_promisc = 1; +			dev->uc_promisc = true;  		} else if (netdev_uc_empty(dev) && dev->uc_promisc) {  			__dev_set_promiscuity(dev, -1); -			dev->uc_promisc = 0; +			dev->uc_promisc = false;  		}  		if (ops->ndo_set_multicast_list) diff --git a/net/core/pktgen.c b/net/core/pktgen.c index f76079cd750c..e35a6fbb8110 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c @@ -1070,7 +1070,9 @@ static ssize_t pktgen_if_write(struct file *file,  		len = num_arg(&user_buffer[i], 10, &value);  		if (len < 0)  			return len; - +		if ((value > 0) && +		    (!(pkt_dev->odev->priv_flags & IFF_TX_SKB_SHARING))) +			return -ENOTSUPP;  		i += len;  		pkt_dev->clone_skb = value; @@ -3555,7 +3557,6 @@ static int pktgen_add_device(struct pktgen_thread *t, const char *ifname)  	pkt_dev->min_pkt_size = ETH_ZLEN;  	pkt_dev->max_pkt_size = ETH_ZLEN;  	pkt_dev->nfrags = 0; -	pkt_dev->clone_skb = pg_clone_skb_d;  	pkt_dev->delay = pg_delay_d;  	pkt_dev->count = pg_count_d;  	pkt_dev->sofar = 0; @@ -3563,7 +3564,6 @@ static int pktgen_add_device(struct pktgen_thread *t, const char *ifname)  	pkt_dev->udp_src_max = 9;  	pkt_dev->udp_dst_min = 9;  	pkt_dev->udp_dst_max = 9; -  	pkt_dev->vlan_p = 0;  	pkt_dev->vlan_cfi = 0;  	pkt_dev->vlan_id = 0xffff; @@ -3575,6 +3575,8 @@ static int pktgen_add_device(struct pktgen_thread *t, const char *ifname)  	err = pktgen_setup_dev(pkt_dev, ifname);  	if (err)  		goto out1; +	if (pkt_dev->odev->priv_flags & IFF_TX_SKB_SHARING) +		pkt_dev->clone_skb = pg_clone_skb_d;  	pkt_dev->entry = proc_create_data(ifname, 0600, pg_proc_dir,  					  &pktgen_if_fops, pkt_dev); diff --git a/net/ethernet/eth.c b/net/ethernet/eth.c index 5cffb63f481a..27997d35ebd3 100644 --- a/net/ethernet/eth.c +++ b/net/ethernet/eth.c @@ -231,6 +231,7 @@ EXPORT_SYMBOL(eth_header_parse);   * eth_header_cache - fill cache entry from neighbour   * @neigh: source neighbour   * @hh: destination cache entry + * @type: Ethernet type field   * Create an Ethernet header template from the neighbour.   */  int eth_header_cache(const struct neighbour *neigh, struct hh_cache *hh, __be16 type) @@ -339,6 +340,7 @@ void ether_setup(struct net_device *dev)  	dev->addr_len		= ETH_ALEN;  	dev->tx_queue_len	= 1000;	/* Ethernet wants good queues */  	dev->flags		= IFF_BROADCAST|IFF_MULTICAST; +	dev->priv_flags		= IFF_TX_SKB_SHARING;  	memset(dev->broadcast, 0xFF, ETH_ALEN); diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c index 37b3c188d8b3..bc19bd06dd00 100644 --- a/net/ipv4/devinet.c +++ b/net/ipv4/devinet.c @@ -1134,15 +1134,15 @@ static void inetdev_send_gratuitous_arp(struct net_device *dev,  					struct in_device *in_dev)  { -	struct in_ifaddr *ifa = in_dev->ifa_list; - -	if (!ifa) -		return; +	struct in_ifaddr *ifa; -	arp_send(ARPOP_REQUEST, ETH_P_ARP, -		 ifa->ifa_local, dev, -		 ifa->ifa_local, NULL, -		 dev->dev_addr, NULL); +	for (ifa = in_dev->ifa_list; ifa; +	     ifa = ifa->ifa_next) { +		arp_send(ARPOP_REQUEST, ETH_P_ARP, +			 ifa->ifa_local, dev, +			 ifa->ifa_local, NULL, +			 dev->dev_addr, NULL); +	}  }  /* Called only under RTNL semaphore */ diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index a06c53c14d84..a55500cc0b29 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -1481,6 +1481,8 @@ static void addrconf_join_anycast(struct inet6_ifaddr *ifp)  static void addrconf_leave_anycast(struct inet6_ifaddr *ifp)  {  	struct in6_addr addr; +	if (ifp->prefix_len == 127) /* RFC 6164 */ +		return;  	ipv6_addr_prefix(&addr, &ifp->addr, ifp->prefix_len);  	if (ipv6_addr_any(&addr))  		return; diff --git a/net/l2tp/l2tp_eth.c b/net/l2tp/l2tp_eth.c index a8193f52c13c..d2726a74597d 100644 --- a/net/l2tp/l2tp_eth.c +++ b/net/l2tp/l2tp_eth.c @@ -103,7 +103,7 @@ static struct net_device_ops l2tp_eth_netdev_ops = {  static void l2tp_eth_dev_setup(struct net_device *dev)  {  	ether_setup(dev); - +	dev->priv_flags &= ~IFF_TX_SKB_SHARING;  	dev->netdev_ops		= &l2tp_eth_netdev_ops;  	dev->destructor		= free_netdev;  } diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c index cd5fb40d3fd4..556e7e6ddf0a 100644 --- a/net/mac80211/iface.c +++ b/net/mac80211/iface.c @@ -698,6 +698,7 @@ static const struct net_device_ops ieee80211_monitorif_ops = {  static void ieee80211_if_setup(struct net_device *dev)  {  	ether_setup(dev); +	dev->priv_flags &= ~IFF_TX_SKB_SHARING;  	dev->netdev_ops = &ieee80211_dataif_ops;  	dev->destructor = free_netdev;  } diff --git a/net/socket.c b/net/socket.c index 26ed35c7751e..b1cbbcd92558 100644 --- a/net/socket.c +++ b/net/socket.c @@ -580,7 +580,7 @@ int sock_sendmsg(struct socket *sock, struct msghdr *msg, size_t size)  }  EXPORT_SYMBOL(sock_sendmsg); -int sock_sendmsg_nosec(struct socket *sock, struct msghdr *msg, size_t size) +static int sock_sendmsg_nosec(struct socket *sock, struct msghdr *msg, size_t size)  {  	struct kiocb iocb;  	struct sock_iocb siocb; diff --git a/net/wireless/reg.c b/net/wireless/reg.c index 1ad0f39fe091..02751dbc5a97 100644 --- a/net/wireless/reg.c +++ b/net/wireless/reg.c @@ -903,7 +903,7 @@ static bool ignore_reg_update(struct wiphy *wiphy,  	    initiator != NL80211_REGDOM_SET_BY_COUNTRY_IE &&  	    !is_world_regdom(last_request->alpha2)) {  		REG_DBG_PRINT("Ignoring regulatory request %s " -			      "since the driver requires its own regulaotry " +			      "since the driver requires its own regulatory "  			      "domain to be set first",  			      reg_initiator_name(initiator));  		return true; @@ -1125,12 +1125,13 @@ void wiphy_update_regulatory(struct wiphy *wiphy,  	enum ieee80211_band band;  	if (ignore_reg_update(wiphy, initiator)) -		goto out; +		return; +  	for (band = 0; band < IEEE80211_NUM_BANDS; band++) {  		if (wiphy->bands[band])  			handle_band(wiphy, band, initiator);  	} -out: +  	reg_process_beacons(wiphy);  	reg_process_ht_flags(wiphy);  	if (wiphy->reg_notifier)  |