07-02-2014 08:14 PM
Hmm, I learn new things here all the time or they are absolute nonsense. I preffer to think the latter.
First a comment by Eli:
" Each frame can "live" in the queue 2.5us, and after this timeout the frame discarded."
If that was the case not a single frame would ever reach an HBA or Storage target. 2.5 microseconds is the measuring interval where the ASIC checks on the amount of credits. If it is 0 at that particulate point in time this counter increments by one. The time a frame can live inside a receive buffer is determined by the hold-time which is either 220ms, 500ms or a user defined value.
See here on a very nasty trap if you get this wrong: http://erwinvanlonden.net/2013/03/the-emergency-health-threat-eht-on-brocade-fc-fabrics/
Buffer credits are defined by the receiving side of a port. That means that during FLOGI and the Accept on that FLOGI the two port tell eachother how much buffers they have/allow the remote side to send without having to obtain an R_RDY primitive.