From: Daniel Machon <daniel.machon@microchip.com>
To: <netdev@vger.kernel.org>
Cc: <Allan.Nielsen@microchip.com>, <UNGLinuxDriver@microchip.com>,
<maxime.chevallier@bootlin.com>, <vladimir.oltean@nxp.com>,
<petrm@nvidia.com>, <kuba@kernel.org>, <vinicius.gomes@intel.com>,
<thomas.petazzoni@bootlin.com>,
Daniel Machon <daniel.machon@microchip.com>
Subject: [RFC PATCH net-next 2/2] net: dcb: add new apptrust attribute
Date: Thu, 8 Sep 2022 14:04:42 +0200 [thread overview]
Message-ID: <20220908120442.3069771-3-daniel.machon@microchip.com> (raw)
In-Reply-To: <20220908120442.3069771-1-daniel.machon@microchip.com>
Add a new apptrust extension attribute to the 8021Qaz APP managed
object.
The new attribute is meant to allow drivers, whose hw supports the
notion of trust, to be able to set whether a particular app selector is
to be trusted - and also the order of precedence of selectors.
A new structure ieee_apptrust has been created, which contains an array
of selectors, where lower indexes has higher precedence.
Signed-off-by: Daniel Machon <daniel.machon@microchip.com>
---
include/net/dcbnl.h | 2 ++
include/uapi/linux/dcbnl.h | 14 ++++++++++++++
net/dcb/dcbnl.c | 17 +++++++++++++++++
3 files changed, 33 insertions(+)
diff --git a/include/net/dcbnl.h b/include/net/dcbnl.h
index 2b2d86fb3131..0c4b0107981d 100644
--- a/include/net/dcbnl.h
+++ b/include/net/dcbnl.h
@@ -61,6 +61,8 @@ struct dcbnl_rtnl_ops {
int (*ieee_getapp) (struct net_device *, struct dcb_app *);
int (*ieee_setapp) (struct net_device *, struct dcb_app *);
int (*ieee_delapp) (struct net_device *, struct dcb_app *);
+ int (*ieee_setapptrust) (struct net_device *, struct ieee_apptrust *);
+ int (*ieee_getapptrust) (struct net_device *, struct ieee_apptrust *);
int (*ieee_peer_getets) (struct net_device *, struct ieee_ets *);
int (*ieee_peer_getpfc) (struct net_device *, struct ieee_pfc *);
diff --git a/include/uapi/linux/dcbnl.h b/include/uapi/linux/dcbnl.h
index 8eab16e5bc13..833466dec096 100644
--- a/include/uapi/linux/dcbnl.h
+++ b/include/uapi/linux/dcbnl.h
@@ -248,6 +248,19 @@ struct dcb_app {
__u16 protocol;
};
+#define IEEE_8021QAZ_APP_SEL_MAX 255
+
+/* This structure contains trust order extension to the IEEE 802.1Qaz APP
+ * managed object.
+ *
+ * @order: contains trust ordering of selector values for the IEEE 802.1Qaz
+ * APP managed object. Lower indexes has higher trust.
+ */
+struct ieee_apptrust {
+ __u8 num;
+ __u8 order[IEEE_8021QAZ_APP_SEL_MAX];
+};
+
/**
* struct dcb_peer_app_info - APP feature information sent by the peer
*
@@ -419,6 +432,7 @@ enum ieee_attrs {
DCB_ATTR_IEEE_QCN,
DCB_ATTR_IEEE_QCN_STATS,
DCB_ATTR_DCB_BUFFER,
+ DCB_ATTR_IEEE_APP_TRUST,
__DCB_ATTR_IEEE_MAX
};
#define DCB_ATTR_IEEE_MAX (__DCB_ATTR_IEEE_MAX - 1)
diff --git a/net/dcb/dcbnl.c b/net/dcb/dcbnl.c
index dc4fb699b56c..e87f0128c3bd 100644
--- a/net/dcb/dcbnl.c
+++ b/net/dcb/dcbnl.c
@@ -162,6 +162,7 @@ static const struct nla_policy dcbnl_ieee_policy[DCB_ATTR_IEEE_MAX + 1] = {
[DCB_ATTR_IEEE_ETS] = {.len = sizeof(struct ieee_ets)},
[DCB_ATTR_IEEE_PFC] = {.len = sizeof(struct ieee_pfc)},
[DCB_ATTR_IEEE_APP_TABLE] = {.type = NLA_NESTED},
+ [DCB_ATTR_IEEE_APP_TRUST] = {.len = sizeof(struct ieee_apptrust)},
[DCB_ATTR_IEEE_MAXRATE] = {.len = sizeof(struct ieee_maxrate)},
[DCB_ATTR_IEEE_QCN] = {.len = sizeof(struct ieee_qcn)},
[DCB_ATTR_IEEE_QCN_STATS] = {.len = sizeof(struct ieee_qcn_stats)},
@@ -1133,6 +1134,14 @@ static int dcbnl_ieee_fill(struct sk_buff *skb, struct net_device *netdev)
spin_unlock_bh(&dcb_lock);
nla_nest_end(skb, app);
+ if (ops->ieee_getapptrust) {
+ struct ieee_apptrust trust;
+ memset(&trust, 0, sizeof(trust));
+ err = ops->ieee_getapptrust(netdev, &trust);
+ if (!err && nla_put(skb, DCB_ATTR_IEEE_APP_TRUST, sizeof(trust), &trust))
+ return -EMSGSIZE;
+ }
+
/* get peer info if available */
if (ops->ieee_peer_getets) {
struct ieee_ets ets;
@@ -1513,6 +1522,14 @@ static int dcbnl_ieee_set(struct net_device *netdev, struct nlmsghdr *nlh,
}
}
+ if (ieee[DCB_ATTR_IEEE_APP_TRUST] && ops->ieee_setapptrust) {
+ struct ieee_apptrust *trust =
+ nla_data(ieee[DCB_ATTR_IEEE_APP_TRUST]);
+ err = ops->ieee_setapptrust(netdev, trust);
+ if (err)
+ goto err;
+ }
+
err:
err = nla_put_u8(skb, DCB_ATTR_IEEE, err);
dcbnl_ieee_notify(netdev, RTM_SETDCB, DCB_CMD_IEEE_SET, seq, 0);
--
2.34.1
next prev parent reply other threads:[~2022-09-08 11:56 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-08 12:04 [RFC PATCH net-next 0/2] Add PCP selector and new APPTRUST attribute Daniel Machon
2022-09-08 12:04 ` [RFC PATCH net-next 1/2] net: dcb: add new pcp selector to app object Daniel Machon
2022-09-12 16:15 ` Petr Machata
2022-09-13 6:33 ` Daniel.Machon
2022-09-08 12:04 ` Daniel Machon [this message]
2022-09-09 12:29 ` [RFC PATCH net-next 2/2] net: dcb: add new apptrust attribute Vladimir Oltean
2022-09-12 7:03 ` Daniel.Machon
2022-09-12 16:30 ` Petr Machata
2022-09-12 17:16 ` Vladimir Oltean
2022-09-12 14:31 ` Petr Machata
2022-09-13 9:01 ` Daniel.Machon
2022-09-13 11:25 ` Petr Machata
2022-09-13 19:22 ` 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=20220908120442.3069771-3-daniel.machon@microchip.com \
--to=daniel.machon@microchip.com \
--cc=Allan.Nielsen@microchip.com \
--cc=UNGLinuxDriver@microchip.com \
--cc=kuba@kernel.org \
--cc=maxime.chevallier@bootlin.com \
--cc=netdev@vger.kernel.org \
--cc=petrm@nvidia.com \
--cc=thomas.petazzoni@bootlin.com \
--cc=vinicius.gomes@intel.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 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).