diff mbox

[ovs-dev] ovn: broadcast packets dropped with "drop recirc action"

Message ID CABKoBm3u++4e=jdAsZMe_E=WxsvKtsYM6R9e=tXYbOGH0R7c5g@mail.gmail.com
State Not Applicable
Headers show

Commit Message

Andy Zhou March 16, 2016, 11:35 p.m. UTC
On Wed, Mar 16, 2016 at 4:00 PM, Ramu Ramamurthy <
sramamur@linux.vnet.ibm.com> wrote:

> On 2016-03-15 11:16, Andy Zhou wrote:
>
>> On Mon, Mar 14, 2016 at 12:11 PM, Ramu Ramamurthy <
>> sramamur@linux.vnet.ibm.com> wrote:
>>
>> When a logical switch (localnet) has lots of ports on a hypervisor,
>>> I find that broadcast packets from one of the ports is only forwarded to
>>> a subset of the other ports, and the kernel module shows the message -
>>> "kernel: openvswitch: ovs-system: deferred action limit reached, drop
>>> recirc action"
>>>
>>> There appears to be a discussion of a related problem and a possible
>>> patch
>>> here:
>>> http://openvswitch.org/pipermail//discuss/2015-October/019168.html
>>> http://openvswitch.org/pipermail//discuss/2015-October/019198.html
>>>
>>
>>
>> Thanks for the bug report.
>>
>> Those patches are now dropped since I have not heard back from the bug
>> reporter.
>>
>> I have just posted a potential fix as RFC at:
>>
>> http://openvswitch.org/pipermail/dev/2016-March/067794.html
>>
>> Would you please test it against your set up?  Thanks.
>>
>
> I tried the patch in the link above on devstack-with-ovn. The openvswitch
> kernel module
> is rebuilt with the above patch, I find that there is a system hang,
> when I send the broadcast packet. The same test earlier showed "drop
> recirc action" errors.
>

Ahh, I see.  Would you please try the following incremental change? Thanks.

 diff --git a/datapath/actions.c b/datapath/actions.c
index 3b85eaf..5e81a38 100644
                struct deferred_action *new_fifo;



>

Comments

Ramu Ramamurthy March 17, 2016, 1:45 a.m. UTC | #1
On 2016-03-16 16:35, Andy Zhou wrote:
> On Wed, Mar 16, 2016 at 4:00 PM, Ramu Ramamurthy <
> sramamur@linux.vnet.ibm.com> wrote:
> 
>> On 2016-03-15 11:16, Andy Zhou wrote:
>> 
>>> On Mon, Mar 14, 2016 at 12:11 PM, Ramu Ramamurthy <
>>> sramamur@linux.vnet.ibm.com> wrote:
>>> 
>>> When a logical switch (localnet) has lots of ports on a hypervisor,
>>>> I find that broadcast packets from one of the ports is only 
>>>> forwarded to
>>>> a subset of the other ports, and the kernel module shows the message 
>>>> -
>>>> "kernel: openvswitch: ovs-system: deferred action limit reached, 
>>>> drop
>>>> recirc action"
>>>> 
>>>> There appears to be a discussion of a related problem and a possible
>>>> patch
>>>> here:
>>>> http://openvswitch.org/pipermail//discuss/2015-October/019168.html
>>>> http://openvswitch.org/pipermail//discuss/2015-October/019198.html
>>>> 
>>> 
>>> 
>>> Thanks for the bug report.
>>> 
>>> Those patches are now dropped since I have not heard back from the 
>>> bug
>>> reporter.
>>> 
>>> I have just posted a potential fix as RFC at:
>>> 
>>> http://openvswitch.org/pipermail/dev/2016-March/067794.html
>>> 
>>> Would you please test it against your set up?  Thanks.
>>> 
>> 
>> I tried the patch in the link above on devstack-with-ovn. The 
>> openvswitch
>> kernel module
>> is rebuilt with the above patch, I find that there is a system hang,
>> when I send the broadcast packet. The same test earlier showed "drop
>> recirc action" errors.
>> 
> 
> Ahh, I see.  Would you please try the following incremental change? 
> Thanks.
> 
>  diff --git a/datapath/actions.c b/datapath/actions.c
> index 3b85eaf..5e81a38 100644
> --- a/datapath/actions.c
> +++ b/datapath/actions.c
> @@ -116,7 +116,7 @@ static struct deferred_action 
> *action_fifo_get(struct
> action
> 
>  static struct deferred_action *action_fifo_put(struct action_fifo 
> *fifo)
>  {
> -       if (fifo->head >= fifo->size - 1) {
> +       if (fifo->head >= fifo->size / sizeof(*fifo->fifo) - 1) {
>                 /* out of fifo buffer space, try to allocate a new fifo
>                  * buffer. */
>                 struct deferred_action *new_fifo;
> 
> 
> 
>> 

thanks Andy, That worked !, I was able to broadcast (udp-dhcp-discovers) 
to 100 ports and
saw no "drop recirc action" errors.
diff mbox

Patch

--- a/datapath/actions.c
+++ b/datapath/actions.c
@@ -116,7 +116,7 @@  static struct deferred_action *action_fifo_get(struct
action

 static struct deferred_action *action_fifo_put(struct action_fifo *fifo)
 {
-       if (fifo->head >= fifo->size - 1) {
+       if (fifo->head >= fifo->size / sizeof(*fifo->fifo) - 1) {
                /* out of fifo buffer space, try to allocate a new fifo
                 * buffer. */