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

Commit e5e9743b authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6

Conflicts:
	net/core/dev.c
parents a0f82f64 775d8d93
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -3920,8 +3920,8 @@ NETWORKING [GENERAL]
P:	David S. Miller
M:	davem@davemloft.net
L:	netdev@vger.kernel.org
W:	http://linux-net.osdl.org/
T:	git kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6.git
W:	http://www.linuxfoundation.org/en/Net
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.git
S:	Maintained
F:	net/
F:	include/net/
@@ -3962,6 +3962,13 @@ F: net/wireless/
F:	include/net/ieee80211*
F:	include/net/wireless.h

NETWORKING DRIVERS
L:	netdev@vger.kernel.org
W:	http://www.linuxfoundation.org/en/Net
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.git
S:	Odd Fixes
F:	drivers/net/

NETXEN (1/10) GbE SUPPORT
P:	Dhananjay Phadke
M:	dhananjay@netxen.com
+2 −2
Original line number Diff line number Diff line
@@ -28,9 +28,9 @@ if NETDEVICES

config COMPAT_NET_DEV_OPS
       default y
       bool "Enable older network device API compatiablity"
       bool "Enable older network device API compatibility"
       ---help---
          This option enables kernel compatiability with older network devices
          This option enables kernel compatibility with older network devices
          that do not use net_device_ops interface.

	  If unsure, say Y.
+20 −24
Original line number Diff line number Diff line
@@ -1117,8 +1117,8 @@ static void cxgb_down(struct adapter *adapter)
	spin_unlock_irq(&adapter->work_lock);

	free_irq_resources(adapter);
	flush_workqueue(cxgb3_wq);	/* wait for external IRQ handler */
	quiesce_rx(adapter);
	flush_workqueue(cxgb3_wq);	/* wait for external IRQ handler */
}

static void schedule_chk_task(struct adapter *adap)
@@ -1187,6 +1187,9 @@ static int offload_close(struct t3cdev *tdev)

	sysfs_remove_group(&tdev->lldev->dev.kobj, &offload_attr_group);

	/* Flush work scheduled while releasing TIDs */
	flush_scheduled_work();

	tdev->lldev = NULL;
	cxgb3_set_dummy_ops(tdev);
	t3_tp_set_offload_mode(adapter, 0);
@@ -1232,6 +1235,10 @@ static int cxgb_close(struct net_device *dev)
	struct port_info *pi = netdev_priv(dev);
	struct adapter *adapter = pi->adapter;

	
	if (!adapter->open_device_map)
		return 0;

	/* Stop link fault interrupts */
	t3_xgm_intr_disable(adapter, pi->port_id);
	t3_read_reg(adapter, A_XGM_INT_STATUS + pi->mac.offset);
@@ -1247,8 +1254,7 @@ static int cxgb_close(struct net_device *dev)
	spin_unlock_irq(&adapter->work_lock);

	if (!(adapter->open_device_map & PORT_MASK))
		cancel_rearming_delayed_workqueue(cxgb3_wq,
						  &adapter->adap_check_task);
		cancel_delayed_work_sync(&adapter->adap_check_task);

	if (!adapter->open_device_map)
		cxgb_down(adapter);
@@ -2493,6 +2499,7 @@ static void check_link_status(struct adapter *adapter)

		spin_lock_irq(&adapter->work_lock);
		if (p->link_fault) {
			t3_link_fault(adapter, i);
			spin_unlock_irq(&adapter->work_lock);
			continue;
		}
@@ -2554,8 +2561,6 @@ static void t3_adap_check_task(struct work_struct *work)

	adapter->check_task_cnt++;

	/* Check link status for PHYs without interrupts */
	if (p->linkpoll_period)
	check_link_status(adapter);

	/* Accumulate MAC stats if needed */
@@ -2680,21 +2685,6 @@ void t3_os_ext_intr_handler(struct adapter *adapter)
	spin_unlock(&adapter->work_lock);
}

static void link_fault_task(struct work_struct *work)
{
	struct adapter *adapter = container_of(work, struct adapter,
					       link_fault_handler_task);
	int i;

	for_each_port(adapter, i) {
		struct net_device *netdev = adapter->port[i];
		struct port_info *pi = netdev_priv(netdev);

		if (pi->link_fault)
			t3_link_fault(adapter, i);
	}
}

void t3_os_link_fault_handler(struct adapter *adapter, int port_id)
{
	struct net_device *netdev = adapter->port[port_id];
@@ -2702,7 +2692,6 @@ void t3_os_link_fault_handler(struct adapter *adapter, int port_id)

	spin_lock(&adapter->work_lock);
	pi->link_fault = 1;
	queue_work(cxgb3_wq, &adapter->link_fault_handler_task);
	spin_unlock(&adapter->work_lock);
}

