Commit 816b02e6 authored by MD Danish Anwar's avatar MD Danish Anwar Committed by Paolo Abeni
Browse files

net: ti: icssg-prueth: Add VLAN support in EMAC mode



Add support for VLAN filtering in dual EMAC mode.

Reviewed-by: default avatarRoger Quadros <rogerq@kernel.org>
Signed-off-by: default avatarMD Danish Anwar <danishanwar@ti.com>
Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent 624d7a8a
Loading
Loading
Loading
Loading
+13 −16
Original line number Diff line number Diff line
@@ -907,19 +907,18 @@ static int emac_ndo_vlan_rx_add_vid(struct net_device *ndev,
{
	struct prueth_emac *emac = netdev_priv(ndev);
	struct prueth *prueth = emac->prueth;
	int port_mask = BIT(emac->port_id);
	int untag_mask = 0;
	int port_mask;

	if (prueth->is_hsr_offload_mode) {
		port_mask = BIT(PRUETH_PORT_HOST) | BIT(emac->port_id);
		untag_mask = 0;
	if (prueth->is_hsr_offload_mode)
		port_mask |= BIT(PRUETH_PORT_HOST);

	netdev_dbg(emac->ndev, "VID add vid:%u port_mask:%X untag_mask %X\n",
		   vid, port_mask, untag_mask);

	icssg_vtbl_modify(emac, vid, port_mask, untag_mask, true);
	icssg_set_pvid(emac->prueth, vid, emac->port_id);
	}

	return 0;
}

@@ -928,18 +927,16 @@ static int emac_ndo_vlan_rx_del_vid(struct net_device *ndev,
{
	struct prueth_emac *emac = netdev_priv(ndev);
	struct prueth *prueth = emac->prueth;
	int port_mask = BIT(emac->port_id);
	int untag_mask = 0;
	int port_mask;

	if (prueth->is_hsr_offload_mode) {
	if (prueth->is_hsr_offload_mode)
		port_mask = BIT(PRUETH_PORT_HOST);
		untag_mask = 0;

	netdev_dbg(emac->ndev, "VID del vid:%u port_mask:%X untag_mask  %X\n",
		   vid, port_mask, untag_mask);

	icssg_vtbl_modify(emac, vid, port_mask, untag_mask, false);
	}

	return 0;
}