tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: ixg(4) performances



On Aug 26,  2:42pm, manu%netbsd.org@localhost (Emmanuel Dreyfus) wrote:
-- Subject: Re: ixg(4) performances

| On Tue, Aug 26, 2014 at 10:25:52AM -0400, Christos Zoulas wrote:
| > I would probably extend pcictl with cfgread and cfgwrite commands.
| 
| Sure, once it works I can do that, but a first attempt just
| ets EINVAL, any idea what can be wrong?
| 
|         int fd;
|         struct  pciio_bdf_cfgreg pbcr;
| 
|         if ((fd = open("/dev/pci5", O_RDWR, 0)) == -1)
|                 err(EX_OSERR, "open /dev/pci5 failed");
| 
|         pbcr.bus = 5;
|         pbcr.device = 0;
|         pbcr.function = 0;
|         pbcr.cfgreg.reg = 0xe6b;
|         pbcr.cfgreg.val = 0x2e;

I think in the example that was 0xe6. I think the .b means byte access
(I am guessing). I think that we are only doing word accesses, thus
we probably need to read, mask modify write the byte. I have not
verified any of that, these are guesses... Look at the pcictl source
code.

| 
|         if (ioctl(fd, PCI_IOC_BDF_CFGWRITE, &pbcr) == -1)
|                 err(EX_OSERR, "ioctl failed");
| 
| Inside the kernel, the only EINVAL is here:
|             if (bdfr->bus > 255 || bdfr->device >= sc->sc_maxndevs ||
|                     bdfr->function > 7)
|                         return EINVAL;
| 
| -- 
| Emmanuel Dreyfus
| manu%netbsd.org@localhost
-- End of excerpt from Emmanuel Dreyfus




Home | Main Index | Thread Index | Old Index