/* Get pcp ingress mapping */ for (int i = 0; i < ARRAY_SIZE(qos.pcp.map); i++) {
app_itr.selector = DCB_APP_SEL_PCP;
app_itr.protocol = i;
qos.pcp.map[i] = dcb_getapp(dev, &app_itr);
}
/* Get dscp ingress mapping */ for (int i = 0; i < ARRAY_SIZE(qos.dscp.map); i++) {
app_itr.selector = IEEE_8021QAZ_APP_SEL_DSCP;
app_itr.protocol = i;
qos.dscp.map[i] = dcb_getapp(dev, &app_itr);
}
/* Get default prio */
qos.default_prio = dcb_ieee_getapp_default_prio_mask(dev); if (qos.default_prio)
qos.default_prio = fls(qos.default_prio) - 1;
/* Get pcp rewrite mapping */
dcb_getrewr_prio_pcp_mask_map(dev, &pcp_rewr_map); for (int i = 0; i < ARRAY_SIZE(pcp_rewr_map.map); i++) { if (!pcp_rewr_map.map[i]) continue;
/* Get dscp rewrite mapping */
dcb_getrewr_prio_dscp_mask_map(dev, &dscp_rewr_map); for (int i = 0; i < ARRAY_SIZE(dscp_rewr_map.map); i++) { if (!dscp_rewr_map.map[i]) continue;
/* Enable use of pcp for queue classification */ if (lan966x_dcb_apptrust_contains(port->chip_port, DCB_APP_SEL_PCP)) {
qos.pcp.enable = true;
if (pcp_rewr)
qos.pcp_rewr.enable = true;
}
/* Enable use of dscp for queue classification */ if (lan966x_dcb_apptrust_contains(port->chip_port, IEEE_8021QAZ_APP_SEL_DSCP)) {
qos.dscp.enable = true;
if (dscp_rewr)
qos.dscp_rewr.enable = true;
}
lan966x_port_qos_set(port, &qos);
}
/* DSCP mapping is global for all ports, so set and delete app entries are * replicated for each port.
*/ staticint lan966x_dcb_ieee_dscp_setdel(struct net_device *dev, struct dcb_app *app, int (*setdel)(struct net_device *, struct dcb_app *))
{ struct lan966x_port *port = netdev_priv(dev); struct lan966x *lan966x = port->lan966x; int err;
for (int i = 0; i < NUM_PHYS_PORTS; i++) {
port = lan966x->ports[i]; if (!port) continue;
err = setdel(port->dev, app); if (err) return err;
}
err = lan966x_dcb_app_validate(dev, app); if (err) goto out;
/* Delete current mapping, if it exists. */
proto = dcb_getrewr(dev, app); if (proto) {
app_itr = *app;
app_itr.protocol = proto;
lan966x_dcb_delrewr(dev, &app_itr);
}
/* Enable DSCP classification based on classified QoS class and * DP, for all DSCP values, for all ports.
*/
lan966x_port_qos_dscp_rewr_mode_set(port,
LAN966X_PORT_QOS_REWR_DSCP_ALL);
}
}
Messung V0.5
¤ Dauer der Verarbeitung: 0.0 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.