aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/ethernet/ti/keystone_ethss.c50
-rw-r--r--drivers/net/ethernet/ti/keystone_ethss2.c53
-rw-r--r--drivers/net/ethernet/ti/keystone_net_core.c4
-rw-r--r--drivers/net/ethernet/ti/keystone_xgess.c50
4 files changed, 2 insertions, 155 deletions
diff --git a/drivers/net/ethernet/ti/keystone_ethss.c b/drivers/net/ethernet/ti/keystone_ethss.c
index dd3dc51ac8f..e2aebf708dc 100644
--- a/drivers/net/ethernet/ti/keystone_ethss.c
+++ b/drivers/net/ethernet/ti/keystone_ethss.c
@@ -565,7 +565,6 @@ struct cpsw_intf {
565 struct list_head cpsw_intf_list; 565 struct list_head cpsw_intf_list;
566 struct timer_list timer; 566 struct timer_list timer;
567 u32 sgmii_link; 567 u32 sgmii_link;
568 unsigned long active_vlans[BITS_TO_LONGS(VLAN_N_VID)];
569}; 568};
570 569
571static struct cpsw_priv *global_priv; /* FIXME: REMOVE THIS!! */ 570static struct cpsw_priv *global_priv; /* FIXME: REMOVE THIS!! */
@@ -2363,51 +2362,30 @@ static void cpsw_slave_init(struct cpsw_slave *slave, struct cpsw_priv *priv)
2363static void cpsw_add_mcast_addr(struct cpsw_intf *cpsw_intf, u8 *addr) 2362static void cpsw_add_mcast_addr(struct cpsw_intf *cpsw_intf, u8 *addr)
2364{ 2363{
2365 struct cpsw_priv *cpsw_dev = cpsw_intf->cpsw_priv; 2364 struct cpsw_priv *cpsw_dev = cpsw_intf->cpsw_priv;
2366 u16 vlan_id;
2367 2365
2368 cpsw_ale_add_mcast(cpsw_dev->ale, addr, CPSW_MASK_ALL_PORTS, 0, 0, 2366 cpsw_ale_add_mcast(cpsw_dev->ale, addr, CPSW_MASK_ALL_PORTS, 0, 0,
2369 ALE_MCAST_FWD_2); 2367 ALE_MCAST_FWD_2);
2370 for_each_set_bit(vlan_id, cpsw_intf->active_vlans, VLAN_N_VID) {
2371 cpsw_ale_add_mcast(cpsw_dev->ale, addr, CPSW_MASK_ALL_PORTS,
2372 ALE_VLAN, vlan_id, ALE_MCAST_FWD_2);
2373 }
2374} 2368}
2375 2369
2376static void cpsw_add_ucast_addr(struct cpsw_intf *cpsw_intf, u8 *addr) 2370static void cpsw_add_ucast_addr(struct cpsw_intf *cpsw_intf, u8 *addr)
2377{ 2371{
2378 struct cpsw_priv *cpsw_dev = cpsw_intf->cpsw_priv; 2372 struct cpsw_priv *cpsw_dev = cpsw_intf->cpsw_priv;
2379 u16 vlan_id;
2380 2373
2381 cpsw_ale_add_ucast(cpsw_dev->ale, addr, cpsw_dev->host_port, 0, 0); 2374 cpsw_ale_add_ucast(cpsw_dev->ale, addr, cpsw_dev->host_port, 0, 0);
2382
2383 for_each_set_bit(vlan_id, cpsw_intf->active_vlans, VLAN_N_VID)
2384 cpsw_ale_add_ucast(cpsw_dev->ale, addr, cpsw_dev->host_port,
2385 ALE_VLAN, vlan_id);
2386} 2375}
2387 2376
2388static void cpsw_del_mcast_addr(struct cpsw_intf *cpsw_intf, u8 *addr) 2377static void cpsw_del_mcast_addr(struct cpsw_intf *cpsw_intf, u8 *addr)
2389{ 2378{
2390 struct cpsw_priv *cpsw_dev = cpsw_intf->cpsw_priv; 2379 struct cpsw_priv *cpsw_dev = cpsw_intf->cpsw_priv;
2391 u16 vlan_id;
2392 2380
2393 cpsw_ale_del_mcast(cpsw_dev->ale, addr, 0, 0, 0); 2381 cpsw_ale_del_mcast(cpsw_dev->ale, addr, 0, 0, 0);
2394
2395 for_each_set_bit(vlan_id, cpsw_intf->active_vlans, VLAN_N_VID) {
2396 cpsw_ale_del_mcast(cpsw_dev->ale, addr, 0, ALE_VLAN, vlan_id);
2397 }
2398} 2382}
2399 2383
2400static void cpsw_del_ucast_addr(struct cpsw_intf *cpsw_intf, u8 *addr) 2384static void cpsw_del_ucast_addr(struct cpsw_intf *cpsw_intf, u8 *addr)
2401{ 2385{
2402 struct cpsw_priv *cpsw_dev = cpsw_intf->cpsw_priv; 2386 struct cpsw_priv *cpsw_dev = cpsw_intf->cpsw_priv;
2403 u16 vlan_id;
2404 2387
2405 cpsw_ale_del_ucast(cpsw_dev->ale, addr, cpsw_dev->host_port, 0, 0); 2388 cpsw_ale_del_ucast(cpsw_dev->ale, addr, cpsw_dev->host_port, 0, 0);
2406
2407 for_each_set_bit(vlan_id, cpsw_intf->active_vlans, VLAN_N_VID) {
2408 cpsw_ale_del_ucast(cpsw_dev->ale, addr, cpsw_dev->host_port,
2409 ALE_VLAN, vlan_id);
2410 }
2411} 2389}
2412 2390
2413int cpsw_add_addr(void *intf_priv, struct netcp_addr *naddr) 2391int cpsw_add_addr(void *intf_priv, struct netcp_addr *naddr)
@@ -2462,32 +2440,6 @@ int cpsw_del_addr(void *intf_priv, struct netcp_addr *naddr)
2462 return 0; 2440 return 0;
2463} 2441}
2464 2442
2465int cpsw_add_vid(void *intf_priv, int vid)
2466{
2467 struct cpsw_intf *cpsw_intf = intf_priv;
2468 struct cpsw_priv *cpsw_dev = cpsw_intf->cpsw_priv;
2469
2470 set_bit(vid, cpsw_intf->active_vlans);
2471
2472 cpsw_ale_add_vlan(cpsw_dev->ale, vid, CPSW_MASK_ALL_PORTS,
2473 CPSW_MASK_NO_PORTS,
2474 CPSW_MASK_ALL_PORTS, CPSW_MASK_PHYS_PORTS);
2475
2476 return 0;
2477}
2478
2479int cpsw_del_vid(void *intf_priv, int vid)
2480{
2481 struct cpsw_intf *cpsw_intf = intf_priv;
2482 struct cpsw_priv *cpsw_dev = cpsw_intf->cpsw_priv;
2483
2484 cpsw_ale_del_vlan(cpsw_dev->ale, vid, 0);
2485
2486 clear_bit(vid, cpsw_intf->active_vlans);
2487
2488 return 0;
2489}
2490
2491#ifdef CONFIG_TI_CPTS 2443#ifdef CONFIG_TI_CPTS
2492#define KEYSTONE_PTP_FILTER \ 2444#define KEYSTONE_PTP_FILTER \
2493{ \ 2445{ \
@@ -3730,8 +3682,6 @@ static struct netcp_module cpsw_module = {
3730 .release = cpsw_release, 3682 .release = cpsw_release,
3731 .add_addr = cpsw_add_addr, 3683 .add_addr = cpsw_add_addr,
3732 .del_addr = cpsw_del_addr, 3684 .del_addr = cpsw_del_addr,
3733 .add_vid = cpsw_add_vid,
3734 .del_vid = cpsw_del_vid,
3735 .ioctl = cpsw_ioctl, 3685 .ioctl = cpsw_ioctl,
3736}; 3686};
3737 3687
diff --git a/drivers/net/ethernet/ti/keystone_ethss2.c b/drivers/net/ethernet/ti/keystone_ethss2.c
index 5560d6e2c00..5f2c64f56c4 100644
--- a/drivers/net/ethernet/ti/keystone_ethss2.c
+++ b/drivers/net/ethernet/ti/keystone_ethss2.c
@@ -913,7 +913,6 @@ struct cpsw2_intf {
913 struct list_head cpsw_intf_list; 913 struct list_head cpsw_intf_list;
914 struct timer_list timer; 914 struct timer_list timer;
915 u32 sgmii_link; 915 u32 sgmii_link;
916 unsigned long active_vlans[BITS_TO_LONGS(VLAN_N_VID)];
917}; 916};
918 917
919struct cpsw2_attribute { 918struct cpsw2_attribute {
@@ -2725,53 +2724,31 @@ static void cpsw2_slave_init(struct cpsw2_slave *slave, struct cpsw2_priv *priv)
2725static void cpsw2_add_mcast_addr(struct cpsw2_intf *cpsw_intf, u8 *addr) 2724static void cpsw2_add_mcast_addr(struct cpsw2_intf *cpsw_intf, u8 *addr)
2726{ 2725{
2727 struct cpsw2_priv *cpsw_dev = cpsw_intf->cpsw_priv; 2726 struct cpsw2_priv *cpsw_dev = cpsw_intf->cpsw_priv;
2728 u16 vlan_id;
2729 2727
2730 cpsw_ale_add_mcast(cpsw_dev->ale, addr, 2728 cpsw_ale_add_mcast(cpsw_dev->ale, addr,
2731 CPSW2_MASK_ALL_PORTS(cpsw_dev->num_slaves + 1), 0, 0, 2729 CPSW2_MASK_ALL_PORTS(cpsw_dev->num_slaves + 1), 0, 0,
2732 ALE_MCAST_FWD_2); 2730 ALE_MCAST_FWD_2);
2733 for_each_set_bit(vlan_id, cpsw_intf->active_vlans, VLAN_N_VID) {
2734 cpsw_ale_add_mcast(cpsw_dev->ale, addr,
2735 CPSW2_MASK_ALL_PORTS(cpsw_dev->num_slaves + 1),
2736 ALE_VLAN, vlan_id, ALE_MCAST_FWD_2);
2737 }
2738} 2731}
2739 2732
2740static void cpsw2_add_ucast_addr(struct cpsw2_intf *cpsw_intf, u8 *addr) 2733static void cpsw2_add_ucast_addr(struct cpsw2_intf *cpsw_intf, u8 *addr)
2741{ 2734{
2742 struct cpsw2_priv *cpsw_dev = cpsw_intf->cpsw_priv; 2735 struct cpsw2_priv *cpsw_dev = cpsw_intf->cpsw_priv;
2743 u16 vlan_id;
2744 2736
2745 cpsw_ale_add_ucast(cpsw_dev->ale, addr, cpsw_dev->host_port, 0, 0); 2737 cpsw_ale_add_ucast(cpsw_dev->ale, addr, cpsw_dev->host_port, 0, 0);
2746
2747 for_each_set_bit(vlan_id, cpsw_intf->active_vlans, VLAN_N_VID)
2748 cpsw_ale_add_ucast(cpsw_dev->ale, addr, cpsw_dev->host_port,
2749 ALE_VLAN, vlan_id);
2750} 2738}
2751 2739
2752static void cpsw2_del_mcast_addr(struct cpsw2_intf *cpsw_intf, u8 *addr) 2740static void cpsw2_del_mcast_addr(struct cpsw2_intf *cpsw_intf, u8 *addr)
2753{ 2741{
2754 struct cpsw2_priv *cpsw_dev = cpsw_intf->cpsw_priv; 2742 struct cpsw2_priv *cpsw_dev = cpsw_intf->cpsw_priv;
2755 u16 vlan_id;
2756 2743
2757 cpsw_ale_del_mcast(cpsw_dev->ale, addr, 0, 0, 0); 2744 cpsw_ale_del_mcast(cpsw_dev->ale, addr, 0, 0, 0);
2758
2759 for_each_set_bit(vlan_id, cpsw_intf->active_vlans, VLAN_N_VID) {
2760 cpsw_ale_del_mcast(cpsw_dev->ale, addr, 0, ALE_VLAN, vlan_id);
2761 }
2762} 2745}
2763 2746
2764static void cpsw2_del_ucast_addr(struct cpsw2_intf *cpsw_intf, u8 *addr) 2747static void cpsw2_del_ucast_addr(struct cpsw2_intf *cpsw_intf, u8 *addr)
2765{ 2748{
2766 struct cpsw2_priv *cpsw_dev = cpsw_intf->cpsw_priv; 2749 struct cpsw2_priv *cpsw_dev = cpsw_intf->cpsw_priv;
2767 u16 vlan_id;
2768 2750
2769 cpsw_ale_del_ucast(cpsw_dev->ale, addr, cpsw_dev->host_port, 0, 0); 2751 cpsw_ale_del_ucast(cpsw_dev->ale, addr, cpsw_dev->host_port, 0, 0);
2770
2771 for_each_set_bit(vlan_id, cpsw_intf->active_vlans, VLAN_N_VID) {
2772 cpsw_ale_del_ucast(cpsw_dev->ale, addr, cpsw_dev->host_port,
2773 ALE_VLAN, vlan_id);
2774 }
2775} 2752}
2776 2753
2777static int cpsw2_add_addr(void *intf_priv, struct netcp_addr *naddr) 2754static int cpsw2_add_addr(void *intf_priv, struct netcp_addr *naddr)
@@ -2826,34 +2803,6 @@ static int cpsw2_del_addr(void *intf_priv, struct netcp_addr *naddr)
2826 return 0; 2803 return 0;
2827} 2804}
2828 2805
2829static int cpsw2_add_vid(void *intf_priv, int vid)
2830{
2831 struct cpsw2_intf *cpsw_intf = intf_priv;
2832 struct cpsw2_priv *cpsw_dev = cpsw_intf->cpsw_priv;
2833
2834 set_bit(vid, cpsw_intf->active_vlans);
2835
2836 cpsw_ale_add_vlan(cpsw_dev->ale, vid,
2837 CPSW2_MASK_ALL_PORTS(cpsw_dev->num_slaves + 1),
2838 CPSW2_MASK_NO_PORTS,
2839 CPSW2_MASK_ALL_PORTS(cpsw_dev->num_slaves + 1),
2840 CPSW2_MASK_PHYS_PORTS(cpsw_dev->num_slaves + 1));
2841
2842 return 0;
2843}
2844
2845static int cpsw2_del_vid(void *intf_priv, int vid)
2846{
2847 struct cpsw2_intf *cpsw_intf = intf_priv;
2848 struct cpsw2_priv *cpsw_dev = cpsw_intf->cpsw_priv;
2849
2850 cpsw_ale_del_vlan(cpsw_dev->ale, vid, 0);
2851
2852 clear_bit(vid, cpsw_intf->active_vlans);
2853
2854 return 0;
2855}
2856
2857#ifdef CONFIG_TI_CPTS 2806#ifdef CONFIG_TI_CPTS
2858#define KEYSTONE_PTP_FILTER2 \ 2807#define KEYSTONE_PTP_FILTER2 \
2859{ \ 2808{ \
@@ -4101,8 +4050,6 @@ static struct netcp_module cpsw_module = {
4101 .release = cpsw2_release, 4050 .release = cpsw2_release,
4102 .add_addr = cpsw2_add_addr, 4051 .add_addr = cpsw2_add_addr,
4103 .del_addr = cpsw2_del_addr, 4052 .del_addr = cpsw2_del_addr,
4104 .add_vid = cpsw2_add_vid,
4105 .del_vid = cpsw2_del_vid,
4106 .ioctl = cpsw2_ioctl, 4053 .ioctl = cpsw2_ioctl,
4107}; 4054};
4108 4055
diff --git a/drivers/net/ethernet/ti/keystone_net_core.c b/drivers/net/ethernet/ti/keystone_net_core.c
index 47efc9223d1..56c3493a72a 100644
--- a/drivers/net/ethernet/ti/keystone_net_core.c
+++ b/drivers/net/ethernet/ti/keystone_net_core.c
@@ -1752,7 +1752,7 @@ static int netcp_rx_add_vid(struct net_device *ndev, __be16 proto, u16 vid)
1752 unsigned long flags; 1752 unsigned long flags;
1753 int err = 0; 1753 int err = 0;
1754 1754
1755 dev_info(netcp->dev, "adding rx vlan id: %d\n", vid); 1755 dev_dbg(netcp->dev, "adding rx vlan id: %d\n", vid);
1756 1756
1757 spin_lock_irqsave(&netcp->lock, flags); 1757 spin_lock_irqsave(&netcp->lock, flags);
1758 1758
@@ -1780,7 +1780,7 @@ static int netcp_rx_kill_vid(struct net_device *ndev, __be16 proto, u16 vid)
1780 struct netcp_module *module; 1780 struct netcp_module *module;
1781 int err = 0; 1781 int err = 0;
1782 1782
1783 dev_info(netcp->dev, "removing rx vlan id: %d\n", vid); 1783 dev_dbg(netcp->dev, "removing rx vlan id: %d\n", vid);
1784 1784
1785 for_each_module(netcp, intf_modpriv) { 1785 for_each_module(netcp, intf_modpriv) {
1786 module = intf_modpriv->netcp_module; 1786 module = intf_modpriv->netcp_module;
diff --git a/drivers/net/ethernet/ti/keystone_xgess.c b/drivers/net/ethernet/ti/keystone_xgess.c
index e683d591016..a09de9044d2 100644
--- a/drivers/net/ethernet/ti/keystone_xgess.c
+++ b/drivers/net/ethernet/ti/keystone_xgess.c
@@ -319,7 +319,6 @@ struct cpswx_intf {
319 struct list_head cpsw_intf_list; 319 struct list_head cpsw_intf_list;
320 struct timer_list timer; 320 struct timer_list timer;
321 u32 sgmii_link; 321 u32 sgmii_link;
322 unsigned long active_vlans[BITS_TO_LONGS(VLAN_N_VID)];
323}; 322};
324 323
325/* 324/*
@@ -1784,51 +1783,30 @@ static void cpsw_slave_init(struct cpswx_slave *slave, struct cpswx_priv *priv)
1784static void cpsw_add_mcast_addr(struct cpswx_intf *cpsw_intf, u8 *addr) 1783static void cpsw_add_mcast_addr(struct cpswx_intf *cpsw_intf, u8 *addr)
1785{ 1784{
1786 struct cpswx_priv *cpsw_dev = cpsw_intf->cpsw_priv; 1785 struct cpswx_priv *cpsw_dev = cpsw_intf->cpsw_priv;
1787 u16 vlan_id;
1788 1786
1789 cpsw_ale_add_mcast(cpsw_dev->ale, addr, CPSW_MASK_ALL_PORTS, 0, 0, 1787 cpsw_ale_add_mcast(cpsw_dev->ale, addr, CPSW_MASK_ALL_PORTS, 0, 0,
1790 ALE_MCAST_FWD_2); 1788 ALE_MCAST_FWD_2);
1791 for_each_set_bit(vlan_id, cpsw_intf->active_vlans, VLAN_N_VID) {
1792 cpsw_ale_add_mcast(cpsw_dev->ale, addr, CPSW_MASK_ALL_PORTS,
1793 ALE_VLAN, vlan_id, ALE_MCAST_FWD_2);
1794 }
1795} 1789}
1796 1790
1797static void cpsw_add_ucast_addr(struct cpswx_intf *cpsw_intf, u8 *addr) 1791static void cpsw_add_ucast_addr(struct cpswx_intf *cpsw_intf, u8 *addr)
1798{ 1792{
1799 struct cpswx_priv *cpsw_dev = cpsw_intf->cpsw_priv; 1793 struct cpswx_priv *cpsw_dev = cpsw_intf->cpsw_priv;
1800 u16 vlan_id;
1801 1794
1802 cpsw_ale_add_ucast(cpsw_dev->ale, addr, cpsw_dev->host_port, 0, 0); 1795 cpsw_ale_add_ucast(cpsw_dev->ale, addr, cpsw_dev->host_port, 0, 0);
1803
1804 for_each_set_bit(vlan_id, cpsw_intf->active_vlans, VLAN_N_VID)
1805 cpsw_ale_add_ucast(cpsw_dev->ale, addr, cpsw_dev->host_port,
1806 ALE_VLAN, vlan_id);
1807} 1796}
1808 1797
1809static void cpsw_del_mcast_addr(struct cpswx_intf *cpsw_intf, u8 *addr) 1798static void cpsw_del_mcast_addr(struct cpswx_intf *cpsw_intf, u8 *addr)
1810{ 1799{
1811 struct cpswx_priv *cpsw_dev = cpsw_intf->cpsw_priv; 1800 struct cpswx_priv *cpsw_dev = cpsw_intf->cpsw_priv;
1812 u16 vlan_id;
1813 1801
1814 cpsw_ale_del_mcast(cpsw_dev->ale, addr, 0, 0, 0); 1802 cpsw_ale_del_mcast(cpsw_dev->ale, addr, 0, 0, 0);
1815
1816 for_each_set_bit(vlan_id, cpsw_intf->active_vlans, VLAN_N_VID) {
1817 cpsw_ale_del_mcast(cpsw_dev->ale, addr, 0, ALE_VLAN, vlan_id);
1818 }
1819} 1803}
1820 1804
1821static void cpsw_del_ucast_addr(struct cpswx_intf *cpsw_intf, u8 *addr) 1805static void cpsw_del_ucast_addr(struct cpswx_intf *cpsw_intf, u8 *addr)
1822{ 1806{
1823 struct cpswx_priv *cpsw_dev = cpsw_intf->cpsw_priv; 1807 struct cpswx_priv *cpsw_dev = cpsw_intf->cpsw_priv;
1824 u16 vlan_id;
1825 1808
1826 cpsw_ale_del_ucast(cpsw_dev->ale, addr, cpsw_dev->host_port, 0, 0); 1809 cpsw_ale_del_ucast(cpsw_dev->ale, addr, cpsw_dev->host_port, 0, 0);
1827
1828 for_each_set_bit(vlan_id, cpsw_intf->active_vlans, VLAN_N_VID) {
1829 cpsw_ale_del_ucast(cpsw_dev->ale, addr, cpsw_dev->host_port,
1830 ALE_VLAN, vlan_id);
1831 }
1832} 1810}
1833 1811
1834static int cpswx_add_addr(void *intf_priv, struct netcp_addr *naddr) 1812static int cpswx_add_addr(void *intf_priv, struct netcp_addr *naddr)
@@ -1883,32 +1861,6 @@ static int cpswx_del_addr(void *intf_priv, struct netcp_addr *naddr)
1883 return 0; 1861 return 0;
1884} 1862}
1885 1863
1886static int cpswx_add_vid(void *intf_priv, int vid)
1887{
1888 struct cpswx_intf *cpsw_intf = intf_priv;
1889 struct cpswx_priv *cpsw_dev = cpsw_intf->cpsw_priv;
1890
1891 set_bit(vid, cpsw_intf->active_vlans);
1892
1893 cpsw_ale_add_vlan(cpsw_dev->ale, vid, CPSW_MASK_ALL_PORTS,
1894 CPSW_MASK_NO_PORTS,
1895 CPSW_MASK_ALL_PORTS, CPSW_MASK_PHYS_PORTS);
1896
1897 return 0;
1898}
1899
1900static int cpswx_del_vid(void *intf_priv, int vid)
1901{
1902 struct cpswx_intf *cpsw_intf = intf_priv;
1903 struct cpswx_priv *cpsw_dev = cpsw_intf->cpsw_priv;
1904
1905 cpsw_ale_del_vlan(cpsw_dev->ale, vid, 0);
1906
1907 clear_bit(vid, cpsw_intf->active_vlans);
1908
1909 return 0;
1910}
1911
1912static int cpswx_ioctl(void *intf_priv, struct ifreq *req, int cmd) 1864static int cpswx_ioctl(void *intf_priv, struct ifreq *req, int cmd)
1913{ 1865{
1914 struct cpswx_intf *cpsw_intf = intf_priv; 1866 struct cpswx_intf *cpsw_intf = intf_priv;
@@ -2583,8 +2535,6 @@ static struct netcp_module cpsw_module = {
2583 .release = cpswx_release, 2535 .release = cpswx_release,
2584 .add_addr = cpswx_add_addr, 2536 .add_addr = cpswx_add_addr,
2585 .del_addr = cpswx_del_addr, 2537 .del_addr = cpswx_del_addr,
2586 .add_vid = cpswx_add_vid,
2587 .del_vid = cpswx_del_vid,
2588 .ioctl = cpswx_ioctl, 2538 .ioctl = cpswx_ioctl,
2589}; 2539};
2590 2540