This commit is contained in:
padavanonly 2024-10-15 00:02:54 +08:00
parent d5fd45db01
commit 3b1b179354
11 changed files with 111 additions and 272 deletions

View File

@ -5,15 +5,15 @@ PKG_RELEASE:=2
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/netifd.git
PKG_SOURCE_DATE:=2021-10-30
PKG_SOURCE_VERSION:=8f82742ca4f47f459284f3a07323d04da72ea5f6
PKG_MIRROR_HASH:=5e519bb1aec9bb30782213f32f19f12e874c909e42826618dd4332ded816d2fe
PKG_SOURCE_DATE:=2024-01-04
PKG_SOURCE_VERSION:=c18cc79d50002ab8529c21184aceb016c61ac61c
PKG_MIRROR_HASH:=0a1080ade51dc4a55249c8899d4d384f665e0d21075adab24ea23a2808165e05
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=
PKG_BUILD_PARALLEL:=1
PKG_BUILD_FLAGS:=lto
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk
@ -32,10 +32,7 @@ endef
TARGET_CFLAGS += \
-I$(STAGING_DIR)/usr/include/libnl-tiny \
-I$(STAGING_DIR)/usr/include \
-flto
TARGET_LDFLAGS += -flto -fuse-linker-plugin
-I$(STAGING_DIR)/usr/include
CMAKE_OPTIONS += \
-DLIBNL_LIBS=-lnl-tiny \

View File

@ -154,4 +154,3 @@ shutdown() {
ifdown -a
sleep 1
}

View File

@ -0,0 +1,18 @@
#!/bin/sh /etc/rc.common
START=25
USE_PROCD=1
start_service() {
reload_service
}
service_triggers() {
procd_add_reload_trigger "network"
procd_add_reload_trigger "firewall"
procd_add_raw_trigger "interface.*" 1000 /etc/init.d/packet_steering reload
}
reload_service() {
/usr/libexec/network/packet-steering.sh
}

View File

