123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- From: Felix Fietkau <[email protected]>
- Date: Wed, 24 Mar 2021 02:30:37 +0100
- Subject: [PATCH] net: dsa: resolve forwarding path for dsa slave ports
- Add .ndo_fill_forward_path for dsa slave port devices
- Signed-off-by: Felix Fietkau <[email protected]>
- Signed-off-by: Pablo Neira Ayuso <[email protected]>
- ---
- --- a/include/linux/netdevice.h
- +++ b/include/linux/netdevice.h
- @@ -832,6 +832,7 @@ enum net_device_path_type {
- DEV_PATH_VLAN,
- DEV_PATH_BRIDGE,
- DEV_PATH_PPPOE,
- + DEV_PATH_DSA,
- };
-
- struct net_device_path {
- @@ -852,6 +853,10 @@ struct net_device_path {
- u16 vlan_id;
- __be16 vlan_proto;
- } bridge;
- + struct {
- + int port;
- + u16 proto;
- + } dsa;
- };
- };
-
- --- a/net/dsa/slave.c
- +++ b/net/dsa/slave.c
- @@ -1619,6 +1619,21 @@ static struct devlink_port *dsa_slave_ge
- return dp->ds->devlink ? &dp->devlink_port : NULL;
- }
-
- +static int dsa_slave_fill_forward_path(struct net_device_path_ctx *ctx,
- + struct net_device_path *path)
- +{
- + struct dsa_port *dp = dsa_slave_to_port(ctx->dev);
- + struct dsa_port *cpu_dp = dp->cpu_dp;
- +
- + path->dev = ctx->dev;
- + path->type = DEV_PATH_DSA;
- + path->dsa.proto = cpu_dp->tag_ops->proto;
- + path->dsa.port = dp->index;
- + ctx->dev = cpu_dp->master;
- +
- + return 0;
- +}
- +
- static const struct net_device_ops dsa_slave_netdev_ops = {
- .ndo_open = dsa_slave_open,
- .ndo_stop = dsa_slave_close,
- @@ -1644,6 +1659,7 @@ static const struct net_device_ops dsa_s
- .ndo_vlan_rx_kill_vid = dsa_slave_vlan_rx_kill_vid,
- .ndo_get_devlink_port = dsa_slave_get_devlink_port,
- .ndo_change_mtu = dsa_slave_change_mtu,
- + .ndo_fill_forward_path = dsa_slave_fill_forward_path,
- };
-
- static struct device_type dsa_type = {
|