Skip to content

Commit a16efc6

Browse files
oleremdavem330
authored andcommitted
net: dsa: microchip: add support for different DCB app configurations
Add DCB support to configure app trust sources and default port priority. Following commands can be used for testing: dcb apptrust set dev lan1 order pcp dscp dcb app replace dev lan1 default-prio 3 Since it is not possible to configure DSCP-Prio mapping per port, this patch provide only ability to read switch global dscp-prio mapping and way to enable/disable app trust for DSCP. Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Acked-by: Arun Ramadoss <arun.ramadoss@microchip.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 328de46 commit a16efc6

File tree

6 files changed

+583
-2
lines changed

6 files changed

+583
-2
lines changed

drivers/net/dsa/microchip/Kconfig

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ menuconfig NET_DSA_MICROCHIP_KSZ_COMMON
44
depends on NET_DSA
55
select NET_DSA_TAG_KSZ
66
select NET_DSA_TAG_NONE
7+
select NET_IEEE8021Q_HELPERS
8+
select DCB
79
help
810
This driver adds support for Microchip KSZ9477 series switch and
911
KSZ8795/KSZ88x3 switch chips.

drivers/net/dsa/microchip/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# SPDX-License-Identifier: GPL-2.0-only
22
obj-$(CONFIG_NET_DSA_MICROCHIP_KSZ_COMMON) += ksz_switch.o
3-
ksz_switch-objs := ksz_common.o
3+
ksz_switch-objs := ksz_common.o ksz_dcb.o
44
ksz_switch-objs += ksz9477.o ksz9477_acl.o ksz9477_tc_flower.o
55
ksz_switch-objs += ksz8795.o
66
ksz_switch-objs += lan937x_main.o

drivers/net/dsa/microchip/ksz_common.c

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
#include <net/switchdev.h>
2929

3030
#include "ksz_common.h"
31+
#include "ksz_dcb.h"
3132
#include "ksz_ptp.h"
3233
#include "ksz8.h"
3334
#include "ksz9477.h"
@@ -2411,6 +2412,10 @@ static int ksz_setup(struct dsa_switch *ds)
24112412
goto out_ptp_clock_unregister;
24122413
}
24132414

2415+
ret = ksz_dcb_init(dev);
2416+
if (ret)
2417+
goto out_ptp_clock_unregister;
2418+
24142419
/* start switch */
24152420
regmap_update_bits(ksz_regmap_8(dev), regs[S_START_CTRL],
24162421
SW_START, SW_START);
@@ -2739,7 +2744,7 @@ static int ksz_port_setup(struct dsa_switch *ds, int port)
27392744
* there is no need to do anything.
27402745
*/
27412746

2742-
return 0;
2747+
return ksz_dcb_init_port(dev, port);
27432748
}
27442749

27452750
void ksz_port_stp_state_set(struct dsa_switch *ds, int port, u8 state)
@@ -3982,6 +3987,11 @@ static const struct dsa_switch_ops ksz_switch_ops = {
39823987
.port_setup_tc = ksz_setup_tc,
39833988
.get_mac_eee = ksz_get_mac_eee,
39843989
.set_mac_eee = ksz_set_mac_eee,
3990+
.port_get_default_prio = ksz_port_get_default_prio,
3991+
.port_set_default_prio = ksz_port_set_default_prio,
3992+
.port_get_dscp_prio = ksz_port_get_dscp_prio,
3993+
.port_get_apptrust = ksz_port_get_apptrust,
3994+
.port_set_apptrust = ksz_port_set_apptrust,
39853995
};
39863996

39873997
struct ksz_device *ksz_switch_alloc(struct device *base, void *priv)

drivers/net/dsa/microchip/ksz_common.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -620,6 +620,11 @@ static inline bool ksz_is_ksz88x3(struct ksz_device *dev)
620620
return dev->chip_id == KSZ8830_CHIP_ID;
621621
}
622622

623+
static inline bool is_ksz8(struct ksz_device *dev)
624+
{
625+
return ksz_is_ksz87xx(dev) || ksz_is_ksz88x3(dev);
626+
}
627+
623628
static inline int is_lan937x(struct ksz_device *dev)
624629
{
625630
return dev->chip_id == LAN9370_CHIP_ID ||

0 commit comments

Comments
 (0)