]> git.baikalelectronics.ru Git - kernel.git/commit
e1000e: workaround DMA unit hang on I218
authorBruce Allan <bruce.w.allan@intel.com>
Wed, 20 Feb 2013 03:06:34 +0000 (03:06 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Tue, 5 Mar 2013 09:01:43 +0000 (01:01 -0800)
commit26a01c3f7483cfc27bc72bf49c0184ec27379ee7
tree8589b7417dc32ef47815c5f4e26864fd29c759cf
parenta70d60419a2279090cb0f9c3da2cb14f48df2b2c
e1000e: workaround DMA unit hang on I218

At 1000Mbps link speed, one of the MAC's internal clocks can be stopped for
up to 4us when entering K1 (a power mode of the MAC-PHY interconnect).  If
the MAC is waiting for completion indications for 2 DMA write requests into
Host memory (e.g. descriptor writeback or Rx packet writing) and the
indications occur while the clock is stopped, both indications will be
missed by the MAC causing the MAC to wait for the completion indications
and be unable to generate further DMA write requests.  This results in an
apparent hardware hang.

Work-around the issue by disabling the de-assertion of the clock request
when 1000Mbps link is acquired (K1 must be disabled while doing this).

Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Tested-by: Jeff Pieper <jeffrey.e.pieper@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/e1000e/ich8lan.c
drivers/net/ethernet/intel/e1000e/ich8lan.h
drivers/net/ethernet/intel/e1000e/regs.h