So I got all the parts of my KMDF driver for my board all set up and working. I'm now dealing with getting the speed of DMA transfers as fast as possible. One big problem I'm having is my PCIe link speed is not always (but it's not never either) at it's maximum capable speed. This information is read straight of the board's PCI configuration space and some DMA data rate benchmarking test code I have confirms the speed to be significantly lower than expected when the link speed isn't at it's maximum. I'm running Windows 10 pro and my board is a x8 capable of 8GT/s but the link speed is often dropped down to 2.5 GT/s. This should be controllable via the control panel under hardware and sound->change power-saving settings->high performance (change plan settings)->change advanced power settings->pci express->link power state management->settings, but I have made sure this is disabled. My device already has a working Linux driver which is consistently running at the maximum link speed, so this likely isn't a BIOS or board problem but something specific to Windows. Does anybody know what could be causing this issue? Is there some API function or some property I can set near the WdfDeviceCreate() call to control the link speed?
It looks like you're new here. If you want to get involved, click one of these buttons!
|Upcoming OSR Seminars|
|Writing WDF Drivers||21 Oct 2019||OSR Seminar Space & ONLINE|
|Internals & Software Drivers||18 Nov 2019||Dulles, VA|
|Kernel Debugging||30 Mar 2020||OSR Seminar Space|
|Developing Minifilters||27 Apr 2020||OSR Seminar Space & ONLINE|