If you look at streamer closely it doesn't do anything with the data it just gives a way to look at the transfer speed, failure and success etc with different queue and packet per transfer numbers.
So it just updates the failure number in case Finishdataxfer fails. You can tweak the working based on your end application.
When you say retry are you talking about retry at the protocol level (in case of CRC error etc) or application level (retry if a transfer doesn't complete within the timeout period?
I asked the meaning of a failure return of FinishDataXfer function.
Why does the FinishDataXfer function return fail, and Which case does the FinishDataXfer function return fail,
and What should I do when the FinishDataXfer function returns fail?
In case of CRC error, there is no document about it.
so I think FX3 user has no need to consider this error because FX3 controller and host driver handle this error automatically.
Am I right?
Finishdataxfer can fail for a list of reasons like
Endpoint not responding
Timeout specified is too small that enough data couldn't be transferred within time and a bunch of other OS related violation (allocating very large buffer etc).
CRC error will be handled by FX3 and host since USB protocol dictates how that should be handled. You should be aware that most host do 3 retries before they give up on errors.