Hi Sinan, On 20/09/2017 15:01, Sinan Kaya wrote: > On 9/20/2017 3:59 AM, Auger Eric wrote: >>> My impression is that MRRS is predominantly device and driver >>> dependent, not topology dependent. A device can send a read request >>> with a size larger than MPS, which implies that the device supplying >>> the read data would split it into multiple TLPs based on MPS. >> I read that too on the net. However in in 6.3.4.1. (3.0. Nov 10), Rules >> for SW Configuration it is written: >> "Software must set Max_Read_Request_Size of an isochronous-configured >> device with a value that does not exceed the Max_Payload_Size set for >> the device." >> >> But on the the other hand some drivers are setting the MMRS directly >> without further checking the MPS? > > We discussed this on LPC. MRRS and MPS are two independent concepts and > are not related to each other under normal circumstances. > > The only valid criteria is that MRRS needs to be a multiple of MPS. > > https://linuxplumbersconf.org/2017/ocw//system/presentations/4732/original/crs.pdf > > Because completions are required to be a minimum of MPS size. If MRRS > MPS, > read response is sent as multiple completions. With that patch, you can end up with MRRS < MPS. Do I understand correctly this is an issue? Thanks Eric > > The only reason you want to match MRRS==MPS is that you don't want a single > device to hog system resources. You can have MRRS 4k and MPS 128 bytes. Completions > come in as 128 x N packets on the PCI bus. > > If you are sharing the same PCI bus with some other device, switch; you are effectively > stalling other devices. That's why, isochronous devices are requesting small MRRS. > > An Isochronous device is an exception not norm. >