Merge Official Source

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
Tianling Shen 2025-03-29 17:50:03 +08:00
commit bca880a0e8
No known key found for this signature in database
GPG Key ID: 6850B6345C862176
2 changed files with 54 additions and 4 deletions

View File

@ -75,9 +75,9 @@ get_config_restart_hash() {
export -n "$var=$_hash"
}
get_config_cid_ifaces() {
get_interface_csv() {
local _ifaces
config_get _ifaces 'config' "$2"
config_get _ifaces "$2" "$3"
local _iface _ifnames=""
# Set noglob to prevent '*' capturing diverse file names in the for ... in
@ -98,6 +98,21 @@ get_config_cid_ifaces() {
export -n "${1}=$_ifnames"
}
add_custom_tlv_callback()
{
# syntax: configure [ports ethX[,…]] lldp custom-tlv [add|replace] oui XX,XX,XX subtype XX oui-info XX[,XX,...]
# ex: configure ports br-lan,eth0 lldp custom-tlv replace oui 33,44,55 subtype 254 oui-info 55,55,55,55,55
# ex: configure lldp custom-tlv oui 33,44,44 subtype 232
local _ports
local _tlv
# CSV of device ports
get_interface_csv _ports "$1" 'ports'
config_get _tlv "$1" 'tlv'
echo "configure ${_ports:+ports $_ports }lldp custom-tlv $_tlv" >> "$LLDPD_CONF"
}
write_lldpd_conf()
{
local lldp_description
@ -109,7 +124,7 @@ write_lldpd_conf()
config_get lldp_hostname 'config' 'lldp_hostname' "$(cat /proc/sys/kernel/hostname)"
local ifnames
get_config_cid_ifaces ifnames "interface"
get_interface_csv ifnames 'config' "interface"
local lldp_mgmt_ip
config_get lldp_mgmt_ip 'config' 'lldp_mgmt_ip'
@ -197,6 +212,9 @@ write_lldpd_conf()
[ "$lldp_mgmt_addr_advertisements" -gt 0 ] && echo "configure lldp management-addresses-advertisements" >> "$LLDPD_CONF" ||\
echo "unconfigure lldp management-addresses-advertisements" >> "$LLDPD_CONF"
# Custom TLV handling
config_foreach add_custom_tlv_callback 'custom-tlv'
# Since lldpd's sysconfdir is /tmp, we'll symlink /etc/lldpd.d to /tmp/$LLDPD_CONFS_DIR
[ -e "$LLDPD_CONFS_DIR" ] || ln -s /etc/lldpd.d "$LLDPD_CONFS_DIR"
}
@ -335,7 +353,7 @@ start_service() {
# ChassisID interfaces
local ifnames
get_config_cid_ifaces ifnames "cid_interface"
get_interface_csv ifnames 'config' "cid_interface"
[ -n "$ifnames" ] && procd_append_param command -C "$ifnames"

View File

@ -0,0 +1,32 @@
From 8cae5a0d91fea01d90ce7c1827e26934a22ca2fa Mon Sep 17 00:00:00 2001
From: Rui Salvaterra <rsalvaterra@gmail.com>
Date: Wed, 5 Mar 2025 11:53:56 +0000
Subject: [PATCH] igc: enable HW vlan tag insertion/stripping by default
This is enabled by default in other Intel drivers I've checked (e1000, e1000e,
iavf, igb and ice). Fixes an out-of-the-box performance issue when running
OpenWrt on typical mini-PCs with igc-supported Ethernet controllers and 802.1Q
VLAN configurations, as ethtool isn't part of the default packages and sane
defaults are expected.
In my specific case, with an Intel N100-based machine with four I226-V Ethernet
controllers, my upload performance increased from under 30 Mb/s to the expected
~1 Gb/s.
Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
---
drivers/net/ethernet/intel/igc/igc_main.c | 3 +++
1 file changed, 3 insertions(+)
--- a/drivers/net/ethernet/intel/igc/igc_main.c
+++ b/drivers/net/ethernet/intel/igc/igc_main.c
@@ -6850,6 +6850,9 @@ static int igc_probe(struct pci_dev *pde
netdev->xdp_features = NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT |
NETDEV_XDP_ACT_XSK_ZEROCOPY;
+ /* enable HW vlan tag insertion/stripping by default */
+ netdev->features |= NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_CTAG_RX;
+
/* MTU range: 68 - 9216 */
netdev->min_mtu = ETH_MIN_MTU;
netdev->max_mtu = MAX_STD_JUMBO_FRAME_SIZE;