@ -60,6 +60,7 @@ setup_interface () {
[ -n "$message" ] && json_add_string message "$message"
[ -n "$timezone" ] && json_add_int timezone "$timezone"
[ -n "$lease" ] && json_add_int leasetime "$lease"
[ -n "$serverid" ] && json_add_string dhcpserver "$serverid"
proto_close_data
proto_send_update "$INTERFACE"

View File

@ -1,6 +1,6 @@
#!/bin/sh
[ -L /sbin/udhcpc ] || exit 0
[ -x /sbin/udhcpc ] || exit 0
. /lib/functions.sh
. ../netifd-proto.sh
@ -67,7 +67,7 @@ proto_dhcp_setup() {
-p /var/run/udhcpc-$iface.pid \
-s /lib/netifd/dhcp.script \
-f -t 0 -i "$iface" \
${ipaddr:+-r $ipaddr} \
${ipaddr:+-r ${ipaddr/\/*/}} \
${hostname:+-x "hostname:$hostname"} \
${vendorid:+-V "$vendorid"} \
$clientid $defaultreqopts $broadcast $norelease $dhcpopts

View File

@ -1,7 +1,6 @@
#!/bin/sh
ifup_all=
setup_wifi=
if_call() {
local interface="$1"
@ -14,7 +13,6 @@ case "$0" in
*ifdown) modes=down;;
*ifup)
modes="down up"
setup_wifi=1
;;
*) echo "Invalid command: $0";;
esac
@ -25,10 +23,6 @@ while :; do
ifup_all=1
shift
;;
-w)
setup_wifi=
shift
;;
*)
break
;;
@ -40,7 +34,6 @@ if [ -n "$ifup_all" ]; then
for interface in $(ubus -S list 'network.interface.*'); do
if_call "${interface##network.interface.}"
done
[ -n "$setup_wifi" ] && /sbin/wifi up
exit
else
ubus -S list "network.interface.$1" > /dev/null || {
@ -49,34 +42,3 @@ else
}
if_call "$1"
fi
if [ -n "$setup_wifi" ]; then
if grep -sq config /etc/config/wireless; then
. /lib/functions.sh
find_related_radios() {
local wdev wnet
config_get wdev "$1" device
config_get wnet "$1" network
if [ -n "$wdev" ]; then
for wnet in $wnet; do
if [ "$wnet" = "$network" ]; then
append radio_devs "$wdev" "$N"
fi
done
fi
}
network="$1"
config_load wireless
config_foreach find_related_radios wifi-iface
for dev in $(echo "$radio_devs" | sort -u); do
/sbin/wifi up "$dev"
done
elif [ "$1" = "lan" ]; then
# for mt798x, call wifi up when exec "ifup lan"
/sbin/wifi up
fi
fi

View File

@ -1,6 +1,4 @@
#!/bin/sh
[ "$ACTION" = add ] || exit
NPROCS="$(grep -c "^processor.*:" /proc/cpuinfo)"
[ "$NPROCS" -gt 1 ] || exit
@ -31,15 +29,20 @@ set_hex_val() {
local val="$2"
val="$(printf %x "$val")"
[ -n "$DEBUG" ] && echo "$file = $val"
echo "$val" > "$file"
echo "$val" > "$file" 2>/dev/null
}
packet_steering="$(uci get "network.@globals[0].packet_steering")"
packet_steering="$(uci -q get "network.@globals[0].packet_steering")"
[ "$packet_steering" != 1 ] && exit 0
exec 512>/var/lock/smp_tune.lock
flock 512 || exit 1
[ -e "/usr/libexec/platform/packet-steering.sh" ] && {
/usr/libexec/platform/packet-steering.sh
exit 0
}
for dev in /sys/class/net/*; do
[ -d "$dev" ] || continue

View File

@ -0,0 +1,77 @@
diff -u -r a/scripts/netifd-wireless.sh b/scripts/netifd-wireless.sh
--- a/scripts/netifd-wireless.sh 2024-01-04 20:35:43.000000000 +0800
+++ b/scripts/netifd-wireless.sh 2024-10-07 16:06:28.975463169 +0800
@@ -306,7 +306,7 @@
json_get_vars isolate proxy_arp
[ ${isolate:-0} -gt 0 -o -z "$network_bridge" ] && return
- [ ${multicast_to_unicast:-1} -gt 0 -o ${proxy_arp:-0} -gt 0 ] && json_add_boolean isolate 1
+ #[ ${multicast_to_unicast:-1} -gt 0 -o ${proxy_arp:-0} -gt 0 ] && json_add_boolean isolate 1
}
for_each_interface() {
diff -u -r a/wireless.c b/wireless.c
--- a/wireless.c 2024-01-04 20:35:43.000000000 +0800
+++ b/wireless.c 2024-10-07 16:09:13.089980980 +0800
@@ -1124,16 +1124,16 @@
{
struct wireless_station *sta;
struct blob_attr *tb[__STA_ATTR_MAX];
- struct blob_attr *cur;
+// struct blob_attr *cur;
char *name_buf;
char name[8];
blobmsg_parse(sta_policy, __STA_ATTR_MAX, tb, blob_data(data), blob_len(data));
-
+/*
cur = tb[STA_ATTR_DISABLED];
if (cur && blobmsg_get_bool(cur))
return;
-
+*/
sprintf(name, "%d", vif->sta_idx++);
sta = calloc_a(sizeof(*sta),
@@ -1164,16 +1164,16 @@
{
struct wireless_vlan *vlan;
struct blob_attr *tb[__VLAN_ATTR_MAX];
- struct blob_attr *cur;
+// struct blob_attr *cur;
char *name_buf;
char name[8];
blobmsg_parse(vlan_policy, __VLAN_ATTR_MAX, tb, blob_data(data), blob_len(data));
- cur = tb[VLAN_ATTR_DISABLED];
+ /*cur = tb[VLAN_ATTR_DISABLED];
if (cur && blobmsg_get_bool(cur))
return;
-
+ */
sprintf(name, "%d", vif->vlan_idx++);
vlan = calloc_a(sizeof(*vlan), &name_buf, strlen(name) + 1);
@@ -1204,17 +1204,17 @@
{
struct wireless_interface *vif;
struct blob_attr *tb[__VIF_ATTR_MAX];
- struct blob_attr *cur;
+// struct blob_attr *cur;
char *name_buf;
char name[8];
blobmsg_parse(vif_policy, __VIF_ATTR_MAX, tb, blob_data(data), blob_len(data));
- cur = tb[VIF_ATTR_DISABLED];
+ /*cur = tb[VIF_ATTR_DISABLED];
if (cur && blobmsg_get_bool(cur))
return NULL;
-
- sprintf(name, "%d", wdev->vif_idx++);
+ */
+ sprintf(name, "%d", wdev->vif_idx++);
vif = calloc_a(sizeof(*vif),
&name_buf, strlen(name) + 1);

View File

@ -1,148 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
Date: Fri, 24 Feb 2023 13:28:52 +0800
Subject: [PATCH] Revert "device: add support for configuring device link
speed/duplex"
Fixes auto-negotiate for out-of-tree ethernet drivers.
This reverts commit 1eb0fafaa9865b729509a7d47ecf1f05c2c0595c.
---
device.c | 14 --------------
device.h | 6 ------
system-linux.c | 52 --------------------------------------------------
3 files changed, 72 deletions(-)
--- a/device.c
+++ b/device.c
@@ -61,8 +61,6 @@ static const struct blobmsg_policy dev_a
[DEV_ATTR_DROP_UNSOLICITED_NA] = { .name = "drop_unsolicited_na", .type = BLOBMSG_TYPE_BOOL },
[DEV_ATTR_ARP_ACCEPT] = { .name = "arp_accept", .type = BLOBMSG_TYPE_BOOL },
[DEV_ATTR_AUTH] = { .name = "auth", .type = BLOBMSG_TYPE_BOOL },
- [DEV_ATTR_SPEED] = { .name = "speed", .type = BLOBMSG_TYPE_INT32 },
- [DEV_ATTR_DUPLEX] = { .name = "duplex", .type = BLOBMSG_TYPE_BOOL },
};
const struct uci_blob_param_list device_attr_list = {
@@ -278,8 +276,6 @@ device_merge_settings(struct device *dev
n->arp_accept = s->flags & DEV_OPT_ARP_ACCEPT ?
s->arp_accept : os->arp_accept;
n->auth = s->flags & DEV_OPT_AUTH ? s->auth : os->auth;
- n->speed = s->flags & DEV_OPT_SPEED ? s->speed : os->speed;
- n->duplex = s->flags & DEV_OPT_DUPLEX ? s->duplex : os->duplex;
n->flags = s->flags | os->flags | os->valid_flags;
}
@@ -454,16 +450,6 @@ device_init_settings(struct device *dev,
s->flags |= DEV_OPT_AUTH;
}
- if ((cur = tb[DEV_ATTR_SPEED])) {
- s->speed = blobmsg_get_u32(cur);
- s->flags |= DEV_OPT_SPEED;
- }
-
- if ((cur = tb[DEV_ATTR_DUPLEX])) {
- s->duplex = blobmsg_get_bool(cur);
- s->flags |= DEV_OPT_DUPLEX;
- }
-
device_set_disabled(dev, disabled);
}
--- a/device.h
+++ b/device.h
@@ -60,8 +60,6 @@ enum {
DEV_ATTR_DROP_UNSOLICITED_NA,
DEV_ATTR_ARP_ACCEPT,
DEV_ATTR_AUTH,
- DEV_ATTR_SPEED,
- DEV_ATTR_DUPLEX,
__DEV_ATTR_MAX,
};
@@ -124,8 +122,6 @@ enum {
DEV_OPT_DROP_GRATUITOUS_ARP = (1ULL << 27),
DEV_OPT_DROP_UNSOLICITED_NA = (1ULL << 28),
DEV_OPT_ARP_ACCEPT = (1ULL << 29),
- DEV_OPT_SPEED = (1ULL << 30),
- DEV_OPT_DUPLEX = (1ULL << 31),
};
/* events broadcasted to all users of a device */
@@ -201,8 +197,6 @@ struct device_settings {
bool drop_unsolicited_na;
bool arp_accept;
bool auth;
- unsigned int speed;
- bool duplex;
};
/*
--- a/system-linux.c
+++ b/system-linux.c
@@ -1715,57 +1715,6 @@ int system_vlandev_del(struct device *vl
return system_link_del(vlandev->ifname);
}
-static void
-system_set_ethtool_settings(struct device *dev, struct device_settings *s)
-{
- struct ethtool_cmd ecmd = {
- .cmd = ETHTOOL_GSET,
- };
- struct ifreq ifr = {
- .ifr_data = (caddr_t)&ecmd,
- };
- static const struct {
- int speed;
- uint8_t bit_half;
- uint8_t bit_full;
- } speed_mask[] = {
- { 10, ETHTOOL_LINK_MODE_10baseT_Half_BIT, ETHTOOL_LINK_MODE_10baseT_Full_BIT },
- { 100, ETHTOOL_LINK_MODE_100baseT_Half_BIT, ETHTOOL_LINK_MODE_100baseT_Full_BIT },
- { 1000, ETHTOOL_LINK_MODE_1000baseT_Half_BIT, ETHTOOL_LINK_MODE_1000baseT_Full_BIT },
- };
- uint32_t adv;
- int i;
-
- strncpy(ifr.ifr_name, dev->ifname, sizeof(ifr.ifr_name) - 1);
-
- if (ioctl(sock_ioctl, SIOCETHTOOL, &ifr) != 0)
- return;
-
- adv = ecmd.supported;
- for (i = 0; i < ARRAY_SIZE(speed_mask); i++) {
- if (s->flags & DEV_OPT_DUPLEX) {
- int bit = s->duplex ? speed_mask[i].bit_half : speed_mask[i].bit_full;
- adv &= ~(1 << bit);
- }
-
- if (!(s->flags & DEV_OPT_SPEED) ||
- s->speed == speed_mask[i].speed)
- continue;
-
- adv &= ~(1 << speed_mask[i].bit_full);
- adv &= ~(1 << speed_mask[i].bit_half);
- }
-
-
- if (ecmd.autoneg && ecmd.advertising == adv)
- return;
-
- ecmd.autoneg = 1;
- ecmd.advertising = adv;
- ecmd.cmd = ETHTOOL_SSET;
- ioctl(sock_ioctl, SIOCETHTOOL, &ifr);
-}
-
void
system_if_get_settings(struct device *dev, struct device_settings *s)
{
@@ -1989,7 +1938,6 @@ system_if_apply_settings(struct device *
system_set_drop_unsolicited_na(dev, s->drop_unsolicited_na ? "1" : "0");
if (apply_mask & DEV_OPT_ARP_ACCEPT)
system_set_arp_accept(dev, s->arp_accept ? "1" : "0");
- system_set_ethtool_settings(dev, s);
}
int system_if_up(struct device *dev)

View File

@ -1,11 +0,0 @@
--- a/scripts/netifd-wireless.sh 2023-11-23 22:48:11.837794697 +0800
+++ b/scripts/netifd-wireless.sh 2023-11-23 22:48:15.031043740 +0800
@@ -297,7 +297,7 @@ _wireless_set_brsnoop_isolation() {
json_get_vars isolate proxy_arp
[ ${isolate:-0} -gt 0 -o -z "$network_bridge" ] && return
- [ ${multicast_to_unicast:-1} -gt 0 -o ${proxy_arp:-0} -gt 0 ] && json_add_boolean isolate 1
+ #[ ${multicast_to_unicast:-1} -gt 0 -o ${proxy_arp:-0} -gt 0 ] && json_add_boolean isolate 1
}
for_each_interface() {

View File

@ -1,59 +0,0 @@
--- a/wireless.c
+++ b/wireless.c
@@ -1071,15 +1071,17 @@ wireless_station_create(struct wireless_
{
struct wireless_station *sta;
struct blob_attr *tb[__STA_ATTR_MAX];
- struct blob_attr *cur;
+// struct blob_attr *cur;
char *name_buf, *vif_buf;
char name[8];
blobmsg_parse(sta_policy, __STA_ATTR_MAX, tb, blob_data(data), blob_len(data));
+/*
cur = tb[STA_ATTR_DISABLED];
if (cur && blobmsg_get_bool(cur))
return;
+*/
sprintf(name, "%d", wdev->sta_idx++);
@@ -1114,15 +1116,17 @@ wireless_vlan_create(struct wireless_dev
{
struct wireless_vlan *vlan;
struct blob_attr *tb[__VLAN_ATTR_MAX];
- struct blob_attr *cur;
+// struct blob_attr *cur;
char *name_buf, *vif_buf;
char name[8];
blobmsg_parse(vlan_policy, __VLAN_ATTR_MAX, tb, blob_data(data), blob_len(data));
+/*
cur = tb[VLAN_ATTR_DISABLED];
if (cur && blobmsg_get_bool(cur))
return;
+*/
sprintf(name, "%d", wdev->vlan_idx++);
@@ -1159,15 +1163,17 @@ struct wireless_interface* wireless_inte
{
struct wireless_interface *vif;
struct blob_attr *tb[__VIF_ATTR_MAX];
- struct blob_attr *cur;
+// struct blob_attr *cur;
char *name_buf;
char name[8];
blobmsg_parse(vif_policy, __VIF_ATTR_MAX, tb, blob_data(data), blob_len(data));
+/*
cur = tb[VIF_ATTR_DISABLED];
if (cur && blobmsg_get_bool(cur))
return NULL;
+*/
sprintf(name, "%d", wdev->vif_idx++);