Johnny Hughes
2019-02-04 c1f36c28393a7bb126cbf436cd6a4077a5b5c313
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
From 4351d1b0b3bd5ee74e3eee44c22459b95e32222d Mon Sep 17 00:00:00 2001
From: Maxime Chevallier <maxime.chevallier@bootlin.com>
Date: Wed, 7 Mar 2018 15:18:03 +0100
Subject: [PATCH 36/46] net: mvpp2: Simplify MAC filtering function parameters
 
The mvpp2_prs_mac_da_accept function takes into parameter both the
struct representing the controller and the port id. This is meaningful
when we want to create TCAM entries for non-initialized ports, but in
this case we expect the port to be initialized before starting adding or
removing MAC addresses to the per-port filter.
 
This commit changes the function so that it takes struct mvpp2_port as
a parameter instead.
 
Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit ce2a27c761acaba032f61f8322ff9447fd084671)
Signed-off-by: Marcin Wojtas <mw@semihalf.com>
---
 drivers/net/ethernet/marvell/mvpp2.c | 30 +++++++++++++++---------------
 1 file changed, 15 insertions(+), 15 deletions(-)
 
diff --git a/drivers/net/ethernet/marvell/mvpp2.c b/drivers/net/ethernet/marvell/mvpp2.c
index 338c94d..8796456 100644
--- a/drivers/net/ethernet/marvell/mvpp2.c
+++ b/drivers/net/ethernet/marvell/mvpp2.c
@@ -3817,16 +3817,17 @@ mvpp2_prs_mac_da_range_find(struct mvpp2 *priv, int pmap, const u8 *da,
 }
 
 /* Update parser's mac da entry */
-static int mvpp2_prs_mac_da_accept(struct mvpp2 *priv, int port,
-                   const u8 *da, bool add)
+static int mvpp2_prs_mac_da_accept(struct mvpp2_port *port, const u8 *da,
+                   bool add)
 {
-    struct mvpp2_prs_entry *pe;
-    unsigned int pmap, len, ri;
     unsigned char mask[ETH_ALEN] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
+    struct mvpp2 *priv = port->priv;
+    unsigned int pmap, len, ri;
+    struct mvpp2_prs_entry *pe;
     int tid;
 
     /* Scan TCAM and see if entry with this <MAC DA, port> already exist */
-    pe = mvpp2_prs_mac_da_range_find(priv, (1 << port), da, mask,
+    pe = mvpp2_prs_mac_da_range_find(priv, BIT(port->id), da, mask,
                      MVPP2_PRS_UDF_MAC_DEF);
 
     /* No such entry */
@@ -3861,7 +3862,7 @@ static int mvpp2_prs_mac_da_accept(struct mvpp2 *priv, int port,
     }
 
     /* Update port mask */
-    mvpp2_prs_tcam_port_set(pe, port, add);
+    mvpp2_prs_tcam_port_set(pe, port->id, add);
 
     /* Invalidate the entry if no ports are left enabled */
     pmap = mvpp2_prs_tcam_port_map_get(pe);
@@ -3917,13 +3918,12 @@ static int mvpp2_prs_update_mac_da(struct net_device *dev, const u8 *da)
     int err;
 
     /* Remove old parser entry */
-    err = mvpp2_prs_mac_da_accept(port->priv, port->id, dev->dev_addr,
-                      false);
+    err = mvpp2_prs_mac_da_accept(port, dev->dev_addr, false);
     if (err)
         return err;
 
     /* Add new parser entry */
-    err = mvpp2_prs_mac_da_accept(port->priv, port->id, da, true);
+    err = mvpp2_prs_mac_da_accept(port, da, true);
     if (err)
         return err;
 
@@ -3959,7 +3959,8 @@ static void mvpp2_prs_mcast_del_all(struct mvpp2 *priv, int port)
 
         if (is_multicast_ether_addr(da) && !is_broadcast_ether_addr(da))
             /* Delete this entry */
-            mvpp2_prs_mac_da_accept(priv, port, da, false);
+            mvpp2_prs_mac_da_accept(priv->port_list[port], da,
+                        false);
     }
 }
 
@@ -7380,15 +7381,14 @@ static int mvpp2_open(struct net_device *dev)
             0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
     int err;
 
-    err = mvpp2_prs_mac_da_accept(port->priv, port->id, mac_bcast, true);
+    err = mvpp2_prs_mac_da_accept(port, mac_bcast, true);
     if (err) {
         netdev_err(dev, "mvpp2_prs_mac_da_accept BC failed\n");
         return err;
     }
-    err = mvpp2_prs_mac_da_accept(port->priv, port->id,
-                      dev->dev_addr, true);
+    err = mvpp2_prs_mac_da_accept(port, dev->dev_addr, true);
     if (err) {
-        netdev_err(dev, "mvpp2_prs_mac_da_accept MC failed\n");
+        netdev_err(dev, "mvpp2_prs_mac_da_accept own addr failed\n");
         return err;
     }
     err = mvpp2_prs_tag_mode_set(port->priv, port->id, MVPP2_TAG_TYPE_MH);
@@ -7520,7 +7520,7 @@ static void mvpp2_set_rx_mode(struct net_device *dev)
 
     if (!allmulti) {
         netdev_for_each_mc_addr(ha, dev) {
-            if (mvpp2_prs_mac_da_accept(priv, id, ha->addr, true)) {
+            if (mvpp2_prs_mac_da_accept(port, ha->addr, true)) {
                 allmulti = true;
                 goto retry;
             }
-- 
2.7.4