Joost Mulders wrote:
>> Could we introduce below property into Brussels while keeping current 
>> IEEE802.3 defination? Having a property named "ether-flow-ctrl", which has
>> below possible values:
>>
>> ether-flow-ctrl = 0: Disable pause frame flow control
>> ether-flow-ctrl = 1: Enable just Rx flow control
>> ether-flow-ctrl = 2: Enable just Tx flow control
>> ether-flow-ctrl = 3: Enable both Rx/Tx flow control
>>     
>
> Interesting reading on this subject:
>   http://hardware.mcse.ms/message13052.html
>
> Flow control per direction is a far better concept than what we offer 
> now. I would love to see it implemented.
>
> Regards, Joost
>   

This is a good post, thanks.

cap_flow=[none,tx,rx,both]
adv_flow=[none,tx,rx,both]
peer_flow=[none,tx,rx,both]
link_flow=[none,tx,rx,both]

(tx means can accept pause frames, rx means can generate pause frames)

In the following table, the adv ability is the y axis, and the peer's 
ability is in the x axis.  The cells indicate the negotiated value for 
link_flow.

    peer=>    none    tx    rx    both
adv
   none       none    none  none  none
   tx         none    none  tx    tx
   rx         none    rx    none  tx
   both       none    rx    tx    both

A few notes: First, the peer and the adv values for asymmetric pause are 
the opposite values.  Second, if the negotiated value is both, it 
*might* mean rx only.  In particular, some NICs might not ever generate 
pause frames, but they might not support the ability to indicate that.  
(100Mbps NICs might not have a way to expose that via the MII bit...  
This is a limitation of the way PAUSE was specified, and we can't truly 
overcome it generally.)

Possibly instead of tx/rx, we could call this send_pause, accept_pause ?

    -- Garrett


Reply via email to