Message ID | 20241216100044.577489-3-danishanwar@ti.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add Multicast Filtering support for VLAN interface | expand |
On Mon, Dec 16, 2024 at 03:30:42PM +0530, MD Danish Anwar wrote: > Add support for vlan filtering in dual EMAC mode. > > Signed-off-by: MD Danish Anwar <danishanwar@ti.com> > --- > drivers/net/ethernet/ti/icssg/icssg_prueth.c | 29 +++++++++----------- > 1 file changed, 13 insertions(+), 16 deletions(-) > > diff --git a/drivers/net/ethernet/ti/icssg/icssg_prueth.c b/drivers/net/ethernet/ti/icssg/icssg_prueth.c > index c568c84a032b..e031bccf31dc 100644 > --- a/drivers/net/ethernet/ti/icssg/icssg_prueth.c > +++ b/drivers/net/ethernet/ti/icssg/icssg_prueth.c > @@ -822,19 +822,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); > + netdev_err(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); > > - icssg_vtbl_modify(emac, vid, port_mask, untag_mask, true); > - icssg_set_pvid(emac->prueth, vid, emac->port_id); > - } > return 0; > } > > @@ -843,18 +842,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); > + netdev_err(emac->ndev, "VID del vid:%u port_mask:%X untag_mask %X\n", > + vid, port_mask, untag_mask); Why error? It doesn't look like error path, previously there was netdev_dbg (made more sense in my opinion) > + icssg_vtbl_modify(emac, vid, port_mask, untag_mask, false); > > - icssg_vtbl_modify(emac, vid, port_mask, untag_mask, false); > - } > return 0; > } > > -- > 2.34.1
On 19/12/24 12:32 pm, Michal Swiatkowski wrote: > On Mon, Dec 16, 2024 at 03:30:42PM +0530, MD Danish Anwar wrote: >> Add support for vlan filtering in dual EMAC mode. >> >> Signed-off-by: MD Danish Anwar <danishanwar@ti.com> >> --- >> drivers/net/ethernet/ti/icssg/icssg_prueth.c | 29 +++++++++----------- >> 1 file changed, 13 insertions(+), 16 deletions(-) >> >> diff --git a/drivers/net/ethernet/ti/icssg/icssg_prueth.c b/drivers/net/ethernet/ti/icssg/icssg_prueth.c >> index c568c84a032b..e031bccf31dc 100644 >> --- a/drivers/net/ethernet/ti/icssg/icssg_prueth.c >> +++ b/drivers/net/ethernet/ti/icssg/icssg_prueth.c >> @@ -822,19 +822,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); >> + netdev_err(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); >> >> - icssg_vtbl_modify(emac, vid, port_mask, untag_mask, true); >> - icssg_set_pvid(emac->prueth, vid, emac->port_id); >> - } >> return 0; >> } >> >> @@ -843,18 +842,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); >> + netdev_err(emac->ndev, "VID del vid:%u port_mask:%X untag_mask %X\n", >> + vid, port_mask, untag_mask); > Why error? It doesn't look like error path, previously there was > netdev_dbg (made more sense in my opinion) > My bad. It should be netdev_dbg(). I'll change it in v2. Thanks >> + icssg_vtbl_modify(emac, vid, port_mask, untag_mask, false); >> >> - icssg_vtbl_modify(emac, vid, port_mask, untag_mask, false); >> - } >> return 0; >> } >> >> -- >> 2.34.1
diff --git a/drivers/net/ethernet/ti/icssg/icssg_prueth.c b/drivers/net/ethernet/ti/icssg/icssg_prueth.c index c568c84a032b..e031bccf31dc 100644 --- a/drivers/net/ethernet/ti/icssg/icssg_prueth.c +++ b/drivers/net/ethernet/ti/icssg/icssg_prueth.c @@ -822,19 +822,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); + netdev_err(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); - icssg_vtbl_modify(emac, vid, port_mask, untag_mask, true); - icssg_set_pvid(emac->prueth, vid, emac->port_id); - } return 0; } @@ -843,18 +842,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); + netdev_err(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); - icssg_vtbl_modify(emac, vid, port_mask, untag_mask, false); - } return 0; }
Add support for vlan filtering in dual EMAC mode. Signed-off-by: MD Danish Anwar <danishanwar@ti.com> --- drivers/net/ethernet/ti/icssg/icssg_prueth.c | 29 +++++++++----------- 1 file changed, 13 insertions(+), 16 deletions(-)