@@ -2838,6 +2827,9 @@ static pci_ers_result_t t3_io_error_detected(struct pci_dev *pdev,
	struct adapter *adapter = pci_get_drvdata(pdev);
	int ret;

	if (state == pci_channel_io_perm_failure)
		return PCI_ERS_RESULT_DISCONNECT;

	ret = t3_adapter_error(adapter, 0);

	/* Request a slot reset. */
@@ -2932,8 +2924,13 @@ static int __devinit cxgb_enable_msix(struct adapter *adap)
	while ((err = pci_enable_msix(adap->pdev, entries, vectors)) > 0)
		vectors = err;

	if (!err && vectors < (adap->params.nports + 1))
	if (err < 0)
		pci_disable_msix(adap->pdev);

	if (!err && vectors < (adap->params.nports + 1)) {
		pci_disable_msix(adap->pdev);
		err = -1;
	}

	if (!err) {
		for (i = 0; i < vectors; ++i)
@@ -3082,7 +3079,6 @@ static int __devinit init_one(struct pci_dev *pdev,

	INIT_LIST_HEAD(&adapter->adapter_list);
	INIT_WORK(&adapter->ext_intr_handler_task, ext_intr_task);
	INIT_WORK(&adapter->link_fault_handler_task, link_fault_task);
	INIT_WORK(&adapter->fatal_error_handler_task, fatal_error_task);
	INIT_DELAYED_WORK(&adapter->adap_check_task, t3_adap_check_task);

+1 −10
Original line number Diff line number Diff line
@@ -1202,7 +1202,6 @@ void t3_link_changed(struct adapter *adapter, int port_id)
	struct cphy *phy = &pi->phy;
	struct cmac *mac = &pi->mac;
	struct link_config *lc = &pi->link_config;
	int force_link_down = 0;

	phy->ops->get_link_status(phy, &link_ok, &speed, &duplex, &fc);

@@ -1218,14 +1217,9 @@ void t3_link_changed(struct adapter *adapter, int port_id)
		status = t3_read_reg(adapter, A_XGM_INT_STATUS + mac->offset);
		if (status & F_LINKFAULTCHANGE) {
			mac->stats.link_faults++;
			force_link_down = 1;
			pi->link_fault = 1;
		}
		t3_open_rx_traffic(mac, rx_cfg, rx_hash_high, rx_hash_low);

		if (force_link_down) {
			t3_os_link_fault_handler(adapter, port_id);
			return;
		}
	}

	if (lc->requested_fc & PAUSE_AUTONEG)
@@ -1292,9 +1286,6 @@ void t3_link_fault(struct adapter *adapter, int port_id)
		/* Account link faults only when the phy reports a link up */
		if (link_ok)
			mac->stats.link_faults++;

		msleep(1000);
		t3_os_link_fault_handler(adapter, port_id);
	} else {
		if (link_ok)
			t3_write_reg(adapter, A_XGM_XAUI_ACT_CTRL + mac->offset,
+3 −3
Original line number Diff line number Diff line
@@ -3835,7 +3835,6 @@ static bool e1000_clean_tx_irq(struct e1000_adapter *adapter,
	struct e1000_buffer *buffer_info;
	unsigned int i, eop;
	unsigned int count = 0;
	bool cleaned = false;
	unsigned int total_tx_bytes=0, total_tx_packets=0;

	i = tx_ring->next_to_clean;
@@ -3844,7 +3843,8 @@ static bool e1000_clean_tx_irq(struct e1000_adapter *adapter,

	while ((eop_desc->upper.data & cpu_to_le32(E1000_TXD_STAT_DD)) &&
	       (count < tx_ring->count)) {
		for (cleaned = false; !cleaned; count++) {
		bool cleaned = false;
		for ( ; !cleaned; count++) {
			tx_desc = E1000_TX_DESC(*tx_ring, i);
			buffer_info = &tx_ring->buffer_info[i];
			cleaned = (i == eop);
@@ -3872,7 +3872,7 @@ static bool e1000_clean_tx_irq(struct e1000_adapter *adapter,
	tx_ring->next_to_clean = i;

#define TX_WAKE_THRESHOLD 32
	if (unlikely(cleaned && netif_carrier_ok(netdev) &&
	if (unlikely(count && netif_carrier_ok(netdev) &&
		     E1000_DESC_UNUSED(tx_ring) >= TX_WAKE_THRESHOLD)) {
		/* Make sure that anybody stopping the queue after this
		 * sees the new next_to_clean.
Loading