From: Petr Machata <petrm@nvidia.com>
To: Daniel Machon <daniel.machon@microchip.com>
Cc: <netdev@vger.kernel.org>, <davem@davemloft.net>,
<petrm@nvidia.com>, <maxime.chevallier@bootlin.com>,
<thomas.petazzoni@bootlin.com>, <edumazet@google.com>,
<kuba@kernel.org>, <pabeni@redhat.com>,
<lars.povlsen@microchip.com>, <Steen.Hegelund@microchip.com>,
<UNGLinuxDriver@microchip.com>, <joe@perches.com>,
<linux@armlinux.org.uk>, <horatiu.vultur@microchip.com>,
<Julia.Lawall@inria.fr>, <vladimir.oltean@nxp.com>,
<linux-kernel@vger.kernel.org>,
<linux-arm-kernel@lists.infradead.org>
Subject: Re: [net-next v3 1/6] net: dcb: add new pcp selector to app object
Date: Wed, 26 Oct 2022 12:11:08 +0200 [thread overview]
Message-ID: <874jvq28l3.fsf@nvidia.com> (raw)
In-Reply-To: <20221024091333.1048061-2-daniel.machon@microchip.com>
Daniel Machon <daniel.machon@microchip.com> writes:
> Add new PCP selector for the 8021Qaz APP managed object.
>
> As the PCP selector is not part of the 8021Qaz standard, a new non-std
> extension attribute DCB_ATTR_DCB_APP has been introduced. Also two
> helper functions to translate between selector and app attribute type
> has been added. The new selector has been given a value of 255, to
> minimize the risk of future overlap of std- and non-std attributes.
>
> The new DCB_ATTR_DCB_APP is sent alongside the ieee std attribute in the
> app table. This means that the dcb_app struct can now both contain std-
> and non-std app attributes. Currently there is no overlap between the
> selector values of the two attributes.
>
> The purpose of adding the PCP selector, is to be able to offload
> PCP-based queue classification to the 8021Q Priority Code Point table,
> see 6.9.3 of IEEE Std 802.1Q-2018.
>
> PCP and DEI is encoded in the protocol field as 8*dei+pcp, so that a
> mapping of PCP 2 and DEI 1 to priority 3 is encoded as {255, 10, 3}.
>
> Signed-off-by: Daniel Machon <daniel.machon@microchip.com>
> static struct sk_buff *dcbnl_newmsg(int type, u8 cmd, u32 port, u32 seq,
> u32 flags, struct nlmsghdr **nlhp)
> {
> @@ -1116,8 +1143,9 @@ static int dcbnl_ieee_fill(struct sk_buff *skb, struct net_device *netdev)
> spin_lock_bh(&dcb_lock);
> list_for_each_entry(itr, &dcb_app_list, list) {
> if (itr->ifindex == netdev->ifindex) {
> - err = nla_put(skb, DCB_ATTR_IEEE_APP, sizeof(itr->app),
> - &itr->app);
> + enum ieee_attrs_app type =
> + dcbnl_app_attr_type_get(itr->app.selector);
> + err = nla_put(skb, type, sizeof(itr->app), &itr->app);
> if (err) {
> spin_unlock_bh(&dcb_lock);
> return -EMSGSIZE;
> @@ -1495,7 +1523,7 @@ static int dcbnl_ieee_set(struct net_device *netdev, struct nlmsghdr *nlh,
> nla_for_each_nested(attr, ieee[DCB_ATTR_IEEE_APP_TABLE], rem) {
> struct dcb_app *app_data;
>
> - if (nla_type(attr) != DCB_ATTR_IEEE_APP)
> + if (!dcbnl_app_attr_type_validate(nla_type(attr)))
> continue;
>
> if (nla_len(attr) < sizeof(struct dcb_app)) {
> @@ -1556,7 +1584,7 @@ static int dcbnl_ieee_del(struct net_device *netdev, struct nlmsghdr *nlh,
> nla_for_each_nested(attr, ieee[DCB_ATTR_IEEE_APP_TABLE], rem) {
> struct dcb_app *app_data;
>
> - if (nla_type(attr) != DCB_ATTR_IEEE_APP)
> + if (!dcbnl_app_attr_type_validate(nla_type(attr)))
> continue;
> app_data = nla_data(attr);
> if (ops->ieee_delapp)
I'm missing a validation that DCB_APP_SEL_PCP is always sent in
DCB_ATTR_DCB_APP encapsulation. Wouldn't the current code permit
sending it in the IEEE encap? This should be forbidden.
And vice versa: I'm not sure we want to permit sending the standard
attributes in the DCB encap.
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: Petr Machata <petrm@nvidia.com>
To: Daniel Machon <daniel.machon@microchip.com>
Cc: <netdev@vger.kernel.org>, <davem@davemloft.net>,
<petrm@nvidia.com>, <maxime.chevallier@bootlin.com>,
<thomas.petazzoni@bootlin.com>, <edumazet@google.com>,
<kuba@kernel.org>, <pabeni@redhat.com>,
<lars.povlsen@microchip.com>, <Steen.Hegelund@microchip.com>,
<UNGLinuxDriver@microchip.com>, <joe@perches.com>,
<linux@armlinux.org.uk>, <horatiu.vultur@microchip.com>,
<Julia.Lawall@inria.fr>, <vladimir.oltean@nxp.com>,
<linux-kernel@vger.kernel.org>,
<linux-arm-kernel@lists.infradead.org>
Subject: Re: [net-next v3 1/6] net: dcb: add new pcp selector to app object
Date: Wed, 26 Oct 2022 12:11:08 +0200 [thread overview]
Message-ID: <874jvq28l3.fsf@nvidia.com> (raw)
In-Reply-To: <20221024091333.1048061-2-daniel.machon@microchip.com>
Daniel Machon <daniel.machon@microchip.com> writes:
> Add new PCP selector for the 8021Qaz APP managed object.
>
> As the PCP selector is not part of the 8021Qaz standard, a new non-std
> extension attribute DCB_ATTR_DCB_APP has been introduced. Also two
> helper functions to translate between selector and app attribute type
> has been added. The new selector has been given a value of 255, to
> minimize the risk of future overlap of std- and non-std attributes.
>
> The new DCB_ATTR_DCB_APP is sent alongside the ieee std attribute in the
> app table. This means that the dcb_app struct can now both contain std-
> and non-std app attributes. Currently there is no overlap between the
> selector values of the two attributes.
>
> The purpose of adding the PCP selector, is to be able to offload
> PCP-based queue classification to the 8021Q Priority Code Point table,
> see 6.9.3 of IEEE Std 802.1Q-2018.
>
> PCP and DEI is encoded in the protocol field as 8*dei+pcp, so that a
> mapping of PCP 2 and DEI 1 to priority 3 is encoded as {255, 10, 3}.
>
> Signed-off-by: Daniel Machon <daniel.machon@microchip.com>
> static struct sk_buff *dcbnl_newmsg(int type, u8 cmd, u32 port, u32 seq,
> u32 flags, struct nlmsghdr **nlhp)
> {
> @@ -1116,8 +1143,9 @@ static int dcbnl_ieee_fill(struct sk_buff *skb, struct net_device *netdev)
> spin_lock_bh(&dcb_lock);
> list_for_each_entry(itr, &dcb_app_list, list) {
> if (itr->ifindex == netdev->ifindex) {
> - err = nla_put(skb, DCB_ATTR_IEEE_APP, sizeof(itr->app),
> - &itr->app);
> + enum ieee_attrs_app type =
> + dcbnl_app_attr_type_get(itr->app.selector);
> + err = nla_put(skb, type, sizeof(itr->app), &itr->app);
> if (err) {
> spin_unlock_bh(&dcb_lock);
> return -EMSGSIZE;
> @@ -1495,7 +1523,7 @@ static int dcbnl_ieee_set(struct net_device *netdev, struct nlmsghdr *nlh,
> nla_for_each_nested(attr, ieee[DCB_ATTR_IEEE_APP_TABLE], rem) {
> struct dcb_app *app_data;
>
> - if (nla_type(attr) != DCB_ATTR_IEEE_APP)
> + if (!dcbnl_app_attr_type_validate(nla_type(attr)))
> continue;
>
> if (nla_len(attr) < sizeof(struct dcb_app)) {
> @@ -1556,7 +1584,7 @@ static int dcbnl_ieee_del(struct net_device *netdev, struct nlmsghdr *nlh,
> nla_for_each_nested(attr, ieee[DCB_ATTR_IEEE_APP_TABLE], rem) {
> struct dcb_app *app_data;
>
> - if (nla_type(attr) != DCB_ATTR_IEEE_APP)
> + if (!dcbnl_app_attr_type_validate(nla_type(attr)))
> continue;
> app_data = nla_data(attr);
> if (ops->ieee_delapp)
I'm missing a validation that DCB_APP_SEL_PCP is always sent in
DCB_ATTR_DCB_APP encapsulation. Wouldn't the current code permit
sending it in the IEEE encap? This should be forbidden.
And vice versa: I'm not sure we want to permit sending the standard
attributes in the DCB encap.
next prev parent reply other threads:[~2022-10-26 10:18 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-24 9:13 [net-next v3 0/6] Add new PCP and APPTRUST attributes to dcbnl Daniel Machon
2022-10-24 9:13 ` Daniel Machon
2022-10-24 9:13 ` [net-next v3 1/6] net: dcb: add new pcp selector to app object Daniel Machon
2022-10-24 9:13 ` Daniel Machon
2022-10-26 10:11 ` Petr Machata [this message]
2022-10-26 10:11 ` Petr Machata
2022-10-26 11:19 ` Daniel.Machon
2022-10-26 11:19 ` Daniel.Machon
2022-10-26 14:51 ` Petr Machata
2022-10-26 14:51 ` Petr Machata
2022-10-27 9:00 ` Daniel.Machon
2022-10-27 9:00 ` Daniel.Machon
2022-10-27 9:59 ` Petr Machata
2022-10-27 9:59 ` Petr Machata
2022-10-24 9:13 ` [net-next v3 2/6] net: dcb: add new apptrust attribute Daniel Machon
2022-10-24 9:13 ` Daniel Machon
2022-10-26 11:06 ` Petr Machata
2022-10-26 11:06 ` Petr Machata
2022-10-26 12:10 ` Daniel.Machon
2022-10-26 12:10 ` Daniel.Machon
2022-10-26 14:55 ` Petr Machata
2022-10-26 14:55 ` Petr Machata
2022-10-24 9:13 ` [net-next v3 3/6] net: microchip: sparx5: add support for offloading pcp table Daniel Machon
2022-10-24 9:13 ` Daniel Machon
2022-10-24 9:13 ` [net-next v3 4/6] net: microchip: sparx5: add support for apptrust Daniel Machon
2022-10-24 9:13 ` Daniel Machon
2022-10-24 9:13 ` [net-next v3 5/6] net: microchip: sparx5: add support for offloading dscp table Daniel Machon
2022-10-24 9:13 ` Daniel Machon
2022-10-24 9:13 ` [net-next v3 6/6] net: microchip: sparx5: add support for offloading default prio Daniel Machon
2022-10-24 9:13 ` Daniel Machon
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=874jvq28l3.fsf@nvidia.com \
--to=petrm@nvidia.com \
--cc=Julia.Lawall@inria.fr \
--cc=Steen.Hegelund@microchip.com \
--cc=UNGLinuxDriver@microchip.com \
--cc=daniel.machon@microchip.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=horatiu.vultur@microchip.com \
--cc=joe@perches.com \
--cc=kuba@kernel.org \
--cc=lars.povlsen@microchip.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=maxime.chevallier@bootlin.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=thomas.petazzoni@bootlin.com \
--cc=vladimir.oltean@nxp.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.