--------------------------------------------
perfq_app:
--------------------------------------------
It is a Multithreaded Application used to verify the functionality and
performance measurement, that uses APIs provided by the MCDMA PMD
to transfer data from host to IO device and vice versa.

--------------------------------------------

Options Details:
-------------------
-h              Displays the supported options for perfq application
-a <num_thr>	Number of threads to be used to schedule queue
-b <bdf>	Application uses the BDF to detect the mcdma IO device
-c <chnls>      Number of Channels to be used: For AVMM upto 512 and for
		AVST upto 256 channels are supported
-n              To Configure channel count in HW for Perfornamce Mode 
		in case of AVST Packet Gen.
-d <seconds>    Refresh rate in seconds for Performance logs:
		If this flag is not used then no update on transfer
		is provided during the transmission
-f <#dsriptrs>	File Size in Descriptors
-p <bytes>      Payload in bytes of each descriptor: Limited to 1 MB
-s <bytes>      Request Size in Bytes
-l <seconds>    Time limit in Seconds
-o		PIO Test: Performs hundred Reads and Writes on the PIO registers
-e              IP Reset
-t              Transmit Operation
-r              Receive Operation
-v		Enable Data Validation: Data is verified against
		the expected data
-x <#dscriptrs>	Batch Mode: Requests are submitted in batches of size
		provided by the user -- i.e. Tail register is updated
		combining the descriptors in batches

AVST Example Design:
--------------------
  |
  |--> Loopback: 	Data sent though Tx appears in Rx direction of the same
  |		 	channel: Two ends of a U shaped pipe
  |--> Packet Gen/Val:	HW sends and receives data depending on the requests
			submitted by the application

AVST Specific options:
-----------------------
Along with -t and -r following functionalities are supported:

-i		Independent Loop back Transfer: No ordering is imposed
		on Tx and Rx
-z		Bidirectional Packet Gen/Val Transfer: Simultaneously Transmit
		and Receive operations are carried out

Required	b  &  ((p & (t | r | z | i ) & (s | l) c & a)) | o)
parameters

Enablement: 	Switch on "IFC_QDMA_INTF_ST" in mcdma_ip_params.h file

AVMM Example Design:
--------------------
32 KB buffer is divided into regions and each such memory region is allocated
to one channel

AVMM Specificd options:
------------------------
Along with -t and -r following functionalities are supported:

-u		Loop back Transfer: AVMM Loopback imposes ordering on Tx and Rx

Required	b  &  ((p & (t | r | u) & (s | l) c & a)) | o)
parameters

Enablement: 	Swich off "IFC_QDMA_INTF_ST" in mcdma_ip_params.h file

CLI Format:
-----------
./build/mcdma-test <EAL_OPTIONS> -- <MCDMA_OPTIONS>

Usage Examples:
--------------------------------------------
./build/mcdma-test -- -h
	shows all the command line arguments
./build/mcdma-test -- -b 0000:5e:00.0 -o
	PIO Testing
./build/mcdma-test -- -b 0000:5e:00.0 -e
	IP Reset on PF0
./build/mcdma-test -m 8192 -l 0-2 -- -b <BDF> -p 1024 -s 10240 -t -v -d 1 -c 2 -a 2
	8192 MegaBytes of memory to preallocate at startup
	3 Cores specified to run app on: 1 core for Main thread, 2 cores for 2 queue
	10 KB data Tx operation using 10 descriptors in each of 2 channels
	with data validation and performance log is generated at each
	second
./build/mcdma-test --file-prefix=p1 -- -b <BDF> -p 1024 -l 2 -r -v -c 1 -a 1
	Using data file prefix, which helps to run multiple processes with
	different prefixes.
	Rx operation carried out for 2 seconds with each descriptor containing
	1 KB of payload with data validation
./build/mcdma-test -- -b <BDF> -p 16384 -u -l 100 -c 4 -a 2
	Loopback operation carried out for 100 seconds on 4 channels where
	each descriptor payload is 16 KB
./build/mcdma-test -- -b <BDF> -p 1024 -l 2 -z -x 64 -c 2 -a 4
	In AVST, simultaneous bi-directional transfer is carried out for 2
	seconds where request submissions are done batches of 64 request
	descriptors

-------------------------------------------
Perfomance Log Format (-d):
-------------------------------------------
Chnl_d  Req_sent      Req_comp      Time_elpsd     Cmp%        TBW        IBW      Cml_TBW    Cml_IBW
 0Tx    105408        105344        00:00:999     99.94     01.61GBPS  01.61GBPS  01.61GBPS  01.61GBPS

Chnl_d		Channel ID and Direction
Req_sent	Request Descriptors Submitted
Req_comp	Request Descriptors Completed
Time_elpse	Time Elapsed (mm:ss:mm)
Cmp%		Percentage of submitted requests completed
TBW		Total Bandwidth
IBW		Interval Bandwidth
Cml_TBW		Cumulative Total Bandwidth
Cml_IBW		Cumulative Interval Bandwidth
--------------------------------------------
