net: dsa: add support for DCB get/set apptrust configuration
Add DCB support to get/set trust configuration for different packet priority information sources. Some switch allow to chose different source of packet priority classification. For example on KSZ switches it is possible to configure VLAN PCP and/or DSCP sources. Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
09ca994072
commit
96c6f33795
@ -955,6 +955,10 @@ struct dsa_switch_ops {
|
||||
u8 prio);
|
||||
int (*port_del_dscp_prio)(struct dsa_switch *ds, int port, u8 dscp,
|
||||
u8 prio);
|
||||
int (*port_set_apptrust)(struct dsa_switch *ds, int port,
|
||||
const u8 *sel, int nsel);
|
||||
int (*port_get_apptrust)(struct dsa_switch *ds, int port, u8 *sel,
|
||||
int *nsel);
|
||||
|
||||
/*
|
||||
* Suspend and resume
|
||||
|
@ -2136,6 +2136,32 @@ out_conduit_failed:
|
||||
return err;
|
||||
}
|
||||
|
||||
static int __maybe_unused
|
||||
dsa_user_dcbnl_set_apptrust(struct net_device *dev, u8 *sel, int nsel)
|
||||
{
|
||||
struct dsa_port *dp = dsa_user_to_port(dev);
|
||||
struct dsa_switch *ds = dp->ds;
|
||||
int port = dp->index;
|
||||
|
||||
if (!ds->ops->port_set_apptrust)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
return ds->ops->port_set_apptrust(ds, port, sel, nsel);
|
||||
}
|
||||
|
||||
static int __maybe_unused
|
||||
dsa_user_dcbnl_get_apptrust(struct net_device *dev, u8 *sel, int *nsel)
|
||||
{
|
||||
struct dsa_port *dp = dsa_user_to_port(dev);
|
||||
struct dsa_switch *ds = dp->ds;
|
||||
int port = dp->index;
|
||||
|
||||
if (!ds->ops->port_get_apptrust)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
return ds->ops->port_get_apptrust(ds, port, sel, nsel);
|
||||
}
|
||||
|
||||
static int __maybe_unused
|
||||
dsa_user_dcbnl_set_default_prio(struct net_device *dev, struct dcb_app *app)
|
||||
{
|
||||
@ -2376,6 +2402,8 @@ static const struct ethtool_ops dsa_user_ethtool_ops = {
|
||||
static const struct dcbnl_rtnl_ops __maybe_unused dsa_user_dcbnl_ops = {
|
||||
.ieee_setapp = dsa_user_dcbnl_ieee_setapp,
|
||||
.ieee_delapp = dsa_user_dcbnl_ieee_delapp,
|
||||
.dcbnl_setapptrust = dsa_user_dcbnl_set_apptrust,
|
||||
.dcbnl_getapptrust = dsa_user_dcbnl_get_apptrust,
|
||||
};
|
||||
|
||||
static void dsa_user_get_stats64(struct net_device *dev,
|
||||
|
Loading…
Reference in New Issue
Block a user