Subject: Re: [Xen-devel] [PATCH] xen-netback: Turn off the carrier if the guest is not able to receive

From: David Vrabel <[email-masked]>
Date: Mon, 11 Aug 2014 13:37:40 +0100

On 11/08/14 13:31, Zoltan Kiss wrote:
> On 08/08/14 17:33, Stephen Hemminger wrote:
>> This idea of bouncing carrier is wrong. If guest is flow blocked you
>> don't
>> want to toggle carrier. That will cause problems because applications
>> that are
>> looking for carrier transistions like routing daemons will be notified.
>>
>> If running a routing daemon this will also lead to link flapping which
>> is very bad and cause lots of other work for peer routing daemons.
>>
>> Carrier is not a suitable flow control mechanism.
>>
> 
> Hi,
> 
> Indeed, I also had some concerns about using carrier state to solve this
> problem, as the notifier can kick a lot of things, and flapping is not
> impossible. That's why the frontend has 10 seconds by default to do
> something. Practice shows that if a frontend can't do any receive work
> for that time, it is unlikely it will be able to do it soon.
> So worst case carrier flapping can happen only in every 10 seconds, I
> think that's manageable. I think the majority of the users have simple
> bridged setups where this carrier change doesn't start any expensive
> operation.
> The reason we choose carrier change for this purpose because we needed
> something which ditched everything in QDisc and made sure nothing will
> be queued up there until there is a chance we can transmit to the guest.
> Calling dev_deactivate straight away seemed less appropriate.

I do think we need to revisit this and introduce a per-queue
stop_and_flush operation we can use instead.

David