hellcreek.c (4a8e4640ddd1e18cade9f15e40f2d8cd65f173cf) hellcreek.c (d3eed0e57d5d1bcbf1bd60f83a4adfe7d7b8dd9c)
1// SPDX-License-Identifier: (GPL-2.0 or MIT)
2/*
3 * DSA driver for:
4 * Hirschmann Hellcreek TSN switch.
5 *
6 * Copyright (C) 2019-2021 Linutronix GmbH
7 * Author Kurt Kanzenbach <kurt@linutronix.de>
8 */

--- 660 unchanged lines hidden (view full) ---

669 if (flags.mask & BR_MCAST_FLOOD)
670 hellcreek_port_set_mcast_flood(hellcreek, port,
671 !!(flags.val & BR_MCAST_FLOOD));
672
673 return 0;
674}
675
676static int hellcreek_port_bridge_join(struct dsa_switch *ds, int port,
1// SPDX-License-Identifier: (GPL-2.0 or MIT)
2/*
3 * DSA driver for:
4 * Hirschmann Hellcreek TSN switch.
5 *
6 * Copyright (C) 2019-2021 Linutronix GmbH
7 * Author Kurt Kanzenbach <kurt@linutronix.de>
8 */

--- 660 unchanged lines hidden (view full) ---

669 if (flags.mask & BR_MCAST_FLOOD)
670 hellcreek_port_set_mcast_flood(hellcreek, port,
671 !!(flags.val & BR_MCAST_FLOOD));
672
673 return 0;
674}
675
676static int hellcreek_port_bridge_join(struct dsa_switch *ds, int port,
677 struct net_device *br)
677 struct dsa_bridge bridge)
678{
679 struct hellcreek *hellcreek = ds->priv;
680
681 dev_dbg(hellcreek->dev, "Port %d joins a bridge\n", port);
682
683 /* When joining a vlan_filtering bridge, keep the switch VLAN aware */
684 if (!ds->vlan_filtering)
685 hellcreek_setup_vlan_awareness(hellcreek, false);
686
687 /* Drop private vlans */
688 hellcreek_setup_vlan_membership(ds, port, false);
689
690 return 0;
691}
692
693static void hellcreek_port_bridge_leave(struct dsa_switch *ds, int port,
678{
679 struct hellcreek *hellcreek = ds->priv;
680
681 dev_dbg(hellcreek->dev, "Port %d joins a bridge\n", port);
682
683 /* When joining a vlan_filtering bridge, keep the switch VLAN aware */
684 if (!ds->vlan_filtering)
685 hellcreek_setup_vlan_awareness(hellcreek, false);
686
687 /* Drop private vlans */
688 hellcreek_setup_vlan_membership(ds, port, false);
689
690 return 0;
691}
692
693static void hellcreek_port_bridge_leave(struct dsa_switch *ds, int port,
694 struct net_device *br)
694 struct dsa_bridge bridge)
695{
696 struct hellcreek *hellcreek = ds->priv;
697
698 dev_dbg(hellcreek->dev, "Port %d leaves a bridge\n", port);
699
700 /* Enable VLAN awareness */
701 hellcreek_setup_vlan_awareness(hellcreek, true);
702

--- 1272 unchanged lines hidden ---
695{
696 struct hellcreek *hellcreek = ds->priv;
697
698 dev_dbg(hellcreek->dev, "Port %d leaves a bridge\n", port);
699
700 /* Enable VLAN awareness */
701 hellcreek_setup_vlan_awareness(hellcreek, true);
702

--- 1272 unchanged lines hidden ---