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

Commit a01af8e4 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (27 commits)
  af_unix: limit recursion level
  pch_gbe driver: The wrong of initializer entry
  pch_gbe dreiver: chang author
  ucc_geth: fix ucc halt problem in half duplex mode
  inet: Fix __inet_inherit_port() to correctly increment bsockets and num_owners
  ehea: Add some info messages and fix an issue
  hso: fix disable_net
  NET: wan/x25_asy, move lapb_unregister to x25_asy_close_tty
  cxgb4vf: fix setting unicast/multicast addresses ...
  net, ppp: Report correct error code if unit allocation failed
  DECnet: don't leak uninitialized stack byte
  au1000_eth: fix invalid address accessing the MAC enable register
  dccp: fix error in updating the GAR
  tcp: restrict net.ipv4.tcp_adv_win_scale (#20312)
  netns: Don't leak others' openreq-s in proc
  Net: ceph: Makefile: Remove unnessary code
  vhost/net: fix rcu check usage
  econet: fix CVE-2010-3848
  econet: fix CVE-2010-3850
  econet: disallow NULL remote addr for sendmsg(), fixes CVE-2010-3849
  ...
parents a9735c81 25888e30
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -144,6 +144,7 @@ tcp_adv_win_scale - INTEGER
	Count buffering overhead as bytes/2^tcp_adv_win_scale
	(if tcp_adv_win_scale > 0) or bytes-bytes/2^(-tcp_adv_win_scale),
	if it is <= 0.
	Possible values are [-31, 31], inclusive.
	Default: 2

tcp_allowed_congestion_control - STRING
+4 −3
Original line number Diff line number Diff line
@@ -1627,7 +1627,7 @@ __setup("icn=", icn_setup);
static int __init icn_init(void)
{
	char *p;
	char rev[10];
	char rev[20];

	memset(&dev, 0, sizeof(icn_dev));
	dev.memaddr = (membase & 0x0ffc000);
@@ -1637,8 +1637,9 @@ static int __init icn_init(void)
	spin_lock_init(&dev.devlock);

	if ((p = strchr(revision, ':'))) {
		strcpy(rev, p + 1);
		strncpy(rev, p + 1, 20);
		p = strchr(rev, '$');
		if (p)
			*p = 0;
	} else
		strcpy(rev, " ??? ");
+3 −3
Original line number Diff line number Diff line
@@ -2543,10 +2543,10 @@ config PCH_GBE
	depends on PCI
	select MII
	---help---
	  This is a gigabit ethernet driver for Topcliff PCH.
	  Topcliff PCH is the platform controller hub that is used in Intel's
	  This is a gigabit ethernet driver for EG20T PCH.
	  EG20T PCH is the platform controller hub that is used in Intel's
	  general embedded platform.
	  Topcliff PCH has Gigabit Ethernet interface.
	  EG20T PCH has Gigabit Ethernet interface.
	  Using this interface, it is able to access system devices connected
	  to Gigabit Ethernet.
	  This driver enables Gigabit Ethernet function.
+5 −5
Original line number Diff line number Diff line
@@ -155,10 +155,10 @@ static void au1000_enable_mac(struct net_device *dev, int force_reset)
	spin_lock_irqsave(&aup->lock, flags);

	if (force_reset || (!aup->mac_enabled)) {
		writel(MAC_EN_CLOCK_ENABLE, &aup->enable);
		writel(MAC_EN_CLOCK_ENABLE, aup->enable);
		au_sync_delay(2);
		writel((MAC_EN_RESET0 | MAC_EN_RESET1 | MAC_EN_RESET2
				| MAC_EN_CLOCK_ENABLE), &aup->enable);
				| MAC_EN_CLOCK_ENABLE), aup->enable);
		au_sync_delay(2);

		aup->mac_enabled = 1;
@@ -503,9 +503,9 @@ static void au1000_reset_mac_unlocked(struct net_device *dev)

	au1000_hard_stop(dev);

	writel(MAC_EN_CLOCK_ENABLE, &aup->enable);
	writel(MAC_EN_CLOCK_ENABLE, aup->enable);
	au_sync_delay(2);
	writel(0, &aup->enable);
	writel(0, aup->enable);
	au_sync_delay(2);

	aup->tx_full = 0;
@@ -1119,7 +1119,7 @@ static int __devinit au1000_probe(struct platform_device *pdev)
	/* set a random MAC now in case platform_data doesn't provide one */
	random_ether_addr(dev->dev_addr);

	writel(0, &aup->enable);
	writel(0, aup->enable);
	aup->mac_enabled = 0;

	pd = pdev->dev.platform_data;
+45 −28
Original line number Diff line number Diff line
@@ -816,17 +816,21 @@ static struct net_device_stats *cxgb4vf_get_stats(struct net_device *dev)
}

/*
 * Collect up to maxaddrs worth of a netdevice's unicast addresses into an
 * array of addrss pointers and return the number collected.
 * Collect up to maxaddrs worth of a netdevice's unicast addresses, starting
 * at a specified offset within the list, into an array of addrss pointers and
 * return the number collected.
 */
static inline int collect_netdev_uc_list_addrs(const struct net_device *dev,
static inline unsigned int collect_netdev_uc_list_addrs(const struct net_device *dev,
							const u8 **addr,
							unsigned int offset,
							unsigned int maxaddrs)
{
	unsigned int index = 0;
	unsigned int naddr = 0;
	const struct netdev_hw_addr *ha;

	for_each_dev_addr(dev, ha) {
	for_each_dev_addr(dev, ha)
		if (index++ >= offset) {
			addr[naddr++] = ha->addr;
			if (naddr >= maxaddrs)
				break;
@@ -835,17 +839,21 @@ static inline int collect_netdev_uc_list_addrs(const struct net_device *dev,
}

/*
 * Collect up to maxaddrs worth of a netdevice's multicast addresses into an
 * array of addrss pointers and return the number collected.
 * Collect up to maxaddrs worth of a netdevice's multicast addresses, starting
 * at a specified offset within the list, into an array of addrss pointers and
 * return the number collected.
 */
static inline int collect_netdev_mc_list_addrs(const struct net_device *dev,
static inline unsigned int collect_netdev_mc_list_addrs(const struct net_device *dev,
							const u8 **addr,
							unsigned int offset,
							unsigned int maxaddrs)
{
	unsigned int index = 0;
	unsigned int naddr = 0;
	const struct netdev_hw_addr *ha;

	netdev_for_each_mc_addr(ha, dev) {
	netdev_for_each_mc_addr(ha, dev)
		if (index++ >= offset) {
			addr[naddr++] = ha->addr;
			if (naddr >= maxaddrs)
				break;
@@ -862,16 +870,20 @@ static int set_addr_filters(const struct net_device *dev, bool sleep)
	u64 mhash = 0;
	u64 uhash = 0;
	bool free = true;
	u16 filt_idx[7];
	unsigned int offset, naddr;
	const u8 *addr[7];
	int ret, naddr = 0;
	int ret;
	const struct port_info *pi = netdev_priv(dev);

	/* first do the secondary unicast addresses */
	naddr = collect_netdev_uc_list_addrs(dev, addr, ARRAY_SIZE(addr));
	if (naddr > 0) {
	for (offset = 0; ; offset += naddr) {
		naddr = collect_netdev_uc_list_addrs(dev, addr, offset,
						     ARRAY_SIZE(addr));
		if (naddr == 0)
			break;

		ret = t4vf_alloc_mac_filt(pi->adapter, pi->viid, free,
					  naddr, addr, filt_idx, &uhash, sleep);
					  naddr, addr, NULL, &uhash, sleep);
		if (ret < 0)
			return ret;

@@ -879,12 +891,17 @@ static int set_addr_filters(const struct net_device *dev, bool sleep)
	}

	/* next set up the multicast addresses */
	naddr = collect_netdev_mc_list_addrs(dev, addr, ARRAY_SIZE(addr));
	if (naddr > 0) {
	for (offset = 0; ; offset += naddr) {
		naddr = collect_netdev_mc_list_addrs(dev, addr, offset,
						     ARRAY_SIZE(addr));
		if (naddr == 0)
			break;

		ret = t4vf_alloc_mac_filt(pi->adapter, pi->viid, free,
					  naddr, addr, filt_idx, &mhash, sleep);
					  naddr, addr, NULL, &mhash, sleep);
		if (ret < 0)
			return ret;
		free = false;
	}

	return t4vf_set_addr_hash(pi->adapter, pi->viid, uhash != 0,
Loading