if_bridge turns off checksum offload of members?

Sam Leffler sam at freebsd.org
Tue Jul 1 15:12:01 UTC 2008


Andrew Thompson wrote:
> On Tue, Jul 01, 2008 at 12:51:42PM +0300, Stefan Lambrev wrote:
>   
>> Hi,
>>
>> May be a stupid questions, but:
>>
>> 1) There are zero matches of IFCAP_TOE in kernel sources .. there is not 
>> support for TOE in 7.0, but may be this is work in progress for 8-current?
>>     
>
> Yes, its in current only. Just remove IFCAP_TOE.
>
>   
>> 2) In #define BRIDGE_IFCAPS_MASK (IFCAP_TOE|IFCAP_TSO|IFCAP_TXCSUM) - TOE 
>> should be repleaced with RXCSUM or just removed?
>> 3) Why RX is never checked? In my case this doesn't matter because em turn 
>> off both TX and RX if only one is disabled, but probably there is a 
>> hardware,
>> that can separate them e.g. RX disabled while TX enabled?
>>     
>
> Rx does not matter, whatever isnt offloaded in hardware is just computed
> locally such as checking the cksum. Its Tx that messes up the bridge, if
> a outgoing packet is generated locally on an interface that has Tx
> offloading, it may actaully be sent out a different bridge member that
> does not have that capability. This would cause it to be sent with an
> invalid checksum for instance.
>
> The bridge used to just disable Tx offloading but this patch you are
> testing makes sure each feature is supported by all members.
>
>   
>> 4) I'm not sure why bridge should not work with two interfaces one of which 
>> support TX and the other does not? At least if I turn on checksum offload
>> only on one of the interfaces the bridge is still working ...
>>
>> Andrew Thompson wrote:
>>
>> - cut -
>>     
>>> This patch should do that, are you able to test it Stefan?
>>>
>>>
>>> cheers,
>>> Andrew
>>>   
>>>       
>> P.S. I saw very good results with netisr2 on a kernel from p4 before few 
>> months .. are there any patches flying around so I can test them with 
>> 7-STABLE? :)
>>
>>     

This issue has come up before.  Handling checksum offload in the bridge 
for devices that are not capable is not a big deal and is important for 
performance.  TSO likewise should be done but we're missing a generic 
TSO support routine to do that (I believe, netbsd has one and linux has 
a GSO mechanism).

    Sam



More information about the freebsd-net mailing list