Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
commit
df030ed6f3
@ -20,7 +20,7 @@ define Package/Default
|
|||||||
PROVIDES:=
|
PROVIDES:=
|
||||||
EXTRA_DEPENDS:=
|
EXTRA_DEPENDS:=
|
||||||
MAINTAINER:=$(PKG_MAINTAINER)
|
MAINTAINER:=$(PKG_MAINTAINER)
|
||||||
SOURCE:=$(patsubst $(TOPDIR)/%,%,$(CURDIR))
|
SOURCE:=$(patsubst $(TOPDIR)/%,%,$(patsubst $(TOPDIR)/package/%,feeds/base/%,$(CURDIR)))
|
||||||
ifneq ($(PKG_VERSION),)
|
ifneq ($(PKG_VERSION),)
|
||||||
ifneq ($(PKG_RELEASE),)
|
ifneq ($(PKG_RELEASE),)
|
||||||
VERSION:=$(PKG_VERSION)-$(PKG_RELEASE)
|
VERSION:=$(PKG_VERSION)-$(PKG_RELEASE)
|
||||||
|
|||||||
@ -77,7 +77,8 @@ _ignore = $(foreach p,$(IGNORE_PACKAGES),--ignore $(p))
|
|||||||
|
|
||||||
prepare-tmpinfo: FORCE
|
prepare-tmpinfo: FORCE
|
||||||
@+$(MAKE) -r -s $(STAGING_DIR_HOST)/.prereq-build $(PREP_MK)
|
@+$(MAKE) -r -s $(STAGING_DIR_HOST)/.prereq-build $(PREP_MK)
|
||||||
mkdir -p tmp/info
|
mkdir -p tmp/info feeds
|
||||||
|
[ -e $(TOPDIR)/feeds/base ] || ln -sf $(TOPDIR)/package $(TOPDIR)/feeds/base
|
||||||
$(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f include/scan.mk SCAN_TARGET="packageinfo" SCAN_DIR="package" SCAN_NAME="package" SCAN_DEPTH=5 SCAN_EXTRA=""
|
$(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f include/scan.mk SCAN_TARGET="packageinfo" SCAN_DIR="package" SCAN_NAME="package" SCAN_DEPTH=5 SCAN_EXTRA=""
|
||||||
$(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f include/scan.mk SCAN_TARGET="targetinfo" SCAN_DIR="target/linux" SCAN_NAME="target" SCAN_DEPTH=3 SCAN_EXTRA="" SCAN_MAKEOPTS="TARGET_BUILD=1"
|
$(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f include/scan.mk SCAN_TARGET="targetinfo" SCAN_DIR="target/linux" SCAN_NAME="target" SCAN_DEPTH=3 SCAN_EXTRA="" SCAN_MAKEOPTS="TARGET_BUILD=1"
|
||||||
for type in package target; do \
|
for type in package target; do \
|
||||||
|
|||||||
@ -61,8 +61,8 @@
|
|||||||
i2c {
|
i2c {
|
||||||
compatible = "i2c-gpio";
|
compatible = "i2c-gpio";
|
||||||
|
|
||||||
sda-gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
|
sda-gpios = <&gpio 1 GPIO_ACTIVE_HIGH>;
|
||||||
scl-gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
|
scl-gpios = <&gpio 16 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -14,6 +14,7 @@
|
|||||||
led-failsafe = &flash;
|
led-failsafe = &flash;
|
||||||
led-running = &power;
|
led-running = &power;
|
||||||
led-upgrade = &flash;
|
led-upgrade = &flash;
|
||||||
|
label-mac-device = &gmac;
|
||||||
};
|
};
|
||||||
|
|
||||||
soc {
|
soc {
|
||||||
|
|||||||
@ -2367,7 +2367,6 @@ define Device/tplink_er605-v2
|
|||||||
KERNEL_IN_UBI := 1
|
KERNEL_IN_UBI := 1
|
||||||
KERNEL_LOADADDR := 0x82000000
|
KERNEL_LOADADDR := 0x82000000
|
||||||
KERNEL := kernel-bin | relocate-kernel 0x80001000 | lzma | fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
|
KERNEL := kernel-bin | relocate-kernel 0x80001000 | lzma | fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
|
||||||
IMAGES += sysupgrade.tar
|
|
||||||
IMAGE_SIZE := 127744k
|
IMAGE_SIZE := 127744k
|
||||||
endef
|
endef
|
||||||
TARGET_DEVICES += tplink_er605-v2
|
TARGET_DEVICES += tplink_er605-v2
|
||||||
|
|||||||
@ -109,6 +109,20 @@ static enum dsa_tag_protocol rtl83xx_get_tag_protocol(struct dsa_switch *ds,
|
|||||||
return DSA_TAG_PROTO_TRAILER;
|
return DSA_TAG_PROTO_TRAILER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void rtl83xx_vlan_set_pvid(struct rtl838x_switch_priv *priv,
|
||||||
|
int port, int pvid)
|
||||||
|
{
|
||||||
|
/* Set both inner and outer PVID of the port */
|
||||||
|
priv->r->vlan_port_pvid_set(port, PBVLAN_TYPE_INNER, pvid);
|
||||||
|
priv->r->vlan_port_pvid_set(port, PBVLAN_TYPE_OUTER, pvid);
|
||||||
|
priv->r->vlan_port_pvidmode_set(port, PBVLAN_TYPE_INNER,
|
||||||
|
PBVLAN_MODE_UNTAG_AND_PRITAG);
|
||||||
|
priv->r->vlan_port_pvidmode_set(port, PBVLAN_TYPE_OUTER,
|
||||||
|
PBVLAN_MODE_UNTAG_AND_PRITAG);
|
||||||
|
|
||||||
|
priv->ports[port].pvid = pvid;
|
||||||
|
}
|
||||||
|
|
||||||
/* Initialize all VLANS */
|
/* Initialize all VLANS */
|
||||||
static void rtl83xx_vlan_setup(struct rtl838x_switch_priv *priv)
|
static void rtl83xx_vlan_setup(struct rtl838x_switch_priv *priv)
|
||||||
{
|
{
|
||||||
@ -132,17 +146,22 @@ static void rtl83xx_vlan_setup(struct rtl838x_switch_priv *priv)
|
|||||||
info.l2_tunnel_list_id = -1;
|
info.l2_tunnel_list_id = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initialize all vlans 0-4095 */
|
/* Initialize normal VLANs 1-4095 */
|
||||||
for (int i = 0; i < MAX_VLANS; i ++)
|
for (int i = 1; i < MAX_VLANS; i ++)
|
||||||
priv->r->vlan_set_tagged(i, &info);
|
priv->r->vlan_set_tagged(i, &info);
|
||||||
|
|
||||||
/* reset PVIDs; defaults to 1 on reset */
|
/*
|
||||||
for (int i = 0; i <= priv->ds->num_ports; i++) {
|
* Initialize the special VLAN 0 and reset PVIDs. The CPU port PVID
|
||||||
priv->r->vlan_port_pvid_set(i, PBVLAN_TYPE_INNER, 0);
|
* is applied to packets from the CPU for untagged destinations,
|
||||||
priv->r->vlan_port_pvid_set(i, PBVLAN_TYPE_OUTER, 0);
|
* regardless if the actual ingress VID. Any port with untagged
|
||||||
priv->r->vlan_port_pvidmode_set(i, PBVLAN_TYPE_INNER, PBVLAN_MODE_UNTAG_AND_PRITAG);
|
* egress VLAN(s) must therefore be a member of VLAN 0 to support
|
||||||
priv->r->vlan_port_pvidmode_set(i, PBVLAN_TYPE_OUTER, PBVLAN_MODE_UNTAG_AND_PRITAG);
|
* CPU port as ingress when VLAN filtering is enabled.
|
||||||
|
*/
|
||||||
|
for (int i = 0; i <= priv->cpu_port; i++) {
|
||||||
|
rtl83xx_vlan_set_pvid(priv, i, 0);
|
||||||
|
info.tagged_ports |= BIT_ULL(i);
|
||||||
}
|
}
|
||||||
|
priv->r->vlan_set_tagged(0, &info);
|
||||||
|
|
||||||
/* Set forwarding action based on inner VLAN tag */
|
/* Set forwarding action based on inner VLAN tag */
|
||||||
for (int i = 0; i < priv->cpu_port; i++)
|
for (int i = 0; i < priv->cpu_port; i++)
|
||||||
@ -1405,20 +1424,6 @@ static int rtl83xx_vlan_prepare(struct dsa_switch *ds, int port,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void rtl83xx_vlan_set_pvid(struct rtl838x_switch_priv *priv,
|
|
||||||
int port, int pvid)
|
|
||||||
{
|
|
||||||
/* Set both inner and outer PVID of the port */
|
|
||||||
priv->r->vlan_port_pvid_set(port, PBVLAN_TYPE_INNER, pvid);
|
|
||||||
priv->r->vlan_port_pvid_set(port, PBVLAN_TYPE_OUTER, pvid);
|
|
||||||
priv->r->vlan_port_pvidmode_set(port, PBVLAN_TYPE_INNER,
|
|
||||||
PBVLAN_MODE_UNTAG_AND_PRITAG);
|
|
||||||
priv->r->vlan_port_pvidmode_set(port, PBVLAN_TYPE_OUTER,
|
|
||||||
PBVLAN_MODE_UNTAG_AND_PRITAG);
|
|
||||||
|
|
||||||
priv->ports[port].pvid = pvid;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int rtl83xx_vlan_add(struct dsa_switch *ds, int port,
|
static int rtl83xx_vlan_add(struct dsa_switch *ds, int port,
|
||||||
const struct switchdev_obj_port_vlan *vlan,
|
const struct switchdev_obj_port_vlan *vlan,
|
||||||
struct netlink_ext_ack *extack)
|
struct netlink_ext_ack *extack)
|
||||||
@ -1430,6 +1435,9 @@ static int rtl83xx_vlan_add(struct dsa_switch *ds, int port,
|
|||||||
pr_debug("%s port %d, vid %d, flags %x\n",
|
pr_debug("%s port %d, vid %d, flags %x\n",
|
||||||
__func__, port, vlan->vid, vlan->flags);
|
__func__, port, vlan->vid, vlan->flags);
|
||||||
|
|
||||||
|
/* Let no one mess with our special VLAN 0 */
|
||||||
|
if (!vlan->vid) return 0;
|
||||||
|
|
||||||
if (vlan->vid > 4095) {
|
if (vlan->vid > 4095) {
|
||||||
dev_err(priv->dev, "VLAN out of range: %d", vlan->vid);
|
dev_err(priv->dev, "VLAN out of range: %d", vlan->vid);
|
||||||
return -ENOTSUPP;
|
return -ENOTSUPP;
|
||||||
@ -1441,10 +1449,20 @@ static int rtl83xx_vlan_add(struct dsa_switch *ds, int port,
|
|||||||
|
|
||||||
mutex_lock(&priv->reg_mutex);
|
mutex_lock(&priv->reg_mutex);
|
||||||
|
|
||||||
if (vlan->flags & BRIDGE_VLAN_INFO_PVID)
|
/*
|
||||||
rtl83xx_vlan_set_pvid(priv, port, vlan->vid);
|
* Realtek switches copy frames as-is to/from the CPU. For a proper
|
||||||
else if (priv->ports[port].pvid == vlan->vid)
|
* VLAN handling the 12 bit RVID field (= VLAN id) for incoming traffic
|
||||||
rtl83xx_vlan_set_pvid(priv, port, 0);
|
* and the 1 bit RVID_SEL field (0 = use inner tag, 1 = use outer tag)
|
||||||
|
* for outgoing traffic of the CPU tag structure need to be handled. As
|
||||||
|
* of now no such logic is in place. So for the CPU port keep the fixed
|
||||||
|
* PVID=0 from initial setup in place and ignore all subsequent settings.
|
||||||
|
*/
|
||||||
|
if (port != priv->cpu_port) {
|
||||||
|
if (vlan->flags & BRIDGE_VLAN_INFO_PVID)
|
||||||
|
rtl83xx_vlan_set_pvid(priv, port, vlan->vid);
|
||||||
|
else if (priv->ports[port].pvid == vlan->vid)
|
||||||
|
rtl83xx_vlan_set_pvid(priv, port, 0);
|
||||||
|
}
|
||||||
|
|
||||||
/* Get port memberships of this vlan */
|
/* Get port memberships of this vlan */
|
||||||
priv->r->vlan_tables_read(vlan->vid, &info);
|
priv->r->vlan_tables_read(vlan->vid, &info);
|
||||||
@ -1488,6 +1506,9 @@ static int rtl83xx_vlan_del(struct dsa_switch *ds, int port,
|
|||||||
pr_debug("%s: port %d, vid %d, flags %x\n",
|
pr_debug("%s: port %d, vid %d, flags %x\n",
|
||||||
__func__, port, vlan->vid, vlan->flags);
|
__func__, port, vlan->vid, vlan->flags);
|
||||||
|
|
||||||
|
/* Let no one mess with our special VLAN 0 */
|
||||||
|
if (!vlan->vid) return 0;
|
||||||
|
|
||||||
if (vlan->vid > 4095) {
|
if (vlan->vid > 4095) {
|
||||||
dev_err(priv->dev, "VLAN out of range: %d", vlan->vid);
|
dev_err(priv->dev, "VLAN out of range: %d", vlan->vid);
|
||||||
return -ENOTSUPP;
|
return -ENOTSUPP;
|
||||||
|
|||||||
@ -11,9 +11,9 @@ PKG_RELEASE:=1
|
|||||||
|
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/firmware-utils.git
|
PKG_SOURCE_URL=$(PROJECT_GIT)/project/firmware-utils.git
|
||||||
PKG_SOURCE_DATE:=2024-01-31
|
PKG_SOURCE_DATE:=2024-09-22
|
||||||
PKG_SOURCE_VERSION:=c46b4b4ad7e77aab555bb41d6adc5554d11a83e8
|
PKG_SOURCE_VERSION:=f3b636d0ee478ee8d757cb42d469e0a40d07627a
|
||||||
PKG_MIRROR_HASH:=4affc0a85368ec8fc6df3719c628dd88b13ce6cc46ba2a52741a61d089e25e51
|
PKG_MIRROR_HASH:=c60f97e2c48842dd5c8e55cb214ce1139fa7586cd22ca489d656320b06bbbe68
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/host-build.mk
|
include $(INCLUDE_DIR)/host-build.mk
|
||||||
include $(INCLUDE_DIR)/cmake.mk
|
include $(INCLUDE_DIR)/cmake.mk
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user