Re: em driver, 82574L chip, and possibly ASPM

2010-11-23 Thread Mike Tancsa
On 11/23/2010 7:47 AM, Ivan Voras wrote:
> It looks like I'm unfortunate enough to have to deploy on a machine
> which has the 82574L Intel NIC chip on a Supermicro X8SIE-F board, which
> apparently has hardware issues, according to this thread:
> 
> http://sourceforge.net/tracker/index.php?func=detail&aid=2908463&group_id=42302&atid=447449
> 
> 

Interesting, this is the same nic that has been giving me grief! Mine is
on an Intel server board (S3420GPX). The symptoms are VERY similar to
what the LINUX user sees as well with RX errors and the traffic patterns.

---Mike


> One of the proposed workarounds is disabling "Active State Power
> Management" in the BIOS and in the OS.
> 
> I have disabled it in BIOS but I don't know how to disable it in FreeBSD
> (apparently only disabling it in BIOS isn't enough).
> 
> Any ideas on how to achieve the effect in FreeBSD?
> 
> ___
> freebsd-...@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"
> 
> 

___
freebsd-hardware@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
To unsubscribe, send any mail to "freebsd-hardware-unsubscr...@freebsd.org"


Re: em driver, 82574L chip, and possibly ASPM

2010-11-23 Thread Joel Dahl
On 23-11-2010 13:47, Ivan Voras wrote:
> It looks like I'm unfortunate enough to have to deploy on a machine 
> which has the 82574L Intel NIC chip on a Supermicro X8SIE-F board, which 
> apparently has hardware issues, according to this thread:

I have a Supermicro X7SPE-HF board with two onboard Intel 82574L nics
and I see the same thing.  The nics seem to "die" if I push enough data
through them and the only way to recover is to reboot.  I noticed this a few
days ago and I haven't had any time to investigate more, so I guess this
is just a "me too"...

-- 
Joel
___
freebsd-hardware@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
To unsubscribe, send any mail to "freebsd-hardware-unsubscr...@freebsd.org"


Re: em driver, 82574L chip, and possibly ASPM

2010-11-23 Thread Mike Tancsa
On 11/23/2010 8:16 AM, Ivan Voras wrote:
> On 11/23/10 14:03, Mike Tancsa wrote:
>> On 11/23/2010 7:47 AM, Ivan Voras wrote:
>>> It looks like I'm unfortunate enough to have to deploy on a machine
>>> which has the 82574L Intel NIC chip on a Supermicro X8SIE-F board, which
>>> apparently has hardware issues, according to this thread:
>>>
>>> http://sourceforge.net/tracker/index.php?func=detail&aid=2908463&group_id=42302&atid=447449
>>>
>>>
>>>
>>
>> Interesting, this is the same nic that has been giving me grief! Mine is
>> on an Intel server board (S3420GPX). The symptoms are VERY similar to
>> what the LINUX user sees as well with RX errors and the traffic patterns.
> 
> I've posted detailed info on this NIC in the thread "em card wedging" -
> can you compare it with yours?
> 
> The whole thing looks very sensitive to BIOS settings. I've just toggled
> something that looked unrelated (don't remember what, I've been toggling
> BIOS settings all day) and the machine has been doing a flood-ping for
> 20 minutes without wedging (which doesn't mean it won't wedge as soon as
> I send this message, it did such things before).


I posted whats in the BIOS at

http://www.tancsa.com/82574.html

Unfortunately, if I disable the BIOS option highlighted I can no longer
netboot the box :(  For my production box having the issues, this is not
a problem.  But it makes it difficult for testing on my lab box.  I am
not sure if that even really disables IPMI ?  Also on this box whats
NIC1 and NIC2 is the opposite of what FreeBSD sees as em0 and em1.

So far I have tried

Driver from HEAD -- This seems to help a bit in that wedges are less
disable MSIX - no difference, still hangs

It seems the nic will get one error and never recover. There will just
be a steady stream of them.  On the other onboard nic (a different type
of em), the card will see the odd "no_buff" error, but it recovers like
all the other em nics. Where as this problem nic, gets errors and they
just keep on going up and up. Using the driver from HEAD, I can do an
ifconfig em1 down;sleep 1;ifconfig em1 up and that fixes the problem

dev.em.1.mac_stats.missed_packets: 1292
dev.em.1.mac_stats.recv_no_buff: 31

where as previous versions of the driver would panic the box doing that.

Looking at the driver from HEAD, there does seem to be some mention of
ASPM. Is this what the LINUX driver is doing too ?



   /* PCI-Ex Control Registers */
switch (hw->mac.type) {
case e1000_82574:
case e1000_82583:
reg = E1000_READ_REG(hw, E1000_GCR);
reg |= (1 << 22);
E1000_WRITE_REG(hw, E1000_GCR, reg);

/*
 * Workaround for hardware errata.
 * apply workaround for hardware errata documented in errata
 * docs Fixes issue where some error prone or unreliable
PCIe
 * completions are occurring, particularly with ASPM
enabled.
 * Without fix, issue can cause tx timeouts.
 */
reg = E1000_READ_REG(hw, E1000_GCR2);
reg |= 1;
E1000_WRITE_REG(hw, E1000_GCR2, reg);
break;
default:
break;
}

return;




---Mike
___
freebsd-hardware@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
To unsubscribe, send any mail to "freebsd-hardware-unsubscr...@freebsd.org"


Re: em driver, 82574L chip, and possibly ASPM

2010-11-23 Thread Sean Bruno
On Tue, 2010-11-23 at 04:47 -0800, Ivan Voras wrote:
> It looks like I'm unfortunate enough to have to deploy on a machine 
> which has the 82574L Intel NIC chip on a Supermicro X8SIE-F board, which 
> apparently has hardware issues, according to this thread:
> 
> http://sourceforge.net/tracker/index.php?func=detail&aid=2908463&group_id=42302&atid=447449
> 
> One of the proposed workarounds is disabling "Active State Power 
> Management" in the BIOS and in the OS.
> 
> I have disabled it in BIOS but I don't know how to disable it in FreeBSD 
> (apparently only disabling it in BIOS isn't enough).
> 
> Any ideas on how to achieve the effect in FreeBSD?
> 
> ___
> freebsd-...@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Can I get an example pciconf -lv off of a couple of machines?  I've been
seeing some "issues" here at big purple that are similar.

Sean

mine:

i...@pci0:5:0:0:class=0x02 card=0x8975152d chip=0x10c98086
rev=0x01 hdr=0x00
vendor = 'Intel Corporation'
class  = network
subclass   = ethernet
i...@pci0:5:0:1:class=0x02 card=0x8975152d chip=0x10c98086
rev=0x01 hdr=0x00
vendor = 'Intel Corporation'
class  = network
subclass   = ethernet


___
freebsd-hardware@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
To unsubscribe, send any mail to "freebsd-hardware-unsubscr...@freebsd.org"


Re: em driver, 82574L chip, and possibly ASPM

2010-11-23 Thread Mike Tancsa
On 11/23/2010 12:39 PM, Sean Bruno wrote:
> On Tue, 2010-11-23 at 04:47 -0800, Ivan Voras wrote:
>> It looks like I'm unfortunate enough to have to deploy on a machine 
>> which has the 82574L Intel NIC chip on a Supermicro X8SIE-F board, which 
> i...@pci0:5:0:0:class=0x02 card=0x8975152d chip=0x10c98086

Strange, the 82574 attaches as em for me, not igb

e...@pci0:10:0:0:class=0x02 card=0x34ec8086 chip=0x10d38086
rev=0x00 hdr=0x00
vendor = 'Intel Corporation'
device = 'Intel 82574L Gigabit Ethernet Controller (82574L)'
class  = network
subclass   = ethernet
cap 01[c8] = powerspec 2  supports D0 D3  current D0
cap 05[d0] = MSI supports 1 message, 64 bit enabled with 1 message
cap 10[e0] = PCI-Express 1 endpoint max data 128(256) link x1(x1)
cap 11[a0] = MSI-X supports 5 messages in map 0x1c
ecap 0001[100] = AER 1 0 fatal 0 non-fatal 0 corrected
ecap 0003[140] = Serial 1 001517ed68a4

Normally, its msix, but I had disabled that hoping it would fix the problem

em1:  port 0x2000-0x201f mem
0xb410-0xb411,0xb412-0xb4123fff irq 16 at dev
ice 0.0 on pci10
em1: Using an MSI interrupt
em1: [FILTER]
em1: Ethernet address: 00:15:17:ed:68:a4


---Mike
___
freebsd-hardware@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
To unsubscribe, send any mail to "freebsd-hardware-unsubscr...@freebsd.org"


Re: em driver, 82574L chip, and possibly ASPM

2010-11-23 Thread Jack Vogel
Those are 82576, not 82574, totally different hardware. Would you please
test the
new driver that will be going into HEAD today, I'd like to see testing on it
as much
as possible for a few days.

Cheers,

Jack


On Tue, Nov 23, 2010 at 9:39 AM, Sean Bruno  wrote:

> On Tue, 2010-11-23 at 04:47 -0800, Ivan Voras wrote:
> > It looks like I'm unfortunate enough to have to deploy on a machine
> > which has the 82574L Intel NIC chip on a Supermicro X8SIE-F board, which
> > apparently has hardware issues, according to this thread:
> >
> >
> http://sourceforge.net/tracker/index.php?func=detail&aid=2908463&group_id=42302&atid=447449
> >
> > One of the proposed workarounds is disabling "Active State Power
> > Management" in the BIOS and in the OS.
> >
> > I have disabled it in BIOS but I don't know how to disable it in FreeBSD
> > (apparently only disabling it in BIOS isn't enough).
> >
> > Any ideas on how to achieve the effect in FreeBSD?
> >
> > ___
> > freebsd-...@freebsd.org mailing list
> > http://lists.freebsd.org/mailman/listinfo/freebsd-net
> > To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"
>
> Can I get an example pciconf -lv off of a couple of machines?  I've been
> seeing some "issues" here at big purple that are similar.
>
> Sean
>
> mine:
>
> i...@pci0:5:0:0:class=0x02 card=0x8975152d chip=0x10c98086
> rev=0x01 hdr=0x00
>vendor = 'Intel Corporation'
>class  = network
>subclass   = ethernet
> i...@pci0:5:0:1:class=0x02 card=0x8975152d chip=0x10c98086
> rev=0x01 hdr=0x00
>vendor = 'Intel Corporation'
>class  = network
>subclass   = ethernet
>
>
> ___
> freebsd-...@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"
>
___
freebsd-hardware@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
To unsubscribe, send any mail to "freebsd-hardware-unsubscr...@freebsd.org"


Re: em driver, 82574L chip, and possibly ASPM

2010-11-23 Thread Jack Vogel
82574 is supposed to be em, not igb :)  Its always had this kind of
'in-between'
status, it was targeted as a 'client' or consumer part, but it has MSIX
which
make it almost like 8257[56].

Mike, there are some further 82574 changes to shared code that I'm looking
into today.

Jack


On Tue, Nov 23, 2010 at 10:17 AM, Mike Tancsa  wrote:

> On 11/23/2010 12:39 PM, Sean Bruno wrote:
> > On Tue, 2010-11-23 at 04:47 -0800, Ivan Voras wrote:
> >> It looks like I'm unfortunate enough to have to deploy on a machine
> >> which has the 82574L Intel NIC chip on a Supermicro X8SIE-F board, which
> > i...@pci0:5:0:0:class=0x02 card=0x8975152d chip=0x10c98086
>
> Strange, the 82574 attaches as em for me, not igb
>
> e...@pci0:10:0:0:class=0x02 card=0x34ec8086 chip=0x10d38086
> rev=0x00 hdr=0x00
>vendor = 'Intel Corporation'
>device = 'Intel 82574L Gigabit Ethernet Controller (82574L)'
>class  = network
>subclass   = ethernet
>cap 01[c8] = powerspec 2  supports D0 D3  current D0
>cap 05[d0] = MSI supports 1 message, 64 bit enabled with 1 message
>cap 10[e0] = PCI-Express 1 endpoint max data 128(256) link x1(x1)
>cap 11[a0] = MSI-X supports 5 messages in map 0x1c
> ecap 0001[100] = AER 1 0 fatal 0 non-fatal 0 corrected
> ecap 0003[140] = Serial 1 001517ed68a4
>
> Normally, its msix, but I had disabled that hoping it would fix the problem
>
> em1:  port 0x2000-0x201f mem
> 0xb410-0xb411,0xb412-0xb4123fff irq 16 at dev
> ice 0.0 on pci10
> em1: Using an MSI interrupt
> em1: [FILTER]
> em1: Ethernet address: 00:15:17:ed:68:a4
>
>
>---Mike
> ___
> freebsd-...@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"
>
___
freebsd-hardware@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
To unsubscribe, send any mail to "freebsd-hardware-unsubscr...@freebsd.org"


Re: em driver, 82574L chip, and possibly ASPM

2010-11-23 Thread Ivan Voras
On 23 November 2010 18:39, Sean Bruno  wrote:
> On Tue, 2010-11-23 at 04:47 -0800, Ivan Voras wrote:
>> It looks like I'm unfortunate enough to have to deploy on a machine
>> which has the 82574L Intel NIC chip on a Supermicro X8SIE-F board, which
>> apparently has hardware issues, according to this thread:
>>
>> http://sourceforge.net/tracker/index.php?func=detail&aid=2908463&group_id=42302&atid=447449
>>
>> One of the proposed workarounds is disabling "Active State Power
>> Management" in the BIOS and in the OS.
>>
>> I have disabled it in BIOS but I don't know how to disable it in FreeBSD
>> (apparently only disabling it in BIOS isn't enough).
>>
>> Any ideas on how to achieve the effect in FreeBSD?

> Can I get an example pciconf -lv off of a couple of machines?  I've been
> seeing some "issues" here at big purple that are similar.

> i...@pci0:5:0:0:        class=0x02 card=0x8975152d chip=0x10c98086
> rev=0x01 hdr=0x00
>    vendor     = 'Intel Corporation'
>    class      = network
>    subclass   = ethernet
> i...@pci0:5:0:1:        class=0x02 card=0x8975152d chip=0x10c98086
> rev=0x01 hdr=0x00
>    vendor     = 'Intel Corporation'
>    class      = network
>    subclass   = ethernet

Not the same card, mine is on the em driver.

http://permalink.gmane.org/gmane.os.freebsd.devel.hardware/7584
___
freebsd-hardware@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
To unsubscribe, send any mail to "freebsd-hardware-unsubscr...@freebsd.org"


Re: em driver, 82574L chip, and possibly ASPM

2010-12-24 Thread Jan Koum
hi Ivan and Mike,

wanted to follow up and see if you found a solid long-term solution to this
bug. we are still seeing this problem in our 8.2 environment with ASPM
already disabled.  here is what we have:

1. motherboard is SuperMicro X8SIE-LN4F Intel Xeon:

e...@pci0:3:0:0: class=0x02 card=0x040d15d9 chip=0x10d38086 rev=0x00
hdr=0x00
vendor = 'Intel Corporation'
device = 'Intel 82574L Gigabit Ethernet Controller (82574L)'
class  = network
subclass   = ethernet
e...@pci0:4:0:0: class=0x02 card=0x040d15d9 chip=0x10d38086 rev=0x00
hdr=0x00
vendor = 'Intel Corporation'
device = 'Intel 82574L Gigabit Ethernet Controller (82574L)'
class  = network
subclass   = ethernet
e...@pci0:5:0:0: class=0x02 card=0x040d15d9 chip=0x10d38086 rev=0x00
hdr=0x00
vendor = 'Intel Corporation'
device = 'Intel 82574L Gigabit Ethernet Controller (82574L)'
class  = network
subclass   = ethernet
e...@pci0:6:0:0: class=0x02 card=0x040d15d9 chip=0x10d38086 rev=0x00
hdr=0x00
vendor = 'Intel Corporation'
device = 'Intel 82574L Gigabit Ethernet Controller (82574L)'
class  = network
subclass   = ethernet

2. ASPM is already disabled in the BIOS

3. when em1 interface locks up, sysctl debug says:

Interface is NOT RUNNING
and INACTIVE
em1: hw tdh = 0, hw tdt = 0
em1: hw rdh = 0, hw rdt = 0
em1: Tx Queue Status = 0
em1: TX descriptors avail = 110
em1: Tx Descriptors avail failure = 319
em1: RX discarded packets = 0
em1: RX Next to Check = 80
em1: RX Next to Refresh = 80

4. doing "ifconfig em1 down; sleep1; ifconfig em1 up" resolves the issue and
removes OACTIVE flag from em1.

5. we are running 8.2-PRERELEASE from December 19th:
% grep '$FreeBSD' /usr/src/sys/dev/e1000/if_em.c
/*$FreeBSD: src/sys/dev/e1000/if_em.c,v 1.21.2.18 2010/12/14 19:59:39 jfv
Exp $*/

dmesg output is:

em1:  port 0xcc00-0xcc1f mem
0xfb4e-0xfb4f,0xfb4dc000-0xfb4d irq 17 at device 0.0 on pci4
em1: Reserved 0x2 bytes for rid 0x10 type 3 at 0xfb4e
em1: Reserved 0x4000 bytes for rid 0x1c type 3 at 0xfb4dc000
em1: attempting to allocate 3 MSI-X vectors (5 supported)
msi: routing MSI-X IRQ 259 to local APIC 0 vector 53
msi: routing MSI-X IRQ 260 to local APIC 0 vector 54
msi: routing MSI-X IRQ 261 to local APIC 0 vector 55
em1: using IRQs 259-261 for MSI-X
em1: Using MSIX interrupts with 3 vectors
em1: [MPSAFE]
em1: [ITHREAD]
em1: [MPSAFE]
em1: [ITHREAD]
em1: [MPSAFE]
em1: [ITHREAD]
em1: bpf attached
em1: Ethernet address: 00:25:90:0e:25:e9

aside from running cronjob every minute to check for dead interface and
reset it, is there anything else we can try?

thanks.


On Tue, Nov 23, 2010 at 10:36 AM, Jack Vogel  wrote:

> 82574 is supposed to be em, not igb :)  Its always had this kind of
> 'in-between'
> status, it was targeted as a 'client' or consumer part, but it has MSIX
> which
> make it almost like 8257[56].
>
> Mike, there are some further 82574 changes to shared code that I'm looking
> into today.
>
> Jack
>
>
> On Tue, Nov 23, 2010 at 10:17 AM, Mike Tancsa  wrote:
>
> > On 11/23/2010 12:39 PM, Sean Bruno wrote:
> > > On Tue, 2010-11-23 at 04:47 -0800, Ivan Voras wrote:
> > >> It looks like I'm unfortunate enough to have to deploy on a machine
> > >> which has the 82574L Intel NIC chip on a Supermicro X8SIE-F board,
> which
> > > i...@pci0:5:0:0:class=0x02 card=0x8975152d chip=0x10c98086
> >
> > Strange, the 82574 attaches as em for me, not igb
> >
> > e...@pci0:10:0:0:class=0x02 card=0x34ec8086 chip=0x10d38086
> > rev=0x00 hdr=0x00
> >vendor = 'Intel Corporation'
> >device = 'Intel 82574L Gigabit Ethernet Controller (82574L)'
> >class  = network
> >subclass   = ethernet
> >cap 01[c8] = powerspec 2  supports D0 D3  current D0
> >cap 05[d0] = MSI supports 1 message, 64 bit enabled with 1 message
> >cap 10[e0] = PCI-Express 1 endpoint max data 128(256) link x1(x1)
> >cap 11[a0] = MSI-X supports 5 messages in map 0x1c
> > ecap 0001[100] = AER 1 0 fatal 0 non-fatal 0 corrected
> > ecap 0003[140] = Serial 1 001517ed68a4
> >
> > Normally, its msix, but I had disabled that hoping it would fix the
> problem
> >
> > em1:  port 0x2000-0x201f mem
> > 0xb410-0xb411,0xb412-0xb4123fff irq 16 at dev
> > ice 0.0 on pci10
> > em1: Using an MSI interrupt
> > em1: [FILTER]
> > em1: Ethernet address: 00:15:17:ed:68:a4
> >
> >
> >---Mike
> > ___
> > freebsd-...@freebsd.org mailing list
> > http://lists.freebsd.org/mailman/listinfo/freebsd-net
> > To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"
> >
> ___
> freebsd-hardware@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
> To unsubscribe, send any mail to "freebsd-hardware-unsubscr...@freebsd.org
> "
>
___
freeb

Re: em driver, 82574L chip, and possibly ASPM

2010-12-24 Thread Ivan Voras
On 24 December 2010 23:44, Jan Koum  wrote:
>
> hi Ivan and Mike,
> wanted to follow up and see if you found a solid long-term solution to this
> bug. we are still seeing this problem in our 8.2 environment with ASPM
> already disabled.  here is what we have:

Hi,

The patches Jack made when this discussion was ongoing helped both me
and AFAIK Mike also. The machine I had which exhibited these problems
now works fine and stable. The patches should have been MFCed, but
just in case - try the version from 9-current.

During testing, I've also found that the BIOS setting "Remap PCI
memory" or "Remap device memory" or something like that (I can't look
it up now) also helps if disabled. Mike AFAIK didn't have this setting
in his machine's BIOS.
___
freebsd-hardware@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
To unsubscribe, send any mail to "freebsd-hardware-unsubscr...@freebsd.org"


Re: em driver, 82574L chip, and possibly ASPM

2010-12-24 Thread Mike Tancsa
On 12/24/2010 5:44 PM, Jan Koum wrote:
> hi Ivan and Mike,
> 
> wanted to follow up and see if you found a solid long-term solution to this
> bug. we are still seeing this problem in our 8.2 environment with ASPM
> already disabled.  here is what we have:

Hmmm,
With the latest version of the driver in RELENG_8 (its the same as in
HEAD) I havent seen the problem.  However, I would only see it once per
week prior to that.  The odd thing is that it would happen during a
slightly lower than normal backup load, but almost always at the same
time (early sunday AM).  Not sure what would trigger it exactly.  If it
happened again, I was going to enable port mirroring on the switchport
and capture the traffic, hoping some "special" pattern would enable the
issue.

Do you have IPMI enabled on the NIC ? I tried to turn it off on my MB,
but there is no clear way to do this. It 'seems' to be off, but not sure
if it really is.  One thing I noticed was that when the NIC was hung, it
still was able to receive and process IPMI commands from an external host.

---Mike

> 
> 1. motherboard is SuperMicro X8SIE-LN4F Intel Xeon:
> 
> e...@pci0:3:0:0: class=0x02 card=0x040d15d9 chip=0x10d38086 rev=0x00
> hdr=0x00
> vendor = 'Intel Corporation'
> device = 'Intel 82574L Gigabit Ethernet Controller (82574L)'
> class  = network
> subclass   = ethernet
> e...@pci0:4:0:0: class=0x02 card=0x040d15d9 chip=0x10d38086 rev=0x00
> hdr=0x00
> vendor = 'Intel Corporation'
> device = 'Intel 82574L Gigabit Ethernet Controller (82574L)'
> class  = network
> subclass   = ethernet
> e...@pci0:5:0:0: class=0x02 card=0x040d15d9 chip=0x10d38086 rev=0x00
> hdr=0x00
> vendor = 'Intel Corporation'
> device = 'Intel 82574L Gigabit Ethernet Controller (82574L)'
> class  = network
> subclass   = ethernet
> e...@pci0:6:0:0: class=0x02 card=0x040d15d9 chip=0x10d38086 rev=0x00
> hdr=0x00
> vendor = 'Intel Corporation'
> device = 'Intel 82574L Gigabit Ethernet Controller (82574L)'
> class  = network
> subclass   = ethernet
> 
> 2. ASPM is already disabled in the BIOS
> 
> 3. when em1 interface locks up, sysctl debug says:
> 
> Interface is NOT RUNNING
> and INACTIVE
> em1: hw tdh = 0, hw tdt = 0
> em1: hw rdh = 0, hw rdt = 0
> em1: Tx Queue Status = 0
> em1: TX descriptors avail = 110
> em1: Tx Descriptors avail failure = 319
> em1: RX discarded packets = 0
> em1: RX Next to Check = 80
> em1: RX Next to Refresh = 80
> 
> 4. doing "ifconfig em1 down; sleep1; ifconfig em1 up" resolves the issue and
> removes OACTIVE flag from em1.
> 
> 5. we are running 8.2-PRERELEASE from December 19th:
> % grep '$FreeBSD' /usr/src/sys/dev/e1000/if_em.c
> /*$FreeBSD: src/sys/dev/e1000/if_em.c,v 1.21.2.18 2010/12/14 19:59:39 jfv
> Exp $*/
> 
> dmesg output is:
> 
> em1:  port 0xcc00-0xcc1f mem
> 0xfb4e-0xfb4f,0xfb4dc000-0xfb4d irq 17 at device 0.0 on pci4
> em1: Reserved 0x2 bytes for rid 0x10 type 3 at 0xfb4e
> em1: Reserved 0x4000 bytes for rid 0x1c type 3 at 0xfb4dc000
> em1: attempting to allocate 3 MSI-X vectors (5 supported)
> msi: routing MSI-X IRQ 259 to local APIC 0 vector 53
> msi: routing MSI-X IRQ 260 to local APIC 0 vector 54
> msi: routing MSI-X IRQ 261 to local APIC 0 vector 55
> em1: using IRQs 259-261 for MSI-X
> em1: Using MSIX interrupts with 3 vectors
> em1: [MPSAFE]
> em1: [ITHREAD]
> em1: [MPSAFE]
> em1: [ITHREAD]
> em1: [MPSAFE]
> em1: [ITHREAD]
> em1: bpf attached
> em1: Ethernet address: 00:25:90:0e:25:e9
> 
> aside from running cronjob every minute to check for dead interface and
> reset it, is there anything else we can try?
> 
> thanks.
> 
> 
> On Tue, Nov 23, 2010 at 10:36 AM, Jack Vogel  wrote:
> 
>> 82574 is supposed to be em, not igb :)  Its always had this kind of
>> 'in-between'
>> status, it was targeted as a 'client' or consumer part, but it has MSIX
>> which
>> make it almost like 8257[56].
>>
>> Mike, there are some further 82574 changes to shared code that I'm looking
>> into today.
>>
>> Jack
>>
>>
>> On Tue, Nov 23, 2010 at 10:17 AM, Mike Tancsa  wrote:
>>
>>> On 11/23/2010 12:39 PM, Sean Bruno wrote:
 On Tue, 2010-11-23 at 04:47 -0800, Ivan Voras wrote:
> It looks like I'm unfortunate enough to have to deploy on a machine
> which has the 82574L Intel NIC chip on a Supermicro X8SIE-F board,
>> which
 i...@pci0:5:0:0:class=0x02 card=0x8975152d chip=0x10c98086
>>>
>>> Strange, the 82574 attaches as em for me, not igb
>>>
>>> e...@pci0:10:0:0:class=0x02 card=0x34ec8086 chip=0x10d38086
>>> rev=0x00 hdr=0x00
>>>vendor = 'Intel Corporation'
>>>device = 'Intel 82574L Gigabit Ethernet Controller (82574L)'
>>>class  = network
>>>subclass   = ethernet
>>>cap 01[c8] = powerspec 2  supports D0 D3  current D0
>>>cap 05[d0] = MSI supports 1 message, 64 bit enabled with 1 message
>>>cap 10[e0] = PCI-Express 1 endp

Re: em driver, 82574L chip, and possibly ASPM

2011-01-11 Thread Mike Tancsa
On 12/24/2010 5:44 PM, Jan Koum wrote:
> hi Ivan and Mike,
> 
> wanted to follow up and see if you found a solid long-term solution to this
> bug. we are still seeing this problem in our 8.2 environment with ASPM
> already disabled.  here is what we have:
> 
> 1. motherboard is SuperMicro X8SIE-LN4F Intel Xeon:
> 

Hi Jack,
Looks like this problem is not completely gone :(  I have seen it now 
on 2 different machines. On the RELENG_7, ASPM was enabled in the BIOS (INTEL  
DH55TC MB), so I have disabled that for now to see what happens. On the 
RELENG_8 machine, its been a LOT better since 7.1.8, but again it happened last 
night during a backup


dev.em.1.%desc: Intel(R) PRO/1000 Network Connection 7.1.8
dev.em.1.%driver: em
dev.em.1.%location: slot=0 function=0 handle=\_SB_.PCI0.PEX4.HART
dev.em.1.%pnpinfo: vendor=0x8086 device=0x10d3 subvendor=0x8086 
subdevice=0x34ec class=0x02
dev.em.1.%parent: pci10
dev.em.1.nvm: -1
dev.em.1.debug: -1
dev.em.1.rx_int_delay: 0
dev.em.1.tx_int_delay: 66
dev.em.1.rx_abs_int_delay: 66
dev.em.1.tx_abs_int_delay: 66
dev.em.1.rx_processing_limit: 100
dev.em.1.flow_control: 3
dev.em.1.link_irq: 346
dev.em.1.mbuf_alloc_fail: 0
dev.em.1.cluster_alloc_fail: 0
dev.em.1.dropped: 0
dev.em.1.tx_dma_fail: 0
dev.em.1.rx_overruns: 0
dev.em.1.watchdog_timeouts: 0
dev.em.1.device_control: 1209008712
dev.em.1.rx_control: 67141634
dev.em.1.fc_high_water: 18432
dev.em.1.fc_low_water: 16932
dev.em.1.queue0.txd_head: 231
dev.em.1.queue0.txd_tail: 231
dev.em.1.queue0.tx_irq: 828804317
dev.em.1.queue0.no_desc_avail: 0
dev.em.1.queue0.rxd_head: 692
dev.em.1.queue0.rxd_tail: 691
dev.em.1.queue0.rx_irq: 1035962009
dev.em.1.mac_stats.excess_coll: 0
dev.em.1.mac_stats.single_coll: 0
dev.em.1.mac_stats.multiple_coll: 0
dev.em.1.mac_stats.late_coll: 0
dev.em.1.mac_stats.collision_count: 0
dev.em.1.mac_stats.symbol_errors: 0
dev.em.1.mac_stats.sequence_errors: 0
dev.em.1.mac_stats.defer_count: 0
dev.em.1.mac_stats.missed_packets: 395
dev.em.1.mac_stats.recv_no_buff: 22
dev.em.1.mac_stats.recv_undersize: 0
dev.em.1.mac_stats.recv_fragmented: 0
dev.em.1.mac_stats.recv_oversize: 0
dev.em.1.mac_stats.recv_jabber: 0
dev.em.1.mac_stats.recv_errs: 0
dev.em.1.mac_stats.crc_errs: 0
dev.em.1.mac_stats.alignment_errs: 0
dev.em.1.mac_stats.coll_ext_errs: 0
dev.em.1.mac_stats.xon_recvd: 0
dev.em.1.mac_stats.xon_txd: 0
dev.em.1.mac_stats.xoff_recvd: 0
dev.em.1.mac_stats.xoff_txd: 0
dev.em.1.mac_stats.total_pkts_recvd: 2374779279
dev.em.1.mac_stats.good_pkts_recvd: 2374778884
dev.em.1.mac_stats.bcast_pkts_recvd: 91866
dev.em.1.mac_stats.mcast_pkts_recvd: 14709
dev.em.1.mac_stats.rx_frames_64: 3694217
dev.em.1.mac_stats.rx_frames_65_127: 42644392
dev.em.1.mac_stats.rx_frames_128_255: 52724116
dev.em.1.mac_stats.rx_frames_256_511: 768263
dev.em.1.mac_stats.rx_frames_512_1023: 28549934
dev.em.1.mac_stats.rx_frames_1024_1522: 2246397962
dev.em.1.mac_stats.good_octets_recvd: 3420561094673
dev.em.1.mac_stats.good_octets_txd: 130129757787
dev.em.1.mac_stats.total_pkts_txd: 1553568635
dev.em.1.mac_stats.good_pkts_txd: 1553568635
dev.em.1.mac_stats.bcast_pkts_txd: 13131
dev.em.1.mac_stats.mcast_pkts_txd: 9
dev.em.1.mac_stats.tx_frames_64: 564243380
dev.em.1.mac_stats.tx_frames_65_127: 864123029
dev.em.1.mac_stats.tx_frames_128_255: 119250324
dev.em.1.mac_stats.tx_frames_256_511: 240369
dev.em.1.mac_stats.tx_frames_512_1023: 554247
dev.em.1.mac_stats.tx_frames_1024_1522: 5157286
dev.em.1.mac_stats.tso_txd: 1216433
dev.em.1.mac_stats.tso_ctx_fail: 0
dev.em.1.interrupts.asserts: 51
dev.em.1.interrupts.rx_pkt_timer: 0
dev.em.1.interrupts.rx_abs_timer: 0
dev.em.1.interrupts.tx_pkt_timer: 0
dev.em.1.interrupts.tx_abs_timer: 0
dev.em.1.interrupts.tx_queue_empty: 0
dev.em.1.interrupts.tx_queue_min_thresh: 0
dev.em.1.interrupts.rx_desc_min_thresh: 0
dev.em.1.interrupts.rx_overrun: 0


em1: flags=8843 metric 0 mtu 1500

options=219b
ether 00:15:17:ed:68:a4
inet xx.yy.13.254 netmask 0xff00 broadcast zz.yy.13.255
inet6 fe80::215:17ff:feed:68a4%em1 prefixlen 64 scopeid 0x3 
inet xx.zz.1.1 netmask 0xff00 broadcast xx.zz.1.255
inet6 2607:f3e0:xx prefixlen 64 
nd6 options=3
media: Ethernet autoselect (1000baseT )
status: active

e...@pci0:10:0:0:class=0x02 card=0x34ec8086 chip=0x10d38086 
rev=0x00 hdr=0x00
vendor = 'Intel Corporation'
device = 'Intel 82574L Gigabit Ethernet Controller (82574L)'
class  = network
subclass   = ethernet
cap 01[c8] = powerspec 2  supports D0 D3  current D0
cap 05[d0] = MSI supports 1 message, 64 bit 
cap 10[e0] = PCI-Express 1 endpoint max data 128(256) link x1(x1)
cap 11[a0] = MSI-X supports 5 messages in map 0x1c enabled
ecap 0001[100] = AER 1 0 fatal 0 non-fatal 0 corrected
ecap 0003[140] = Serial 1 001517ed68a4

The MB is an INTEL  S3420GPX

---Mike



___
freebsd-hardware@freebsd.org mailing list
htt

Re: em driver, 82574L chip, and possibly ASPM

2011-01-21 Thread Jan Koum
On Tue, Jan 11, 2011 at 6:04 AM, Mike Tancsa  wrote:

> On 12/24/2010 5:44 PM, Jan Koum wrote:
> > hi Ivan and Mike,
> >
> > wanted to follow up and see if you found a solid long-term solution to
> this
> > bug. we are still seeing this problem in our 8.2 environment with ASPM
> > already disabled.  here is what we have:
> >
> > 1. motherboard is SuperMicro X8SIE-LN4F Intel Xeon:
> >
>
> Hi Jack,
>Looks like this problem is not completely gone :(



Dear Mike and Jack,

sadly the problem is not gone for us either.  here is what we know so far:

- we are running latest e1000 drivers from 8.2
- we have ASPM disabled and we have the following bios settings:
http://camel.ethereal.net/~jkb/bios/
- we have updated our BIOS and IPMI to the latest firmware available from
our ISP
- we added hw.em.rxd=4096 and hw.em.txd=4096 to loader.conf (thanks Sean for
this tip -- these settings made problem happen much less frequently but
didn't go away completely)

the ONLY thing sort of saving our butts right now is this cron job that runs
every minute:

if /sbin/ping -q -c 10 www.google.com> /dev/null; then
 echo "OK" >> /tmp/em1.out
else
 date >> /tmp/em1.out
 echo "broken" >> /tmp/em1.out
 /sbin/ifconfig em1 down
 sleep 3
 /sbin/ifconfig em1 up
fi

this is obviously no way to run a high performance web servers in a long
term.

as mentioned in my previous emails, let us know if you need any further
information or if you have any debug code you want us to run in production.
 we are willing to do pretty much anything to get this issue fixed

thanks
___
freebsd-hardware@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
To unsubscribe, send any mail to "freebsd-hardware-unsubscr...@freebsd.org"


Re: em driver, 82574L chip, and possibly ASPM

2011-01-23 Thread Mike Tancsa
On 1/21/2011 4:21 AM, Jan Koum wrote:
> 
> 
> Dear Mike and Jack,
> 
> sadly the problem is not gone for us either.  here is what we know so far:

Same here. There was a new BIOS from Intel for our motherboard (INTEL
S3420GPX), but had another hang last night. Debug below.  I will try the
newer driver Monday.

One other thing I noticed is that when the nic is in its hung state, the
WOL option is gone ?

e.g

em1: flags=8843 metric 0 mtu 1500
options=19b
ether 00:15:17:ed:68:a4

vs


em1: flags=8843 metric 0 mtu 1500

options=219b
ether 00:15:17:ed:68:a4



Interface is RUNNING and INACTIVE
em1: hw tdh = 75, hw tdt = 75
em1: hw rdh = 771, hw rdt = 771
em1: Tx Queue Status = 0
em1: TX descriptors avail = 1024
em1: Tx Descriptors avail failure = 0
em1: RX discarded packets = 0
em1: RX Next to Check = 771
em1: RX Next to Refresh = 772
em1: link state changed to DOWN
em1: link state changed to UP

dev.em.1.%desc: Intel(R) PRO/1000 Network Connection 7.1.8
dev.em.1.%driver: em
dev.em.1.%location: slot=0 function=0 handle=\_SB_.PCI0.PEX4.HART
dev.em.1.%pnpinfo: vendor=0x8086 device=0x10d3 subvendor=0x8086
subdevice=0x34ec class=0x02
dev.em.1.%parent: pci10
dev.em.1.nvm: -1
dev.em.1.debug: -1
dev.em.1.rx_int_delay: 0
dev.em.1.tx_int_delay: 66
dev.em.1.rx_abs_int_delay: 66
dev.em.1.tx_abs_int_delay: 66
dev.em.1.rx_processing_limit: 100
dev.em.1.flow_control: 3
dev.em.1.link_irq: 563
dev.em.1.mbuf_alloc_fail: 0
dev.em.1.cluster_alloc_fail: 0
dev.em.1.dropped: 0
dev.em.1.tx_dma_fail: 0
dev.em.1.rx_overruns: 0
dev.em.1.watchdog_timeouts: 0
dev.em.1.device_control: 1209008712
dev.em.1.rx_control: 67141634
dev.em.1.fc_high_water: 18432
dev.em.1.fc_low_water: 16932
dev.em.1.queue0.txd_head: 68
dev.em.1.queue0.txd_tail: 68
dev.em.1.queue0.tx_irq: 6378625
dev.em.1.queue0.no_desc_avail: 0
dev.em.1.queue0.rxd_head: 771
dev.em.1.queue0.rxd_tail: 771
dev.em.1.queue0.rx_irq: 6987244
dev.em.1.mac_stats.excess_coll: 0
dev.em.1.mac_stats.single_coll: 0
dev.em.1.mac_stats.multiple_coll: 0
dev.em.1.mac_stats.late_coll: 0
dev.em.1.mac_stats.collision_count: 0
dev.em.1.mac_stats.symbol_errors: 0
dev.em.1.mac_stats.sequence_errors: 0
dev.em.1.mac_stats.defer_count: 0
dev.em.1.mac_stats.missed_packets: 625
dev.em.1.mac_stats.recv_no_buff: 16
dev.em.1.mac_stats.recv_undersize: 0
dev.em.1.mac_stats.recv_fragmented: 0
dev.em.1.mac_stats.recv_oversize: 0
dev.em.1.mac_stats.recv_jabber: 0
dev.em.1.mac_stats.recv_errs: 0
dev.em.1.mac_stats.crc_errs: 0
dev.em.1.mac_stats.alignment_errs: 0
dev.em.1.mac_stats.coll_ext_errs: 0
dev.em.1.mac_stats.xon_recvd: 0
dev.em.1.mac_stats.xon_txd: 0
dev.em.1.mac_stats.xoff_recvd: 0
dev.em.1.mac_stats.xoff_txd: 0
dev.em.1.mac_stats.total_pkts_recvd: 28035460
dev.em.1.mac_stats.good_pkts_recvd: 28034835
dev.em.1.mac_stats.bcast_pkts_recvd: 2649
dev.em.1.mac_stats.mcast_pkts_recvd: 892
dev.em.1.mac_stats.rx_frames_64: 1443
dev.em.1.mac_stats.rx_frames_65_127: 398677
dev.em.1.mac_stats.rx_frames_128_255: 154336
dev.em.1.mac_stats.rx_frames_256_511: 473952
dev.em.1.mac_stats.rx_frames_512_1023: 199839
dev.em.1.mac_stats.rx_frames_1024_1522: 26806588
dev.em.1.mac_stats.good_octets_recvd: 40546236160
dev.em.1.mac_stats.good_octets_txd: 1625971127
dev.em.1.mac_stats.total_pkts_txd: 18447279
dev.em.1.mac_stats.good_pkts_txd: 18447279
dev.em.1.mac_stats.bcast_pkts_txd: 194
dev.em.1.mac_stats.mcast_pkts_txd: 6
dev.em.1.mac_stats.tx_frames_64: 352
dev.em.1.mac_stats.tx_frames_65_127: 16626040
dev.em.1.mac_stats.tx_frames_128_255: 1790624
dev.em.1.mac_stats.tx_frames_256_511: 876
dev.em.1.mac_stats.tx_frames_512_1023: 902
dev.em.1.mac_stats.tx_frames_1024_1522: 28485
dev.em.1.mac_stats.tso_txd: 2542
dev.em.1.mac_stats.tso_ctx_fail: 0
dev.em.1.interrupts.asserts: 222
dev.em.1.interrupts.rx_pkt_timer: 0
dev.em.1.interrupts.rx_abs_timer: 0
dev.em.1.interrupts.tx_pkt_timer: 0
dev.em.1.interrupts.tx_abs_timer: 0
dev.em.1.interrupts.tx_queue_empty: 0
dev.em.1.interrupts.tx_queue_min_thresh: 0
dev.em.1.interrupts.rx_desc_min_thresh: 0
dev.em.1.interrupts.rx_overrun: 0

___
freebsd-hardware@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
To unsubscribe, send any mail to "freebsd-hardware-unsubscr...@freebsd.org"


Re: em driver, 82574L chip, and possibly ASPM

2011-01-28 Thread Mike Tancsa
On 1/23/2011 10:21 AM, Mike Tancsa wrote:
> On 1/21/2011 4:21 AM, Jan Koum wrote:
> One other thing I noticed is that when the nic is in its hung state, the
> WOL option is gone ?
> 
> e.g
> 
> em1: flags=8843 metric 0 mtu 1500
> options=19b
> ether 00:15:17:ed:68:a4
> 
> vs
> 
> 
> em1: flags=8843 metric 0 mtu 1500
> 
> options=219b
> ether 00:15:17:ed:68:a4


Another hang last night :(

Whats really strange is that the WOL_MAGIC and TSO4 got turned back on
somehow ? I had explicitly turned it off, but when the NIC was in its
bad state

em1: flags=8843 metric 0 mtu 1500
options=2198

... its back on along with TSO?  Not sure if its coincidence or a side
effect or what.  For now, I have had to re-purpose this nic to something
else.

debug info shows

Jan 28 00:25:10 backup3 kernel: Interface is RUNNING and INACTIVE
Jan 28 00:25:10 backup3 kernel: em1: hw tdh = 625, hw tdt = 625
Jan 28 00:25:10 backup3 kernel: em1: hw rdh = 903, hw rdt = 903
Jan 28 00:25:10 backup3 kernel: em1: Tx Queue Status = 0
Jan 28 00:25:10 backup3 kernel: em1: TX descriptors avail = 1024
Jan 28 00:25:10 backup3 kernel: em1: Tx Descriptors avail failure = 0
Jan 28 00:25:10 backup3 kernel: em1: RX discarded packets = 0
Jan 28 00:25:10 backup3 kernel: em1: RX Next to Check = 903
Jan 28 00:25:10 backup3 kernel: em1: RX Next to Refresh = 904
Jan 28 00:25:27 backup3 kernel: em1: link state changed to DOWN
Jan 28 00:25:30 backup3 kernel: em1: link state changed to UP


---Mike
___
freebsd-hardware@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
To unsubscribe, send any mail to "freebsd-hardware-unsubscr...@freebsd.org"


Re: em driver, 82574L chip, and possibly ASPM

2011-02-01 Thread Sean Bruno
On Fri, 2011-01-28 at 08:10 -0800, Mike Tancsa wrote:
> On 1/23/2011 10:21 AM, Mike Tancsa wrote:
> > On 1/21/2011 4:21 AM, Jan Koum wrote:
> > One other thing I noticed is that when the nic is in its hung state, the
> > WOL option is gone ?
> > 
> > e.g
> > 
> > em1: flags=8843 metric 0 mtu 1500
> > options=19b
> > ether 00:15:17:ed:68:a4
> > 
> > vs
> > 
> > 
> > em1: flags=8843 metric 0 mtu 1500
> > 
> > options=219b
> > ether 00:15:17:ed:68:a4
> 
> 
> Another hang last night :(
> 
> Whats really strange is that the WOL_MAGIC and TSO4 got turned back on
> somehow ? I had explicitly turned it off, but when the NIC was in its
> bad state
> 
> em1: flags=8843 metric 0 mtu 1500
> options=2198
> 
> ... its back on along with TSO?  Not sure if its coincidence or a side
> effect or what.  For now, I have had to re-purpose this nic to something
> else.
> 
> debug info shows
> 
> Jan 28 00:25:10 backup3 kernel: Interface is RUNNING and INACTIVE
> Jan 28 00:25:10 backup3 kernel: em1: hw tdh = 625, hw tdt = 625
> Jan 28 00:25:10 backup3 kernel: em1: hw rdh = 903, hw rdt = 903
> Jan 28 00:25:10 backup3 kernel: em1: Tx Queue Status = 0
> Jan 28 00:25:10 backup3 kernel: em1: TX descriptors avail = 1024
> Jan 28 00:25:10 backup3 kernel: em1: Tx Descriptors avail failure = 0
> Jan 28 00:25:10 backup3 kernel: em1: RX discarded packets = 0
> Jan 28 00:25:10 backup3 kernel: em1: RX Next to Check = 903
> Jan 28 00:25:10 backup3 kernel: em1: RX Next to Refresh = 904
> Jan 28 00:25:27 backup3 kernel: em1: link state changed to DOWN
> Jan 28 00:25:30 backup3 kernel: em1: link state changed to UP
> 
> 
>   ---Mike


I'm trying to get some more testing done regarding my suggestions around
the OACTIVE assertions in the driver.  More or less, it looks like
intense periods of activity can push the driver into the OACTIVE hold
off state and the logic isn't quite right in igb(4) or em(4) to handle
it.

I suspect that something like this modification to igb(4) may be
required for em(4).

Comments?

Sean
--- p4/freebsd_7/src/sys/dev/e1000/if_igb.c	2010-12-23 11:06:17.127417000 -0800
+++ p4/ybsd_7/src/sys/dev/e1000/if_igb.c	2010-12-23 11:28:50.476993000 -0800
@@ -784,10 +784,14 @@
 		return;
 
 	/* Call cleanup if number of TX descriptors low */
+#if 0
 	if (txr->tx_avail <= IGB_TX_CLEANUP_THRESHOLD)
 		igb_txeof(txr);
+#endif
 
 	while (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) {
+		if (txr->tx_avail <= IGB_TX_CLEANUP_THRESHOLD)
+			igb_txeof(txr);
 		if (txr->tx_avail <= IGB_TX_OP_THRESHOLD) {
 			ifp->if_drv_flags |= IFF_DRV_OACTIVE;
 			break;
@@ -1162,10 +1166,10 @@
 		IGB_TX_LOCK(txr);
 		if (igb_txeof(txr))
 			more = TRUE;
-		if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
-			igb_start_locked(txr, ifp);
+		/*if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) Pointless as igb_start_locked() checks this right off the bat*/
+		igb_start_locked(txr, ifp);
 		IGB_TX_UNLOCK(txr);
-		if (more) {
+		if (more || (ifp->if_drv_flags & IFF_DRV_OACTIVE)) {
 			taskqueue_enqueue(que->tq, &que->que_task);
 			return;
 		}
@@ -1361,7 +1370,7 @@
 
 no_calc:
 	/* Schedule a clean task if needed*/
-	if (more_tx || more_rx) 
+	if (more_tx || more_rx || (ifp->if_drv_flags & IFF_DRV_OACTIVE))
 		taskqueue_enqueue(que->tq, &que->que_task);
 	else
 		/* Reenable this interrupt */
@@ -1535,6 +1545,14 @@
 	if (m_head->m_flags & M_VLANTAG)
 		cmd_type_len |= E1000_ADVTXD_DCMD_VLE;
 
+/*
+ * We just did this in before invocation, seems completely 
+ * redundant, igb_handle_queue -> igb_txeof
+ * Pretty sure this is impossible as we check for the 
+ * IGB_TX_CLEANUP_THRESHOLD in igb_start_locked() which happens
+ * before this func in invoked
+ */
+#if 0
 /*
  * Force a cleanup if number of TX descriptors
  * available hits the threshold
@@ -1547,6 +1565,7 @@
 			return (ENOBUFS);
 		}
 	}
+#endif
 
 	/*
  * Map the packet for DMA.
 
 
___
freebsd-hardware@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
To unsubscribe, send any mail to "freebsd-hardware-unsubscr...@freebsd.org"

Re: em driver, 82574L chip, and possibly ASPM

2011-02-01 Thread Mike Tancsa
On 2/1/2011 3:05 PM, Jack Vogel wrote:
> At this point I'm open to any ideas, this sounds like a good one Sean,
> thanks.
> Mike, you want to test this ?

Sure, I am feeling lucky ;-)  If someone generates the appropriate em
diffs for me, I will apply on the box that sees this issue the most.

---Mike

> 
> Jack
> 
> 
> On Tue, Feb 1, 2011 at 11:56 AM, Sean Bruno  wrote:
> 
>> On Fri, 2011-01-28 at 08:10 -0800, Mike Tancsa wrote:
>>> On 1/23/2011 10:21 AM, Mike Tancsa wrote:
 On 1/21/2011 4:21 AM, Jan Koum wrote:
 One other thing I noticed is that when the nic is in its hung state,
>> the
 WOL option is gone ?

 e.g

 em1: flags=8843 metric 0 mtu
>> 1500

>> options=19b
 ether 00:15:17:ed:68:a4

 vs


 em1: flags=8843 metric 0 mtu
>> 1500


>> options=219b
 ether 00:15:17:ed:68:a4
>>>
>>>
>>> Another hang last night :(
>>>
>>> Whats really strange is that the WOL_MAGIC and TSO4 got turned back on
>>> somehow ? I had explicitly turned it off, but when the NIC was in its
>>> bad state
>>>
>>> em1: flags=8843 metric 0 mtu 1500
>>> options=2198
>>>
>>> ... its back on along with TSO?  Not sure if its coincidence or a side
>>> effect or what.  For now, I have had to re-purpose this nic to something
>>> else.
>>>
>>> debug info shows
>>>
>>> Jan 28 00:25:10 backup3 kernel: Interface is RUNNING and INACTIVE
>>> Jan 28 00:25:10 backup3 kernel: em1: hw tdh = 625, hw tdt = 625
>>> Jan 28 00:25:10 backup3 kernel: em1: hw rdh = 903, hw rdt = 903
>>> Jan 28 00:25:10 backup3 kernel: em1: Tx Queue Status = 0
>>> Jan 28 00:25:10 backup3 kernel: em1: TX descriptors avail = 1024
>>> Jan 28 00:25:10 backup3 kernel: em1: Tx Descriptors avail failure = 0
>>> Jan 28 00:25:10 backup3 kernel: em1: RX discarded packets = 0
>>> Jan 28 00:25:10 backup3 kernel: em1: RX Next to Check = 903
>>> Jan 28 00:25:10 backup3 kernel: em1: RX Next to Refresh = 904
>>> Jan 28 00:25:27 backup3 kernel: em1: link state changed to DOWN
>>> Jan 28 00:25:30 backup3 kernel: em1: link state changed to UP
>>>
>>>
>>>   ---Mike
>>
>>
>> I'm trying to get some more testing done regarding my suggestions around
>> the OACTIVE assertions in the driver.  More or less, it looks like
>> intense periods of activity can push the driver into the OACTIVE hold
>> off state and the logic isn't quite right in igb(4) or em(4) to handle
>> it.
>>
>> I suspect that something like this modification to igb(4) may be
>> required for em(4).
>>
>> Comments?
>>
>> Sean
>>
> 


-- 
---
Mike Tancsa, tel +1 519 651 3400
Sentex Communications, m...@sentex.net
Providing Internet services since 1994 www.sentex.net
Cambridge, Ontario Canada   http://www.tancsa.com/
___
freebsd-hardware@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
To unsubscribe, send any mail to "freebsd-hardware-unsubscr...@freebsd.org"


Re: em driver, 82574L chip, and possibly ASPM

2011-02-01 Thread Sean Bruno
On Tue, 2011-02-01 at 12:05 -0800, Jack Vogel wrote:
> At this point I'm open to any ideas, this sounds like a good one Sean,
> thanks.
> Mike, you want to test this ?
> 
> Jack
> 
> 
> On Tue, Feb 1, 2011 at 11:56 AM, Sean Bruno 
> wrote:
> 
> On Fri, 2011-01-28 at 08:10 -0800, Mike Tancsa wrote:
> > On 1/23/2011 10:21 AM, Mike Tancsa wrote:
> > > On 1/21/2011 4:21 AM, Jan Koum wrote:
> > > One other thing I noticed is that when the nic is in its
> hung state, the
> > > WOL option is gone ?
> > >
> > > e.g
> > >
> > > em1: flags=8843
> metric 0 mtu 1500
> > >
> options=19b
> > > ether 00:15:17:ed:68:a4
> > >
> > > vs
> > >
> > >
> > > em1: flags=8843
> metric 0 mtu 1500
> > >
> > >
> 
> options=219b
> > > ether 00:15:17:ed:68:a4
> >
> >
> > Another hang last night :(
> >
> > Whats really strange is that the WOL_MAGIC and TSO4 got
> turned back on
> > somehow ? I had explicitly turned it off, but when the NIC
> was in its
> > bad state
> >
> > em1: flags=8843
> metric 0 mtu 1500
> >
> options=2198
> >
> > ... its back on along with TSO?  Not sure if its coincidence
> or a side
> > effect or what.  For now, I have had to re-purpose this nic
> to something
> > else.
> >
> > debug info shows
> >
> > Jan 28 00:25:10 backup3 kernel: Interface is RUNNING and
> INACTIVE
> > Jan 28 00:25:10 backup3 kernel: em1: hw tdh = 625, hw tdt =
> 625
> > Jan 28 00:25:10 backup3 kernel: em1: hw rdh = 903, hw rdt =
> 903
> > Jan 28 00:25:10 backup3 kernel: em1: Tx Queue Status = 0
> > Jan 28 00:25:10 backup3 kernel: em1: TX descriptors avail =
> 1024
> > Jan 28 00:25:10 backup3 kernel: em1: Tx Descriptors avail
> failure = 0
> > Jan 28 00:25:10 backup3 kernel: em1: RX discarded packets =
> 0
> > Jan 28 00:25:10 backup3 kernel: em1: RX Next to Check = 903
> > Jan 28 00:25:10 backup3 kernel: em1: RX Next to Refresh =
> 904
> > Jan 28 00:25:27 backup3 kernel: em1: link state changed to
> DOWN
> > Jan 28 00:25:30 backup3 kernel: em1: link state changed to
> UP
> >
> >
> >   ---Mike
> 
> 
> 
> I'm trying to get some more testing done regarding my
> suggestions around
> the OACTIVE assertions in the driver.  More or less, it looks
> like
> intense periods of activity can push the driver into the
> OACTIVE hold
> off state and the logic isn't quite right in igb(4) or em(4)
> to handle
> it.
> 
> I suspect that something like this modification to igb(4) may
> be
> required for em(4).
> 
> Comments?
> 
> Sean
> 


Does the logic I've implemented look sane?

Sean

___
freebsd-hardware@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
To unsubscribe, send any mail to "freebsd-hardware-unsubscr...@freebsd.org"


Re: em driver, 82574L chip, and possibly ASPM

2011-02-01 Thread Jack Vogel
At this point I'm open to any ideas, this sounds like a good one Sean,
thanks.
Mike, you want to test this ?

Jack


On Tue, Feb 1, 2011 at 11:56 AM, Sean Bruno  wrote:

> On Fri, 2011-01-28 at 08:10 -0800, Mike Tancsa wrote:
> > On 1/23/2011 10:21 AM, Mike Tancsa wrote:
> > > On 1/21/2011 4:21 AM, Jan Koum wrote:
> > > One other thing I noticed is that when the nic is in its hung state,
> the
> > > WOL option is gone ?
> > >
> > > e.g
> > >
> > > em1: flags=8843 metric 0 mtu
> 1500
> > >
> options=19b
> > > ether 00:15:17:ed:68:a4
> > >
> > > vs
> > >
> > >
> > > em1: flags=8843 metric 0 mtu
> 1500
> > >
> > >
> options=219b
> > > ether 00:15:17:ed:68:a4
> >
> >
> > Another hang last night :(
> >
> > Whats really strange is that the WOL_MAGIC and TSO4 got turned back on
> > somehow ? I had explicitly turned it off, but when the NIC was in its
> > bad state
> >
> > em1: flags=8843 metric 0 mtu 1500
> > options=2198
> >
> > ... its back on along with TSO?  Not sure if its coincidence or a side
> > effect or what.  For now, I have had to re-purpose this nic to something
> > else.
> >
> > debug info shows
> >
> > Jan 28 00:25:10 backup3 kernel: Interface is RUNNING and INACTIVE
> > Jan 28 00:25:10 backup3 kernel: em1: hw tdh = 625, hw tdt = 625
> > Jan 28 00:25:10 backup3 kernel: em1: hw rdh = 903, hw rdt = 903
> > Jan 28 00:25:10 backup3 kernel: em1: Tx Queue Status = 0
> > Jan 28 00:25:10 backup3 kernel: em1: TX descriptors avail = 1024
> > Jan 28 00:25:10 backup3 kernel: em1: Tx Descriptors avail failure = 0
> > Jan 28 00:25:10 backup3 kernel: em1: RX discarded packets = 0
> > Jan 28 00:25:10 backup3 kernel: em1: RX Next to Check = 903
> > Jan 28 00:25:10 backup3 kernel: em1: RX Next to Refresh = 904
> > Jan 28 00:25:27 backup3 kernel: em1: link state changed to DOWN
> > Jan 28 00:25:30 backup3 kernel: em1: link state changed to UP
> >
> >
> >   ---Mike
>
>
> I'm trying to get some more testing done regarding my suggestions around
> the OACTIVE assertions in the driver.  More or less, it looks like
> intense periods of activity can push the driver into the OACTIVE hold
> off state and the logic isn't quite right in igb(4) or em(4) to handle
> it.
>
> I suspect that something like this modification to igb(4) may be
> required for em(4).
>
> Comments?
>
> Sean
>
___
freebsd-hardware@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
To unsubscribe, send any mail to "freebsd-hardware-unsubscr...@freebsd.org"


Re: em driver, 82574L chip, and possibly ASPM

2011-02-01 Thread Jack Vogel
Looks good, except I don't like code #if 0'd out, I'll make an if_em.c to
try and
send it shortly.

Jack


On Tue, Feb 1, 2011 at 12:19 PM, Sean Bruno  wrote:

> On Tue, 2011-02-01 at 12:05 -0800, Jack Vogel wrote:
> > At this point I'm open to any ideas, this sounds like a good one Sean,
> > thanks.
> > Mike, you want to test this ?
> >
> > Jack
> >
> >
> > On Tue, Feb 1, 2011 at 11:56 AM, Sean Bruno 
> > wrote:
> >
> > On Fri, 2011-01-28 at 08:10 -0800, Mike Tancsa wrote:
> > > On 1/23/2011 10:21 AM, Mike Tancsa wrote:
> > > > On 1/21/2011 4:21 AM, Jan Koum wrote:
> > > > One other thing I noticed is that when the nic is in its
> > hung state, the
> > > > WOL option is gone ?
> > > >
> > > > e.g
> > > >
> > > > em1: flags=8843
> > metric 0 mtu 1500
> > > >
> >
> options=19b
> > > > ether 00:15:17:ed:68:a4
> > > >
> > > > vs
> > > >
> > > >
> > > > em1: flags=8843
> > metric 0 mtu 1500
> > > >
> > > >
> >
> options=219b
> > > > ether 00:15:17:ed:68:a4
> > >
> > >
> > > Another hang last night :(
> > >
> > > Whats really strange is that the WOL_MAGIC and TSO4 got
> > turned back on
> > > somehow ? I had explicitly turned it off, but when the NIC
> > was in its
> > > bad state
> > >
> > > em1: flags=8843
> > metric 0 mtu 1500
> > >
> > options=2198
> > >
> > > ... its back on along with TSO?  Not sure if its coincidence
> > or a side
> > > effect or what.  For now, I have had to re-purpose this nic
> > to something
> > > else.
> > >
> > > debug info shows
> > >
> > > Jan 28 00:25:10 backup3 kernel: Interface is RUNNING and
> > INACTIVE
> > > Jan 28 00:25:10 backup3 kernel: em1: hw tdh = 625, hw tdt =
> > 625
> > > Jan 28 00:25:10 backup3 kernel: em1: hw rdh = 903, hw rdt =
> > 903
> > > Jan 28 00:25:10 backup3 kernel: em1: Tx Queue Status = 0
> > > Jan 28 00:25:10 backup3 kernel: em1: TX descriptors avail =
> > 1024
> > > Jan 28 00:25:10 backup3 kernel: em1: Tx Descriptors avail
> > failure = 0
> > > Jan 28 00:25:10 backup3 kernel: em1: RX discarded packets =
> > 0
> > > Jan 28 00:25:10 backup3 kernel: em1: RX Next to Check = 903
> > > Jan 28 00:25:10 backup3 kernel: em1: RX Next to Refresh =
> > 904
> > > Jan 28 00:25:27 backup3 kernel: em1: link state changed to
> > DOWN
> > > Jan 28 00:25:30 backup3 kernel: em1: link state changed to
> > UP
> > >
> > >
> > >   ---Mike
> >
> >
> >
> > I'm trying to get some more testing done regarding my
> > suggestions around
> > the OACTIVE assertions in the driver.  More or less, it looks
> > like
> > intense periods of activity can push the driver into the
> > OACTIVE hold
> > off state and the logic isn't quite right in igb(4) or em(4)
> > to handle
> > it.
> >
> > I suspect that something like this modification to igb(4) may
> > be
> > required for em(4).
> >
> > Comments?
> >
> > Sean
> >
>
>
> Does the logic I've implemented look sane?
>
> Sean
>
>
___
freebsd-hardware@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
To unsubscribe, send any mail to "freebsd-hardware-unsubscr...@freebsd.org"


Re: em driver, 82574L chip, and possibly ASPM

2011-02-01 Thread Jack Vogel
Mike, just to remind me, are you running these 82574 adapters with MSIX ?

Jack


On Tue, Feb 1, 2011 at 12:37 PM, Jack Vogel  wrote:

> Looks good, except I don't like code #if 0'd out, I'll make an if_em.c to
> try and
> send it shortly.
>
> Jack
>
>
>
> On Tue, Feb 1, 2011 at 12:19 PM, Sean Bruno  wrote:
>
>> On Tue, 2011-02-01 at 12:05 -0800, Jack Vogel wrote:
>> > At this point I'm open to any ideas, this sounds like a good one Sean,
>> > thanks.
>> > Mike, you want to test this ?
>> >
>> > Jack
>> >
>> >
>> > On Tue, Feb 1, 2011 at 11:56 AM, Sean Bruno 
>> > wrote:
>> >
>> > On Fri, 2011-01-28 at 08:10 -0800, Mike Tancsa wrote:
>> > > On 1/23/2011 10:21 AM, Mike Tancsa wrote:
>> > > > On 1/21/2011 4:21 AM, Jan Koum wrote:
>> > > > One other thing I noticed is that when the nic is in its
>> > hung state, the
>> > > > WOL option is gone ?
>> > > >
>> > > > e.g
>> > > >
>> > > > em1: flags=8843
>> > metric 0 mtu 1500
>> > > >
>> >
>> options=19b
>> > > > ether 00:15:17:ed:68:a4
>> > > >
>> > > > vs
>> > > >
>> > > >
>> > > > em1: flags=8843
>> > metric 0 mtu 1500
>> > > >
>> > > >
>> >
>> options=219b
>> > > > ether 00:15:17:ed:68:a4
>> > >
>> > >
>> > > Another hang last night :(
>> > >
>> > > Whats really strange is that the WOL_MAGIC and TSO4 got
>> > turned back on
>> > > somehow ? I had explicitly turned it off, but when the NIC
>> > was in its
>> > > bad state
>> > >
>> > > em1: flags=8843
>> > metric 0 mtu 1500
>> > >
>> > options=2198
>> > >
>> > > ... its back on along with TSO?  Not sure if its coincidence
>> > or a side
>> > > effect or what.  For now, I have had to re-purpose this nic
>> > to something
>> > > else.
>> > >
>> > > debug info shows
>> > >
>> > > Jan 28 00:25:10 backup3 kernel: Interface is RUNNING and
>> > INACTIVE
>> > > Jan 28 00:25:10 backup3 kernel: em1: hw tdh = 625, hw tdt =
>> > 625
>> > > Jan 28 00:25:10 backup3 kernel: em1: hw rdh = 903, hw rdt =
>> > 903
>> > > Jan 28 00:25:10 backup3 kernel: em1: Tx Queue Status = 0
>> > > Jan 28 00:25:10 backup3 kernel: em1: TX descriptors avail =
>> > 1024
>> > > Jan 28 00:25:10 backup3 kernel: em1: Tx Descriptors avail
>> > failure = 0
>> > > Jan 28 00:25:10 backup3 kernel: em1: RX discarded packets =
>> > 0
>> > > Jan 28 00:25:10 backup3 kernel: em1: RX Next to Check = 903
>> > > Jan 28 00:25:10 backup3 kernel: em1: RX Next to Refresh =
>> > 904
>> > > Jan 28 00:25:27 backup3 kernel: em1: link state changed to
>> > DOWN
>> > > Jan 28 00:25:30 backup3 kernel: em1: link state changed to
>> > UP
>> > >
>> > >
>> > >   ---Mike
>> >
>> >
>> >
>> > I'm trying to get some more testing done regarding my
>> > suggestions around
>> > the OACTIVE assertions in the driver.  More or less, it looks
>> > like
>> > intense periods of activity can push the driver into the
>> > OACTIVE hold
>> > off state and the logic isn't quite right in igb(4) or em(4)
>> > to handle
>> > it.
>> >
>> > I suspect that something like this modification to igb(4) may
>> > be
>> > required for em(4).
>> >
>> > Comments?
>> >
>> > Sean
>> >
>>
>>
>> Does the logic I've implemented look sane?
>>
>> Sean
>>
>>
>
___
freebsd-hardware@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
To unsubscribe, send any mail to "freebsd-hardware-unsubscr...@freebsd.org"


Re: em driver, 82574L chip, and possibly ASPM

2011-02-01 Thread Mike Tancsa
On 2/1/2011 3:55 PM, Jack Vogel wrote:
> Mike, just to remind me, are you running these 82574 adapters with MSIX ?

Yes. Board is an Intel MB (S3420GPX). 8G RAM, AMD64. Kernel from a few
days ago


0(backup3)# vmstat -i | grep em1
irq257: em1:rx 0   113712958159
irq258: em1:tx 096623551135
irq259: em1:link 488  0
0(backup3)# grep ^em1 /var/run/dmesg.boot
em1:  port 0x2000-0x201f mem
0xb410-0xb411,0xb412-0xb4123fff irq 16 at device 0.0 on pci10
em1: Using MSIX interrupts with 3 vectors
em1: [ITHREAD]
em1: [ITHREAD]
em1: [ITHREAD]
em1: Ethernet address: 00:15:17:ed:68:a4
em1: link state changed to UP
0(backup3)#
em1@pci0:10:0:0:class=0x02 card=0x34ec8086 chip=0x10d38086
rev=0x00 hdr=0x00
vendor = 'Intel Corporation'
device = 'Intel 82574L Gigabit Ethernet Controller (82574L)'
class  = network
subclass   = ethernet
cap 01[c8] = powerspec 2  supports D0 D3  current D0
cap 05[d0] = MSI supports 1 message, 64 bit
cap 10[e0] = PCI-Express 1 endpoint max data 128(256) link x1(x1)
cap 11[a0] = MSI-X supports 5 messages in map 0x1c enabled
ecap 0001[100] = AER 1 0 fatal 0 non-fatal 0 corrected
ecap 0003[140] = Serial 1 001517ed68a4

---Mike
___
freebsd-hardware@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
To unsubscribe, send any mail to "freebsd-hardware-unsubscr...@freebsd.org"


Re: em driver, 82574L chip, and possibly ASPM

2011-02-01 Thread Jack Vogel
But you aren't defining EM_MULTIQUEUE are you? (its not on by default)

Jack


On Tue, Feb 1, 2011 at 1:05 PM, Mike Tancsa  wrote:

> On 2/1/2011 3:55 PM, Jack Vogel wrote:
> > Mike, just to remind me, are you running these 82574 adapters with MSIX ?
>
> Yes. Board is an Intel MB (S3420GPX). 8G RAM, AMD64. Kernel from a few
> days ago
>
>
> 0(backup3)# vmstat -i | grep em1
> irq257: em1:rx 0   113712958159
> irq258: em1:tx 096623551135
> irq259: em1:link 488  0
> 0(backup3)# grep ^em1 /var/run/dmesg.boot
> em1:  port 0x2000-0x201f mem
> 0xb410-0xb411,0xb412-0xb4123fff irq 16 at device 0.0 on pci10
> em1: Using MSIX interrupts with 3 vectors
> em1: [ITHREAD]
> em1: [ITHREAD]
> em1: [ITHREAD]
> em1: Ethernet address: 00:15:17:ed:68:a4
> em1: link state changed to UP
> 0(backup3)#
> em1@pci0:10:0:0:class=0x02 card=0x34ec8086 chip=0x10d38086
> rev=0x00 hdr=0x00
>vendor = 'Intel Corporation'
>device = 'Intel 82574L Gigabit Ethernet Controller (82574L)'
>class  = network
>subclass   = ethernet
>cap 01[c8] = powerspec 2  supports D0 D3  current D0
>cap 05[d0] = MSI supports 1 message, 64 bit
>cap 10[e0] = PCI-Express 1 endpoint max data 128(256) link x1(x1)
>cap 11[a0] = MSI-X supports 5 messages in map 0x1c enabled
> ecap 0001[100] = AER 1 0 fatal 0 non-fatal 0 corrected
> ecap 0003[140] = Serial 1 001517ed68a4
>
> ---Mike
>
___
freebsd-hardware@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
To unsubscribe, send any mail to "freebsd-hardware-unsubscr...@freebsd.org"


Re: em driver, 82574L chip, and possibly ASPM

2011-02-01 Thread Mike Tancsa
On 2/1/2011 4:17 PM, Jack Vogel wrote:
> But you aren't defining EM_MULTIQUEUE are you? (its not on by default)

Nope. Everything is the default wrt to the em driver. Nothing odd in
loader.conf

0(backup3)% grep -v ^# /boot/loader.conf
ahci_load="YES"
siis_load="YES"
if_em_load="YES"
coretemp_load="YES"
comconsole_speed="115200"# Set the current serial console speed
console="comconsole,vidconsole"   # A comma separated list of
console(s)
aesni_load="YES"
cryptodev_load="YES"


---Mike
___
freebsd-hardware@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
To unsubscribe, send any mail to "freebsd-hardware-unsubscr...@freebsd.org"


Re: em driver, 82574L chip, and possibly ASPM

2011-02-01 Thread Mike Tancsa
On 2/1/2011 4:43 PM, Jack Vogel wrote:
> To those who are going to test, here is the if_em.c, based on head, with my
> changes, I have to leave for the afternoon, and have not had a chance to
> build
> this, but it should work. I will check back in the later evening.
> 
> Any blatant problems Sean, feel free to fix them :)

My boxes are RELENG_7 and RELENG_8. Apart from manually hand editing
those pesky sysctl changes out, is there a better way to generate
RELENG_8 and 7 diffs ?

---Mike
___
freebsd-hardware@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
To unsubscribe, send any mail to "freebsd-hardware-unsubscr...@freebsd.org"


Re: em driver, 82574L chip, and possibly ASPM

2011-02-01 Thread Sean Bruno
On Tue, 2011-02-01 at 13:43 -0800, Jack Vogel wrote:
> To those who are going to test, here is the if_em.c, based on head,
> with my
> changes, I have to leave for the afternoon, and have not had a chance
> to build
> this, but it should work. I will check back in the later evening.
> 
> Any blatant problems Sean, feel free to fix them :)
> 
> Jack
> 


I suspect that line 1490 should be:
if (more_rx || (ifp->if_drv_flags & IFF_DRV_OACTIVE)) {


Sean

___
freebsd-hardware@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
To unsubscribe, send any mail to "freebsd-hardware-unsubscr...@freebsd.org"


Re: em driver, 82574L chip, and possibly ASPM

2011-02-01 Thread Sean Bruno
On Tue, 2011-02-01 at 13:51 -0800, Mike Tancsa wrote:
> On 2/1/2011 4:43 PM, Jack Vogel wrote:
> > To those who are going to test, here is the if_em.c, based on head, with my
> > changes, I have to leave for the afternoon, and have not had a chance to
> > build
> > this, but it should work. I will check back in the later evening.
> > 
> > Any blatant problems Sean, feel free to fix them :)
> 
> My boxes are RELENG_7 and RELENG_8. Apart from manually hand editing
> those pesky sysctl changes out, is there a better way to generate
> RELENG_8 and 7 diffs ?
> 
>   ---Mike


Not at the moment.

sean

___
freebsd-hardware@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
To unsubscribe, send any mail to "freebsd-hardware-unsubscr...@freebsd.org"


Re: em driver, 82574L chip, and possibly ASPM

2011-02-01 Thread Chris Peiffer
On Tue, Feb 01, 2011 at 04:51:37PM -0500, Mike Tancsa wrote:
> On 2/1/2011 4:43 PM, Jack Vogel wrote:
> > To those who are going to test, here is the if_em.c, based on head, with my
> > changes, I have to leave for the afternoon, and have not had a chance to
> > build
> > this, but it should work. I will check back in the later evening.
> > 

Did this get sent to the list? I didn't get this quoted message and I
can't find it in the archives. 

If someone could post the current revision of if_em.c that would be
great; we are also very eager to test. 

Thanks.
___
freebsd-hardware@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
To unsubscribe, send any mail to "freebsd-hardware-unsubscr...@freebsd.org"


Re: em driver, 82574L chip, and possibly ASPM

2011-02-01 Thread Mike Tancsa
On 2/1/2011 7:56 PM, Chris Peiffer wrote:
> 
> Did this get sent to the list? I didn't get this quoted message and I
> can't find it in the archives. 
> 
> If someone could post the current revision of if_em.c that would be
> great; we are also very eager to test. 
> 

Strange, it seems to be eaten/held by mailman ?  I posted the file to
http://www.tancsa.com/if_em.c


% md5 if_em.c
MD5 (if_em.c) = 0f2d48c7734496c2262f468cd1ab9117

% ident if_em.c
if_em.c:
 $FreeBSD: src/sys/dev/e1000/if_em.c,v 1.68 2011/01/19 18:20:11 jfv
Exp $

---Mike


-- 
---
Mike Tancsa, tel +1 519 651 3400
Sentex Communications, m...@sentex.net
Providing Internet services since 1994 www.sentex.net
Cambridge, Ontario Canada   http://www.tancsa.com/
___
freebsd-hardware@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
To unsubscribe, send any mail to "freebsd-hardware-unsubscr...@freebsd.org"


Re: em driver, 82574L chip, and possibly ASPM

2011-02-01 Thread Mike Tancsa
On 2/1/2011 8:44 PM, Mike Tancsa wrote:
> 
> % md5 if_em.c
> MD5 (if_em.c) = 0f2d48c7734496c2262f468cd1ab9117

Sorry, thats

MD5 (if_em.c) = 9cede4ab0d833e0f97172ed715e2b4e3

---Mike

-- 
---
Mike Tancsa, tel +1 519 651 3400
Sentex Communications, m...@sentex.net
Providing Internet services since 1994 www.sentex.net
Cambridge, Ontario Canada   http://www.tancsa.com/
___
freebsd-hardware@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
To unsubscribe, send any mail to "freebsd-hardware-unsubscr...@freebsd.org"


Re: em driver, 82574L chip, and possibly ASPM

2011-02-01 Thread Mike Tancsa
On 2/1/2011 5:03 PM, Sean Bruno wrote:
> On Tue, 2011-02-01 at 13:43 -0800, Jack Vogel wrote:
>> To those who are going to test, here is the if_em.c, based on head,
>> with my
>> changes, I have to leave for the afternoon, and have not had a chance
>> to build
>> this, but it should work. I will check back in the later evening.
>>
>> Any blatant problems Sean, feel free to fix them :)
>>
>> Jack
>>
> 
> 
> I suspect that line 1490 should be:
>   if (more_rx || (ifp->if_drv_flags & IFF_DRV_OACTIVE)) {
> 


I have hacked up a RELENG_8 version which I think is correct including
the above change

http://www.tancsa.com/if_em-8.c



--- if_em.c.orig2011-02-01 21:47:14.0 -0500
+++ if_em.c 2011-02-01 21:47:19.0 -0500
@@ -30,7 +30,7 @@
   POSSIBILITY OF SUCH DAMAGE.

 **/
-/*$FreeBSD: src/sys/dev/e1000/if_em.c,v 1.21.2.20 2011/01/22 01:37:53
jfv Exp $*/
+/*$FreeBSD$*/

 #ifdef HAVE_KERNEL_OPTION_HEADERS
 #include "opt_device_polling.h"
@@ -93,7 +93,7 @@
 /*
  *  Driver version:
  */
-char em_driver_version[] = "7.1.9";
+char em_driver_version[] = "7.1.9-test";

 /*
  *  PCI Device ID Table
@@ -927,11 +927,10 @@
if (!adapter->link_active)
return;

-/* Call cleanup if number of TX descriptors low */
-   if (txr->tx_avail <= EM_TX_CLEANUP_THRESHOLD)
-   em_txeof(txr);
-
while (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) {
+   /* First cleanup if TX descriptors low */
+   if (txr->tx_avail <= EM_TX_CLEANUP_THRESHOLD)
+   em_txeof(txr);
if (txr->tx_avail < EM_MAX_SCATTER) {
ifp->if_drv_flags |= IFF_DRV_OACTIVE;
break;
@@ -1411,8 +1410,7 @@
if (!drbr_empty(ifp, txr->br))
em_mq_start_locked(ifp, txr, NULL);
 #else
-   if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
-   em_start_locked(ifp, txr);
+   em_start_locked(ifp, txr);
 #endif
EM_TX_UNLOCK(txr);

@@ -1475,11 +1473,10 @@
struct ifnet*ifp = adapter->ifp;
struct tx_ring  *txr = adapter->tx_rings;
struct rx_ring  *rxr = adapter->rx_rings;
-   boolmore;
-

if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
-   more = em_rxeof(rxr, adapter->rx_process_limit, NULL);
+   boolmore_rx;
+   more_rx = em_rxeof(rxr, adapter->rx_process_limit, NULL);

EM_TX_LOCK(txr);
em_txeof(txr);
@@ -1487,12 +1484,10 @@
if (!drbr_empty(ifp, txr->br))
em_mq_start_locked(ifp, txr, NULL);
 #else
-   if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
-   em_start_locked(ifp, txr);
+   em_start_locked(ifp, txr);
 #endif
-   em_txeof(txr);
EM_TX_UNLOCK(txr);
-   if (more) {
+   if (more_rx || (ifp->if_drv_flags & IFF_DRV_OACTIVE)) {
taskqueue_enqueue(adapter->tq, &adapter->que_task);
return;
}
@@ -1604,7 +1599,6 @@
if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
em_start_locked(ifp, txr);
 #endif
-   em_txeof(txr);
E1000_WRITE_REG(&adapter->hw, E1000_IMS, txr->ims);
EM_TX_UNLOCK(txr);
 }
@@ -3730,17 +3724,17 @@
txr->queue_status = EM_QUEUE_HUNG;

 /*
- * If we have enough room, clear IFF_DRV_OACTIVE
+ * If we have a minimum free, clear IFF_DRV_OACTIVE
  * to tell the stack that it is OK to send packets.
  */
-if (txr->tx_avail > EM_TX_CLEANUP_THRESHOLD) {
+if (txr->tx_avail > EM_MAX_SCATTER)
 ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
-   /* Disable watchdog if all clean */
-if (txr->tx_avail == adapter->num_tx_desc) {
-   txr->queue_status = EM_QUEUE_IDLE;
-   return (FALSE);
-   }
-}
+
+   /* Disable watchdog if all clean */
+   if (txr->tx_avail == adapter->num_tx_desc) {
+   txr->queue_status = EM_QUEUE_IDLE;
+   return (FALSE);
+   }

return (TRUE);
 }
@@ -5064,8 +5058,8 @@
char namebuf[QUEUE_NAME_LEN];

/* Driver Statistics */
-   SYSCTL_ADD_UINT(ctx, child, OID_AUTO, "link_irq",
-   CTLFLAG_RD, &adapter->link_irq, 0,
+   SYSCTL_ADD_UINT(ctx, child, OID_AUTO, "link_irq",
+   CTLFLAG_RD, &adapter->link_irq,0,
"Link MSIX IRQ Handled");
SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "mbuf_alloc_fail",
 CTLFLAG_RD, &adapter->mbuf_alloc_failed

Re: em driver, 82574L chip, and possibly ASPM

2011-02-01 Thread Jack Vogel
To those who are going to test, here is the if_em.c, based on head, with my
changes, I have to leave for the afternoon, and have not had a chance to
build
this, but it should work. I will check back in the later evening.

Any blatant problems Sean, feel free to fix them :)

Jack


On Tue, Feb 1, 2011 at 12:37 PM, Jack Vogel  wrote:

> Looks good, except I don't like code #if 0'd out, I'll make an if_em.c to
> try and
> send it shortly.
>
> Jack
>
>
>
> On Tue, Feb 1, 2011 at 12:19 PM, Sean Bruno  wrote:
>
>> On Tue, 2011-02-01 at 12:05 -0800, Jack Vogel wrote:
>> > At this point I'm open to any ideas, this sounds like a good one Sean,
>> > thanks.
>> > Mike, you want to test this ?
>> >
>> > Jack
>> >
>> >
>> > On Tue, Feb 1, 2011 at 11:56 AM, Sean Bruno 
>> > wrote:
>> >
>> > On Fri, 2011-01-28 at 08:10 -0800, Mike Tancsa wrote:
>> > > On 1/23/2011 10:21 AM, Mike Tancsa wrote:
>> > > > On 1/21/2011 4:21 AM, Jan Koum wrote:
>> > > > One other thing I noticed is that when the nic is in its
>> > hung state, the
>> > > > WOL option is gone ?
>> > > >
>> > > > e.g
>> > > >
>> > > > em1: flags=8843
>> > metric 0 mtu 1500
>> > > >
>> >
>> options=19b
>> > > > ether 00:15:17:ed:68:a4
>> > > >
>> > > > vs
>> > > >
>> > > >
>> > > > em1: flags=8843
>> > metric 0 mtu 1500
>> > > >
>> > > >
>> >
>> options=219b
>> > > > ether 00:15:17:ed:68:a4
>> > >
>> > >
>> > > Another hang last night :(
>> > >
>> > > Whats really strange is that the WOL_MAGIC and TSO4 got
>> > turned back on
>> > > somehow ? I had explicitly turned it off, but when the NIC
>> > was in its
>> > > bad state
>> > >
>> > > em1: flags=8843
>> > metric 0 mtu 1500
>> > >
>> > options=2198
>> > >
>> > > ... its back on along with TSO?  Not sure if its coincidence
>> > or a side
>> > > effect or what.  For now, I have had to re-purpose this nic
>> > to something
>> > > else.
>> > >
>> > > debug info shows
>> > >
>> > > Jan 28 00:25:10 backup3 kernel: Interface is RUNNING and
>> > INACTIVE
>> > > Jan 28 00:25:10 backup3 kernel: em1: hw tdh = 625, hw tdt =
>> > 625
>> > > Jan 28 00:25:10 backup3 kernel: em1: hw rdh = 903, hw rdt =
>> > 903
>> > > Jan 28 00:25:10 backup3 kernel: em1: Tx Queue Status = 0
>> > > Jan 28 00:25:10 backup3 kernel: em1: TX descriptors avail =
>> > 1024
>> > > Jan 28 00:25:10 backup3 kernel: em1: Tx Descriptors avail
>> > failure = 0
>> > > Jan 28 00:25:10 backup3 kernel: em1: RX discarded packets =
>> > 0
>> > > Jan 28 00:25:10 backup3 kernel: em1: RX Next to Check = 903
>> > > Jan 28 00:25:10 backup3 kernel: em1: RX Next to Refresh =
>> > 904
>> > > Jan 28 00:25:27 backup3 kernel: em1: link state changed to
>> > DOWN
>> > > Jan 28 00:25:30 backup3 kernel: em1: link state changed to
>> > UP
>> > >
>> > >
>> > >   ---Mike
>> >
>> >
>> >
>> > I'm trying to get some more testing done regarding my
>> > suggestions around
>> > the OACTIVE assertions in the driver.  More or less, it looks
>> > like
>> > intense periods of activity can push the driver into the
>> > OACTIVE hold
>> > off state and the logic isn't quite right in igb(4) or em(4)
>> > to handle
>> > it.
>> >
>> > I suspect that something like this modification to igb(4) may
>> > be
>> > required for em(4).
>> >
>> > Comments?
>> >
>> > Sean
>> >
>>
>>
>> Does the logic I've implemented look sane?
>>
>> Sean
>>
>>
>
___
freebsd-hardware@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
To unsubscribe, send any mail to "freebsd-hardware-unsubscr...@freebsd.org"

Re: em driver, 82574L chip, and possibly ASPM

2011-02-02 Thread Jack Vogel
So has everyone that wanted to get something  testing been able to do so?

Jack


On Tue, Feb 1, 2011 at 7:03 PM, Mike Tancsa  wrote:

> On 2/1/2011 5:03 PM, Sean Bruno wrote:
> > On Tue, 2011-02-01 at 13:43 -0800, Jack Vogel wrote:
> >> To those who are going to test, here is the if_em.c, based on head,
> >> with my
> >> changes, I have to leave for the afternoon, and have not had a chance
> >> to build
> >> this, but it should work. I will check back in the later evening.
> >>
> >> Any blatant problems Sean, feel free to fix them :)
> >>
> >> Jack
> >>
> >
> >
> > I suspect that line 1490 should be:
> >   if (more_rx || (ifp->if_drv_flags & IFF_DRV_OACTIVE)) {
> >
>
>
> I have hacked up a RELENG_8 version which I think is correct including
> the above change
>
> http://www.tancsa.com/if_em-8.c
>
>
>
> --- if_em.c.orig2011-02-01 21:47:14.0 -0500
> +++ if_em.c 2011-02-01 21:47:19.0 -0500
> @@ -30,7 +30,7 @@
>   POSSIBILITY OF SUCH DAMAGE.
>
>
>  
> **/
> -/*$FreeBSD: src/sys/dev/e1000/if_em.c,v 1.21.2.20 2011/01/22 01:37:53
> jfv Exp $*/
> +/*$FreeBSD$*/
>
>  #ifdef HAVE_KERNEL_OPTION_HEADERS
>  #include "opt_device_polling.h"
> @@ -93,7 +93,7 @@
>  /*
>  *  Driver version:
>  */
> -char em_driver_version[] = "7.1.9";
> +char em_driver_version[] = "7.1.9-test";
>
>  /*
>  *  PCI Device ID Table
> @@ -927,11 +927,10 @@
>if (!adapter->link_active)
>return;
>
> -/* Call cleanup if number of TX descriptors low */
> -   if (txr->tx_avail <= EM_TX_CLEANUP_THRESHOLD)
> -   em_txeof(txr);
> -
>while (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) {
> +   /* First cleanup if TX descriptors low */
> +   if (txr->tx_avail <= EM_TX_CLEANUP_THRESHOLD)
> +   em_txeof(txr);
>if (txr->tx_avail < EM_MAX_SCATTER) {
>ifp->if_drv_flags |= IFF_DRV_OACTIVE;
>break;
> @@ -1411,8 +1410,7 @@
>if (!drbr_empty(ifp, txr->br))
>em_mq_start_locked(ifp, txr, NULL);
>  #else
> -   if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
> -   em_start_locked(ifp, txr);
> +   em_start_locked(ifp, txr);
>  #endif
>EM_TX_UNLOCK(txr);
>
> @@ -1475,11 +1473,10 @@
>struct ifnet*ifp = adapter->ifp;
>struct tx_ring  *txr = adapter->tx_rings;
>struct rx_ring  *rxr = adapter->rx_rings;
> -   boolmore;
> -
>
>if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
> -   more = em_rxeof(rxr, adapter->rx_process_limit, NULL);
> +   boolmore_rx;
> +   more_rx = em_rxeof(rxr, adapter->rx_process_limit, NULL);
>
>EM_TX_LOCK(txr);
>em_txeof(txr);
> @@ -1487,12 +1484,10 @@
>if (!drbr_empty(ifp, txr->br))
>em_mq_start_locked(ifp, txr, NULL);
>  #else
> -   if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
> -   em_start_locked(ifp, txr);
> +   em_start_locked(ifp, txr);
>  #endif
> -   em_txeof(txr);
>EM_TX_UNLOCK(txr);
> -   if (more) {
> +   if (more_rx || (ifp->if_drv_flags & IFF_DRV_OACTIVE)) {
>taskqueue_enqueue(adapter->tq, &adapter->que_task);
>return;
>}
> @@ -1604,7 +1599,6 @@
>if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
>em_start_locked(ifp, txr);
>  #endif
> -   em_txeof(txr);
>E1000_WRITE_REG(&adapter->hw, E1000_IMS, txr->ims);
>EM_TX_UNLOCK(txr);
>  }
> @@ -3730,17 +3724,17 @@
>txr->queue_status = EM_QUEUE_HUNG;
>
> /*
> - * If we have enough room, clear IFF_DRV_OACTIVE
> + * If we have a minimum free, clear IFF_DRV_OACTIVE
>  * to tell the stack that it is OK to send packets.
>  */
> -if (txr->tx_avail > EM_TX_CLEANUP_THRESHOLD) {
> +if (txr->tx_avail > EM_MAX_SCATTER)
> ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
> -   /* Disable watchdog if all clean */
> -if (txr->tx_avail == adapter->num_tx_desc) {
> -   txr->queue_status = EM_QUEUE_IDLE;
> -   return (FALSE);
> -   }
> -}
> +
> +   /* Disable watchdog if all clean */
> +   if (txr->tx_avail == adapter->num_tx_desc) {
> +   txr->queue_status = EM_QUEUE_IDLE;
> +   return (FALSE);
> +   }
>
>return (TRUE);
>  }
> @@ -5064,8 +5058,8 @@
>char namebuf[QUEUE_NAME_LEN];
>
>/* Driver Statistics */
> -   SYSCTL_ADD_UINT(ctx, child, OID_AUTO, "li

Re: em driver, 82574L chip, and possibly ASPM

2011-02-02 Thread Mike Tancsa
On 2/2/2011 12:37 PM, Jack Vogel wrote:
> So has everyone that wanted to get something  testing been able to do so?

I have been testing in the back and will deploy to my production box
this afternoon.  As I am not able to reproduce it easily, it will be a
bit before I can say the issue is gone.  Jan however, was able to
trigger it with greater ease ?

---Mike

> 
> Jack
> 
> 
> On Tue, Feb 1, 2011 at 7:03 PM, Mike Tancsa  wrote:
> 
>> On 2/1/2011 5:03 PM, Sean Bruno wrote:
>>> On Tue, 2011-02-01 at 13:43 -0800, Jack Vogel wrote:
 To those who are going to test, here is the if_em.c, based on head,
 with my
 changes, I have to leave for the afternoon, and have not had a chance
 to build
 this, but it should work. I will check back in the later evening.

 Any blatant problems Sean, feel free to fix them :)

 Jack

>>>
>>>
>>> I suspect that line 1490 should be:
>>>   if (more_rx || (ifp->if_drv_flags & IFF_DRV_OACTIVE)) {
>>>
>>
>>
>> I have hacked up a RELENG_8 version which I think is correct including
>> the above change
>>
>> http://www.tancsa.com/if_em-8.c
>>
>>
>>
>> --- if_em.c.orig2011-02-01 21:47:14.0 -0500
>> +++ if_em.c 2011-02-01 21:47:19.0 -0500
>> @@ -30,7 +30,7 @@
>>   POSSIBILITY OF SUCH DAMAGE.
>>
>>
>>  
>> **/
>> -/*$FreeBSD: src/sys/dev/e1000/if_em.c,v 1.21.2.20 2011/01/22 01:37:53
>> jfv Exp $*/
>> +/*$FreeBSD$*/
>>
>>  #ifdef HAVE_KERNEL_OPTION_HEADERS
>>  #include "opt_device_polling.h"
>> @@ -93,7 +93,7 @@
>>  /*
>>  *  Driver version:
>>  */
>> -char em_driver_version[] = "7.1.9";
>> +char em_driver_version[] = "7.1.9-test";
>>
>>  /*
>>  *  PCI Device ID Table
>> @@ -927,11 +927,10 @@
>>if (!adapter->link_active)
>>return;
>>
>> -/* Call cleanup if number of TX descriptors low */
>> -   if (txr->tx_avail <= EM_TX_CLEANUP_THRESHOLD)
>> -   em_txeof(txr);
>> -
>>while (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) {
>> +   /* First cleanup if TX descriptors low */
>> +   if (txr->tx_avail <= EM_TX_CLEANUP_THRESHOLD)
>> +   em_txeof(txr);
>>if (txr->tx_avail < EM_MAX_SCATTER) {
>>ifp->if_drv_flags |= IFF_DRV_OACTIVE;
>>break;
>> @@ -1411,8 +1410,7 @@
>>if (!drbr_empty(ifp, txr->br))
>>em_mq_start_locked(ifp, txr, NULL);
>>  #else
>> -   if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
>> -   em_start_locked(ifp, txr);
>> +   em_start_locked(ifp, txr);
>>  #endif
>>EM_TX_UNLOCK(txr);
>>
>> @@ -1475,11 +1473,10 @@
>>struct ifnet*ifp = adapter->ifp;
>>struct tx_ring  *txr = adapter->tx_rings;
>>struct rx_ring  *rxr = adapter->rx_rings;
>> -   boolmore;
>> -
>>
>>if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
>> -   more = em_rxeof(rxr, adapter->rx_process_limit, NULL);
>> +   boolmore_rx;
>> +   more_rx = em_rxeof(rxr, adapter->rx_process_limit, NULL);
>>
>>EM_TX_LOCK(txr);
>>em_txeof(txr);
>> @@ -1487,12 +1484,10 @@
>>if (!drbr_empty(ifp, txr->br))
>>em_mq_start_locked(ifp, txr, NULL);
>>  #else
>> -   if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
>> -   em_start_locked(ifp, txr);
>> +   em_start_locked(ifp, txr);
>>  #endif
>> -   em_txeof(txr);
>>EM_TX_UNLOCK(txr);
>> -   if (more) {
>> +   if (more_rx || (ifp->if_drv_flags & IFF_DRV_OACTIVE)) {
>>taskqueue_enqueue(adapter->tq, &adapter->que_task);
>>return;
>>}
>> @@ -1604,7 +1599,6 @@
>>if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
>>em_start_locked(ifp, txr);
>>  #endif
>> -   em_txeof(txr);
>>E1000_WRITE_REG(&adapter->hw, E1000_IMS, txr->ims);
>>EM_TX_UNLOCK(txr);
>>  }
>> @@ -3730,17 +3724,17 @@
>>txr->queue_status = EM_QUEUE_HUNG;
>>
>> /*
>> - * If we have enough room, clear IFF_DRV_OACTIVE
>> + * If we have a minimum free, clear IFF_DRV_OACTIVE
>>  * to tell the stack that it is OK to send packets.
>>  */
>> -if (txr->tx_avail > EM_TX_CLEANUP_THRESHOLD) {
>> +if (txr->tx_avail > EM_MAX_SCATTER)
>> ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
>> -   /* Disable watchdog if all clean */
>> -if (txr->tx_avail == adapter->num_tx_desc) {
>> -   txr->queue_status = EM_QUEUE_IDLE;
>> -   return (FALSE

Re: em driver, 82574L chip, and possibly ASPM

2011-02-04 Thread Sean Bruno
Any more data on this problem or do we have to wait a while?

Sean


On Wed, 2011-02-02 at 10:28 -0800, Mike Tancsa wrote:
> On 2/2/2011 12:37 PM, Jack Vogel wrote:
> > So has everyone that wanted to get something  testing been able to do so?
> 
> I have been testing in the back and will deploy to my production box
> this afternoon.  As I am not able to reproduce it easily, it will be a
> bit before I can say the issue is gone.  Jan however, was able to
> trigger it with greater ease ?
> 
> ---Mike
> 
> >
> > Jack
> >
> >
> > On Tue, Feb 1, 2011 at 7:03 PM, Mike Tancsa  wrote:
> >
> >> On 2/1/2011 5:03 PM, Sean Bruno wrote:
> >>> On Tue, 2011-02-01 at 13:43 -0800, Jack Vogel wrote:
>  To those who are going to test, here is the if_em.c, based on head,
>  with my
>  changes, I have to leave for the afternoon, and have not had a chance
>  to build
>  this, but it should work. I will check back in the later evening.
> 
>  Any blatant problems Sean, feel free to fix them :)
> 
>  Jack
> 
> >>>
> >>>
> >>> I suspect that line 1490 should be:
> >>>   if (more_rx || (ifp->if_drv_flags & IFF_DRV_OACTIVE)) {
> >>>
> >>
> >>
> >> I have hacked up a RELENG_8 version which I think is correct including
> >> the above change
> >>
> >> http://www.tancsa.com/if_em-8.c
> >>
> >>
> >>
> >> --- if_em.c.orig2011-02-01 21:47:14.0 -0500
> >> +++ if_em.c 2011-02-01 21:47:19.0 -0500
> >> @@ -30,7 +30,7 @@
> >>   POSSIBILITY OF SUCH DAMAGE.
> >>
> >>
> >>  
> >> **/
> >> -/*$FreeBSD: src/sys/dev/e1000/if_em.c,v 1.21.2.20 2011/01/22 01:37:53
> >> jfv Exp $*/
> >> +/*$FreeBSD$*/
> >>
> >>  #ifdef HAVE_KERNEL_OPTION_HEADERS
> >>  #include "opt_device_polling.h"
> >> @@ -93,7 +93,7 @@
> >>  /*
> >>  *  Driver version:
> >>  */
> >> -char em_driver_version[] = "7.1.9";
> >> +char em_driver_version[] = "7.1.9-test";
> >>
> >>  /*
> >>  *  PCI Device ID Table
> >> @@ -927,11 +927,10 @@
> >>if (!adapter->link_active)
> >>return;
> >>
> >> -/* Call cleanup if number of TX descriptors low */
> >> -   if (txr->tx_avail <= EM_TX_CLEANUP_THRESHOLD)
> >> -   em_txeof(txr);
> >> -
> >>while (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) {
> >> +   /* First cleanup if TX descriptors low */
> >> +   if (txr->tx_avail <= EM_TX_CLEANUP_THRESHOLD)
> >> +   em_txeof(txr);
> >>if (txr->tx_avail < EM_MAX_SCATTER) {
> >>ifp->if_drv_flags |= IFF_DRV_OACTIVE;
> >>break;
> >> @@ -1411,8 +1410,7 @@
> >>if (!drbr_empty(ifp, txr->br))
> >>em_mq_start_locked(ifp, txr, NULL);
> >>  #else
> >> -   if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
> >> -   em_start_locked(ifp, txr);
> >> +   em_start_locked(ifp, txr);
> >>  #endif
> >>EM_TX_UNLOCK(txr);
> >>
> >> @@ -1475,11 +1473,10 @@
> >>struct ifnet*ifp = adapter->ifp;
> >>struct tx_ring  *txr = adapter->tx_rings;
> >>struct rx_ring  *rxr = adapter->rx_rings;
> >> -   boolmore;
> >> -
> >>
> >>if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
> >> -   more = em_rxeof(rxr, adapter->rx_process_limit, NULL);
> >> +   boolmore_rx;
> >> +   more_rx = em_rxeof(rxr, adapter->rx_process_limit, NULL);
> >>
> >>EM_TX_LOCK(txr);
> >>em_txeof(txr);
> >> @@ -1487,12 +1484,10 @@
> >>if (!drbr_empty(ifp, txr->br))
> >>em_mq_start_locked(ifp, txr, NULL);
> >>  #else
> >> -   if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
> >> -   em_start_locked(ifp, txr);
> >> +   em_start_locked(ifp, txr);
> >>  #endif
> >> -   em_txeof(txr);
> >>EM_TX_UNLOCK(txr);
> >> -   if (more) {
> >> +   if (more_rx || (ifp->if_drv_flags & IFF_DRV_OACTIVE)) {
> >>taskqueue_enqueue(adapter->tq, &adapter->que_task);
> >>return;
> >>}
> >> @@ -1604,7 +1599,6 @@
> >>if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
> >>em_start_locked(ifp, txr);
> >>  #endif
> >> -   em_txeof(txr);
> >>E1000_WRITE_REG(&adapter->hw, E1000_IMS, txr->ims);
> >>EM_TX_UNLOCK(txr);
> >>  }
> >> @@ -3730,17 +3724,17 @@
> >>txr->queue_status = EM_QUEUE_HUNG;
> >>
> >> /*
> >> - * If we have enough room, clear IFF_DRV_OACTIVE
> >> + * If we have a minimum free, clear IFF_DRV_OACTIVE
> >>  * to tell the stack that it is OK to send packets.
> >>  *

Re: em driver, 82574L chip, and possibly ASPM

2011-02-04 Thread Jack Vogel
Was curious too, but being more patient than you :)

Jack


On Fri, Feb 4, 2011 at 10:09 AM, Sean Bruno  wrote:

> Any more data on this problem or do we have to wait a while?
>
> Sean
>
>
> On Wed, 2011-02-02 at 10:28 -0800, Mike Tancsa wrote:
> > On 2/2/2011 12:37 PM, Jack Vogel wrote:
> > > So has everyone that wanted to get something  testing been able to do
> so?
> >
> > I have been testing in the back and will deploy to my production box
> > this afternoon.  As I am not able to reproduce it easily, it will be a
> > bit before I can say the issue is gone.  Jan however, was able to
> > trigger it with greater ease ?
> >
> > ---Mike
> >
> > >
> > > Jack
> > >
> > >
> > > On Tue, Feb 1, 2011 at 7:03 PM, Mike Tancsa  wrote:
> > >
> > >> On 2/1/2011 5:03 PM, Sean Bruno wrote:
> > >>> On Tue, 2011-02-01 at 13:43 -0800, Jack Vogel wrote:
> >  To those who are going to test, here is the if_em.c, based on head,
> >  with my
> >  changes, I have to leave for the afternoon, and have not had a
> chance
> >  to build
> >  this, but it should work. I will check back in the later evening.
> > 
> >  Any blatant problems Sean, feel free to fix them :)
> > 
> >  Jack
> > 
> > >>>
> > >>>
> > >>> I suspect that line 1490 should be:
> > >>>   if (more_rx || (ifp->if_drv_flags & IFF_DRV_OACTIVE)) {
> > >>>
> > >>
> > >>
> > >> I have hacked up a RELENG_8 version which I think is correct including
> > >> the above change
> > >>
> > >> http://www.tancsa.com/if_em-8.c
> > >>
> > >>
> > >>
> > >> --- if_em.c.orig2011-02-01 21:47:14.0 -0500
> > >> +++ if_em.c 2011-02-01 21:47:19.0 -0500
> > >> @@ -30,7 +30,7 @@
> > >>   POSSIBILITY OF SUCH DAMAGE.
> > >>
> > >>
> > >>
>  
> **/
> > >> -/*$FreeBSD: src/sys/dev/e1000/if_em.c,v 1.21.2.20 2011/01/22 01:37:53
> > >> jfv Exp $*/
> > >> +/*$FreeBSD$*/
> > >>
> > >>  #ifdef HAVE_KERNEL_OPTION_HEADERS
> > >>  #include "opt_device_polling.h"
> > >> @@ -93,7 +93,7 @@
> > >>
>  /*
> > >>  *  Driver version:
> > >>
>  */
> > >> -char em_driver_version[] = "7.1.9";
> > >> +char em_driver_version[] = "7.1.9-test";
> > >>
> > >>
>  /*
> > >>  *  PCI Device ID Table
> > >> @@ -927,11 +927,10 @@
> > >>if (!adapter->link_active)
> > >>return;
> > >>
> > >> -/* Call cleanup if number of TX descriptors low */
> > >> -   if (txr->tx_avail <= EM_TX_CLEANUP_THRESHOLD)
> > >> -   em_txeof(txr);
> > >> -
> > >>while (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) {
> > >> +   /* First cleanup if TX descriptors low */
> > >> +   if (txr->tx_avail <= EM_TX_CLEANUP_THRESHOLD)
> > >> +   em_txeof(txr);
> > >>if (txr->tx_avail < EM_MAX_SCATTER) {
> > >>ifp->if_drv_flags |= IFF_DRV_OACTIVE;
> > >>break;
> > >> @@ -1411,8 +1410,7 @@
> > >>if (!drbr_empty(ifp, txr->br))
> > >>em_mq_start_locked(ifp, txr, NULL);
> > >>  #else
> > >> -   if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
> > >> -   em_start_locked(ifp, txr);
> > >> +   em_start_locked(ifp, txr);
> > >>  #endif
> > >>EM_TX_UNLOCK(txr);
> > >>
> > >> @@ -1475,11 +1473,10 @@
> > >>struct ifnet*ifp = adapter->ifp;
> > >>struct tx_ring  *txr = adapter->tx_rings;
> > >>struct rx_ring  *rxr = adapter->rx_rings;
> > >> -   boolmore;
> > >> -
> > >>
> > >>if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
> > >> -   more = em_rxeof(rxr, adapter->rx_process_limit, NULL);
> > >> +   boolmore_rx;
> > >> +   more_rx = em_rxeof(rxr, adapter->rx_process_limit,
> NULL);
> > >>
> > >>EM_TX_LOCK(txr);
> > >>em_txeof(txr);
> > >> @@ -1487,12 +1484,10 @@
> > >>if (!drbr_empty(ifp, txr->br))
> > >>em_mq_start_locked(ifp, txr, NULL);
> > >>  #else
> > >> -   if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
> > >> -   em_start_locked(ifp, txr);
> > >> +   em_start_locked(ifp, txr);
> > >>  #endif
> > >> -   em_txeof(txr);
> > >>EM_TX_UNLOCK(txr);
> > >> -   if (more) {
> > >> +   if (more_rx || (ifp->if_drv_flags & IFF_DRV_OACTIVE))
> {
> > >>taskqueue_enqueue(adapter->tq,
> &adapter->que_task);
> > >>return;
> > >>}
> > >> @@ -1604,7 +1599,6 @@
> > >>if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
> > >>em_start_locked(ifp, txr);
> > >>  #endif
> > >> -   em_txeof(txr);
> > >>E1000_WRITE_REG(&adapte

Re: em driver, 82574L chip, and possibly ASPM

2011-02-04 Thread Sean Bruno
meh, patience is not one of my character traits.  :-)

Sean

On Fri, 2011-02-04 at 10:12 -0800, Jack Vogel wrote:
> Was curious too, but being more patient than you :)
> 
> Jack
> 
> 
> On Fri, Feb 4, 2011 at 10:09 AM, Sean Bruno 
> wrote:
> Any more data on this problem or do we have to wait a while?
> 
> Sean
> 
> 
> 
> On Wed, 2011-02-02 at 10:28 -0800, Mike Tancsa wrote:
> > On 2/2/2011 12:37 PM, Jack Vogel wrote:
> > > So has everyone that wanted to get something  testing been
> able to do so?
> >
> > I have been testing in the back and will deploy to my
> production box
> > this afternoon.  As I am not able to reproduce it easily, it
> will be a
> > bit before I can say the issue is gone.  Jan however, was
> able to
> > trigger it with greater ease ?
> >
> > ---Mike
> >
> > >
> > > Jack
> > >
> > >
> > > On Tue, Feb 1, 2011 at 7:03 PM, Mike Tancsa
>  wrote:
> > >
> > >> On 2/1/2011 5:03 PM, Sean Bruno wrote:
> > >>> On Tue, 2011-02-01 at 13:43 -0800, Jack Vogel wrote:
> >  To those who are going to test, here is the if_em.c,
> based on head,
> >  with my
> >  changes, I have to leave for the afternoon, and have
> not had a chance
> >  to build
> >  this, but it should work. I will check back in the
> later evening.
> > 
> >  Any blatant problems Sean, feel free to fix them :)
> > 
> >  Jack
> > 
> > >>>
> > >>>
> > >>> I suspect that line 1490 should be:
> > >>>   if (more_rx || (ifp->if_drv_flags &
> IFF_DRV_OACTIVE)) {
> > >>>
> > >>
> > >>
> > >> I have hacked up a RELENG_8 version which I think is
> correct including
> > >> the above change
> > >>
> > >> http://www.tancsa.com/if_em-8.c
> > >>
> > >>
> > >>
> > >> --- if_em.c.orig2011-02-01 21:47:14.0
> -0500
> > >> +++ if_em.c 2011-02-01 21:47:19.0 -0500
> > >> @@ -30,7 +30,7 @@
> > >>   POSSIBILITY OF SUCH DAMAGE.
> > >>
> > >>
> > >>
>  
> **/
> > >> -/*$FreeBSD: src/sys/dev/e1000/if_em.c,v 1.21.2.20
> 2011/01/22 01:37:53
> > >> jfv Exp $*/
> > >> +/*$FreeBSD$*/
> > >>
> > >>  #ifdef HAVE_KERNEL_OPTION_HEADERS
> > >>  #include "opt_device_polling.h"
> > >> @@ -93,7 +93,7 @@
> > >>
>  
> /*
> > >>  *  Driver version:
> > >>
>  
> */
> > >> -char em_driver_version[] = "7.1.9";
> > >> +char em_driver_version[] = "7.1.9-test";
> > >>
> > >>
>  
> /*
> > >>  *  PCI Device ID Table
> > >> @@ -927,11 +927,10 @@
> > >>if (!adapter->link_active)
> > >>return;
> > >>
> > >> -/* Call cleanup if number of TX descriptors low
> */
> > >> -   if (txr->tx_avail <= EM_TX_CLEANUP_THRESHOLD)
> > >> -   em_txeof(txr);
> > >> -
> > >>while (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) {
> > >> +   /* First cleanup if TX descriptors low */
> > >> +   if (txr->tx_avail <=
> EM_TX_CLEANUP_THRESHOLD)
> > >> +   em_txeof(txr);
> > >>if (txr->tx_avail < EM_MAX_SCATTER) {
> > >>ifp->if_drv_flags |=
> IFF_DRV_OACTIVE;
> > >>break;
> > >> @@ -1411,8 +1410,7 @@
> > >>if (!drbr_empty(ifp, txr->br))
> > >>em_mq_start_locked(ifp, txr, NULL);
> > >>  #else
> > >> -   if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
> > >> -   em_start_locked(ifp, txr);
> > >> +   em_start_locked(ifp, txr);
> > >>  #endif
> > >>EM_TX_UNLOCK(txr);
> > >>
> > >> @@ -1475,11 +1473,10 @@
> > >>struct ifnet*ifp = adapter->ifp;
> > >>struct tx_ring  *txr = adapter->tx_rings;
> > >>struct rx_ring  *rxr = adapter->rx_rings;
> > >> -   boolmore;
> > >> -
> > >>
> > >>if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
> > >> -   

Re: em driver, 82574L chip, and possibly ASPM

2011-02-04 Thread Mike Tancsa

On 2/4/2011 1:09 PM, Sean Bruno wrote:
> Any more data on this problem or do we have to wait a while?


On my RELENG_8 production box, so far so good.  It usually would hang on
weekend runs, so tomorrow would be a good sign, but not a proof that its
fixed as it has on occasion survived a few weeks in a row.  I am running
the version Jack posted with the one change Sean suggested and is at

http://www.tancsa.com/if_em-8.c

I am also using all default options for the two onboard nics

em0: flags=8843 metric 0 mtu 1500

options=219b

em1: flags=8843 metric 0 mtu 1500

options=219b

em0:  port
0x4040-0x405f mem 0xb450-0xb451,0xb4525000-0xb4525fff irq 16 at
device 25.0 on pci0
em0: Using an MSI interrupt
em0: [FILTER]
em0: Ethernet address: 00:15:17:ed:68:a5
em1:  port
0x2000-0x201f mem 0xb410-0xb411,0xb412-0xb4123fff irq 16 at
device 0.0 on pci10
em1: Using MSIX interrupts with 3 vectors
em1: [ITHREAD]
em1: [ITHREAD]
em1: [ITHREAD]
em1: Ethernet address: 00:15:17:ed:68:a4
em0: link state changed to UP
em1: link state changed to UP



---Mike
-- 
---
Mike Tancsa, tel +1 519 651 3400
Sentex Communications, m...@sentex.net
Providing Internet services since 1994 www.sentex.net
Cambridge, Ontario Canada   http://www.tancsa.com/
___
freebsd-hardware@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
To unsubscribe, send any mail to "freebsd-hardware-unsubscr...@freebsd.org"


Re: em driver, 82574L chip, and possibly ASPM

2011-02-06 Thread Mike Tancsa

So far so good.  I would often get a hang on the level zero dumps to my
backup server Sunday AM, and it made it through!  So a good sign, but
not a definitive sign.

I have a PCIe em card that has this chipset as well and was showing the
same sort of problem in a customer's RELENG_7 box.  I will see if I can
get the customer to try the card in their box with the patch for
RELENG_7 as it would show this issue at least once a day until I pulled
the card for an older version

---Mike


On 2/4/2011 1:12 PM, Jack Vogel wrote:
> Was curious too, but being more patient than you :)
> 
> Jack
> 
> 
> On Fri, Feb 4, 2011 at 10:09 AM, Sean Bruno  wrote:
> 
>> Any more data on this problem or do we have to wait a while?
>>
>> Sean
>>
>>
>> On Wed, 2011-02-02 at 10:28 -0800, Mike Tancsa wrote:
>>> On 2/2/2011 12:37 PM, Jack Vogel wrote:
 So has everyone that wanted to get something  testing been able to do
>> so?
>>>
>>> I have been testing in the back and will deploy to my production box
>>> this afternoon.  As I am not able to reproduce it easily, it will be a
>>> bit before I can say the issue is gone.  Jan however, was able to
>>> trigger it with greater ease ?
>>>
>>> ---Mike
>>>

 Jack


 On Tue, Feb 1, 2011 at 7:03 PM, Mike Tancsa  wrote:

> On 2/1/2011 5:03 PM, Sean Bruno wrote:
>> On Tue, 2011-02-01 at 13:43 -0800, Jack Vogel wrote:
>>> To those who are going to test, here is the if_em.c, based on head,
>>> with my
>>> changes, I have to leave for the afternoon, and have not had a
>> chance
>>> to build
>>> this, but it should work. I will check back in the later evening.
>>>
>>> Any blatant problems Sean, feel free to fix them :)
>>>
>>> Jack
>>>
>>
>>
>> I suspect that line 1490 should be:
>>   if (more_rx || (ifp->if_drv_flags & IFF_DRV_OACTIVE)) {
>>
>
>
> I have hacked up a RELENG_8 version which I think is correct including
> the above change
>
> http://www.tancsa.com/if_em-8.c
>
>
>
> --- if_em.c.orig2011-02-01 21:47:14.0 -0500
> +++ if_em.c 2011-02-01 21:47:19.0 -0500
> @@ -30,7 +30,7 @@
>   POSSIBILITY OF SUCH DAMAGE.
>
>
>
>>  
>> **/
> -/*$FreeBSD: src/sys/dev/e1000/if_em.c,v 1.21.2.20 2011/01/22 01:37:53
> jfv Exp $*/
> +/*$FreeBSD$*/
>
>  #ifdef HAVE_KERNEL_OPTION_HEADERS
>  #include "opt_device_polling.h"
> @@ -93,7 +93,7 @@
>
>>  /*
>  *  Driver version:
>
>>  */
> -char em_driver_version[] = "7.1.9";
> +char em_driver_version[] = "7.1.9-test";
>
>
>>  /*
>  *  PCI Device ID Table
> @@ -927,11 +927,10 @@
>if (!adapter->link_active)
>return;
>
> -/* Call cleanup if number of TX descriptors low */
> -   if (txr->tx_avail <= EM_TX_CLEANUP_THRESHOLD)
> -   em_txeof(txr);
> -
>while (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) {
> +   /* First cleanup if TX descriptors low */
> +   if (txr->tx_avail <= EM_TX_CLEANUP_THRESHOLD)
> +   em_txeof(txr);
>if (txr->tx_avail < EM_MAX_SCATTER) {
>ifp->if_drv_flags |= IFF_DRV_OACTIVE;
>break;
> @@ -1411,8 +1410,7 @@
>if (!drbr_empty(ifp, txr->br))
>em_mq_start_locked(ifp, txr, NULL);
>  #else
> -   if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
> -   em_start_locked(ifp, txr);
> +   em_start_locked(ifp, txr);
>  #endif
>EM_TX_UNLOCK(txr);
>
> @@ -1475,11 +1473,10 @@
>struct ifnet*ifp = adapter->ifp;
>struct tx_ring  *txr = adapter->tx_rings;
>struct rx_ring  *rxr = adapter->rx_rings;
> -   boolmore;
> -
>
>if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
> -   more = em_rxeof(rxr, adapter->rx_process_limit, NULL);
> +   boolmore_rx;
> +   more_rx = em_rxeof(rxr, adapter->rx_process_limit,
>> NULL);
>
>EM_TX_LOCK(txr);
>em_txeof(txr);
> @@ -1487,12 +1484,10 @@
>if (!drbr_empty(ifp, txr->br))
>em_mq_start_locked(ifp, txr, NULL);
>  #else
> -   if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
> -   em_start_locked(ifp, txr);
> +   em_start_locked(ifp, txr);
>  #endif
> -   em_txeof(txr);
>EM_TX_UNLOCK(txr);
> -  

Re: em driver, 82574L chip, and possibly ASPM

2011-07-12 Thread Hooman Fazaeli


I have similar problems on a couple of 7.3 boxes with latest driver form 
-CURRENT.
I just wanted to know if your 7 boxes work fine so I look for cause else where.

On 2/7/2011 3:23 AM, Mike Tancsa wrote:

So far so good.  I would often get a hang on the level zero dumps to my
backup server Sunday AM, and it made it through!  So a good sign, but
not a definitive sign.

I have a PCIe em card that has this chipset as well and was showing the
same sort of problem in a customer's RELENG_7 box.  I will see if I can
get the customer to try the card in their box with the patch for
RELENG_7 as it would show this issue at least once a day until I pulled
the card for an older version

---Mike


On 2/4/2011 1:12 PM, Jack Vogel wrote:

Was curious too, but being more patient than you :)

Jack


On Fri, Feb 4, 2011 at 10:09 AM, Sean Bruno  wrote:


Any more data on this problem or do we have to wait a while?

Sean


On Wed, 2011-02-02 at 10:28 -0800, Mike Tancsa wrote:

On 2/2/2011 12:37 PM, Jack Vogel wrote:

So has everyone that wanted to get something  testing been able to do

so?

I have been testing in the back and will deploy to my production box
this afternoon.  As I am not able to reproduce it easily, it will be a
bit before I can say the issue is gone.  Jan however, was able to
trigger it with greater ease ?

 ---Mike


Jack


On Tue, Feb 1, 2011 at 7:03 PM, Mike Tancsa  wrote:


On 2/1/2011 5:03 PM, Sean Bruno wrote:

On Tue, 2011-02-01 at 13:43 -0800, Jack Vogel wrote:

To those who are going to test, here is the if_em.c, based on head,
with my
changes, I have to leave for the afternoon, and have not had a

chance

to build
this, but it should work. I will check back in the later evening.

Any blatant problems Sean, feel free to fix them :)

Jack



I suspect that line 1490 should be:
   if (more_rx || (ifp->if_drv_flags&  IFF_DRV_OACTIVE)) {



I have hacked up a RELENG_8 version which I think is correct including
the above change

http://www.tancsa.com/if_em-8.c



--- if_em.c.orig2011-02-01 21:47:14.0 -0500
+++ if_em.c 2011-02-01 21:47:19.0 -0500
@@ -30,7 +30,7 @@
   POSSIBILITY OF SUCH DAMAGE.




  
**/

-/*$FreeBSD: src/sys/dev/e1000/if_em.c,v 1.21.2.20 2011/01/22 01:37:53
jfv Exp $*/
+/*$FreeBSD$*/

  #ifdef HAVE_KERNEL_OPTION_HEADERS
  #include "opt_device_polling.h"
@@ -93,7 +93,7 @@


  /*

  *  Driver version:


  */

-char em_driver_version[] = "7.1.9";
+char em_driver_version[] = "7.1.9-test";



  /*

  *  PCI Device ID Table
@@ -927,11 +927,10 @@
if (!adapter->link_active)
return;

-/* Call cleanup if number of TX descriptors low */
-   if (txr->tx_avail<= EM_TX_CLEANUP_THRESHOLD)
-   em_txeof(txr);
-
while (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) {
+   /* First cleanup if TX descriptors low */
+   if (txr->tx_avail<= EM_TX_CLEANUP_THRESHOLD)
+   em_txeof(txr);
if (txr->tx_avail<  EM_MAX_SCATTER) {
ifp->if_drv_flags |= IFF_DRV_OACTIVE;
break;
@@ -1411,8 +1410,7 @@
if (!drbr_empty(ifp, txr->br))
em_mq_start_locked(ifp, txr, NULL);
  #else
-   if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
-   em_start_locked(ifp, txr);
+   em_start_locked(ifp, txr);
  #endif
EM_TX_UNLOCK(txr);

@@ -1475,11 +1473,10 @@
struct ifnet*ifp = adapter->ifp;
struct tx_ring  *txr = adapter->tx_rings;
struct rx_ring  *rxr = adapter->rx_rings;
-   boolmore;
-

if (ifp->if_drv_flags&  IFF_DRV_RUNNING) {
-   more = em_rxeof(rxr, adapter->rx_process_limit, NULL);
+   boolmore_rx;
+   more_rx = em_rxeof(rxr, adapter->rx_process_limit,

NULL);

EM_TX_LOCK(txr);
em_txeof(txr);
@@ -1487,12 +1484,10 @@
if (!drbr_empty(ifp, txr->br))
em_mq_start_locked(ifp, txr, NULL);
  #else
-   if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
-   em_start_locked(ifp, txr);
+   em_start_locked(ifp, txr);
  #endif
-   em_txeof(txr);
EM_TX_UNLOCK(txr);
-   if (more) {
+   if (more_rx || (ifp->if_drv_flags&  IFF_DRV_OACTIVE))

{

taskqueue_enqueue(adapter->tq,

&adapter->que_task);

return;
}
@@ -1604,7 +1599,6 @@
if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
em_start_locked(ifp, txr);
  #endif
-   em_txeof(txr);
E1000_WRITE_REG(&adapter->hw, E1000_IMS, txr->ims);
EM_TX_UNLOCK(txr)

Re: em driver, 82574L chip, and possibly ASPM

2011-07-12 Thread Mike Tancsa
On 7/12/2011 3:03 PM, Hooman Fazaeli wrote:
> 
> I have similar problems on a couple of 7.3 boxes with latest driver form
> -CURRENT.
> I just wanted to know if your 7 boxes work fine so I look for cause else
> where.

Yes, all has been working quite well for me to date.


em1@pci0:11:0:0:class=0x02 card=0x34ec8086 chip=0x10d38086
rev=0x00 hdr=0x00
vendor = 'Intel Corporation'
device = 'Intel 82574L Gigabit Ethernet Controller (82574L)'
class  = network
subclass   = ethernet
cap 01[c8] = powerspec 2  supports D0 D3  current D0
cap 05[d0] = MSI supports 1 message, 64 bit
cap 10[e0] = PCI-Express 1 endpoint max data 128(256) link x1(x1)
cap 11[a0] = MSI-X supports 5 messages in map 0x1c enabled
ecap 0001[100] = AER 1 0 fatal 0 non-fatal 0 corrected
ecap 0003[140] = Serial 1 001517ed68a4


em1:  port 0x2000-0x201f mem
0xb410-0xb411,0xb412-0xb4123fff irq 16 at device 0.0 on pci11
em1: Using MSIX interrupts with 3 vectors
em1: [ITHREAD]
em1: [ITHREAD]
em1: [ITHREAD]


---Mike

-- 
---
Mike Tancsa, tel +1 519 651 3400
Sentex Communications, m...@sentex.net
Providing Internet services since 1994 www.sentex.net
Cambridge, Ontario Canada   http://www.tancsa.com/
___
freebsd-hardware@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
To unsubscribe, send any mail to "freebsd-hardware-unsubscr...@freebsd.org"