|
|
@ -2814,7 +2814,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org> |
|
|
|
+#endif
|
|
|
|
+#endif
|
|
|
|
--- /dev/null
|
|
|
|
--- /dev/null
|
|
|
|
+++ b/drivers/net/ethernet/ralink/mt7530.c
|
|
|
|
+++ b/drivers/net/ethernet/ralink/mt7530.c
|
|
|
|
@@ -0,0 +1,571 @@
|
|
|
|
@@ -0,0 +1,579 @@
|
|
|
|
+/*
|
|
|
|
+/*
|
|
|
|
+ * This program is free software; you can redistribute it and/or
|
|
|
|
+ * This program is free software; you can redistribute it and/or
|
|
|
|
+ * modify it under the terms of the GNU General Public License
|
|
|
|
+ * modify it under the terms of the GNU General Public License
|
|
|
@ -2912,15 +2912,15 @@ Signed-off-by: John Crispin <blogic@openwrt.org> |
|
|
|
+ {
|
|
|
|
+ {
|
|
|
|
+ .name = "llllw",
|
|
|
|
+ .name = "llllw",
|
|
|
|
+ .pvids = { 1, 1, 1, 1, 2, 1, 1 },
|
|
|
|
+ .pvids = { 1, 1, 1, 1, 2, 1, 1 },
|
|
|
|
+ .members = { 0x6f, 0x50 },
|
|
|
|
+ .members = { 0, 0x6f, 0x50 },
|
|
|
|
+ .etags = { 0x40, 0x40 },
|
|
|
|
+ .etags = { 0, 0x40, 0x40 },
|
|
|
|
+ .vids = { 1, 2 },
|
|
|
|
+ .vids = { 0, 1, 2 },
|
|
|
|
+ }, {
|
|
|
|
+ }, {
|
|
|
|
+ .name = "wllll",
|
|
|
|
+ .name = "wllll",
|
|
|
|
+ .pvids = { 2, 1, 1, 1, 1, 1, 1 },
|
|
|
|
+ .pvids = { 2, 1, 1, 1, 1, 1, 1 },
|
|
|
|
+ .members = { 0x7e, 0x41 },
|
|
|
|
+ .members = { 0, 0x7e, 0x41 },
|
|
|
|
+ .etags = { 0x40, 0x40 },
|
|
|
|
+ .etags = { 0, 0x40, 0x40 },
|
|
|
|
+ .vids = { 1, 2 },
|
|
|
|
+ .vids = { 0, 1, 2 },
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+
|
|
|
@ -2961,10 +2961,18 @@ Signed-off-by: John Crispin <blogic@openwrt.org> |
|
|
|
+mt7530_reset_switch(struct switch_dev *dev)
|
|
|
|
+mt7530_reset_switch(struct switch_dev *dev)
|
|
|
|
+{
|
|
|
|
+{
|
|
|
|
+ struct mt7530_priv *priv = container_of(dev, struct mt7530_priv, swdev);
|
|
|
|
+ struct mt7530_priv *priv = container_of(dev, struct mt7530_priv, swdev);
|
|
|
|
|
|
|
|
+ int i;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ memset(priv->port_entries, 0, sizeof(priv->port_entries));
|
|
|
|
+ memset(priv->port_entries, 0, sizeof(priv->port_entries));
|
|
|
|
+ memset(priv->vlan_entries, 0, sizeof(priv->vlan_entries));
|
|
|
|
+ memset(priv->vlan_entries, 0, sizeof(priv->vlan_entries));
|
|
|
|
+
|
|
|
|
+
|
|
|
|
|
|
|
|
+ /* set default vid of each vlan to the same number of vlan, so the vid
|
|
|
|
|
|
|
|
+ * won't need be set explicitly.
|
|
|
|
|
|
|
|
+ */
|
|
|
|
|
|
|
|
+ for (i = 0; i < MT7530_NUM_VLANS; i++) {
|
|
|
|
|
|
|
|
+ priv->vlan_entries[i].vid = i;
|
|
|
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+
|
|
|
|
+ return 0;
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
@ -3158,7 +3166,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org> |
|
|
|
+ vid = (u16)val->value.i;
|
|
|
|
+ vid = (u16)val->value.i;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ if (vlan < 0 || vlan >= MT7530_NUM_VLANS)
|
|
|
|
+ if (vlan < 0 || vlan >= MT7530_NUM_VLANS)
|
|
|
|
+ return -EINVAL;
|
|
|
|
+ return -EINVAL;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ if (vid < MT7530_MIN_VID || vid > MT7530_MAX_VID)
|
|
|
|
+ if (vid < MT7530_MIN_VID || vid > MT7530_MAX_VID)
|
|
|
|
+ return -EINVAL;
|
|
|
|
+ return -EINVAL;
|
|
|
|