* [PATCH 00/26] e100, e1000, ixgb updates
@ 2006-08-29 16:41 Kok, Auke
2006-08-29 16:44 ` [PATCH 02/26] e1000: IRQ resources cleanup Kok, Auke
` (26 more replies)
0 siblings, 27 replies; 44+ messages in thread
From: Kok, Auke @ 2006-08-29 16:41 UTC (permalink / raw)
To: Garzik, Jeff
Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Kok, Auke,
Ronciak, John
Hi,
Here are updates targeted to branch #upstream from netdev-2.6,
including updates to e100, e1000 and ixgb.
These changes are available through git.
git pull git://lost.foo-projects.org/~ahkok/git/netdev-2.6 upstream
and against
netdev-2.6#upstream 699a71238856b19091503c671bac8abb1e3f9a3a
Summary:
Vasily Averin <vvs@sw.ru>
e1000: IRQ resources cleanup
e1000: e1000_probe resources cleanup
e1000: ring buffers resources cleanup
Jesse Brandeburg <jesse.brandeburg@intel.com>
e1000: unify WoL capability detection code
e1000: Add PCI ID 0x10a4 for our new 4-port PCI-Express device
ixgb: Set a constant blink rate for ixgb adapter identify (1sec on, 1sec off)
ixgb: Cache-align all TX components of the adapter struct.
ixgb: Add buffer_info and test like e1000 has.
Christoph Hellwig <hch@lst.de>
e1000: clean up skb allocation code, patch submitted by Christoph
Jeff Kirsher <jeffrey.t.kirsher@intel.com>
e1000: Deprecate mii-tool SIOCMIIREG ioctl
Auke Kok <auke-jan.h.kok@intel.com>
e1000: Whitespace cleanup, cosmetic changes
e1000: error out if we cannot enable PCI device on resume
e1000: remove unused part_num reading code
e1000: Use module param array code
e1000: Increment driver version to 7.2.7-k2
e100: Convert e100 to use netdev_alloc_skb().
e100: reduce time under spinlock
e100: remove skb->dev assignment
e100: increment version to 3.5.16-k2
ixgb: Convert dev_alloc_skb to netdev_alloc_skb.
ixgb: convert dev->priv to netdev_priv(dev).
ixgb: recalculate after how many descriptors to wake the queue
ixgb: remove skb->dev assignment
ixgb: Increment version to 1.0.112-k2
Linas Vepstas <linas@austin.ibm.com>
e100: fix error recovery
ixgb: Add PCI Error recovery callbacks
Cheers,
Auke
---
drivers/net/e100.c | 12
drivers/net/e1000/e1000.h | 6
drivers/net/e1000/e1000_ethtool.c | 219 ++++---
drivers/net/e1000/e1000_hw.c | 1059 ++++++++++++++++++--------------------
drivers/net/e1000/e1000_hw.h | 26
drivers/net/e1000/e1000_main.c | 214 +++----
drivers/net/e1000/e1000_param.c | 161 +++--
drivers/net/ixgb/ixgb.h | 5
drivers/net/ixgb/ixgb_ethtool.c | 6
drivers/net/ixgb/ixgb_main.c | 140 ++++-
10 files changed, 981 insertions(+), 867 deletions(-)
---
Auke Kok <auke-jan.h.kok@intel.com>
^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH 02/26] e1000: IRQ resources cleanup
2006-08-29 16:41 [PATCH 00/26] e100, e1000, ixgb updates Kok, Auke
@ 2006-08-29 16:44 ` Kok, Auke
2006-08-29 16:44 ` [PATCH 03/26] e1000: e1000_probe " Kok, Auke
` (25 subsequent siblings)
26 siblings, 0 replies; 44+ messages in thread
From: Kok, Auke @ 2006-08-29 16:44 UTC (permalink / raw)
To: Garzik, Jeff
Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Kok, Auke,
Ronciak, John
irq leak was found in 2.6.18-rc4 and e1000 7.2.7 from sourceforge: if
e1000_up fails in e1000_open() we do not free allocated irq
Signed-off-by: Vasily Averin <vvs@sw.ru>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
---
drivers/net/e1000/e1000_main.c | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index 610a0cd..354d778 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -1207,7 +1207,7 @@ e1000_open(struct net_device *netdev)
err = e1000_request_irq(adapter);
if (err)
- goto err_up;
+ goto err_req_irq;
e1000_power_up_phy(adapter);
@@ -1228,6 +1228,9 @@ e1000_open(struct net_device *netdev)
return E1000_SUCCESS;
err_up:
+ e1000_power_down_phy(adapter);
+ e1000_free_irq(adapter);
+err_req_irq:
e1000_free_all_rx_resources(adapter);
err_setup_rx:
e1000_free_all_tx_resources(adapter);
---
Auke Kok <auke-jan.h.kok@intel.com>
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 03/26] e1000: e1000_probe resources cleanup
2006-08-29 16:41 [PATCH 00/26] e100, e1000, ixgb updates Kok, Auke
2006-08-29 16:44 ` [PATCH 02/26] e1000: IRQ resources cleanup Kok, Auke
@ 2006-08-29 16:44 ` Kok, Auke
2006-08-29 16:44 ` [PATCH 04/26] e1000: ring buffers " Kok, Auke
` (24 subsequent siblings)
26 siblings, 0 replies; 44+ messages in thread
From: Kok, Auke @ 2006-08-29 16:44 UTC (permalink / raw)
To: Garzik, Jeff
Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Kok, Auke,
Ronciak, John
Fix resources cleanup in e1000_probe()
Signed-off-by: Vasily Averin <vvs@sw.ru>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
---
drivers/net/e1000/e1000_main.c | 44 +++++++++++++++++++++++++---------------
1 files changed, 28 insertions(+), 16 deletions(-)
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index 354d778..c273b45 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -695,21 +695,20 @@ e1000_probe(struct pci_dev *pdev,
if ((err = pci_set_dma_mask(pdev, DMA_32BIT_MASK)) &&
(err = pci_set_consistent_dma_mask(pdev, DMA_32BIT_MASK))) {
E1000_ERR("No usable DMA configuration, aborting\n");
- return err;
+ goto err_dma;
}
pci_using_dac = 0;
}
if ((err = pci_request_regions(pdev, e1000_driver_name)))
- return err;
+ goto err_pci_reg;
pci_set_master(pdev);
+ err = -ENOMEM;
netdev = alloc_etherdev(sizeof(struct e1000_adapter));
- if (!netdev) {
- err = -ENOMEM;
+ if (!netdev)
goto err_alloc_etherdev;
- }
SET_MODULE_OWNER(netdev);
SET_NETDEV_DEV(netdev, &pdev->dev);
@@ -724,11 +723,10 @@ e1000_probe(struct pci_dev *pdev,
mmio_start = pci_resource_start(pdev, BAR_0);
mmio_len = pci_resource_len(pdev, BAR_0);
+ err = -EIO;
adapter->hw.hw_addr = ioremap(mmio_start, mmio_len);
- if (!adapter->hw.hw_addr) {
- err = -EIO;
+ if (!adapter->hw.hw_addr)
goto err_ioremap;
- }
for (i = BAR_1; i <= BAR_5; i++) {
if (pci_resource_len(pdev, i) == 0)
@@ -773,6 +771,7 @@ e1000_probe(struct pci_dev *pdev,
if ((err = e1000_sw_init(adapter)))
goto err_sw_init;
+ err = -EIO;
/* Flash BAR mapping must happen after e1000_sw_init
* because it depends on mac_type */
if ((adapter->hw.mac_type == e1000_ich8lan) &&
@@ -780,13 +779,11 @@ e1000_probe(struct pci_dev *pdev,
flash_start = pci_resource_start(pdev, 1);
flash_len = pci_resource_len(pdev, 1);
adapter->hw.flash_address = ioremap(flash_start, flash_len);
- if (!adapter->hw.flash_address) {
- err = -EIO;
+ if (!adapter->hw.flash_address)
goto err_flashmap;
- }
}
- if ((err = e1000_check_phy_reset_block(&adapter->hw)))
+ if (e1000_check_phy_reset_block(&adapter->hw))
DPRINTK(PROBE, INFO, "PHY reset is blocked due to SOL/IDER session.\n");
/* if ksp3, indicate if it's port a being setup */
@@ -829,7 +826,7 @@ e1000_probe(struct pci_dev *pdev,
if (e1000_init_eeprom_params(&adapter->hw)) {
E1000_ERR("EEPROM initialization failed\n");
- return -EIO;
+ goto err_eeprom;
}
/* before reading the EEPROM, reset the controller to
@@ -841,7 +838,6 @@ e1000_probe(struct pci_dev *pdev,
if (e1000_validate_eeprom_checksum(&adapter->hw) < 0) {
DPRINTK(PROBE, ERR, "The EEPROM Checksum Is Not Valid\n");
- err = -EIO;
goto err_eeprom;
}
@@ -854,7 +850,6 @@ e1000_probe(struct pci_dev *pdev,
if (!is_valid_ether_addr(netdev->perm_addr)) {
DPRINTK(PROBE, ERR, "Invalid MAC Address\n");
- err = -EIO;
goto err_eeprom;
}
@@ -963,16 +958,33 @@ e1000_probe(struct pci_dev *pdev,
return 0;
err_register:
+ e1000_release_hw_control(adapter);
+err_eeprom:
+ if (!e1000_check_phy_reset_block(&adapter->hw))
+ e1000_phy_hw_reset(&adapter->hw);
+
if (adapter->hw.flash_address)
iounmap(adapter->hw.flash_address);
err_flashmap:
+#ifdef CONFIG_E1000_NAPI
+ for (i = 0; i < adapter->num_rx_queues; i++)
+ dev_put(&adapter->polling_netdev[i]);
+#endif
+
+ kfree(adapter->tx_ring);
+ kfree(adapter->rx_ring);
+#ifdef CONFIG_E1000_NAPI
+ kfree(adapter->polling_netdev);
+#endif
err_sw_init:
-err_eeprom:
iounmap(adapter->hw.hw_addr);
err_ioremap:
free_netdev(netdev);
err_alloc_etherdev:
pci_release_regions(pdev);
+err_pci_reg:
+err_dma:
+ pci_disable_device(pdev);
return err;
}
---
Auke Kok <auke-jan.h.kok@intel.com>
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 04/26] e1000: ring buffers resources cleanup
2006-08-29 16:41 [PATCH 00/26] e100, e1000, ixgb updates Kok, Auke
2006-08-29 16:44 ` [PATCH 02/26] e1000: IRQ resources cleanup Kok, Auke
2006-08-29 16:44 ` [PATCH 03/26] e1000: e1000_probe " Kok, Auke
@ 2006-08-29 16:44 ` Kok, Auke
2006-08-29 16:44 ` [PATCH 05/26] e1000: error out if we cannot enable PCI device on resume Kok, Auke
` (23 subsequent siblings)
26 siblings, 0 replies; 44+ messages in thread
From: Kok, Auke @ 2006-08-29 16:44 UTC (permalink / raw)
To: Garzik, Jeff
Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Kok, Auke,
Ronciak, John
Memory leak was found in 2.6.18-rc4 and e1000 7.2.7 from sourceforge: We
should free resources allocated for previous rings if following allocation
fails.
Signed-off-by: Vasily Averin <vvs@sw.ru>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
---
drivers/net/e1000/e1000_main.c | 14 ++++++--------
1 files changed, 6 insertions(+), 8 deletions(-)
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index c273b45..426811a 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -1395,10 +1395,6 @@ setup_tx_desc_die:
* (Descriptors) for all queues
* @adapter: board private structure
*
- * If this function returns with an error, then it's possible one or
- * more of the rings is populated (while the rest are not). It is the
- * callers duty to clean those orphaned rings.
- *
* Return 0 on success, negative on failure
**/
@@ -1412,6 +1408,9 @@ e1000_setup_all_tx_resources(struct e100
if (err) {
DPRINTK(PROBE, ERR,
"Allocation for Tx Queue %u failed\n", i);
+ for (i-- ; i >= 0; i--)
+ e1000_free_tx_resources(adapter,
+ &adapter->tx_ring[i]);
break;
}
}
@@ -1651,10 +1650,6 @@ setup_rx_desc_die:
* (Descriptors) for all queues
* @adapter: board private structure
*
- * If this function returns with an error, then it's possible one or
- * more of the rings is populated (while the rest are not). It is the
- * callers duty to clean those orphaned rings.
- *
* Return 0 on success, negative on failure
**/
@@ -1668,6 +1663,9 @@ e1000_setup_all_rx_resources(struct e100
if (err) {
DPRINTK(PROBE, ERR,
"Allocation for Rx Queue %u failed\n", i);
+ for (i-- ; i >= 0; i--)
+ e1000_free_rx_resources(adapter,
+ &adapter->rx_ring[i]);
break;
}
}
---
Auke Kok <auke-jan.h.kok@intel.com>
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 05/26] e1000: error out if we cannot enable PCI device on resume
2006-08-29 16:41 [PATCH 00/26] e100, e1000, ixgb updates Kok, Auke
` (2 preceding siblings ...)
2006-08-29 16:44 ` [PATCH 04/26] e1000: ring buffers " Kok, Auke
@ 2006-08-29 16:44 ` Kok, Auke
2006-08-29 16:44 ` [PATCH 06/26] e1000: remove unused part_num reading code Kok, Auke
` (22 subsequent siblings)
26 siblings, 0 replies; 44+ messages in thread
From: Kok, Auke @ 2006-08-29 16:44 UTC (permalink / raw)
To: Garzik, Jeff
Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Kok, Auke,
Ronciak, John
Do not ignore errors returned by pci_enable_device, instead error out.
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
---
drivers/net/e1000/e1000_main.c | 7 +++++--
1 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index 426811a..630fe60 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -4709,11 +4709,14 @@ e1000_resume(struct pci_dev *pdev)
{
struct net_device *netdev = pci_get_drvdata(pdev);
struct e1000_adapter *adapter = netdev_priv(netdev);
- uint32_t manc, ret_val;
+ uint32_t manc, err;
pci_set_power_state(pdev, PCI_D0);
e1000_pci_restore_state(adapter);
- ret_val = pci_enable_device(pdev);
+ if ((err = pci_enable_device(pdev))) {
+ printk(KERN_ERR "e1000: Cannot enable PCI device from suspend\n");
+ return err;
+ }
pci_set_master(pdev);
pci_enable_wake(pdev, PCI_D3hot, 0);
---
Auke Kok <auke-jan.h.kok@intel.com>
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 06/26] e1000: remove unused part_num reading code
2006-08-29 16:41 [PATCH 00/26] e100, e1000, ixgb updates Kok, Auke
` (3 preceding siblings ...)
2006-08-29 16:44 ` [PATCH 05/26] e1000: error out if we cannot enable PCI device on resume Kok, Auke
@ 2006-08-29 16:44 ` Kok, Auke
2006-08-29 16:44 ` [PATCH 07/26] e1000: Use module param array code Kok, Auke
` (21 subsequent siblings)
26 siblings, 0 replies; 44+ messages in thread
From: Kok, Auke @ 2006-08-29 16:44 UTC (permalink / raw)
To: Garzik, Jeff
Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Kok, Auke,
Ronciak, John
Remove the code that reads part_num from the EEPROM. This part number
is never displayed or queryable by the user.
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
---
drivers/net/e1000/e1000.h | 1 -
drivers/net/e1000/e1000_hw.c | 34 ----------------------------------
drivers/net/e1000/e1000_main.c | 2 --
3 files changed, 0 insertions(+), 37 deletions(-)
diff --git a/drivers/net/e1000/e1000.h b/drivers/net/e1000/e1000.h
index c110781..70ba378 100644
--- a/drivers/net/e1000/e1000.h
+++ b/drivers/net/e1000/e1000.h
@@ -245,7 +245,6 @@ struct e1000_adapter {
uint16_t mng_vlan_id;
uint32_t bd_number;
uint32_t rx_buffer_len;
- uint32_t part_num;
uint32_t wol;
uint32_t ksp3_port_a;
uint32_t smartspeed;
diff --git a/drivers/net/e1000/e1000_hw.c b/drivers/net/e1000/e1000_hw.c
index 57749eb..f56d4cd 100644
--- a/drivers/net/e1000/e1000_hw.c
+++ b/drivers/net/e1000/e1000_hw.c
@@ -5556,40 +5556,6 @@ e1000_commit_shadow_ram(struct e1000_hw
}
/******************************************************************************
- * Reads the adapter's part number from the EEPROM
- *
- * hw - Struct containing variables accessed by shared code
- * part_num - Adapter's part number
- *****************************************************************************/
-int32_t
-e1000_read_part_num(struct e1000_hw *hw,
- uint32_t *part_num)
-{
- uint16_t offset = EEPROM_PBA_BYTE_1;
- uint16_t eeprom_data;
-
- DEBUGFUNC("e1000_read_part_num");
-
- /* Get word 0 from EEPROM */
- if (e1000_read_eeprom(hw, offset, 1, &eeprom_data) < 0) {
- DEBUGOUT("EEPROM Read Error\n");
- return -E1000_ERR_EEPROM;
- }
- /* Save word 0 in upper half of part_num */
- *part_num = (uint32_t) (eeprom_data << 16);
-
- /* Get word 1 from EEPROM */
- if (e1000_read_eeprom(hw, ++offset, 1, &eeprom_data) < 0) {
- DEBUGOUT("EEPROM Read Error\n");
- return -E1000_ERR_EEPROM;
- }
- /* Save word 1 in lower half of part_num */
- *part_num |= eeprom_data;
-
- return E1000_SUCCESS;
-}
-
-/******************************************************************************
* Reads the adapter's MAC address from the EEPROM and inverts the LSB for the
* second function of dual function devices
*
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index 630fe60..c128f62 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -853,8 +853,6 @@ e1000_probe(struct pci_dev *pdev,
goto err_eeprom;
}
- e1000_read_part_num(&adapter->hw, &(adapter->part_num));
-
e1000_get_bus_info(&adapter->hw);
init_timer(&adapter->tx_fifo_stall_timer);
---
Auke Kok <auke-jan.h.kok@intel.com>
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 07/26] e1000: Use module param array code
2006-08-29 16:41 [PATCH 00/26] e100, e1000, ixgb updates Kok, Auke
` (4 preceding siblings ...)
2006-08-29 16:44 ` [PATCH 06/26] e1000: remove unused part_num reading code Kok, Auke
@ 2006-08-29 16:44 ` Kok, Auke
2006-08-29 20:50 ` Jeff Garzik
2006-08-29 16:44 ` [PATCH 08/26] e1000: Deprecate mii-tool SIOCMIIREG ioctl Kok, Auke
` (20 subsequent siblings)
26 siblings, 1 reply; 44+ messages in thread
From: Kok, Auke @ 2006-08-29 16:44 UTC (permalink / raw)
To: Garzik, Jeff
Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Kok, Auke,
Ronciak, John
Use module param array code to distinguish between defaults and user
specified values.
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
---
drivers/net/e1000/e1000_param.c | 161 +++++++++++++++++++++++++++------------
1 files changed, 110 insertions(+), 51 deletions(-)
diff --git a/drivers/net/e1000/e1000_param.c b/drivers/net/e1000/e1000_param.c
index 0ef4131..2128427 100644
--- a/drivers/net/e1000/e1000_param.c
+++ b/drivers/net/e1000/e1000_param.c
@@ -324,7 +324,6 @@ e1000_check_options(struct e1000_adapter
DPRINTK(PROBE, NOTICE,
"Warning: no configuration for board #%i\n", bd);
DPRINTK(PROBE, NOTICE, "Using defaults for all values\n");
- bd = E1000_MAX_NIC;
}
{ /* Transmit Descriptor Count */
@@ -342,9 +341,14 @@ e1000_check_options(struct e1000_adapter
opt.arg.r.max = mac_type < e1000_82544 ?
E1000_MAX_TXD : E1000_MAX_82544_TXD;
- tx_ring->count = TxDescriptors[bd];
- e1000_validate_option(&tx_ring->count, &opt, adapter);
- E1000_ROUNDUP(tx_ring->count, REQ_TX_DESCRIPTOR_MULTIPLE);
+ if (num_TxDescriptors > bd) {
+ tx_ring->count = TxDescriptors[bd];
+ e1000_validate_option(&tx_ring->count, &opt, adapter);
+ E1000_ROUNDUP(tx_ring->count,
+ REQ_TX_DESCRIPTOR_MULTIPLE);
+ } else {
+ tx_ring->count = opt.def;
+ }
for (i = 0; i < adapter->num_tx_queues; i++)
tx_ring[i].count = tx_ring->count;
}
@@ -363,9 +367,14 @@ e1000_check_options(struct e1000_adapter
opt.arg.r.max = mac_type < e1000_82544 ? E1000_MAX_RXD :
E1000_MAX_82544_RXD;
- rx_ring->count = RxDescriptors[bd];
- e1000_validate_option(&rx_ring->count, &opt, adapter);
- E1000_ROUNDUP(rx_ring->count, REQ_RX_DESCRIPTOR_MULTIPLE);
+ if (num_RxDescriptors > bd) {
+ rx_ring->count = RxDescriptors[bd];
+ e1000_validate_option(&rx_ring->count, &opt, adapter);
+ E1000_ROUNDUP(rx_ring->count,
+ REQ_RX_DESCRIPTOR_MULTIPLE);
+ } else {
+ rx_ring->count = opt.def;
+ }
for (i = 0; i < adapter->num_rx_queues; i++)
rx_ring[i].count = rx_ring->count;
}
@@ -377,9 +386,13 @@ e1000_check_options(struct e1000_adapter
.def = OPTION_ENABLED
};
- int rx_csum = XsumRX[bd];
- e1000_validate_option(&rx_csum, &opt, adapter);
- adapter->rx_csum = rx_csum;
+ if (num_XsumRX > bd) {
+ int rx_csum = XsumRX[bd];
+ e1000_validate_option(&rx_csum, &opt, adapter);
+ adapter->rx_csum = rx_csum;
+ } else {
+ adapter->rx_csum = opt.def;
+ }
}
{ /* Flow Control */
@@ -399,9 +412,13 @@ e1000_check_options(struct e1000_adapter
.p = fc_list }}
};
- int fc = FlowControl[bd];
- e1000_validate_option(&fc, &opt, adapter);
- adapter->hw.fc = adapter->hw.original_fc = fc;
+ if (num_FlowControl > bd) {
+ int fc = FlowControl[bd];
+ e1000_validate_option(&fc, &opt, adapter);
+ adapter->hw.fc = adapter->hw.original_fc = fc;
+ } else {
+ adapter->hw.fc = adapter->hw.original_fc = opt.def;
+ }
}
{ /* Transmit Interrupt Delay */
struct e1000_option opt = {
@@ -413,8 +430,13 @@ e1000_check_options(struct e1000_adapter
.max = MAX_TXDELAY }}
};
- adapter->tx_int_delay = TxIntDelay[bd];
- e1000_validate_option(&adapter->tx_int_delay, &opt, adapter);
+ if (num_TxIntDelay > bd) {
+ adapter->tx_int_delay = TxIntDelay[bd];
+ e1000_validate_option(&adapter->tx_int_delay, &opt,
+ adapter);
+ } else {
+ adapter->tx_int_delay = opt.def;
+ }
}
{ /* Transmit Absolute Interrupt Delay */
struct e1000_option opt = {
@@ -426,9 +448,13 @@ e1000_check_options(struct e1000_adapter
.max = MAX_TXABSDELAY }}
};
- adapter->tx_abs_int_delay = TxAbsIntDelay[bd];
- e1000_validate_option(&adapter->tx_abs_int_delay, &opt,
- adapter);
+ if (num_TxAbsIntDelay > bd) {
+ adapter->tx_abs_int_delay = TxAbsIntDelay[bd];
+ e1000_validate_option(&adapter->tx_abs_int_delay, &opt,
+ adapter);
+ } else {
+ adapter->tx_abs_int_delay = opt.def;
+ }
}
{ /* Receive Interrupt Delay */
struct e1000_option opt = {
@@ -440,8 +466,13 @@ e1000_check_options(struct e1000_adapter
.max = MAX_RXDELAY }}
};
- adapter->rx_int_delay = RxIntDelay[bd];
- e1000_validate_option(&adapter->rx_int_delay, &opt, adapter);
+ if (num_RxIntDelay > bd) {
+ adapter->rx_int_delay = RxIntDelay[bd];
+ e1000_validate_option(&adapter->rx_int_delay, &opt,
+ adapter);
+ } else {
+ adapter->rx_int_delay = opt.def;
+ }
}
{ /* Receive Absolute Interrupt Delay */
struct e1000_option opt = {
@@ -453,9 +484,13 @@ e1000_check_options(struct e1000_adapter
.max = MAX_RXABSDELAY }}
};
- adapter->rx_abs_int_delay = RxAbsIntDelay[bd];
- e1000_validate_option(&adapter->rx_abs_int_delay, &opt,
- adapter);
+ if (num_RxAbsIntDelay > bd) {
+ adapter->rx_abs_int_delay = RxAbsIntDelay[bd];
+ e1000_validate_option(&adapter->rx_abs_int_delay, &opt,
+ adapter);
+ } else {
+ adapter->rx_abs_int_delay = opt.def;
+ }
}
{ /* Interrupt Throttling Rate */
struct e1000_option opt = {
@@ -467,18 +502,24 @@ e1000_check_options(struct e1000_adapter
.max = MAX_ITR }}
};
- adapter->itr = InterruptThrottleRate[bd];
- switch (adapter->itr) {
- case 0:
- DPRINTK(PROBE, INFO, "%s turned off\n", opt.name);
- break;
- case 1:
- DPRINTK(PROBE, INFO, "%s set to dynamic mode\n",
- opt.name);
- break;
- default:
- e1000_validate_option(&adapter->itr, &opt, adapter);
- break;
+ if (num_InterruptThrottleRate > bd) {
+ adapter->itr = InterruptThrottleRate[bd];
+ switch (adapter->itr) {
+ case 0:
+ DPRINTK(PROBE, INFO, "%s turned off\n",
+ opt.name);
+ break;
+ case 1:
+ DPRINTK(PROBE, INFO, "%s set to dynamic mode\n",
+ opt.name);
+ break;
+ default:
+ e1000_validate_option(&adapter->itr, &opt,
+ adapter);
+ break;
+ }
+ } else {
+ adapter->itr = opt.def;
}
}
{ /* Smart Power Down */
@@ -489,9 +530,13 @@ e1000_check_options(struct e1000_adapter
.def = OPTION_DISABLED
};
- int spd = SmartPowerDownEnable[bd];
- e1000_validate_option(&spd, &opt, adapter);
- adapter->smart_power_down = spd;
+ if (num_SmartPowerDownEnable > bd) {
+ int spd = SmartPowerDownEnable[bd];
+ e1000_validate_option(&spd, &opt, adapter);
+ adapter->smart_power_down = spd;
+ } else {
+ adapter->smart_power_down = opt.def;
+ }
}
{ /* Kumeran Lock Loss Workaround */
struct e1000_option opt = {
@@ -501,9 +546,13 @@ e1000_check_options(struct e1000_adapter
.def = OPTION_ENABLED
};
+ if (num_KumeranLockLoss > bd) {
int kmrn_lock_loss = KumeranLockLoss[bd];
e1000_validate_option(&kmrn_lock_loss, &opt, adapter);
adapter->hw.kmrn_lock_loss_workaround_disabled = !kmrn_lock_loss;
+ } else {
+ adapter->hw.kmrn_lock_loss_workaround_disabled = !opt.def;
+ }
}
switch (adapter->hw.media_type) {
@@ -530,18 +579,17 @@ static void __devinit
e1000_check_fiber_options(struct e1000_adapter *adapter)
{
int bd = adapter->bd_number;
- bd = bd > E1000_MAX_NIC ? E1000_MAX_NIC : bd;
- if ((Speed[bd] != OPTION_UNSET)) {
+ if (num_Speed > bd) {
DPRINTK(PROBE, INFO, "Speed not valid for fiber adapters, "
"parameter ignored\n");
}
- if ((Duplex[bd] != OPTION_UNSET)) {
+ if (num_Duplex > bd) {
DPRINTK(PROBE, INFO, "Duplex not valid for fiber adapters, "
"parameter ignored\n");
}
- if ((AutoNeg[bd] != OPTION_UNSET) && (AutoNeg[bd] != 0x20)) {
+ if ((num_AutoNeg > bd) && (AutoNeg[bd] != 0x20)) {
DPRINTK(PROBE, INFO, "AutoNeg other than 1000/Full is "
"not valid for fiber adapters, "
"parameter ignored\n");
@@ -560,7 +608,6 @@ e1000_check_copper_options(struct e1000_
{
int speed, dplx, an;
int bd = adapter->bd_number;
- bd = bd > E1000_MAX_NIC ? E1000_MAX_NIC : bd;
{ /* Speed */
struct e1000_opt_list speed_list[] = {{ 0, "" },
@@ -577,8 +624,12 @@ e1000_check_copper_options(struct e1000_
.p = speed_list }}
};
- speed = Speed[bd];
- e1000_validate_option(&speed, &opt, adapter);
+ if (num_Speed > bd) {
+ speed = Speed[bd];
+ e1000_validate_option(&speed, &opt, adapter);
+ } else {
+ speed = opt.def;
+ }
}
{ /* Duplex */
struct e1000_opt_list dplx_list[] = {{ 0, "" },
@@ -600,11 +651,15 @@ e1000_check_copper_options(struct e1000_
"Speed/Duplex/AutoNeg parameter ignored.\n");
return;
}
- dplx = Duplex[bd];
- e1000_validate_option(&dplx, &opt, adapter);
+ if (num_Duplex > bd) {
+ dplx = Duplex[bd];
+ e1000_validate_option(&dplx, &opt, adapter);
+ } else {
+ dplx = opt.def;
+ }
}
- if (AutoNeg[bd] != OPTION_UNSET && (speed != 0 || dplx != 0)) {
+ if ((num_AutoNeg > bd) && (speed != 0 || dplx != 0)) {
DPRINTK(PROBE, INFO,
"AutoNeg specified along with Speed or Duplex, "
"parameter ignored\n");
@@ -653,15 +708,19 @@ e1000_check_copper_options(struct e1000_
.p = an_list }}
};
- an = AutoNeg[bd];
- e1000_validate_option(&an, &opt, adapter);
+ if (num_AutoNeg > bd) {
+ an = AutoNeg[bd];
+ e1000_validate_option(&an, &opt, adapter);
+ } else {
+ an = opt.def;
+ }
adapter->hw.autoneg_advertised = an;
}
switch (speed + dplx) {
case 0:
adapter->hw.autoneg = adapter->fc_autoneg = 1;
- if (Speed[bd] != OPTION_UNSET || Duplex[bd] != OPTION_UNSET)
+ if ((num_Speed > bd) && (speed != 0 || dplx != 0))
DPRINTK(PROBE, INFO,
"Speed and duplex autonegotiation enabled\n");
break;
---
Auke Kok <auke-jan.h.kok@intel.com>
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 08/26] e1000: Deprecate mii-tool SIOCMIIREG ioctl
2006-08-29 16:41 [PATCH 00/26] e100, e1000, ixgb updates Kok, Auke
` (5 preceding siblings ...)
2006-08-29 16:44 ` [PATCH 07/26] e1000: Use module param array code Kok, Auke
@ 2006-08-29 16:44 ` Kok, Auke
2006-08-29 20:49 ` Jeff Garzik
2006-08-29 16:44 ` [PATCH 09/26] e1000: unify WoL capability detection code Kok, Auke
` (19 subsequent siblings)
26 siblings, 1 reply; 44+ messages in thread
From: Kok, Auke @ 2006-08-29 16:44 UTC (permalink / raw)
To: Garzik, Jeff
Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Kok, Auke,
Ronciak, John
Deprecate mii-tool SIOCMIIREG ioctl. This ioctl is broken in e1000 and
ethtool has this functionality in working order.
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
---
drivers/net/e1000/e1000_main.c | 69 ----------------------------------------
1 files changed, 0 insertions(+), 69 deletions(-)
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index c128f62..70d0acd 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -4263,9 +4263,6 @@ e1000_mii_ioctl(struct net_device *netde
{
struct e1000_adapter *adapter = netdev_priv(netdev);
struct mii_ioctl_data *data = if_mii(ifr);
- int retval;
- uint16_t mii_reg;
- uint16_t spddplx;
unsigned long flags;
if (adapter->hw.media_type != e1000_media_type_copper)
@@ -4287,72 +4284,6 @@ e1000_mii_ioctl(struct net_device *netde
spin_unlock_irqrestore(&adapter->stats_lock, flags);
break;
case SIOCSMIIREG:
- if (!capable(CAP_NET_ADMIN))
- return -EPERM;
- if (data->reg_num & ~(0x1F))
- return -EFAULT;
- mii_reg = data->val_in;
- spin_lock_irqsave(&adapter->stats_lock, flags);
- if (e1000_write_phy_reg(&adapter->hw, data->reg_num,
- mii_reg)) {
- spin_unlock_irqrestore(&adapter->stats_lock, flags);
- return -EIO;
- }
- if (adapter->hw.media_type == e1000_media_type_copper) {
- switch (data->reg_num) {
- case PHY_CTRL:
- if (mii_reg & MII_CR_POWER_DOWN)
- break;
- if (mii_reg & MII_CR_AUTO_NEG_EN) {
- adapter->hw.autoneg = 1;
- adapter->hw.autoneg_advertised = 0x2F;
- } else {
- if (mii_reg & 0x40)
- spddplx = SPEED_1000;
- else if (mii_reg & 0x2000)
- spddplx = SPEED_100;
- else
- spddplx = SPEED_10;
- spddplx += (mii_reg & 0x100)
- ? DUPLEX_FULL :
- DUPLEX_HALF;
- retval = e1000_set_spd_dplx(adapter,
- spddplx);
- if (retval) {
- spin_unlock_irqrestore(
- &adapter->stats_lock,
- flags);
- return retval;
- }
- }
- if (netif_running(adapter->netdev))
- e1000_reinit_locked(adapter);
- else
- e1000_reset(adapter);
- break;
- case M88E1000_PHY_SPEC_CTRL:
- case M88E1000_EXT_PHY_SPEC_CTRL:
- if (e1000_phy_reset(&adapter->hw)) {
- spin_unlock_irqrestore(
- &adapter->stats_lock, flags);
- return -EIO;
- }
- break;
- }
- } else {
- switch (data->reg_num) {
- case PHY_CTRL:
- if (mii_reg & MII_CR_POWER_DOWN)
- break;
- if (netif_running(adapter->netdev))
- e1000_reinit_locked(adapter);
- else
- e1000_reset(adapter);
- break;
- }
- }
- spin_unlock_irqrestore(&adapter->stats_lock, flags);
- break;
default:
return -EOPNOTSUPP;
}
---
Auke Kok <auke-jan.h.kok@intel.com>
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 09/26] e1000: unify WoL capability detection code
2006-08-29 16:41 [PATCH 00/26] e100, e1000, ixgb updates Kok, Auke
` (6 preceding siblings ...)
2006-08-29 16:44 ` [PATCH 08/26] e1000: Deprecate mii-tool SIOCMIIREG ioctl Kok, Auke
@ 2006-08-29 16:44 ` Kok, Auke
2006-08-29 20:51 ` Jeff Garzik
2006-08-29 16:44 ` [PATCH 10/26] e1000: Add PCI ID 0x10a4 for our new 4-port PCI-Express device Kok, Auke
` (18 subsequent siblings)
26 siblings, 1 reply; 44+ messages in thread
From: Kok, Auke @ 2006-08-29 16:44 UTC (permalink / raw)
To: Garzik, Jeff
Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Kok, Auke,
Ronciak, John
WoL is constantly giving problems and needed a rewrite. Consolidates
all WoL capabilities into a single function, and disables WoL for all
other ports on the device except for port A.
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
---
drivers/net/e1000/e1000.h | 3 -
drivers/net/e1000/e1000_ethtool.c | 164 ++++++++++++++++++++-----------------
drivers/net/e1000/e1000_main.c | 47 ++++++++---
3 files changed, 126 insertions(+), 88 deletions(-)
diff --git a/drivers/net/e1000/e1000.h b/drivers/net/e1000/e1000.h
index 70ba378..98afa9c 100644
--- a/drivers/net/e1000/e1000.h
+++ b/drivers/net/e1000/e1000.h
@@ -246,7 +246,6 @@ struct e1000_adapter {
uint32_t bd_number;
uint32_t rx_buffer_len;
uint32_t wol;
- uint32_t ksp3_port_a;
uint32_t smartspeed;
uint32_t en_mng_pt;
uint16_t link_speed;
@@ -341,7 +340,9 @@ struct e1000_adapter {
boolean_t tso_force;
#endif
boolean_t smart_power_down; /* phy smart power down */
+ boolean_t quad_port_a;
unsigned long flags;
+ uint32_t eeprom_wol;
};
enum e1000_state_t {
diff --git a/drivers/net/e1000/e1000_ethtool.c b/drivers/net/e1000/e1000_ethtool.c
index ab2f153..0403072 100644
--- a/drivers/net/e1000/e1000_ethtool.c
+++ b/drivers/net/e1000/e1000_ethtool.c
@@ -1675,14 +1675,12 @@ e1000_diag_test(struct net_device *netde
msleep_interruptible(4 * 1000);
}
-static void
-e1000_get_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
+static int e1000_wol_exclusion(struct e1000_adapter *adapter, struct ethtool_wolinfo *wol)
{
- struct e1000_adapter *adapter = netdev_priv(netdev);
struct e1000_hw *hw = &adapter->hw;
+ int retval = 1; /* fail by default */
- switch (adapter->hw.device_id) {
- case E1000_DEV_ID_82542:
+ switch (hw->device_id) {
case E1000_DEV_ID_82543GC_FIBER:
case E1000_DEV_ID_82543GC_COPPER:
case E1000_DEV_ID_82544EI_FIBER:
@@ -1690,52 +1688,86 @@ e1000_get_wol(struct net_device *netdev,
case E1000_DEV_ID_82545EM_FIBER:
case E1000_DEV_ID_82545EM_COPPER:
case E1000_DEV_ID_82546GB_QUAD_COPPER:
+ case E1000_DEV_ID_82546GB_PCIE:
+ /* these don't support WoL at all */
wol->supported = 0;
- wol->wolopts = 0;
- return;
-
- case E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3:
- /* device id 10B5 port-A supports wol */
- if (!adapter->ksp3_port_a) {
- wol->supported = 0;
- return;
- }
- /* KSP3 does not suppport UCAST wake-ups for any interface */
- wol->supported = WAKE_MCAST | WAKE_BCAST | WAKE_MAGIC;
-
- if (adapter->wol & E1000_WUFC_EX)
- DPRINTK(DRV, ERR, "Interface does not support "
- "directed (unicast) frame wake-up packets\n");
- wol->wolopts = 0;
- goto do_defaults;
-
+ break;
case E1000_DEV_ID_82546EB_FIBER:
case E1000_DEV_ID_82546GB_FIBER:
case E1000_DEV_ID_82571EB_FIBER:
- /* Wake events only supported on port A for dual fiber */
+ case E1000_DEV_ID_82571EB_SERDES:
+ case E1000_DEV_ID_82571EB_COPPER:
+ /* Wake events not supported on port B */
if (E1000_READ_REG(hw, STATUS) & E1000_STATUS_FUNC_1) {
wol->supported = 0;
- wol->wolopts = 0;
- return;
+ break;
}
- /* Fall Through */
-
+ /* return success for non excluded adapter ports */
+ retval = 0;
+ break;
+ case E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3:
+ /* quad port adapters only support WoL on port A */
+ if (!adapter->quad_port_a) {
+ wol->supported = 0;
+ break;
+ }
+ /* return success for non excluded adapter ports */
+ retval = 0;
+ break;
default:
- wol->supported = WAKE_UCAST | WAKE_MCAST |
- WAKE_BCAST | WAKE_MAGIC;
- wol->wolopts = 0;
+ /* dual port cards only support WoL on port A from now on
+ * unless it was enabled in the eeprom for port B
+ * so exclude FUNC_1 ports from having WoL enabled */
+ if (E1000_READ_REG(hw, STATUS) & E1000_STATUS_FUNC_1 &&
+ !adapter->eeprom_wol) {
+ wol->supported = 0;
+ break;
+ }
-do_defaults:
- if (adapter->wol & E1000_WUFC_EX)
- wol->wolopts |= WAKE_UCAST;
- if (adapter->wol & E1000_WUFC_MC)
- wol->wolopts |= WAKE_MCAST;
- if (adapter->wol & E1000_WUFC_BC)
- wol->wolopts |= WAKE_BCAST;
- if (adapter->wol & E1000_WUFC_MAG)
- wol->wolopts |= WAKE_MAGIC;
+ retval = 0;
+ }
+
+ return retval;
+}
+
+static void
+e1000_get_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
+{
+ struct e1000_adapter *adapter = netdev_priv(netdev);
+
+ wol->supported = WAKE_UCAST | WAKE_MCAST |
+ WAKE_BCAST | WAKE_MAGIC;
+ wol->wolopts = 0;
+
+ /* this function will set ->supported = 0 and return 1 if wol is not
+ * supported by this hardware */
+ if (e1000_wol_exclusion(adapter, wol))
return;
+
+ /* apply any specific unsupported masks here */
+ switch (adapter->hw.device_id) {
+ case E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3:
+ /* KSP3 does not suppport UCAST wake-ups */
+ wol->supported &= ~WAKE_UCAST;
+
+ if (adapter->wol & E1000_WUFC_EX)
+ DPRINTK(DRV, ERR, "Interface does not support "
+ "directed (unicast) frame wake-up packets\n");
+ break;
+ default:
+ break;
}
+
+ if (adapter->wol & E1000_WUFC_EX)
+ wol->wolopts |= WAKE_UCAST;
+ if (adapter->wol & E1000_WUFC_MC)
+ wol->wolopts |= WAKE_MCAST;
+ if (adapter->wol & E1000_WUFC_BC)
+ wol->wolopts |= WAKE_BCAST;
+ if (adapter->wol & E1000_WUFC_MAG)
+ wol->wolopts |= WAKE_MAGIC;
+
+ return;
}
static int
@@ -1744,51 +1776,35 @@ e1000_set_wol(struct net_device *netdev,
struct e1000_adapter *adapter = netdev_priv(netdev);
struct e1000_hw *hw = &adapter->hw;
- switch (adapter->hw.device_id) {
- case E1000_DEV_ID_82542:
- case E1000_DEV_ID_82543GC_FIBER:
- case E1000_DEV_ID_82543GC_COPPER:
- case E1000_DEV_ID_82544EI_FIBER:
- case E1000_DEV_ID_82546EB_QUAD_COPPER:
- case E1000_DEV_ID_82546GB_QUAD_COPPER:
- case E1000_DEV_ID_82545EM_FIBER:
- case E1000_DEV_ID_82545EM_COPPER:
+ if (wol->wolopts & (WAKE_PHY | WAKE_ARP | WAKE_MAGICSECURE))
+ return -EOPNOTSUPP;
+
+ if (e1000_wol_exclusion(adapter, wol))
return wol->wolopts ? -EOPNOTSUPP : 0;
+ switch (hw->device_id) {
case E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3:
- /* device id 10B5 port-A supports wol */
- if (!adapter->ksp3_port_a)
- return wol->wolopts ? -EOPNOTSUPP : 0;
-
if (wol->wolopts & WAKE_UCAST) {
DPRINTK(DRV, ERR, "Interface does not support "
"directed (unicast) frame wake-up packets\n");
return -EOPNOTSUPP;
}
-
- case E1000_DEV_ID_82546EB_FIBER:
- case E1000_DEV_ID_82546GB_FIBER:
- case E1000_DEV_ID_82571EB_FIBER:
- /* Wake events only supported on port A for dual fiber */
- if (E1000_READ_REG(hw, STATUS) & E1000_STATUS_FUNC_1)
- return wol->wolopts ? -EOPNOTSUPP : 0;
- /* Fall Through */
-
+ break;
default:
- if (wol->wolopts & (WAKE_PHY | WAKE_ARP | WAKE_MAGICSECURE))
- return -EOPNOTSUPP;
+ break;
+ }
- adapter->wol = 0;
+ /* these settings will always override what we currently have */
+ adapter->wol = 0;
- if (wol->wolopts & WAKE_UCAST)
- adapter->wol |= E1000_WUFC_EX;
- if (wol->wolopts & WAKE_MCAST)
- adapter->wol |= E1000_WUFC_MC;
- if (wol->wolopts & WAKE_BCAST)
- adapter->wol |= E1000_WUFC_BC;
- if (wol->wolopts & WAKE_MAGIC)
- adapter->wol |= E1000_WUFC_MAG;
- }
+ if (wol->wolopts & WAKE_UCAST)
+ adapter->wol |= E1000_WUFC_EX;
+ if (wol->wolopts & WAKE_MCAST)
+ adapter->wol |= E1000_WUFC_MC;
+ if (wol->wolopts & WAKE_BCAST)
+ adapter->wol |= E1000_WUFC_BC;
+ if (wol->wolopts & WAKE_MAGIC)
+ adapter->wol |= E1000_WUFC_MAG;
return 0;
}
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index 70d0acd..6dbafb1 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -681,9 +681,9 @@ e1000_probe(struct pci_dev *pdev,
unsigned long flash_start, flash_len;
static int cards_found = 0;
- static int e1000_ksp3_port_a = 0; /* global ksp3 port a indication */
+ static int global_quad_port_a = 0; /* global ksp3 port a indication */
int i, err, pci_using_dac;
- uint16_t eeprom_data;
+ uint16_t eeprom_data = 0;
uint16_t eeprom_apme_mask = E1000_EEPROM_APME;
if ((err = pci_enable_device(pdev)))
return err;
@@ -786,15 +786,6 @@ e1000_probe(struct pci_dev *pdev,
if (e1000_check_phy_reset_block(&adapter->hw))
DPRINTK(PROBE, INFO, "PHY reset is blocked due to SOL/IDER session.\n");
- /* if ksp3, indicate if it's port a being setup */
- if (pdev->device == E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3 &&
- e1000_ksp3_port_a == 0)
- adapter->ksp3_port_a = 1;
- e1000_ksp3_port_a++;
- /* Reset for multiple KP3 adapters */
- if (e1000_ksp3_port_a == 4)
- e1000_ksp3_port_a = 0;
-
if (adapter->hw.mac_type >= e1000_82543) {
netdev->features = NETIF_F_SG |
NETIF_F_HW_CSUM |
@@ -913,7 +904,37 @@ e1000_probe(struct pci_dev *pdev,
break;
}
if (eeprom_data & eeprom_apme_mask)
- adapter->wol |= E1000_WUFC_MAG;
+ adapter->eeprom_wol |= E1000_WUFC_MAG;
+
+ /* now that we have the eeprom settings, apply the special cases
+ * where the eeprom may be wrong or the board simply won't support
+ * wake on lan on a particular port */
+ switch (pdev->device) {
+ case E1000_DEV_ID_82546GB_PCIE:
+ adapter->eeprom_wol = 0;
+ break;
+ case E1000_DEV_ID_82546EB_FIBER:
+ case E1000_DEV_ID_82546GB_FIBER:
+ case E1000_DEV_ID_82571EB_FIBER:
+ /* Wake events only supported on port A for dual fiber
+ * regardless of eeprom setting */
+ if (E1000_READ_REG(&adapter->hw, STATUS) & E1000_STATUS_FUNC_1)
+ adapter->eeprom_wol = 0;
+ break;
+ case E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3:
+ /* if quad port adapter, disable WoL on all but port A */
+ if (global_quad_port_a != 0)
+ adapter->eeprom_wol = 0;
+ else
+ adapter->quad_port_a = 1;
+ /* Reset for multiple quad port adapters */
+ if (++global_quad_port_a == 4)
+ global_quad_port_a = 0;
+ break;
+ }
+
+ /* initialize the wol settings based on the eeprom settings */
+ adapter->wol = adapter->eeprom_wol;
/* print bus type/speed/width info */
{
@@ -4566,7 +4587,7 @@ e1000_suspend(struct pci_dev *pdev, pm_m
e1000_set_multi(netdev);
/* turn on all-multi mode if wake on multicast is enabled */
- if (adapter->wol & E1000_WUFC_MC) {
+ if (wufc & E1000_WUFC_MC) {
rctl = E1000_READ_REG(&adapter->hw, RCTL);
rctl |= E1000_RCTL_MPE;
E1000_WRITE_REG(&adapter->hw, RCTL, rctl);
---
Auke Kok <auke-jan.h.kok@intel.com>
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 10/26] e1000: Add PCI ID 0x10a4 for our new 4-port PCI-Express device
2006-08-29 16:41 [PATCH 00/26] e100, e1000, ixgb updates Kok, Auke
` (7 preceding siblings ...)
2006-08-29 16:44 ` [PATCH 09/26] e1000: unify WoL capability detection code Kok, Auke
@ 2006-08-29 16:44 ` Kok, Auke
2006-08-29 16:44 ` [PATCH 11/26] e1000: clean up skb allocation code, patch submitted by Christoph Kok, Auke
` (17 subsequent siblings)
26 siblings, 0 replies; 44+ messages in thread
From: Kok, Auke @ 2006-08-29 16:44 UTC (permalink / raw)
To: Garzik, Jeff
Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Kok, Auke,
Ronciak, John
Device 0x10a4 is a double 82571 on a single PCI-Express card and
has 4 gigabit capable ports.
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
---
drivers/net/e1000/e1000_ethtool.c | 1 +
drivers/net/e1000/e1000_hw.c | 1 +
drivers/net/e1000/e1000_hw.h | 1 +
drivers/net/e1000/e1000_main.c | 2 ++
4 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/drivers/net/e1000/e1000_ethtool.c b/drivers/net/e1000/e1000_ethtool.c
index 0403072..3fccffd 100644
--- a/drivers/net/e1000/e1000_ethtool.c
+++ b/drivers/net/e1000/e1000_ethtool.c
@@ -1705,6 +1705,7 @@ static int e1000_wol_exclusion(struct e1
/* return success for non excluded adapter ports */
retval = 0;
break;
+ case E1000_DEV_ID_82571EB_QUAD_COPPER:
case E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3:
/* quad port adapters only support WoL on port A */
if (!adapter->quad_port_a) {
diff --git a/drivers/net/e1000/e1000_hw.c b/drivers/net/e1000/e1000_hw.c
index f56d4cd..4b54c48 100644
--- a/drivers/net/e1000/e1000_hw.c
+++ b/drivers/net/e1000/e1000_hw.c
@@ -389,6 +389,7 @@ e1000_set_mac_type(struct e1000_hw *hw)
case E1000_DEV_ID_82571EB_COPPER:
case E1000_DEV_ID_82571EB_FIBER:
case E1000_DEV_ID_82571EB_SERDES:
+ case E1000_DEV_ID_82571EB_QUAD_COPPER:
hw->mac_type = e1000_82571;
break;
case E1000_DEV_ID_82572EI_COPPER:
diff --git a/drivers/net/e1000/e1000_hw.h b/drivers/net/e1000/e1000_hw.h
index 4f74242..a170e96 100644
--- a/drivers/net/e1000/e1000_hw.h
+++ b/drivers/net/e1000/e1000_hw.h
@@ -470,6 +470,7 @@ int32_t e1000_check_phy_reset_block(stru
#define E1000_DEV_ID_82571EB_COPPER 0x105E
#define E1000_DEV_ID_82571EB_FIBER 0x105F
#define E1000_DEV_ID_82571EB_SERDES 0x1060
+#define E1000_DEV_ID_82571EB_QUAD_COPPER 0x10A4
#define E1000_DEV_ID_82572EI_COPPER 0x107D
#define E1000_DEV_ID_82572EI_FIBER 0x107E
#define E1000_DEV_ID_82572EI_SERDES 0x107F
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index 6dbafb1..87a562f 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -98,6 +98,7 @@ static struct pci_device_id e1000_pci_tb
INTEL_E1000_ETHERNET_DEVICE(0x1098),
INTEL_E1000_ETHERNET_DEVICE(0x1099),
INTEL_E1000_ETHERNET_DEVICE(0x109A),
+ INTEL_E1000_ETHERNET_DEVICE(0x10A4),
INTEL_E1000_ETHERNET_DEVICE(0x10B5),
INTEL_E1000_ETHERNET_DEVICE(0x10B9),
INTEL_E1000_ETHERNET_DEVICE(0x10BA),
@@ -922,6 +923,7 @@ e1000_probe(struct pci_dev *pdev,
adapter->eeprom_wol = 0;
break;
case E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3:
+ case E1000_DEV_ID_82571EB_QUAD_COPPER:
/* if quad port adapter, disable WoL on all but port A */
if (global_quad_port_a != 0)
adapter->eeprom_wol = 0;
---
Auke Kok <auke-jan.h.kok@intel.com>
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 11/26] e1000: clean up skb allocation code, patch submitted by Christoph
2006-08-29 16:41 [PATCH 00/26] e100, e1000, ixgb updates Kok, Auke
` (8 preceding siblings ...)
2006-08-29 16:44 ` [PATCH 10/26] e1000: Add PCI ID 0x10a4 for our new 4-port PCI-Express device Kok, Auke
@ 2006-08-29 16:44 ` Kok, Auke
2006-08-29 20:52 ` Jeff Garzik
2006-08-29 16:44 ` [PATCH 12/26] e1000: Increment driver version to 7.2.7-k2 Kok, Auke
` (16 subsequent siblings)
26 siblings, 1 reply; 44+ messages in thread
From: Kok, Auke @ 2006-08-29 16:44 UTC (permalink / raw)
To: Garzik, Jeff
Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Kok, Auke,
Ronciak, John
Signed-off-by: Christoph Hellwig <hch@lst.de>
Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
---
drivers/net/e1000/e1000_main.c | 17 ++++++-----------
1 files changed, 6 insertions(+), 11 deletions(-)
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index 87a562f..656db12 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -3741,7 +3741,6 @@ e1000_clean_rx_irq(struct e1000_adapter
netdev_alloc_skb(netdev, length + NET_IP_ALIGN);
if (new_skb) {
skb_reserve(new_skb, NET_IP_ALIGN);
- new_skb->dev = netdev;
memcpy(new_skb->data - NET_IP_ALIGN,
skb->data - NET_IP_ALIGN,
length + NET_IP_ALIGN);
@@ -4008,13 +4007,13 @@ e1000_alloc_rx_buffers(struct e1000_adap
buffer_info = &rx_ring->buffer_info[i];
while (cleaned_count--) {
- if (!(skb = buffer_info->skb))
- skb = netdev_alloc_skb(netdev, bufsz);
- else {
+ skb = buffer_info->skb;
+ if (skb) {
skb_trim(skb, 0);
goto map_skb;
}
+ skb = netdev_alloc_skb(netdev, bufsz);
if (unlikely(!skb)) {
/* Better luck next round */
adapter->alloc_rx_buff_failed++;
@@ -4039,10 +4038,10 @@ e1000_alloc_rx_buffers(struct e1000_adap
dev_kfree_skb(skb);
dev_kfree_skb(oldskb);
break; /* while !buffer_info->skb */
- } else {
- /* Use new allocation */
- dev_kfree_skb(oldskb);
}
+
+ /* Use new allocation */
+ dev_kfree_skb(oldskb);
}
/* Make buffer alignment 2 beyond a 16 byte boundary
* this will result in a 16 byte aligned IP header after
@@ -4050,8 +4049,6 @@ e1000_alloc_rx_buffers(struct e1000_adap
*/
skb_reserve(skb, NET_IP_ALIGN);
- skb->dev = netdev;
-
buffer_info->skb = skb;
buffer_info->length = adapter->rx_buffer_len;
map_skb:
@@ -4165,8 +4162,6 @@ e1000_alloc_rx_buffers_ps(struct e1000_a
*/
skb_reserve(skb, NET_IP_ALIGN);
- skb->dev = netdev;
-
buffer_info->skb = skb;
buffer_info->length = adapter->rx_ps_bsize0;
buffer_info->dma = pci_map_single(pdev, skb->data,
---
Auke Kok <auke-jan.h.kok@intel.com>
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 12/26] e1000: Increment driver version to 7.2.7-k2
2006-08-29 16:41 [PATCH 00/26] e100, e1000, ixgb updates Kok, Auke
` (9 preceding siblings ...)
2006-08-29 16:44 ` [PATCH 11/26] e1000: clean up skb allocation code, patch submitted by Christoph Kok, Auke
@ 2006-08-29 16:44 ` Kok, Auke
2006-08-29 16:44 ` [PATCH 13/26] e100: Convert e100 to use netdev_alloc_skb() Kok, Auke
` (15 subsequent siblings)
26 siblings, 0 replies; 44+ messages in thread
From: Kok, Auke @ 2006-08-29 16:44 UTC (permalink / raw)
To: Garzik, Jeff
Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Kok, Auke,
Ronciak, John
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
---
drivers/net/e1000/e1000_main.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index 656db12..0128d01 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -36,7 +36,7 @@ static char e1000_driver_string[] = "Int
#else
#define DRIVERNAPI "-NAPI"
#endif
-#define DRV_VERSION "7.1.9-k6"DRIVERNAPI
+#define DRV_VERSION "7.2.7-k2"DRIVERNAPI
char e1000_driver_version[] = DRV_VERSION;
static char e1000_copyright[] = "Copyright (c) 1999-2006 Intel Corporation.";
---
Auke Kok <auke-jan.h.kok@intel.com>
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 13/26] e100: Convert e100 to use netdev_alloc_skb().
2006-08-29 16:41 [PATCH 00/26] e100, e1000, ixgb updates Kok, Auke
` (10 preceding siblings ...)
2006-08-29 16:44 ` [PATCH 12/26] e1000: Increment driver version to 7.2.7-k2 Kok, Auke
@ 2006-08-29 16:44 ` Kok, Auke
2006-08-29 16:44 ` [PATCH 14/26] e100: fix error recovery Kok, Auke
` (14 subsequent siblings)
26 siblings, 0 replies; 44+ messages in thread
From: Kok, Auke @ 2006-08-29 16:44 UTC (permalink / raw)
To: Garzik, Jeff
Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Kok, Auke,
Ronciak, John
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
---
drivers/net/e100.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/e100.c b/drivers/net/e100.c
index b42ad76..458af6a 100644
--- a/drivers/net/e100.c
+++ b/drivers/net/e100.c
@@ -1759,7 +1759,7 @@ static inline void e100_start_receiver(s
#define RFD_BUF_LEN (sizeof(struct rfd) + VLAN_ETH_FRAME_LEN)
static int e100_rx_alloc_skb(struct nic *nic, struct rx *rx)
{
- if(!(rx->skb = dev_alloc_skb(RFD_BUF_LEN + NET_IP_ALIGN)))
+ if(!(rx->skb = netdev_alloc_skb(nic->netdev, RFD_BUF_LEN + NET_IP_ALIGN)))
return -ENOMEM;
/* Align, init, and map the RFD. */
@@ -2139,7 +2139,7 @@ static int e100_loopback_test(struct nic
e100_start_receiver(nic, NULL);
- if(!(skb = dev_alloc_skb(ETH_DATA_LEN))) {
+ if(!(skb = netdev_alloc_skb(nic->netdev, ETH_DATA_LEN))) {
err = -ENOMEM;
goto err_loopback_none;
}
---
Auke Kok <auke-jan.h.kok@intel.com>
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 14/26] e100: fix error recovery
2006-08-29 16:41 [PATCH 00/26] e100, e1000, ixgb updates Kok, Auke
` (11 preceding siblings ...)
2006-08-29 16:44 ` [PATCH 13/26] e100: Convert e100 to use netdev_alloc_skb() Kok, Auke
@ 2006-08-29 16:44 ` Kok, Auke
2006-08-29 20:55 ` Jeff Garzik
2006-08-29 16:44 ` [PATCH 15/26] e100: reduce time under spinlock Kok, Auke
` (13 subsequent siblings)
26 siblings, 1 reply; 44+ messages in thread
From: Kok, Auke @ 2006-08-29 16:44 UTC (permalink / raw)
To: Garzik, Jeff
Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Kok, Auke,
Ronciak, John
A recent patch in -mm3 titled
"gregkh-pci-pci-don-t-enable-device-if-already-enabled.patch" causes
pci_enable_device() to be a no-op if the kernel thinks that the device is
already enabled. This change breaks the PCI error recovery mechanism in
the e100 device driver, since, after PCI slot reset, the card is no longer
enabled. This is a trivial fix for this problem. Tested.
Signed-off-by: Linas Vepstas <linas@austin.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
---
drivers/net/e100.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/drivers/net/e100.c b/drivers/net/e100.c
index 458af6a..e12cc68 100644
--- a/drivers/net/e100.c
+++ b/drivers/net/e100.c
@@ -2791,6 +2791,7 @@ static pci_ers_result_t e100_io_error_de
/* Detach; put netif into state similar to hotplug unplug. */
netif_poll_enable(netdev);
netif_device_detach(netdev);
+ pci_disable_device(pdev);
/* Request a slot reset. */
return PCI_ERS_RESULT_NEED_RESET;
---
Auke Kok <auke-jan.h.kok@intel.com>
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 15/26] e100: reduce time under spinlock
2006-08-29 16:41 [PATCH 00/26] e100, e1000, ixgb updates Kok, Auke
` (12 preceding siblings ...)
2006-08-29 16:44 ` [PATCH 14/26] e100: fix error recovery Kok, Auke
@ 2006-08-29 16:44 ` Kok, Auke
2006-08-29 20:55 ` Jeff Garzik
2006-08-29 16:44 ` [PATCH 16/26] e100: remove skb->dev assignment Kok, Auke
` (12 subsequent siblings)
26 siblings, 1 reply; 44+ messages in thread
From: Kok, Auke @ 2006-08-29 16:44 UTC (permalink / raw)
To: Garzik, Jeff
Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Kok, Auke,
Ronciak, John
We're waiting for a write flush to finish before unlocking, which
is not needed. Release the spinlock after the write command.
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
---
drivers/net/e100.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/e100.c b/drivers/net/e100.c
index e12cc68..eb467f8 100644
--- a/drivers/net/e100.c
+++ b/drivers/net/e100.c
@@ -597,8 +597,8 @@ static void e100_enable_irq(struct nic *
spin_lock_irqsave(&nic->cmd_lock, flags);
writeb(irq_mask_none, &nic->csr->scb.cmd_hi);
- e100_write_flush(nic);
spin_unlock_irqrestore(&nic->cmd_lock, flags);
+ e100_write_flush(nic);
}
static void e100_disable_irq(struct nic *nic)
@@ -607,8 +607,8 @@ static void e100_disable_irq(struct nic
spin_lock_irqsave(&nic->cmd_lock, flags);
writeb(irq_mask_all, &nic->csr->scb.cmd_hi);
- e100_write_flush(nic);
spin_unlock_irqrestore(&nic->cmd_lock, flags);
+ e100_write_flush(nic);
}
static void e100_hw_reset(struct nic *nic)
---
Auke Kok <auke-jan.h.kok@intel.com>
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 16/26] e100: remove skb->dev assignment
2006-08-29 16:41 [PATCH 00/26] e100, e1000, ixgb updates Kok, Auke
` (13 preceding siblings ...)
2006-08-29 16:44 ` [PATCH 15/26] e100: reduce time under spinlock Kok, Auke
@ 2006-08-29 16:44 ` Kok, Auke
2006-08-29 16:44 ` [PATCH 17/26] e100: increment version to 3.5.16-k2 Kok, Auke
` (11 subsequent siblings)
26 siblings, 0 replies; 44+ messages in thread
From: Kok, Auke @ 2006-08-29 16:44 UTC (permalink / raw)
To: Garzik, Jeff
Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Kok, Auke,
Ronciak, John
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
---
drivers/net/e100.c | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)
diff --git a/drivers/net/e100.c b/drivers/net/e100.c
index eb467f8..a98e23a 100644
--- a/drivers/net/e100.c
+++ b/drivers/net/e100.c
@@ -1763,7 +1763,6 @@ static int e100_rx_alloc_skb(struct nic
return -ENOMEM;
/* Align, init, and map the RFD. */
- rx->skb->dev = nic->netdev;
skb_reserve(rx->skb, NET_IP_ALIGN);
memcpy(rx->skb->data, &nic->blank_rfd, sizeof(struct rfd));
rx->dma_addr = pci_map_single(nic->pdev, rx->skb->data,
---
Auke Kok <auke-jan.h.kok@intel.com>
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 17/26] e100: increment version to 3.5.16-k2
2006-08-29 16:41 [PATCH 00/26] e100, e1000, ixgb updates Kok, Auke
` (14 preceding siblings ...)
2006-08-29 16:44 ` [PATCH 16/26] e100: remove skb->dev assignment Kok, Auke
@ 2006-08-29 16:44 ` Kok, Auke
2006-08-29 16:44 ` [PATCH 18/26] ixgb: Convert dev_alloc_skb to netdev_alloc_skb Kok, Auke
` (10 subsequent siblings)
26 siblings, 0 replies; 44+ messages in thread
From: Kok, Auke @ 2006-08-29 16:44 UTC (permalink / raw)
To: Garzik, Jeff
Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Kok, Auke,
Ronciak, John
Increment the version of e100 to 3.5.16-k2, increment dates.
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
---
drivers/net/e100.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/net/e100.c b/drivers/net/e100.c
index a98e23a..23afdff 100644
--- a/drivers/net/e100.c
+++ b/drivers/net/e100.c
@@ -159,7 +159,7 @@
#define DRV_NAME "e100"
#define DRV_EXT "-NAPI"
-#define DRV_VERSION "3.5.10-k4"DRV_EXT
+#define DRV_VERSION "3.5.16-k2"DRV_EXT
#define DRV_DESCRIPTION "Intel(R) PRO/100 Network Driver"
#define DRV_COPYRIGHT "Copyright(c) 1999-2006 Intel Corporation"
#define PFX DRV_NAME ": "
---
Auke Kok <auke-jan.h.kok@intel.com>
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 18/26] ixgb: Convert dev_alloc_skb to netdev_alloc_skb.
2006-08-29 16:41 [PATCH 00/26] e100, e1000, ixgb updates Kok, Auke
` (15 preceding siblings ...)
2006-08-29 16:44 ` [PATCH 17/26] e100: increment version to 3.5.16-k2 Kok, Auke
@ 2006-08-29 16:44 ` Kok, Auke
2006-08-29 16:44 ` [PATCH 19/26] ixgb: convert dev->priv to netdev_priv(dev) Kok, Auke
` (9 subsequent siblings)
26 siblings, 0 replies; 44+ messages in thread
From: Kok, Auke @ 2006-08-29 16:44 UTC (permalink / raw)
To: Garzik, Jeff
Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Kok, Auke,
Ronciak, John
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
---
drivers/net/ixgb/ixgb_main.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c
index 346273d..6959735 100644
--- a/drivers/net/ixgb/ixgb_main.c
+++ b/drivers/net/ixgb/ixgb_main.c
@@ -1948,7 +1948,7 @@ ixgb_clean_rx_irq(struct ixgb_adapter *a
#define IXGB_CB_LENGTH 256
if (length < IXGB_CB_LENGTH) {
struct sk_buff *new_skb =
- dev_alloc_skb(length + NET_IP_ALIGN);
+ netdev_alloc_skb(netdev, length + NET_IP_ALIGN);
if (new_skb) {
skb_reserve(new_skb, NET_IP_ALIGN);
new_skb->dev = netdev;
@@ -2032,7 +2032,7 @@ ixgb_alloc_rx_buffers(struct ixgb_adapte
while(--cleancount > 2) {
/* recycle! its good for you */
if (!(skb = buffer_info->skb))
- skb = dev_alloc_skb(adapter->rx_buffer_len
+ skb = netdev_alloc_skb(netdev, adapter->rx_buffer_len
+ NET_IP_ALIGN);
else {
skb_trim(skb, 0);
---
Auke Kok <auke-jan.h.kok@intel.com>
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 19/26] ixgb: convert dev->priv to netdev_priv(dev).
2006-08-29 16:41 [PATCH 00/26] e100, e1000, ixgb updates Kok, Auke
` (16 preceding siblings ...)
2006-08-29 16:44 ` [PATCH 18/26] ixgb: Convert dev_alloc_skb to netdev_alloc_skb Kok, Auke
@ 2006-08-29 16:44 ` Kok, Auke
2006-08-29 16:44 ` [PATCH 20/26] ixgb: Set a constant blink rate for ixgb adapter identify (1sec on, 1sec off) Kok, Auke
` (8 subsequent siblings)
26 siblings, 0 replies; 44+ messages in thread
From: Kok, Auke @ 2006-08-29 16:44 UTC (permalink / raw)
To: Garzik, Jeff
Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Kok, Auke,
Ronciak, John
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
---
drivers/net/ixgb/ixgb_main.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c
index 6959735..fee4c5a 100644
--- a/drivers/net/ixgb/ixgb_main.c
+++ b/drivers/net/ixgb/ixgb_main.c
@@ -2190,7 +2190,7 @@ ixgb_restore_vlan(struct ixgb_adapter *a
static void ixgb_netpoll(struct net_device *dev)
{
- struct ixgb_adapter *adapter = dev->priv;
+ struct ixgb_adapter *adapter = netdev_priv(dev);
disable_irq(adapter->pdev->irq);
ixgb_intr(adapter->pdev->irq, dev, NULL);
---
Auke Kok <auke-jan.h.kok@intel.com>
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 20/26] ixgb: Set a constant blink rate for ixgb adapter identify (1sec on, 1sec off)
2006-08-29 16:41 [PATCH 00/26] e100, e1000, ixgb updates Kok, Auke
` (17 preceding siblings ...)
2006-08-29 16:44 ` [PATCH 19/26] ixgb: convert dev->priv to netdev_priv(dev) Kok, Auke
@ 2006-08-29 16:44 ` Kok, Auke
2006-08-29 16:45 ` [PATCH 21/26] ixgb: recalculate after how many descriptors to wake the queue Kok, Auke
` (7 subsequent siblings)
26 siblings, 0 replies; 44+ messages in thread
From: Kok, Auke @ 2006-08-29 16:44 UTC (permalink / raw)
To: Garzik, Jeff
Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Kok, Auke,
Ronciak, John
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
---
drivers/net/ixgb/ixgb_ethtool.c | 6 +-----
1 files changed, 1 insertions(+), 5 deletions(-)
diff --git a/drivers/net/ixgb/ixgb_ethtool.c b/drivers/net/ixgb/ixgb_ethtool.c
index cf19b89..ba62108 100644
--- a/drivers/net/ixgb/ixgb_ethtool.c
+++ b/drivers/net/ixgb/ixgb_ethtool.c
@@ -654,11 +654,7 @@ ixgb_phys_id(struct net_device *netdev,
mod_timer(&adapter->blink_timer, jiffies);
- if (data)
- schedule_timeout_interruptible(data * HZ);
- else
- schedule_timeout_interruptible(MAX_SCHEDULE_TIMEOUT);
-
+ msleep_interruptible(data * 1000);
del_timer_sync(&adapter->blink_timer);
ixgb_led_off(&adapter->hw);
clear_bit(IXGB_LED_ON, &adapter->led_status);
---
Auke Kok <auke-jan.h.kok@intel.com>
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 21/26] ixgb: recalculate after how many descriptors to wake the queue
2006-08-29 16:41 [PATCH 00/26] e100, e1000, ixgb updates Kok, Auke
` (18 preceding siblings ...)
2006-08-29 16:44 ` [PATCH 20/26] ixgb: Set a constant blink rate for ixgb adapter identify (1sec on, 1sec off) Kok, Auke
@ 2006-08-29 16:45 ` Kok, Auke
2006-08-29 21:00 ` Jeff Garzik
2006-08-29 16:45 ` [PATCH 22/26] ixgb: Cache-align all TX components of the adapter struct Kok, Auke
` (6 subsequent siblings)
26 siblings, 1 reply; 44+ messages in thread
From: Kok, Auke @ 2006-08-29 16:45 UTC (permalink / raw)
To: Garzik, Jeff
Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Kok, Auke,
Ronciak, John
Recalculate when to wake the queue using DESC_NEEDED instead of a
static hardcoded number.
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
---
drivers/net/ixgb/ixgb.h | 3 ---
drivers/net/ixgb/ixgb_main.c | 2 +-
2 files changed, 1 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ixgb/ixgb.h b/drivers/net/ixgb/ixgb.h
index 82b67af..a4bee8c 100644
--- a/drivers/net/ixgb/ixgb.h
+++ b/drivers/net/ixgb/ixgb.h
@@ -110,9 +110,6 @@ struct ixgb_adapter;
#define IXGB_RXBUFFER_8192 8192
#define IXGB_RXBUFFER_16384 16384
-/* How many Tx Descriptors do we need to call netif_wake_queue? */
-#define IXGB_TX_QUEUE_WAKE 16
-
/* How many Rx Buffers do we bundle into one write to the hardware ? */
#define IXGB_RX_BUFFER_WRITE 4 /* Must be power of 2 */
diff --git a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c
index fee4c5a..960b44b 100644
--- a/drivers/net/ixgb/ixgb_main.c
+++ b/drivers/net/ixgb/ixgb_main.c
@@ -1787,7 +1787,7 @@ ixgb_clean_tx_irq(struct ixgb_adapter *a
if (unlikely(netif_queue_stopped(netdev))) {
spin_lock(&adapter->tx_lock);
if (netif_queue_stopped(netdev) && netif_carrier_ok(netdev) &&
- (IXGB_DESC_UNUSED(tx_ring) > IXGB_TX_QUEUE_WAKE))
+ (IXGB_DESC_UNUSED(tx_ring) >= DESC_NEEDED))
netif_wake_queue(netdev);
spin_unlock(&adapter->tx_lock);
}
---
Auke Kok <auke-jan.h.kok@intel.com>
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 22/26] ixgb: Cache-align all TX components of the adapter struct.
2006-08-29 16:41 [PATCH 00/26] e100, e1000, ixgb updates Kok, Auke
` (19 preceding siblings ...)
2006-08-29 16:45 ` [PATCH 21/26] ixgb: recalculate after how many descriptors to wake the queue Kok, Auke
@ 2006-08-29 16:45 ` Kok, Auke
2006-08-29 17:33 ` Eric Dumazet
2006-08-29 16:45 ` [PATCH 23/26] ixgb: Add buffer_info and test like e1000 has Kok, Auke
` (5 subsequent siblings)
26 siblings, 1 reply; 44+ messages in thread
From: Kok, Auke @ 2006-08-29 16:45 UTC (permalink / raw)
To: Garzik, Jeff
Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Kok, Auke,
Ronciak, John
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
---
drivers/net/ixgb/ixgb.h | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/net/ixgb/ixgb.h b/drivers/net/ixgb/ixgb.h
index a4bee8c..e157247 100644
--- a/drivers/net/ixgb/ixgb.h
+++ b/drivers/net/ixgb/ixgb.h
@@ -170,7 +170,7 @@ struct ixgb_adapter {
unsigned long led_status;
/* TX */
- struct ixgb_desc_ring tx_ring;
+ struct ixgb_desc_ring tx_ring ____cacheline_aligned;
unsigned long timeo_start;
uint32_t tx_cmd_type;
uint64_t hw_csum_tx_good;
---
Auke Kok <auke-jan.h.kok@intel.com>
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 23/26] ixgb: Add buffer_info and test like e1000 has.
2006-08-29 16:41 [PATCH 00/26] e100, e1000, ixgb updates Kok, Auke
` (20 preceding siblings ...)
2006-08-29 16:45 ` [PATCH 22/26] ixgb: Cache-align all TX components of the adapter struct Kok, Auke
@ 2006-08-29 16:45 ` Kok, Auke
2006-08-29 16:45 ` [PATCH 24/26] ixgb: Add PCI Error recovery callbacks Kok, Auke
` (4 subsequent siblings)
26 siblings, 0 replies; 44+ messages in thread
From: Kok, Auke @ 2006-08-29 16:45 UTC (permalink / raw)
To: Garzik, Jeff
Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Kok, Auke,
Ronciak, John
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
---
drivers/net/ixgb/ixgb_main.c | 7 +++++++
1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c
index 960b44b..a5da48a 100644
--- a/drivers/net/ixgb/ixgb_main.c
+++ b/drivers/net/ixgb/ixgb_main.c
@@ -1174,6 +1174,7 @@ ixgb_tso(struct ixgb_adapter *adapter, s
int err;
if (likely(skb_is_gso(skb))) {
+ struct ixgb_buffer *buffer_info;
if (skb_header_cloned(skb)) {
err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
if (err)
@@ -1196,6 +1197,8 @@ ixgb_tso(struct ixgb_adapter *adapter, s
i = adapter->tx_ring.next_to_use;
context_desc = IXGB_CONTEXT_DESC(adapter->tx_ring, i);
+ buffer_info = &adapter->tx_ring.buffer_info[i];
+ WARN_ON(buffer_info->dma != 0);
context_desc->ipcss = ipcss;
context_desc->ipcso = ipcso;
@@ -1233,11 +1236,14 @@ ixgb_tx_csum(struct ixgb_adapter *adapte
uint8_t css, cso;
if(likely(skb->ip_summed == CHECKSUM_HW)) {
+ struct ixgb_buffer *buffer_info;
css = skb->h.raw - skb->data;
cso = (skb->h.raw + skb->csum) - skb->data;
i = adapter->tx_ring.next_to_use;
context_desc = IXGB_CONTEXT_DESC(adapter->tx_ring, i);
+ buffer_info = &adapter->tx_ring.buffer_info[i];
+ WARN_ON(buffer_info->dma != 0);
context_desc->tucss = css;
context_desc->tucso = cso;
@@ -1283,6 +1289,7 @@ ixgb_tx_map(struct ixgb_adapter *adapter
buffer_info = &tx_ring->buffer_info[i];
size = min(len, IXGB_MAX_DATA_PER_TXD);
buffer_info->length = size;
+ WARN_ON(buffer_info->dma != 0);
buffer_info->dma =
pci_map_single(adapter->pdev,
skb->data + offset,
---
Auke Kok <auke-jan.h.kok@intel.com>
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 24/26] ixgb: Add PCI Error recovery callbacks
2006-08-29 16:41 [PATCH 00/26] e100, e1000, ixgb updates Kok, Auke
` (21 preceding siblings ...)
2006-08-29 16:45 ` [PATCH 23/26] ixgb: Add buffer_info and test like e1000 has Kok, Auke
@ 2006-08-29 16:45 ` Kok, Auke
2006-08-29 16:45 ` [PATCH 25/26] ixgb: remove skb->dev assignment Kok, Auke
` (3 subsequent siblings)
26 siblings, 0 replies; 44+ messages in thread
From: Kok, Auke @ 2006-08-29 16:45 UTC (permalink / raw)
To: Garzik, Jeff
Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Kok, Auke,
Ronciak, John
Adds PCI Error recovery callbacks to the Intel 10-gigabit ethernet ixgb
device driver. Lightly tested, works.
"Zhang, Yanmin" <yanmin_zhang@linux.intel.com> wrote:
Both pci_disable_device and ixgb_down would access the device. It doesn't
follow Documentation/pci-error-recovery.txt that error_detected shouldn't do
any access to the device.
Signed-off-by: Linas Vepstas <linas@austin.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
---
drivers/net/ixgb/ixgb_main.c | 112 ++++++++++++++++++++++++++++++++++++++++++
1 files changed, 111 insertions(+), 1 deletions(-)
diff --git a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c
index a5da48a..abca75f 100644
--- a/drivers/net/ixgb/ixgb_main.c
+++ b/drivers/net/ixgb/ixgb_main.c
@@ -118,15 +118,26 @@ static void ixgb_restore_vlan(struct ixg
static void ixgb_netpoll(struct net_device *dev);
#endif
-/* Exported from other modules */
+static pci_ers_result_t ixgb_io_error_detected (struct pci_dev *pdev,
+ enum pci_channel_state state);
+static pci_ers_result_t ixgb_io_slot_reset (struct pci_dev *pdev);
+static void ixgb_io_resume (struct pci_dev *pdev);
+/* Exported from other modules */
extern void ixgb_check_options(struct ixgb_adapter *adapter);
+static struct pci_error_handlers ixgb_err_handler = {
+ .error_detected = ixgb_io_error_detected,
+ .slot_reset = ixgb_io_slot_reset,
+ .resume = ixgb_io_resume,
+};
+
static struct pci_driver ixgb_driver = {
.name = ixgb_driver_name,
.id_table = ixgb_pci_tbl,
.probe = ixgb_probe,
.remove = __devexit_p(ixgb_remove),
+ .err_handler = &ixgb_err_handler
};
MODULE_AUTHOR("Intel Corporation, <linux.nics@intel.com>");
@@ -1550,6 +1561,11 @@ void
ixgb_update_stats(struct ixgb_adapter *adapter)
{
struct net_device *netdev = adapter->netdev;
+ struct pci_dev *pdev = adapter->pdev;
+
+ /* Prevent stats update while adapter is being reset */
+ if (pdev->error_state && pdev->error_state != pci_channel_io_normal)
+ return;
if((netdev->flags & IFF_PROMISC) || (netdev->flags & IFF_ALLMULTI) ||
(netdev->mc_count > IXGB_MAX_NUM_MULTICAST_ADDRESSES)) {
@@ -2205,4 +2221,98 @@ static void ixgb_netpoll(struct net_devi
}
#endif
+/**
+ * ixgb_io_error_detected() - called when PCI error is detected
+ * @pdev pointer to pci device with error
+ * @state pci channel state after error
+ *
+ * This callback is called by the PCI subsystem whenever
+ * a PCI bus error is detected.
+ */
+static pci_ers_result_t ixgb_io_error_detected (struct pci_dev *pdev,
+ enum pci_channel_state state)
+{
+ struct net_device *netdev = pci_get_drvdata(pdev);
+ struct ixgb_adapter *adapter = netdev->priv;
+
+ if(netif_running(netdev))
+ ixgb_down(adapter, TRUE);
+
+ pci_disable_device(pdev);
+
+ /* Request a slot reset. */
+ return PCI_ERS_RESULT_NEED_RESET;
+}
+
+/**
+ * ixgb_io_slot_reset - called after the pci bus has been reset.
+ * @pdev pointer to pci device with error
+ *
+ * This callback is called after the PCI buss has been reset.
+ * Basically, this tries to restart the card from scratch.
+ * This is a shortened version of the device probe/discovery code,
+ * it resembles the first-half of the ixgb_probe() routine.
+ */
+static pci_ers_result_t ixgb_io_slot_reset (struct pci_dev *pdev)
+{
+ struct net_device *netdev = pci_get_drvdata(pdev);
+ struct ixgb_adapter *adapter = netdev->priv;
+
+ if(pci_enable_device(pdev)) {
+ DPRINTK(PROBE, ERR, "Cannot re-enable PCI device after reset.\n");
+ return PCI_ERS_RESULT_DISCONNECT;
+ }
+
+ /* Perform card reset only on one instance of the card */
+ if (0 != PCI_FUNC (pdev->devfn))
+ return PCI_ERS_RESULT_RECOVERED;
+
+ pci_set_master(pdev);
+
+ netif_carrier_off(netdev);
+ netif_stop_queue(netdev);
+ ixgb_reset(adapter);
+
+ /* Make sure the EEPROM is good */
+ if(!ixgb_validate_eeprom_checksum(&adapter->hw)) {
+ DPRINTK(PROBE, ERR, "After reset, the EEPROM checksum is not valid.\n");
+ return PCI_ERS_RESULT_DISCONNECT;
+ }
+ ixgb_get_ee_mac_addr(&adapter->hw, netdev->dev_addr);
+ memcpy(netdev->perm_addr, netdev->dev_addr, netdev->addr_len);
+
+ if(!is_valid_ether_addr(netdev->perm_addr)) {
+ DPRINTK(PROBE, ERR, "After reset, invalid MAC address.\n");
+ return PCI_ERS_RESULT_DISCONNECT;
+ }
+
+ return PCI_ERS_RESULT_RECOVERED;
+}
+
+/**
+ * ixgb_io_resume - called when its OK to resume normal operations
+ * @pdev pointer to pci device with error
+ *
+ * The error recovery driver tells us that its OK to resume
+ * normal operation. Implementation resembles the second-half
+ * of the ixgb_probe() routine.
+ */
+static void ixgb_io_resume (struct pci_dev *pdev)
+{
+ struct net_device *netdev = pci_get_drvdata(pdev);
+ struct ixgb_adapter *adapter = netdev->priv;
+
+ pci_set_master(pdev);
+
+ if(netif_running(netdev)) {
+ if(ixgb_up(adapter)) {
+ printk ("ixgb: can't bring device back up after reset\n");
+ return;
+ }
+ }
+
+ netif_device_attach(netdev);
+ mod_timer(&adapter->watchdog_timer, jiffies);
+}
+
/* ixgb_main.c */
---
Auke Kok <auke-jan.h.kok@intel.com>
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 25/26] ixgb: remove skb->dev assignment
2006-08-29 16:41 [PATCH 00/26] e100, e1000, ixgb updates Kok, Auke
` (22 preceding siblings ...)
2006-08-29 16:45 ` [PATCH 24/26] ixgb: Add PCI Error recovery callbacks Kok, Auke
@ 2006-08-29 16:45 ` Kok, Auke
2006-08-29 16:45 ` [PATCH 26/26] ixgb: Increment version to 1.0.112-k2 Kok, Auke
` (2 subsequent siblings)
26 siblings, 0 replies; 44+ messages in thread
From: Kok, Auke @ 2006-08-29 16:45 UTC (permalink / raw)
To: Garzik, Jeff
Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Kok, Auke,
Ronciak, John
Same change as e1000: remove skb->dev assignment, it's now done
by netdev_alloc_skb.
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
---
drivers/net/ixgb/ixgb_main.c | 11 ++++-------
1 files changed, 4 insertions(+), 7 deletions(-)
diff --git a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c
index abca75f..ee12a85 100644
--- a/drivers/net/ixgb/ixgb_main.c
+++ b/drivers/net/ixgb/ixgb_main.c
@@ -1974,7 +1974,6 @@ ixgb_clean_rx_irq(struct ixgb_adapter *a
netdev_alloc_skb(netdev, length + NET_IP_ALIGN);
if (new_skb) {
skb_reserve(new_skb, NET_IP_ALIGN);
- new_skb->dev = netdev;
memcpy(new_skb->data - NET_IP_ALIGN,
skb->data - NET_IP_ALIGN,
length + NET_IP_ALIGN);
@@ -2054,14 +2053,14 @@ ixgb_alloc_rx_buffers(struct ixgb_adapte
/* leave three descriptors unused */
while(--cleancount > 2) {
/* recycle! its good for you */
- if (!(skb = buffer_info->skb))
- skb = netdev_alloc_skb(netdev, adapter->rx_buffer_len
- + NET_IP_ALIGN);
- else {
+ skb = buffer_info->skb;
+ if (skb) {
skb_trim(skb, 0);
goto map_skb;
}
+ skb = netdev_alloc_skb(netdev, adapter->rx_buffer_len
+ + NET_IP_ALIGN);
if (unlikely(!skb)) {
/* Better luck next round */
adapter->alloc_rx_buff_failed++;
@@ -2074,8 +2073,6 @@ ixgb_alloc_rx_buffers(struct ixgb_adapte
*/
skb_reserve(skb, NET_IP_ALIGN);
- skb->dev = netdev;
-
buffer_info->skb = skb;
buffer_info->length = adapter->rx_buffer_len;
map_skb:
---
Auke Kok <auke-jan.h.kok@intel.com>
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 26/26] ixgb: Increment version to 1.0.112-k2
2006-08-29 16:41 [PATCH 00/26] e100, e1000, ixgb updates Kok, Auke
` (23 preceding siblings ...)
2006-08-29 16:45 ` [PATCH 25/26] ixgb: remove skb->dev assignment Kok, Auke
@ 2006-08-29 16:45 ` Kok, Auke
2006-08-29 21:01 ` Jeff Garzik
[not found] ` <20060829164415.6872.84250.stgit@gitlost.site>
2006-08-31 21:26 ` [PATCH 00/26] e100, e1000, ixgb updates Auke Kok
26 siblings, 1 reply; 44+ messages in thread
From: Kok, Auke @ 2006-08-29 16:45 UTC (permalink / raw)
To: Garzik, Jeff
Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Kok, Auke,
Ronciak, John
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
---
drivers/net/ixgb/ixgb_main.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c
index ee12a85..e36dee1 100644
--- a/drivers/net/ixgb/ixgb_main.c
+++ b/drivers/net/ixgb/ixgb_main.c
@@ -36,7 +36,7 @@ static char ixgb_driver_string[] = "Inte
#else
#define DRIVERNAPI "-NAPI"
#endif
-#define DRV_VERSION "1.0.109-k4"DRIVERNAPI
+#define DRV_VERSION "1.0.112-k2"DRIVERNAPI
char ixgb_driver_version[] = DRV_VERSION;
static char ixgb_copyright[] = "Copyright (c) 1999-2006 Intel Corporation.";
---
Auke Kok <auke-jan.h.kok@intel.com>
^ permalink raw reply related [flat|nested] 44+ messages in thread
* Re: [PATCH 01/26] e1000: Whitespace cleanup, cosmetic changes
[not found] ` <20060829164415.6872.84250.stgit@gitlost.site>
@ 2006-08-29 16:52 ` Auke Kok
0 siblings, 0 replies; 44+ messages in thread
From: Auke Kok @ 2006-08-29 16:52 UTC (permalink / raw)
To: Kok, Auke
Cc: Garzik, Jeff, netdev, akpm, Brandeburg, Jesse, Kok, Auke,
Ronciak, John
Patch 1/26 was truncated by vger, so I've posted them here in 4 separate parts:
http://foo-projects.org/~sofar/e1000_00_whitespace.patch
http://foo-projects.org/~sofar/e1000_01_whitespace.patch
http://foo-projects.org/~sofar/e1000_02_whitespace.patch
http://foo-projects.org/~sofar/e1000_03_whitespace.patch
and all together:
http://foo-projects.org/~sofar/8fc897b00a7d81ffaa24e18881c2d6b10698ab0b.patch
Cheers,
Auke
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 22/26] ixgb: Cache-align all TX components of the adapter struct.
2006-08-29 16:45 ` [PATCH 22/26] ixgb: Cache-align all TX components of the adapter struct Kok, Auke
@ 2006-08-29 17:33 ` Eric Dumazet
2006-08-29 20:59 ` Jeff Garzik
0 siblings, 1 reply; 44+ messages in thread
From: Eric Dumazet @ 2006-08-29 17:33 UTC (permalink / raw)
To: Kok, Auke
Cc: Garzik, Jeff, netdev, akpm, Brandeburg, Jesse, Kok, Auke,
Ronciak, John
On Tuesday 29 August 2006 18:45, Kok, Auke wrote:
>
> /* TX */
> - struct ixgb_desc_ring tx_ring;
> + struct ixgb_desc_ring tx_ring ____cacheline_aligned;
> unsigned long timeo_start;
On UP, this would only enlarge the size of structure and might consume more
cache lines...
I guess ____cacheline_aligned_in_smp is preferred here.
(see include/linux/netdevice.h)
Eric
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 08/26] e1000: Deprecate mii-tool SIOCMIIREG ioctl
2006-08-29 16:44 ` [PATCH 08/26] e1000: Deprecate mii-tool SIOCMIIREG ioctl Kok, Auke
@ 2006-08-29 20:49 ` Jeff Garzik
0 siblings, 0 replies; 44+ messages in thread
From: Jeff Garzik @ 2006-08-29 20:49 UTC (permalink / raw)
To: Kok, Auke; +Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Ronciak, John
Kok, Auke wrote:
> Deprecate mii-tool SIOCMIIREG ioctl. This ioctl is broken in e1000 and
> ethtool has this functionality in working order.
>
> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
> Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
This doesn't "deprecated" anything, it changes the ABI on a user's
machine by _removing_ ioctl handling code that used to be there.
What's broken, and what is needed to fix? Perhaps e1000 should instead
be limited to 10/100 networks/speeds?
Jeff
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 07/26] e1000: Use module param array code
2006-08-29 16:44 ` [PATCH 07/26] e1000: Use module param array code Kok, Auke
@ 2006-08-29 20:50 ` Jeff Garzik
0 siblings, 0 replies; 44+ messages in thread
From: Jeff Garzik @ 2006-08-29 20:50 UTC (permalink / raw)
To: Kok, Auke; +Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Ronciak, John
ACK patches 1-7
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 09/26] e1000: unify WoL capability detection code
2006-08-29 16:44 ` [PATCH 09/26] e1000: unify WoL capability detection code Kok, Auke
@ 2006-08-29 20:51 ` Jeff Garzik
2006-08-29 21:54 ` Auke Kok
0 siblings, 1 reply; 44+ messages in thread
From: Jeff Garzik @ 2006-08-29 20:51 UTC (permalink / raw)
To: Kok, Auke; +Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Ronciak, John
Kok, Auke wrote:
> WoL is constantly giving problems and needed a rewrite. Consolidates
> all WoL capabilities into a single function, and disables WoL for all
> other ports on the device except for port A.
Is this a behavior change that affects users in the field?
i.e. if they are using WoL via port B, and upgrade to this driver, their
setup suddenly breaks, right?
Jeff
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 11/26] e1000: clean up skb allocation code, patch submitted by Christoph
2006-08-29 16:44 ` [PATCH 11/26] e1000: clean up skb allocation code, patch submitted by Christoph Kok, Auke
@ 2006-08-29 20:52 ` Jeff Garzik
2006-08-29 22:15 ` Auke Kok
0 siblings, 1 reply; 44+ messages in thread
From: Jeff Garzik @ 2006-08-29 20:52 UTC (permalink / raw)
To: Kok, Auke; +Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Ronciak, John
Kok, Auke wrote:
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
ACK, but please don't include attribution in the subject line.
Add a "From: ...author..." as the first line of your patch description
instead.
See #12 of Documentation/SubmittingPatches for more info.
Jeff
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 15/26] e100: reduce time under spinlock
2006-08-29 16:44 ` [PATCH 15/26] e100: reduce time under spinlock Kok, Auke
@ 2006-08-29 20:55 ` Jeff Garzik
2006-08-29 22:10 ` Auke Kok
0 siblings, 1 reply; 44+ messages in thread
From: Jeff Garzik @ 2006-08-29 20:55 UTC (permalink / raw)
To: Kok, Auke; +Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Ronciak, John
Kok, Auke wrote:
> We're waiting for a write flush to finish before unlocking, which
> is not needed. Release the spinlock after the write command.
>
> Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
This undoes the following change:
commit ad8c48ad3bbef078616ed4d2652d362dfd962f09
Author: Catalin(ux aka Dino) BOIE <util@deuroconsult.ro>
Date: Sat Mar 4 12:18:59 2006 -0500
Fix io ordering problems in e100
Checking e100.c code against Documentation/io_ordering.txt I found the
following problem:
spin_lock_irq...
write
spin-unlock
e100_write_flush
The attached patch fix the code like this:
spin_lock_irq...
write
e100_write_flush
spin-unlock
Signed-off-by: Catalin BOIE <catab@umbrella.ro>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 14/26] e100: fix error recovery
2006-08-29 16:44 ` [PATCH 14/26] e100: fix error recovery Kok, Auke
@ 2006-08-29 20:55 ` Jeff Garzik
0 siblings, 0 replies; 44+ messages in thread
From: Jeff Garzik @ 2006-08-29 20:55 UTC (permalink / raw)
To: Kok, Auke; +Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Ronciak, John
ACK patches 12-14
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 22/26] ixgb: Cache-align all TX components of the adapter struct.
2006-08-29 17:33 ` Eric Dumazet
@ 2006-08-29 20:59 ` Jeff Garzik
2006-08-29 21:01 ` Auke Kok
2006-08-29 22:20 ` Auke Kok
0 siblings, 2 replies; 44+ messages in thread
From: Jeff Garzik @ 2006-08-29 20:59 UTC (permalink / raw)
To: Eric Dumazet
Cc: Kok, Auke, netdev, akpm, Brandeburg, Jesse, Kok, Auke,
Ronciak, John
Eric Dumazet wrote:
> On Tuesday 29 August 2006 18:45, Kok, Auke wrote:
>> /* TX */
>> - struct ixgb_desc_ring tx_ring;
>> + struct ixgb_desc_ring tx_ring ____cacheline_aligned;
>> unsigned long timeo_start;
>
> On UP, this would only enlarge the size of structure and might consume more
> cache lines...
>
> I guess ____cacheline_aligned_in_smp is preferred here.
>
> (see include/linux/netdevice.h)
Agreed.
Jeff
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 21/26] ixgb: recalculate after how many descriptors to wake the queue
2006-08-29 16:45 ` [PATCH 21/26] ixgb: recalculate after how many descriptors to wake the queue Kok, Auke
@ 2006-08-29 21:00 ` Jeff Garzik
0 siblings, 0 replies; 44+ messages in thread
From: Jeff Garzik @ 2006-08-29 21:00 UTC (permalink / raw)
To: Kok, Auke; +Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Ronciak, John
ACK patches 16-21
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 26/26] ixgb: Increment version to 1.0.112-k2
2006-08-29 16:45 ` [PATCH 26/26] ixgb: Increment version to 1.0.112-k2 Kok, Auke
@ 2006-08-29 21:01 ` Jeff Garzik
0 siblings, 0 replies; 44+ messages in thread
From: Jeff Garzik @ 2006-08-29 21:01 UTC (permalink / raw)
To: Kok, Auke; +Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Ronciak, John
ACK patches 23-26
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 22/26] ixgb: Cache-align all TX components of the adapter struct.
2006-08-29 20:59 ` Jeff Garzik
@ 2006-08-29 21:01 ` Auke Kok
2006-08-29 22:20 ` Auke Kok
1 sibling, 0 replies; 44+ messages in thread
From: Auke Kok @ 2006-08-29 21:01 UTC (permalink / raw)
To: Jeff Garzik
Cc: Eric Dumazet, netdev, akpm, Brandeburg, Jesse, Kok, Auke,
Ronciak, John
Jeff Garzik wrote:
> Eric Dumazet wrote:
>> On Tuesday 29 August 2006 18:45, Kok, Auke wrote:
>>> /* TX */
>>> - struct ixgb_desc_ring tx_ring;
>>> + struct ixgb_desc_ring tx_ring ____cacheline_aligned;
>>> unsigned long timeo_start;
>>
>> On UP, this would only enlarge the size of structure and might consume
>> more cache lines...
>>
>> I guess ____cacheline_aligned_in_smp is preferred here.
>>
>> (see include/linux/netdevice.h)
>
> Agreed.
No objections. I can rework my tree if needed, but lets wait what else comes up
first.
Auke
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 09/26] e1000: unify WoL capability detection code
2006-08-29 20:51 ` Jeff Garzik
@ 2006-08-29 21:54 ` Auke Kok
0 siblings, 0 replies; 44+ messages in thread
From: Auke Kok @ 2006-08-29 21:54 UTC (permalink / raw)
To: Jeff Garzik
Cc: Kok, Auke, netdev, akpm, Brandeburg, Jesse, Kok, Auke,
Ronciak, John
Jeff Garzik wrote:
> Kok, Auke wrote:
>> WoL is constantly giving problems and needed a rewrite. Consolidates
>> all WoL capabilities into a single function, and disables WoL for all
>> other ports on the device except for port A.
>
> Is this a behavior change that affects users in the field?
>
> i.e. if they are using WoL via port B, and upgrade to this driver, their
> setup suddenly breaks, right?
it's rather the other way around:
The problem is that the adapters involved (dual- and quad- port NIC adapters,
not the dual port onboard adapters) have known issues (as in: wol does not
work) with WoL on port b, c, d. Formerly the code was trying to enable WoL on
ports that were not capable of doing so (82546, 82571). This fix explicitly
still allows the properly working (as in: wol works correctly on port b)
dual-port adapters that have WoL enabled for port b in the EEPROM enabled to
function with WoL on those ports (i.e. most adapters).
The users who have those boards should have noticed that their adapter didn't
function with WoL on those ports. This all comes back to a hardware errata that
has been out here for a while. This patch brings the code up to spec with that.
Now users will see that WoL will not work on those ports if they attempt to
enable it, where previously it was enabled in software but didn't do anything.
We make sure to return -EOPNOTSUPP through ethtool as well for all cases.
Cheers
Auke
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 15/26] e100: reduce time under spinlock
2006-08-29 20:55 ` Jeff Garzik
@ 2006-08-29 22:10 ` Auke Kok
0 siblings, 0 replies; 44+ messages in thread
From: Auke Kok @ 2006-08-29 22:10 UTC (permalink / raw)
To: Jeff Garzik; +Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Ronciak, John
Jeff Garzik wrote:
> Kok, Auke wrote:
>> We're waiting for a write flush to finish before unlocking, which
>> is not needed. Release the spinlock after the write command.
>>
>> Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
>
> This undoes the following change:
ack, not good. Dropped it from the tree.
Auke
>
>
> commit ad8c48ad3bbef078616ed4d2652d362dfd962f09
> Author: Catalin(ux aka Dino) BOIE <util@deuroconsult.ro>
> Date: Sat Mar 4 12:18:59 2006 -0500
>
> Fix io ordering problems in e100
>
> Checking e100.c code against Documentation/io_ordering.txt I found the
> following problem:
>
> spin_lock_irq...
> write
> spin-unlock
> e100_write_flush
>
> The attached patch fix the code like this:
>
> spin_lock_irq...
> write
> e100_write_flush
> spin-unlock
>
> Signed-off-by: Catalin BOIE <catab@umbrella.ro>
> Signed-off-by: Jeff Garzik <jeff@garzik.org>
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 11/26] e1000: clean up skb allocation code, patch submitted by Christoph
2006-08-29 20:52 ` Jeff Garzik
@ 2006-08-29 22:15 ` Auke Kok
0 siblings, 0 replies; 44+ messages in thread
From: Auke Kok @ 2006-08-29 22:15 UTC (permalink / raw)
To: Jeff Garzik; +Cc: netdev, akpm, Brandeburg, Jesse, Kok, Auke, Ronciak, John
Jeff Garzik wrote:
> Kok, Auke wrote:
>> Signed-off-by: Christoph Hellwig <hch@lst.de>
>> Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
>> Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
>
> ACK, but please don't include attribution in the subject line.
>
> Add a "From: ...author..." as the first line of your patch description
> instead.
that was already done :) (I figured out how to do this recently and all the
community submissions will keep authorship in our tree).
Fixed in the tree.
Auke
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 22/26] ixgb: Cache-align all TX components of the adapter struct.
2006-08-29 20:59 ` Jeff Garzik
2006-08-29 21:01 ` Auke Kok
@ 2006-08-29 22:20 ` Auke Kok
1 sibling, 0 replies; 44+ messages in thread
From: Auke Kok @ 2006-08-29 22:20 UTC (permalink / raw)
To: Jeff Garzik
Cc: Eric Dumazet, netdev, akpm, Brandeburg, Jesse, Kok, Auke,
Ronciak, John
Jeff Garzik wrote:
> Eric Dumazet wrote:
>> On Tuesday 29 August 2006 18:45, Kok, Auke wrote:
>>> /* TX */
>>> - struct ixgb_desc_ring tx_ring;
>>> + struct ixgb_desc_ring tx_ring ____cacheline_aligned;
>>> unsigned long timeo_start;
>>
>> On UP, this would only enlarge the size of structure and might consume
>> more cache lines...
>>
>> I guess ____cacheline_aligned_in_smp is preferred here.
>>
>> (see include/linux/netdevice.h)
changed in our tree to ____cacheline_aligned_in_smp.
Thanks,
Auke
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 00/26] e100, e1000, ixgb updates
2006-08-29 16:41 [PATCH 00/26] e100, e1000, ixgb updates Kok, Auke
` (25 preceding siblings ...)
[not found] ` <20060829164415.6872.84250.stgit@gitlost.site>
@ 2006-08-31 21:26 ` Auke Kok
2006-08-31 21:48 ` Jeff Garzik
26 siblings, 1 reply; 44+ messages in thread
From: Auke Kok @ 2006-08-31 21:26 UTC (permalink / raw)
To: Garzik, Jeff
Cc: Kok, Auke, netdev, Brandeburg, Jesse, Kok, Auke, Ronciak, John
Jeff,
I have adjusted several things in our queue after comments. Here is a summary
of those changes against the original summary.
These changes are available through git.
Please pull:
git pull git://lost.foo-projects.org/~ahkok/git/netdev-2.6 upstream
(against netdev-2.6#upstream 699a71238856b19091503c671bac8abb1e3f9a3a)
Cheers,
Auke
Kok, Auke wrote:
> Vasily Averin <vvs@sw.ru>
> e1000: IRQ resources cleanup
> e1000: e1000_probe resources cleanup
> e1000: ring buffers resources cleanup
>
> Jesse Brandeburg <jesse.brandeburg@intel.com>
> e1000: unify WoL capability detection code
all unchanged
> e1000: Add PCI ID 0x10a4 for our new 4-port PCI-Express device
This patch was not Acked but I assume no objections exist.
> ixgb: Set a constant blink rate for ixgb adapter identify (1sec on, 1sec off)
unchanged
> ixgb: Cache-align all TX components of the adapter struct.
modified per comments to include "_in_smp"
> ixgb: Add buffer_info and test like e1000 has.
unchanged
> Christoph Hellwig <hch@lst.de>
> e1000: clean up skb allocation code, patch submitted by Christoph
Changed topic as attribution is already in the patch correctly
> Jeff Kirsher <jeffrey.t.kirsher@intel.com>
> e1000: Deprecate mii-tool SIOCMIIREG ioctl
Dropped patch.
> Auke Kok <auke-jan.h.kok@intel.com>
> e1000: Whitespace cleanup, cosmetic changes
> e1000: error out if we cannot enable PCI device on resume
> e1000: remove unused part_num reading code
> e1000: Use module param array code
> e1000: Increment driver version to 7.2.7-k2
> e100: Convert e100 to use netdev_alloc_skb().
all unchanged
> e100: reduce time under spinlock
Dropped patch.
> e100: remove skb->dev assignment
> e100: increment version to 3.5.16-k2
> ixgb: Convert dev_alloc_skb to netdev_alloc_skb.
> ixgb: convert dev->priv to netdev_priv(dev).
> ixgb: recalculate after how many descriptors to wake the queue
> ixgb: remove skb->dev assignment
> ixgb: Increment version to 1.0.112-k2
>
> Linas Vepstas <linas@austin.ibm.com>
> e100: fix error recovery
> ixgb: Add PCI Error recovery callbacks
all unchanged
Cheers,
Auke
---
drivers/net/e100.c | 8
drivers/net/e1000/e1000.h | 6
drivers/net/e1000/e1000_ethtool.c | 219 ++++---
drivers/net/e1000/e1000_hw.c | 1059 ++++++++++++++++++-------------------
drivers/net/e1000/e1000_hw.h | 26
drivers/net/e1000/e1000_main.c | 145 +++--
drivers/net/e1000/e1000_param.c | 161 +++--
drivers/net/ixgb/ixgb.h | 5
drivers/net/ixgb/ixgb_ethtool.c | 6
drivers/net/ixgb/ixgb_main.c | 140 ++++-
10 files changed, 979 insertions(+), 796 deletions(-)
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 00/26] e100, e1000, ixgb updates
2006-08-31 21:26 ` [PATCH 00/26] e100, e1000, ixgb updates Auke Kok
@ 2006-08-31 21:48 ` Jeff Garzik
0 siblings, 0 replies; 44+ messages in thread
From: Jeff Garzik @ 2006-08-31 21:48 UTC (permalink / raw)
To: Auke Kok; +Cc: netdev, Brandeburg, Jesse, Kok, Auke, Ronciak, John
pulled into #upstream, thanks
^ permalink raw reply [flat|nested] 44+ messages in thread
end of thread, other threads:[~2006-08-31 21:48 UTC | newest]
Thread overview: 44+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-08-29 16:41 [PATCH 00/26] e100, e1000, ixgb updates Kok, Auke
2006-08-29 16:44 ` [PATCH 02/26] e1000: IRQ resources cleanup Kok, Auke
2006-08-29 16:44 ` [PATCH 03/26] e1000: e1000_probe " Kok, Auke
2006-08-29 16:44 ` [PATCH 04/26] e1000: ring buffers " Kok, Auke
2006-08-29 16:44 ` [PATCH 05/26] e1000: error out if we cannot enable PCI device on resume Kok, Auke
2006-08-29 16:44 ` [PATCH 06/26] e1000: remove unused part_num reading code Kok, Auke
2006-08-29 16:44 ` [PATCH 07/26] e1000: Use module param array code Kok, Auke
2006-08-29 20:50 ` Jeff Garzik
2006-08-29 16:44 ` [PATCH 08/26] e1000: Deprecate mii-tool SIOCMIIREG ioctl Kok, Auke
2006-08-29 20:49 ` Jeff Garzik
2006-08-29 16:44 ` [PATCH 09/26] e1000: unify WoL capability detection code Kok, Auke
2006-08-29 20:51 ` Jeff Garzik
2006-08-29 21:54 ` Auke Kok
2006-08-29 16:44 ` [PATCH 10/26] e1000: Add PCI ID 0x10a4 for our new 4-port PCI-Express device Kok, Auke
2006-08-29 16:44 ` [PATCH 11/26] e1000: clean up skb allocation code, patch submitted by Christoph Kok, Auke
2006-08-29 20:52 ` Jeff Garzik
2006-08-29 22:15 ` Auke Kok
2006-08-29 16:44 ` [PATCH 12/26] e1000: Increment driver version to 7.2.7-k2 Kok, Auke
2006-08-29 16:44 ` [PATCH 13/26] e100: Convert e100 to use netdev_alloc_skb() Kok, Auke
2006-08-29 16:44 ` [PATCH 14/26] e100: fix error recovery Kok, Auke
2006-08-29 20:55 ` Jeff Garzik
2006-08-29 16:44 ` [PATCH 15/26] e100: reduce time under spinlock Kok, Auke
2006-08-29 20:55 ` Jeff Garzik
2006-08-29 22:10 ` Auke Kok
2006-08-29 16:44 ` [PATCH 16/26] e100: remove skb->dev assignment Kok, Auke
2006-08-29 16:44 ` [PATCH 17/26] e100: increment version to 3.5.16-k2 Kok, Auke
2006-08-29 16:44 ` [PATCH 18/26] ixgb: Convert dev_alloc_skb to netdev_alloc_skb Kok, Auke
2006-08-29 16:44 ` [PATCH 19/26] ixgb: convert dev->priv to netdev_priv(dev) Kok, Auke
2006-08-29 16:44 ` [PATCH 20/26] ixgb: Set a constant blink rate for ixgb adapter identify (1sec on, 1sec off) Kok, Auke
2006-08-29 16:45 ` [PATCH 21/26] ixgb: recalculate after how many descriptors to wake the queue Kok, Auke
2006-08-29 21:00 ` Jeff Garzik
2006-08-29 16:45 ` [PATCH 22/26] ixgb: Cache-align all TX components of the adapter struct Kok, Auke
2006-08-29 17:33 ` Eric Dumazet
2006-08-29 20:59 ` Jeff Garzik
2006-08-29 21:01 ` Auke Kok
2006-08-29 22:20 ` Auke Kok
2006-08-29 16:45 ` [PATCH 23/26] ixgb: Add buffer_info and test like e1000 has Kok, Auke
2006-08-29 16:45 ` [PATCH 24/26] ixgb: Add PCI Error recovery callbacks Kok, Auke
2006-08-29 16:45 ` [PATCH 25/26] ixgb: remove skb->dev assignment Kok, Auke
2006-08-29 16:45 ` [PATCH 26/26] ixgb: Increment version to 1.0.112-k2 Kok, Auke
2006-08-29 21:01 ` Jeff Garzik
[not found] ` <20060829164415.6872.84250.stgit@gitlost.site>
2006-08-29 16:52 ` [PATCH 01/26] e1000: Whitespace cleanup, cosmetic changes Auke Kok
2006-08-31 21:26 ` [PATCH 00/26] e100, e1000, ixgb updates Auke Kok
2006-08-31 21:48 ` Jeff Garzik
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).