From mboxrd@z Thu Jan 1 00:00:00 1970 From: Simon Arlott Subject: e1000 82546EB MSI support Date: Mon, 21 Jul 2008 22:41:34 +0100 Message-ID: <4885028E.5050405@simon.arlott.org.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: netdev@vger.kernel.org, e1000-devel@lists.sourceforge.net Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: e1000-devel-bounces@lists.sourceforge.net Errors-To: e1000-devel-bounces@lists.sourceforge.net List-Id: netdev.vger.kernel.org MSI support was added to e1000 a long time ago: Commit fa4f7ef3aaa6cee6b04ebe90266ee893e0b2ce07 (Wed Nov 1 08:48:10 2006 -0800) [e1000: MSI support for PCI-e adapters] + if(adapter->hw.mac_type > e1000_82547_rev_2) { + adapter->have_msi = TRUE; + if((err = pci_enable_msi(adapter->pdev))) { + DPRINTK(PROBE, ERR, + "Unable to allocate MSI interrupt Error: %d\n", err); + adapter->have_msi = FALSE; + } + } and commit 9ac98284428961bd5be285a6cc1f5e6f5b6644aa (Thu Apr 28 19:39:13 2005 -0700) [e1000: add dynamic generic MSI interrupt routine] - if (adapter->hw.mac_type > e1000_82547_rev_2) { + if (adapter->hw.mac_type >= e1000_82571) { Is there are reason why it's only enabled for >= e1000_82571? This isn't explained in the commit descriptions or in comments (aside from mentioning that the support is for PCI-e cards). 82546EB appears to support it (lspci below), but I get multiple TX hangs if I enable it: [ 230.518382] e1000: em0: e1000_watchdog: NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX [ 230.522873] ADDRCONF(NETDEV_CHANGE): em0: link becomes ready [ 234.683290] e1000: em0: e1000_clean_tx_irq: Detected Tx Unit Hang [ 234.683293] Tx Queue <0> [ 234.683295] TDH <6> [ 234.683296] TDT <6> [ 234.683298] next_to_use <6> [ 234.683299] next_to_clean <4> [ 234.683300] buffer_info[next_to_clean] [ 234.683302] time_stamp [ 234.683303] next_to_watch <4> [ 234.683305] jiffies [ 234.683306] next_to_watch.status <10> [ 236.683701] e1000: em0: e1000_clean_tx_irq: Detected Tx Unit Hang [ 236.683703] Tx Queue <0> [ 236.683704] TDH <6> [ 236.683705] TDT <6> [ 236.683705] next_to_use <6> [ 236.683706] next_to_clean <4> [ 236.683707] buffer_info[next_to_clean] [ 236.683707] time_stamp [ 236.683708] next_to_watch <4> [ 236.683709] jiffies [ 236.683710] next_to_watch.status <10> [ 238.683697] e1000: em0: e1000_clean_tx_irq: Detected Tx Unit Hang [ 238.683699] Tx Queue <0> [ 238.683700] TDH <6> [ 238.683700] TDT <6> [ 238.683701] next_to_use <6> [ 238.683702] next_to_clean <4> [ 238.683703] buffer_info[next_to_clean] [ 238.683703] time_stamp [ 238.683704] next_to_watch <4> [ 238.683705] jiffies [ 238.683705] next_to_watch.status <10> It manages to receive a couple of packets sometimes (like IPv6 RAs)... 04:00.0 Ethernet controller: Intel Corporation 82546EB Gigabit Ethernet Controller (Copper) (rev 01) Subsystem: Intel Corporation PRO/1000 MT Dual Port Server Adapter Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx- Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- SERR- TAbort- SERR-