[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20200926112002.i6zpwi26ong2hu4q@soft-dev3.localdomain>
Date: Sat, 26 Sep 2020 13:20:02 +0200
From: Horatiu Vultur <horatiu.vultur@...rochip.com>
To: Vladimir Oltean <olteanv@...il.com>
CC: Microchip Linux Driver Support <UNGLinuxDriver@...rochip.com>,
"Ralf Baechle" <ralf@...ux-mips.org>,
Paul Burton <paul.burton@...s.com>,
"James Hogan" <jhogan@...nel.org>, <linux-mips@...r.kernel.org>,
lkml <linux-kernel@...r.kernel.org>,
netdev <netdev@...r.kernel.org>,
"Allan W. Nielsen" <allan.nielsen@...rochip.com>,
Xiaoliang Yang <xiaoliang.yang_1@....com>,
<hongbo.wang@....com>
Subject: Re: [PATCH net-next v3 1/2] net: mscc: ocelot: Add support for tcam
The 09/25/2020 02:39, Vladimir Oltean wrote:
>
Hi Vladimir,
> Hi Horatiu,
>
> On Thu, Apr 23, 2020 at 10:29:48AM +0200, Horatiu Vultur wrote:
> > > > +static const struct vcap_props vcap_is2 = {
> > > > + .name = "IS2",
> > > > + .tg_width = 2,
> > > > + .sw_count = 4,
> > > > + .entry_count = VCAP_IS2_CNT,
> > > > + .entry_words = BITS_TO_32BIT(VCAP_IS2_ENTRY_WIDTH),
> > > > + .entry_width = VCAP_IS2_ENTRY_WIDTH,
> > > > + .action_count = (VCAP_IS2_CNT + VCAP_PORT_CNT + 2),
> > > > + .action_words = BITS_TO_32BIT(VCAP_IS2_ACTION_WIDTH),
> > > > + .action_width = (VCAP_IS2_ACTION_WIDTH),
> > > > + .action_type_width = 1,
> > > > + .action_table = {
> > > > + {
> > > > + .width = (IS2_AO_ACL_ID + IS2_AL_ACL_ID),
> > > > + .count = 2
> > > > + },
> > > > + {
> > > > + .width = 6,
> > > > + .count = 4
> > > > + },
> > > > + },
> > > > + .counter_words = BITS_TO_32BIT(4 * ENTRY_WIDTH),
> > > > + .counter_width = ENTRY_WIDTH,
> > > > +};
>
> Coming again to this patch, I'm having a very hard time understanding
> how VCAP_IS2_ENTRY_WIDTH is derived and what it represents, especially
> since the VCAP_CONST_ENTRY_WIDTH register reads something different.
> Could you please explain?
To be honest, I don't remember precisely. I will need to setup a board
and see exactly. But from what I remember:
- according to this[1] in chapter 3.8.6, table 71. It says that the full
entry of IS2 is 384. And this 384 represent a full entry. In this row,
can be also sub entries like: half entry and quater entries. And each
entry has 2 bits that describes the entry type. So if you have 2 bits
for each possible entry then you have 8 bits describing each type. One
observation is even if you have a full entry each pair of 2 bits
describing the type needs to be set that is a full entry. Maybe if you
have a look at Figure 30, it would be a little bit more clear. Even
there is a register called VCAP_TG_DAT that information is storred
internally in the VCAP_ENTRY_DAT.
- so having those in mind, then VCAP_IS2_ENTRY_WIDTH is the full entry
length - 8 bits. 384 - 8 = 376.
- then if I remember correctly then VCAP_CONST_ENTRY_WIDTH should be
384? or 12 if it is counting the words.
Does it make sense or am I completly off?
>
> Thanks,
> -Vladimir
[1] http://ww1.microchip.com/downloads/en/DeviceDoc/VMDS-10491.pdf
--
/Horatiu
Powered by blists - more mailing lists