* [net-next v2 0/4][pull request] Intel Wired LAN Driver Updates
@ 2012-05-17 12:31 Jeff Kirsher
2012-05-17 12:31 ` [net-next 1/4] e1000e: fix typo in definition of E1000_CTRL_EXT_FORCE_SMBUS Jeff Kirsher
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Jeff Kirsher @ 2012-05-17 12:31 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann
This series of patches contains updates for e1000, e1000e and igb.
v2: correct the patch for e1000 that looks for the last byte in a page to
what was actually sent and tested. What I originally sent in v1 of
the series was a munge between v1 & v2 of what Sebastian sent me.
The following are changes since commit dc6b9b78234fecdc6d2ca5e1629185718202bcf5:
net: include/net/sock.h cleanup
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Bruce Allan (1):
e1000e: fix typo in definition of E1000_CTRL_EXT_FORCE_SMBUS
Matthew Vick (1):
igb: Disable the BMC-to-OS Watchdog Enable bit for DMAC.
Sebastian Andrzej Siewior (2):
e1000: remove workaround for Errata 23 from jumbo alloc
e1000: look in the page and not in skb->data for the last byte
drivers/net/ethernet/intel/e1000/e1000_main.c | 30 ++++--------------------
drivers/net/ethernet/intel/e1000e/defines.h | 2 +-
drivers/net/ethernet/intel/igb/e1000_defines.h | 2 +
drivers/net/ethernet/intel/igb/igb_main.c | 3 ++
4 files changed, 11 insertions(+), 26 deletions(-)
--
1.7.7.6
^ permalink raw reply [flat|nested] 5+ messages in thread
* [net-next 1/4] e1000e: fix typo in definition of E1000_CTRL_EXT_FORCE_SMBUS
2012-05-17 12:31 [net-next v2 0/4][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
@ 2012-05-17 12:31 ` Jeff Kirsher
2012-05-17 12:31 ` [net-next 2/4] e1000: remove workaround for Errata 23 from jumbo alloc Jeff Kirsher
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Jeff Kirsher @ 2012-05-17 12:31 UTC (permalink / raw)
To: davem; +Cc: Bruce Allan, netdev, gospo, sassmann, Jeff Kirsher
From: Bruce Allan <bruce.w.allan@intel.com>
This define is needed by i217.
Reported-by: Bjorn Mork <bjorn@mork.no>
Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/e1000e/defines.h | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/net/ethernet/intel/e1000e/defines.h b/drivers/net/ethernet/intel/e1000e/defines.h
index 11c4666..351a409 100644
--- a/drivers/net/ethernet/intel/e1000e/defines.h
+++ b/drivers/net/ethernet/intel/e1000e/defines.h
@@ -76,7 +76,7 @@
/* Extended Device Control */
#define E1000_CTRL_EXT_LPCD 0x00000004 /* LCD Power Cycle Done */
#define E1000_CTRL_EXT_SDP3_DATA 0x00000080 /* Value of SW Definable Pin 3 */
-#define E1000_CTRL_EXT_FORCE_SMBUS 0x00000004 /* Force SMBus mode*/
+#define E1000_CTRL_EXT_FORCE_SMBUS 0x00000800 /* Force SMBus mode */
#define E1000_CTRL_EXT_EE_RST 0x00002000 /* Reinitialize from EEPROM */
#define E1000_CTRL_EXT_SPD_BYPS 0x00008000 /* Speed Select Bypass */
#define E1000_CTRL_EXT_RO_DIS 0x00020000 /* Relaxed Ordering disable */
--
1.7.7.6
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [net-next 2/4] e1000: remove workaround for Errata 23 from jumbo alloc
2012-05-17 12:31 [net-next v2 0/4][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
2012-05-17 12:31 ` [net-next 1/4] e1000e: fix typo in definition of E1000_CTRL_EXT_FORCE_SMBUS Jeff Kirsher
@ 2012-05-17 12:31 ` Jeff Kirsher
2012-05-17 12:31 ` [net-next v2 3/4] e1000: look in the page and not in skb->data for the last byte Jeff Kirsher
2012-05-17 12:31 ` [net-next 4/4] igb: Disable the BMC-to-OS Watchdog Enable bit for DMAC Jeff Kirsher
3 siblings, 0 replies; 5+ messages in thread
From: Jeff Kirsher @ 2012-05-17 12:31 UTC (permalink / raw)
To: davem; +Cc: Sebastian Andrzej Siewior, netdev, gospo, sassmann, Jeff Kirsher
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
According to the comment, errata 23 says that the memory we allocate
can't cross a 64KiB boundary. In case of jumbo frames we allocate
complete pages which can never cross the 64KiB boundary because
PAGE_SIZE should be a multiple of 64KiB so we stop either before the
boundary or start after it but never cross it. Furthermore the check
seems bogus because it looks at skb->data which is not seen by the HW
at all because we only pass the DMA address of the page we allocated. So
I *think* the workaround is not required here.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/e1000/e1000_main.c | 24 ------------------------
1 files changed, 0 insertions(+), 24 deletions(-)
diff --git a/drivers/net/ethernet/intel/e1000/e1000_main.c b/drivers/net/ethernet/intel/e1000/e1000_main.c
index f1aef68..fefbf4d 100644
--- a/drivers/net/ethernet/intel/e1000/e1000_main.c
+++ b/drivers/net/ethernet/intel/e1000/e1000_main.c
@@ -4391,30 +4391,6 @@ e1000_alloc_jumbo_rx_buffers(struct e1000_adapter *adapter,
break;
}
- /* Fix for errata 23, can't cross 64kB boundary */
- if (!e1000_check_64k_bound(adapter, skb->data, bufsz)) {
- struct sk_buff *oldskb = skb;
- e_err(rx_err, "skb align check failed: %u bytes at "
- "%p\n", bufsz, skb->data);
- /* Try again, without freeing the previous */
- skb = netdev_alloc_skb_ip_align(netdev, bufsz);
- /* Failed allocation, critical failure */
- if (!skb) {
- dev_kfree_skb(oldskb);
- adapter->alloc_rx_buff_failed++;
- break;
- }
-
- if (!e1000_check_64k_bound(adapter, skb->data, bufsz)) {
- /* give up */
- dev_kfree_skb(skb);
- dev_kfree_skb(oldskb);
- break; /* while (cleaned_count--) */
- }
-
- /* Use new allocation */
- dev_kfree_skb(oldskb);
- }
buffer_info->skb = skb;
buffer_info->length = adapter->rx_buffer_len;
check_page:
--
1.7.7.6
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [net-next v2 3/4] e1000: look in the page and not in skb->data for the last byte
2012-05-17 12:31 [net-next v2 0/4][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
2012-05-17 12:31 ` [net-next 1/4] e1000e: fix typo in definition of E1000_CTRL_EXT_FORCE_SMBUS Jeff Kirsher
2012-05-17 12:31 ` [net-next 2/4] e1000: remove workaround for Errata 23 from jumbo alloc Jeff Kirsher
@ 2012-05-17 12:31 ` Jeff Kirsher
2012-05-17 12:31 ` [net-next 4/4] igb: Disable the BMC-to-OS Watchdog Enable bit for DMAC Jeff Kirsher
3 siblings, 0 replies; 5+ messages in thread
From: Jeff Kirsher @ 2012-05-17 12:31 UTC (permalink / raw)
To: davem; +Cc: Sebastian Andrzej Siewior, netdev, gospo, sassmann, Jeff Kirsher
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
The code seems to want to look at the last byte where the HW puts some
information. Since the skb->data area is never seen by the HW I guess it
does not work as expected. We pass the page address to the HW so I
*think* in order to get to the last byte where the information might be
one should use the page buffer and take a look.
This is of course not more than just compile tested.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/e1000/e1000_main.c | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/drivers/net/ethernet/intel/e1000/e1000_main.c b/drivers/net/ethernet/intel/e1000/e1000_main.c
index fefbf4d..37b7d1c 100644
--- a/drivers/net/ethernet/intel/e1000/e1000_main.c
+++ b/drivers/net/ethernet/intel/e1000/e1000_main.c
@@ -4066,7 +4066,11 @@ static bool e1000_clean_jumbo_rx_irq(struct e1000_adapter *adapter,
/* errors is only valid for DD + EOP descriptors */
if (unlikely((status & E1000_RXD_STAT_EOP) &&
(rx_desc->errors & E1000_RXD_ERR_FRAME_ERR_MASK))) {
- u8 last_byte = *(skb->data + length - 1);
+ u8 *mapped;
+ u8 last_byte;
+
+ mapped = page_address(buffer_info->page);
+ last_byte = *(mapped + length - 1);
if (TBI_ACCEPT(hw, status, rx_desc->errors, length,
last_byte)) {
spin_lock_irqsave(&adapter->stats_lock,
--
1.7.7.6
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [net-next 4/4] igb: Disable the BMC-to-OS Watchdog Enable bit for DMAC.
2012-05-17 12:31 [net-next v2 0/4][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
` (2 preceding siblings ...)
2012-05-17 12:31 ` [net-next v2 3/4] e1000: look in the page and not in skb->data for the last byte Jeff Kirsher
@ 2012-05-17 12:31 ` Jeff Kirsher
3 siblings, 0 replies; 5+ messages in thread
From: Jeff Kirsher @ 2012-05-17 12:31 UTC (permalink / raw)
To: davem; +Cc: Matthew Vick, netdev, gospo, sassmann, Jeff Kirsher
From: Matthew Vick <matthew.vick@intel.com>
Under certain scenarios, it's possible that bursty manageability traffic
over the BMC-to-OS path may overrun the internal manageability receive
buffer causing dropped manageability packets. Clearing this bit prevents
this situation by interrupting coalescing to allow manageability traffic
through.
Signed-off-by: Matthew Vick <matthew.vick@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/igb/e1000_defines.h | 2 ++
drivers/net/ethernet/intel/igb/igb_main.c | 3 +++
2 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/drivers/net/ethernet/intel/igb/e1000_defines.h b/drivers/net/ethernet/intel/igb/e1000_defines.h
index 6409f85..ec7e4fe 100644
--- a/drivers/net/ethernet/intel/igb/e1000_defines.h
+++ b/drivers/net/ethernet/intel/igb/e1000_defines.h
@@ -301,6 +301,8 @@
* transactions */
#define E1000_DMACR_DMAC_LX_SHIFT 28
#define E1000_DMACR_DMAC_EN 0x80000000 /* Enable DMA Coalescing */
+/* DMA Coalescing BMC-to-OS Watchdog Enable */
+#define E1000_DMACR_DC_BMC2OSW_EN 0x00008000
#define E1000_DMCTXTH_DMCTTHR_MASK 0x00000FFF /* DMA Coalescing Transmit
* Threshold */
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index 9bbf1a2..dd3bfe8 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -7147,6 +7147,9 @@ static void igb_init_dmac(struct igb_adapter *adapter, u32 pba)
/* watchdog timer= +-1000 usec in 32usec intervals */
reg |= (1000 >> 5);
+
+ /* Disable BMC-to-OS Watchdog Enable */
+ reg &= ~E1000_DMACR_DC_BMC2OSW_EN;
wr32(E1000_DMACR, reg);
/*
--
1.7.7.6
^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2012-05-17 12:31 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-05-17 12:31 [net-next v2 0/4][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
2012-05-17 12:31 ` [net-next 1/4] e1000e: fix typo in definition of E1000_CTRL_EXT_FORCE_SMBUS Jeff Kirsher
2012-05-17 12:31 ` [net-next 2/4] e1000: remove workaround for Errata 23 from jumbo alloc Jeff Kirsher
2012-05-17 12:31 ` [net-next v2 3/4] e1000: look in the page and not in skb->data for the last byte Jeff Kirsher
2012-05-17 12:31 ` [net-next 4/4] igb: Disable the BMC-to-OS Watchdog Enable bit for DMAC Jeff Kirsher
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).