misc/179033: [dc] dc ethernet driver seems to have issues with some multiport card and mother board combinations

Mr. Clif clif at eugeneweb.com
Tue Jun 11 01:26:38 UTC 2013


Is there any down side to using that dc fix in pfsense for now?

Yes, I would like to have time to submit the cas bug as well. Maybe in 
the next week but probably by august I hope. ;-)

     Thanks for your help,
     Clif

YongHyeon PYUN wrote:
> On Mon, Jun 10, 2013 at 12:13:11PM -0700, Mr. Clif wrote:
>> Hi John and Pyun,
>>
>> Ok got the new kernel installed and tested. Yes it works! :-) Maybe that
> Thanks, probably John can fix PCI-PCI bridge code.
>
>> will also fix a simular problem with the sun cards (cas[03]), except I
>> don't see a define like that in if_cas.c. Suggestions?
> Cassini does not support I/O port BARs so I guess you're seeing
> different issue. Would you start a new thread that explains cas(4)
> issues you're suffering from?
>
>>      Thanks,
>>      Clif
>>
>>
>> John Baldwin wrote:
>>> On Thursday, May 30, 2013 1:12:14 am YongHyeon PYUN wrote:
>>>> On Wed, May 29, 2013 at 08:58:10PM -0700, Mr. Clif wrote:
>>>>> Sorry for the confusion Pyun,
>>>>>
>>>>> I started looking at it in the context of pfsense, but they rejected my
>>>>> bug report which was understandable because it's an upstream issue. They
>>>>> suggested I resubmit it to you guys if I could reproduce it. So I booted
>>>>> FreeBSD and lo and behold the same two ports failed in exactly the same
>>>> Ok, I'd like to fix that.
>>> Hmmm, the dc(4) driver is using the I/O port BARs rather than the
>>> memory BARs for its registers and this bug seems to be that the dc(4)
>>> device can't properly access its registers on dc0 and dc1 on the
>>> Atom box.  The one thing I see is that the BIOS on the Atom box assigns
>>> addresses in the 0x1100-0x11ff range for dc0 and dc1.  Those addresses
>>> conflict with ISA I/O aliases for the 0x100-0x1ff range.  The Dell BIOS
>>> is more careful to avoid these ranges.
>>>
>>> I think the fix is that I need to fix the PCI-PCI bridge to reject these
>>> resource ranges if the ISA enable bit is set in the bridge's control
>>> register.  However, for the time being you can change dc(4) to use the
>>> memory BAR instead of the I/O port BAR as a workaround:
>>>
>>> Index: if_dc.c
>>> ===================================================================
>>> --- if_dc.c	(revision 251132)
>>> +++ if_dc.c	(working copy)
>>> @@ -128,7 +128,7 @@ __FBSDID("$FreeBSD$");
>>>   #include<dev/pci/pcireg.h>
>>>   #include<dev/pci/pcivar.h>
>>>
>>> -#define	DC_USEIOSPACE
>>> +//#define	DC_USEIOSPACE
>>>
>>>   #include<dev/dc/if_dcreg.h>
>>>
>>>
>>> If this fixes it then I can take this PR as a test case for handling the
>>> ISA
>>> enable bit in the PCI-PCI bridge code.
>>>



More information about the freebsd-net mailing list