aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/dsa/bcm_sf2.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/dsa/bcm_sf2.c')
-rw-r--r--drivers/net/dsa/bcm_sf2.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/net/dsa/bcm_sf2.c b/drivers/net/dsa/bcm_sf2.c
index 637072da3acf..be282b430c50 100644
--- a/drivers/net/dsa/bcm_sf2.c
+++ b/drivers/net/dsa/bcm_sf2.c
@@ -1045,6 +1045,8 @@ static const struct dsa_switch_ops bcm_sf2_ops = {
1045 .port_fdb_dump = b53_fdb_dump, 1045 .port_fdb_dump = b53_fdb_dump,
1046 .port_fdb_add = b53_fdb_add, 1046 .port_fdb_add = b53_fdb_add,
1047 .port_fdb_del = b53_fdb_del, 1047 .port_fdb_del = b53_fdb_del,
1048 .get_rxnfc = bcm_sf2_get_rxnfc,
1049 .set_rxnfc = bcm_sf2_set_rxnfc,
1048}; 1050};
1049 1051
1050struct bcm_sf2_of_data { 1052struct bcm_sf2_of_data {
@@ -1168,6 +1170,12 @@ static int bcm_sf2_sw_probe(struct platform_device *pdev)
1168 1170
1169 spin_lock_init(&priv->indir_lock); 1171 spin_lock_init(&priv->indir_lock);
1170 mutex_init(&priv->stats_mutex); 1172 mutex_init(&priv->stats_mutex);
1173 mutex_init(&priv->cfp.lock);
1174
1175 /* CFP rule #0 cannot be used for specific classifications, flag it as
1176 * permanently used
1177 */
1178 set_bit(0, priv->cfp.used);
1171 1179
1172 bcm_sf2_identify_ports(priv, dn->child); 1180 bcm_sf2_identify_ports(priv, dn->child);
1173 1181
@@ -1197,6 +1205,12 @@ static int bcm_sf2_sw_probe(struct platform_device *pdev)
1197 return ret; 1205 return ret;
1198 } 1206 }
1199 1207
1208 ret = bcm_sf2_cfp_rst(priv);
1209 if (ret) {
1210 pr_err("failed to reset CFP\n");
1211 goto out_mdio;
1212 }
1213
1200 /* Disable all interrupts and request them */ 1214 /* Disable all interrupts and request them */
1201 bcm_sf2_intr_disable(priv); 1215 bcm_sf2_intr_disable(priv);
1202 1216