[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[ethmac] Block diagrams - deferring & frame length



Hi Novan,

I didn't meantioned the FrameLengthCounter at all. So let me explain it in
another way:

module DeferCounter:
Starts counting after each IFG and asserts excess_deferral when the maximum
value of defer time is reached. But why? This only happends on an idle medium
when the TxMAC is in BackOff state. You can use this to shorten the back off
time but then you are not conform with the standard.

Please look, you have 16 attempts to transmit a frame. The worst case of deferal
is to crash at each try and ever to wait the maximum delay.

one attempt looks like this:
<  non-idle  ><   ifg   >< collision >< backoff > ...
< 1526 bytes >< 12 byte ><  76 byte  >< ? slots >

one_attempt  = 1526 bytes + 12 byte + 76 byte + ? slots
             = 12.912 bit-times + ? slot-times
all_attempts = 16 * 12.912 bit-times + all_delay
             = 206.592 bit-times + all_delay

all_delay    = 1 slot + 3 slots + 7 slots + .. + 511 slots + (6 * 1023 slots)
             = 7.151 slots = 3.661.312 bit-times

all_attempts = 206.592 bit-times + 3.661.312 bit-times
             = 3.867.904 bit-times = 39 ms (at 100 Mbps)

This result is different from the last one because I forgot that a legal
collision can occure within the first 64 byte of the frame and including jamming
and preamble I added 76 byte per attempt therefore.

So all in all you don't need a DeferTimer because you can decrease the attempt
limit instead. But maybe that's not that what you mean. So please let me know if
you're thinking in a different way!


Regards
Maik Boden