netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andrew Lunn <andrew@lunn.ch>
To: Florian Fainelli <f.fainelli@gmail.com>
Cc: Volodymyr Bendiuga <valdr.linuxnext@gmail.com>,
	Vivien Didelot <vivien.didelot@savoirfairelinux.com>,
	Volodymyr Bendiuga <volodymyr.bendiuga@gmail.com>,
	netdev@vger.kernel.org,
	Volodymyr Bendiuga <volodymyr.bendiuga@westermo.se>
Subject: Re: [PATCH net-next 1/3] net:dsa:mv88e6xxx: use hashtable to store multicast entries
Date: Mon, 12 Dec 2016 20:09:15 +0100	[thread overview]
Message-ID: <20161212190915.GA8885@lunn.ch> (raw)
In-Reply-To: <48ff1136-dd8f-7704-a512-c23b27989bf8@gmail.com>

On Mon, Dec 12, 2016 at 08:37:50AM -0800, Florian Fainelli wrote:
> On 12/12/2016 07:22 AM, Volodymyr Bendiuga wrote:
> > Hi,
> > 
> > I apologise for incorrectly formatted patch, I will fix and resend it.
> > The problem with the ATU right now is that it is too slow when inserting
> > entries.
> > When the OS boots up, it might insert some multicast entries into the
> > atu (if
> > they are preconfigured by user). I run a test with 10 mc entries being
> > configured for
> > each port (13 ports), and it took 15 seconds, which made system quite
> > slow on responding to
> > other commands, as it has been inserting mc entries. The implementation
> > with hashtable
> > made insert command for 13 ports and 10 entries per port about 700 msec
> > long.

Humm, it looks like we are doing the atu_get wrong. We are looking for
a specific MAC address. Yet we seem to be walking the whole table to
find it, rather than getting the hardware to do the search. 

The current code is:

static int mv88e6xxx_atu_get(struct mv88e6xxx_chip *chip, int fid,
                             const u8 *addr, struct mv88e6xxx_atu_entry *entry)
{
        struct mv88e6xxx_atu_entry next;
        int err;

        eth_broadcast_addr(next.mac);

        err = _mv88e6xxx_atu_mac_write(chip, next.mac);

We should be setting next.mac to one less than the address we are
looking for.

Volodymyr, please could you try that, and see how much of a speed up
you get.

There is another optimization which can be made. We only say there is
no such entry once we have reached the end of the table. But it will
return the entries in ascending order. So if the entry it returned is
bigger than what we are looking for, we can immediately abort the
search and say it does not exist.

   Andrew

  parent reply	other threads:[~2016-12-12 19:09 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-12-12 13:39 [PATCH net-next 1/3] net:dsa:mv88e6xxx: use hashtable to store multicast entries Volodymyr Bendiuga
2016-12-12 13:54 ` Andrew Lunn
2016-12-12 14:18 ` Andrew Lunn
2016-12-12 15:03 ` Vivien Didelot
     [not found]   ` <CAMr9Lbp5eCg1oyWGN+uiDEcF0VZuKUi87FH6JYTGj6pL82R+Mw@mail.gmail.com>
2016-12-12 16:07     ` Andrew Lunn
2016-12-12 16:37     ` Florian Fainelli
2016-12-12 17:11       ` Vivien Didelot
2016-12-12 19:09       ` Andrew Lunn [this message]
2016-12-12 20:03         ` Vivien Didelot
     [not found]         ` <CAMr9LbqyvrRYe_m34Ufzxkf2Vef3LbMQiuoiwVX0mK=hW6euyA@mail.gmail.com>
2016-12-13 15:09           ` Andrew Lunn
     [not found]             ` <CABHmqqB-6-L124hrAjNxd4kO3zYp9R=RM1X6PXyuQW6Hapiv4g@mail.gmail.com>
2016-12-14 10:46               ` Andrew Lunn
     [not found]                 ` <CABHmqqDpiN2kwkTgrM8Qu8EEx3Sjk2yVBy8QQAJppGfJ6-MV5Q@mail.gmail.com>
2016-12-15 17:21                   ` Vivien Didelot
2016-12-15 17:32                     ` Florian Fainelli
2016-12-15 17:50                       ` Vivien Didelot
     [not found]                         ` <CABHmqqCOYMPA-Py7Uu4gsQ=s8CrQd-tT4-Db+j8eJH9=2s4L2g@mail.gmail.com>
2016-12-16  9:31                           ` John Crispin
2016-12-16 10:08                           ` Andrew Lunn
     [not found]                             ` <CABHmqqAQddcQZqVBi7gTjR40cHx6+aQebmsY3BwJgeEbLsX5Yw@mail.gmail.com>
2016-12-16 11:01                               ` Andrew Lunn
2016-12-23  9:30                                 ` Volodymyr Bendiuga
2016-12-23 10:17                                   ` Andrew Lunn
2016-12-15 17:47                     ` John Crispin
2016-12-12 16:22 ` Vivien Didelot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20161212190915.GA8885@lunn.ch \
    --to=andrew@lunn.ch \
    --cc=f.fainelli@gmail.com \
    --cc=netdev@vger.kernel.org \
    --cc=valdr.linuxnext@gmail.com \
    --cc=vivien.didelot@savoirfairelinux.com \
    --cc=volodymyr.bendiuga@gmail.com \
    --cc=volodymyr.bendiuga@westermo.se \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).