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

Commit 116b23b0 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6

* 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6:
  [PATCH] Fix an offset error when reading the CS89x0 ADD_PORT register
  [PATCH] spidernet: poor network performance
  [PATCH] Spidernet: remove ETH_ZLEN check in earlier patch
  [PATCH] bonding: fix an oops when slave device does not provide get_stats
  [PATCH] drivers/net: SAA9730: Fix build error
  Revert "[PATCH] zd1211rw: Removed unneeded packed attributes"
  [PATCH] zd1211rw: Fix of a locking bug
  [PATCH] softmac: remove netif_tx_disable when scanning
  [PATCH] ieee80211: Fix kernel panic when QoS is enabled
parents b6ef977b 9e1402ab
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1769,8 +1769,8 @@ config VIA_RHINE_NAPI
	  information.

config LAN_SAA9730
	bool "Philips SAA9730 Ethernet support (EXPERIMENTAL)"
	depends on NET_PCI && EXPERIMENTAL && MIPS
	bool "Philips SAA9730 Ethernet support"
	depends on NET_PCI && PCI && MIPS_ATLAS
	help
	  The SAA9730 is a combined multimedia and peripheral controller used
	  in thin clients, Internet access terminals, and diskless
+36 −27
Original line number Diff line number Diff line
@@ -1336,6 +1336,13 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
		goto err_undo_flags;
	}

	if (slave_dev->get_stats == NULL) {
		printk(KERN_NOTICE DRV_NAME
			": %s: the driver for slave device %s does not provide "
			"get_stats function, network statistics will be "
			"inaccurate.\n", bond_dev->name, slave_dev->name);
	}

	new_slave = kmalloc(sizeof(struct slave), GFP_KERNEL);
	if (!new_slave) {
		res = -ENOMEM;
@@ -3605,6 +3612,7 @@ static struct net_device_stats *bond_get_stats(struct net_device *bond_dev)
	read_lock_bh(&bond->lock);

	bond_for_each_slave(bond, slave, i) {
		if (slave->dev->get_stats) {
			sstats = slave->dev->get_stats(slave->dev);

			stats->rx_packets += sstats->rx_packets;
@@ -3633,6 +3641,7 @@ static struct net_device_stats *bond_get_stats(struct net_device *bond_dev)
			stats->tx_heartbeat_errors += sstats->tx_heartbeat_errors;
			stats->tx_window_errors += sstats->tx_window_errors;
		}
	}

	read_unlock_bh(&bond->lock);

+2 −2
Original line number Diff line number Diff line
@@ -588,10 +588,10 @@ cs89x0_probe1(struct net_device *dev, int ioaddr, int modular)
				goto out2;
			}
	}
	printk(KERN_DEBUG "PP_addr at %x[%x]: 0x%x\n",
			ioaddr, ADD_PORT, readword(ioaddr, ADD_PORT));

	ioaddr &= ~3;
	printk(KERN_DEBUG "PP_addr at %x[%x]: 0x%x\n",
			ioaddr, ADD_PORT, readword(ioaddr, ADD_PORT));
	writeword(ioaddr, ADD_PORT, PP_ChipID);

	tmp = readword(ioaddr, DATA_PORT);
+6 −14
Original line number Diff line number Diff line
@@ -644,20 +644,12 @@ spider_net_prepare_tx_descr(struct spider_net_card *card,
	struct spider_net_descr *descr;
	dma_addr_t buf;
	unsigned long flags;
	int length;

	length = skb->len;
	if (length < ETH_ZLEN) {
		if (skb_pad(skb, ETH_ZLEN-length))
			return 0;
		length = ETH_ZLEN;
	}

	buf = pci_map_single(card->pdev, skb->data, length, PCI_DMA_TODEVICE);
	buf = pci_map_single(card->pdev, skb->data, skb->len, PCI_DMA_TODEVICE);
	if (pci_dma_mapping_error(buf)) {
		if (netif_msg_tx_err(card) && net_ratelimit())
			pr_err("could not iommu-map packet (%p, %i). "
				  "Dropping packet\n", skb->data, length);
				  "Dropping packet\n", skb->data, skb->len);
		card->spider_stats.tx_iommu_map_error++;
		return -ENOMEM;
	}
@@ -667,7 +659,7 @@ spider_net_prepare_tx_descr(struct spider_net_card *card,
	card->tx_chain.head = descr->next;

	descr->buf_addr = buf;
	descr->buf_size = length;
	descr->buf_size = skb->len;
	descr->next_descr_addr = 0;
	descr->skb = skb;
	descr->data_status = 0;
@@ -802,8 +794,8 @@ spider_net_release_tx_chain(struct spider_net_card *card, int brutal)

		/* unmap the skb */
		if (skb) {
			int len = skb->len < ETH_ZLEN ? ETH_ZLEN : skb->len;
			pci_unmap_single(card->pdev, buf_addr, len, PCI_DMA_TODEVICE);
			pci_unmap_single(card->pdev, buf_addr, skb->len,
					PCI_DMA_TODEVICE);
			dev_kfree_skb(skb);
		}
	}
@@ -1641,7 +1633,7 @@ spider_net_enable_card(struct spider_net_card *card)
			     SPIDER_NET_INT2_MASK_VALUE);

	spider_net_write_reg(card, SPIDER_NET_GDTDMACCNTR,
			     SPIDER_NET_GDTBSTA | SPIDER_NET_GDTDCEIDIS);
			     SPIDER_NET_GDTBSTA);
}

/**
+4 −4
Original line number Diff line number Diff line
@@ -24,7 +24,7 @@
#ifndef _SPIDER_NET_H
#define _SPIDER_NET_H

#define VERSION "1.1 A"
#define VERSION "1.6 A"

#include "sungem_phy.h"

@@ -217,8 +217,7 @@ extern char spider_net_driver_name[];
#define SPIDER_NET_GDTBSTA             0x00000300
#define SPIDER_NET_GDTDCEIDIS          0x00000002
#define SPIDER_NET_DMA_TX_VALUE        SPIDER_NET_TX_DMA_EN | \
                                       SPIDER_NET_GDTBSTA | \
                                       SPIDER_NET_GDTDCEIDIS
                                       SPIDER_NET_GDTBSTA

#define SPIDER_NET_DMA_TX_FEND_VALUE	0x00030003

@@ -328,7 +327,8 @@ enum spider_net_int2_status {
	SPIDER_NET_GRISPDNGINT
};

#define SPIDER_NET_TXINT	( (1 << SPIDER_NET_GDTFDCINT) )
#define SPIDER_NET_TXINT	( (1 << SPIDER_NET_GDTFDCINT) | \
                             (1 << SPIDER_NET_GDTDCEINT) )

/* We rely on flagged descriptor interrupts */
#define SPIDER_NET_RXINT	( (1 << SPIDER_NET_GDAFDCINT) )
Loading