RE: [PATCH BlueZ 6/6] mesh: Fix msg cache ring buffer

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

 



Hi Brian,

> Hi Isak,
>
> On Thu, 2022-10-06 at 16:59 +0200, Isak Westin wrote:
> > The message cache should be a strict ring buffer, suppressed message
> > should not move to the front of the queue.
> > ---
> >  mesh/net.c | 3 +--
> >  1 file changed, 1 insertion(+), 2 deletions(-)
> >
> > diff --git a/mesh/net.c b/mesh/net.c
> > index e95ae5114..8be45e61a 100644
> > --- a/mesh/net.c
> > +++ b/mesh/net.c
> > @@ -1028,12 +1028,11 @@ static bool msg_in_cache(struct mesh_net *net,
> > uint16_t src, uint32_t seq,
> >                 .mic = mic,
> >         };
> >
> > -       msg = l_queue_remove_if(net->msg_cache, match_cache, &tst);
> > +       msg = l_queue_find(net->msg_cache, match_cache, &tst);
> >
> >         if (msg) {
> >                 l_debug("Supressing duplicate %4.4x + %6.6x + %8.8x",
> >                                                         src, seq,
> > mic);
> > -               l_queue_push_head(net->msg_cache, msg);
>
> The purpose of this bit of code was to maintain a cache of the X most recently
> received packets in the order most recently seen, which was why the re-ordering
> took place. Was this causing incorrect behavior, or are you doing this as a
> streamline?

PTS is testing specifically that the message cache is a ring buffer (in test
MESH/NODE/RLY/BV-02-C).

The test goes like this (specified cache size = 4):

Send msg 1      <-- relay expected
Send msg 2      <-- relay expected
Send msg 3      <-- relay expected
Send msg 4      <-- relay expected
Send msg 1      <-- relay *not* expected
Send msg 5      <-- relay expected
Send msg 1      <-- relay expected

So the test failed with current behaviour. That is however the only reason for the patch.

>
> >                 return true;
> >         }
> >
>
>




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux