No data received with Intel Corporation Gigabit CT Desktop Adapter (82574L)

Jack Vogel jfvogel at gmail.com
Mon May 2 16:49:31 UTC 2011


Thanks John. Was gonna say... the code has been as it is forever, with
everyone else in the world working fine, figured something odd was going
on.

Jack


On Mon, May 2, 2011 at 7:01 AM, John Baldwin <jhb at freebsd.org> wrote:

> On Saturday, April 30, 2011 2:42:11 am Wiktor Niesiobedzki wrote:
> > 2011/4/29 Wiktor Niesiobedzki <bsd at vink.pl>:
> > > 2011/4/28 Jack Vogel <jfvogel at gmail.com>:
> > >> On Thu, Apr 28, 2011 at 2:28 PM, John Baldwin <jhb at freebsd.org>
> wrote:
> > >>>
> > >>> On Thursday, April 28, 2011 5:17:11 pm Wiktor Niesiobedzki wrote:
> > >>> > Though they mention that HT MSI windows is disabled. I'm not sure,
> > >>> > whether this matters.
> > >>>
> > >>> Yes, that is probably what breaks this.
> > >>>
> > >>> --
> > >>> John Baldwin
> > >>
> > >> Opps, missed that, thanks John.  So, disable MSIX and MSI using
> sysctl,
> > >> then the driver should use legacy when it loads.
> > >>
> > >> Still, I'd get a different motherboard, sucks to not have MSIX :(
> > >>
> > >
> > > Thanks for hints. I've disabled MSIX and MSI:
> > > kadlubek# sysctl hw.pci | grep msi
> > > hw.pci.honor_msi_blacklist: 1
> > > hw.pci.enable_msix: 0
> > > hw.pci.enable_msi: 0
> > >
> >
> > Ok, I found other way round about this. I've did some source code
> > reading and found following tunable:
> > hw.em.enable_msix=0
> >
> > When set in loader.conf to 0, then the card magically starts to work
> > properly. The only thing in our code in em_setup_msix(), that raises
> > my doubts, is the following code path:
> >
> >
> >                 int rid = PCIR_BAR(EM_MSIX_BAR);
> >                 adapter->msix_mem = bus_alloc_resource_any(dev,
> > SYS_RES_MEMORY, &rid, RF_ACTIVE);
> > ...
> >                 bus_release_resource(dev, SYS_RES_MEMORY,
> > PCIR_BAR(EM_MSIX_BAR), adapter->msix_mem);
> >
> > Though manpage for bus_release_resource specifies, that rid needs to
> > be exactly the same, as this returned by bus_alloc_resource.
>
> In practice the rid is not changed for PCI resources, so the code is fine.
>
> > Changing the bus_release_resource to use rid instead of
> > PCIR_BAR(EM_MSIX_BAR) makes the card working, with sysctl settings:
> > hw.pci.enable_msix: 0
> > hw.pci.enable_msi: 0
> >
> > instead of hw.em.enable_msix=0
> >
> > The only thing that worries me, that when I don't have MSIX disabled
> > (anyway), then driver succeeds with the MSI-X allocation. Shouldn't we
> > in em_setup_msix check, how many vectors we have allocated with
> > pci_alloc_msix and if this is 0, then fallback to MSI/Legacy?
> >
> > Or maybe pci_alloc_msix should report an error, when no
> > PCIB_ALLOC_MSIX succeded?
>
> Well, the problem here is that PCIB_ALLOC_MSIX() worked fine.  There is
> another bug that is breaking MSI in your system that I need to finish the
> fix for in 9 before it can be MFC'd.
>
> --
> John Baldwin
>


More information about the freebsd-stable mailing list