Compare commits

...

122 Commits

Author SHA1 Message Date
Fabian Bläse 1d2c835b53 fff-layer3-config: fix exit status of uci-default scripts
ci/woodpecker/push/woodpecker Pipeline was successful Details
OpenWrt only removes uci-defaults scripts if the exit status of the
executed script is 0. Fix the exit code of the layer3-config migration
scripts so they are removed as intended.

Fixes: #313

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2024-03-21 21:55:43 +01:00
Fabian Bläse 797c3ddca0 Add support for Xiaomi Mi Router 4A (100m-intl)
The international variant of the Xiaomi Mi Router 4A (100m) has a
different partition layout as the chinese version and was added to
OpenWrt at a later time. Using the OpenWrt image for the international
variant saves the extra step of flashing the chinese firmware variant
via TFTP before OpenWrt itself.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2024-03-21 21:53:32 +01:00
Fabian Bläse daa25fded8 Consolidate sysupgrade.conf entries
Most of the entries in /etc/sysupgrade.conf are generated by a
uci-defaults script in the fff-sysupgrade package. The only entry
added in a different place is rc.local.fff_userconfig.

Consolidate all entries to be added by the uci-defaults script in
fff-sysupgrade.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2024-03-21 21:53:32 +01:00
Fabian Bläse 6acdc6efa1 fff-firewall: add user-customizable nftables hook
Currently there is no way to persistently configure firewall rules on a
router. This might be desirable as home-use of the Freifunk network is
quite common these days.

To allow for the most flexibility while keeping maintenance efforts low,
add a persistent, user-customizable nftables hook. It is evaluated after
all firewall rules have already been configured, so it is possible to
override them.

Users of this hook are responsible for keeping up with changes to the
firmware and modify it appropriately, before updating the system.

Fixes: #314

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2024-03-21 21:53:32 +01:00
Fabian Bläse cef7bc3c88 fff-wireless: add workaround for wifi configuration after update
Introduce a workaround for an OpenWrt bug on the Xiaomi Mi 4A (Gigabit
Edition). After an update of the firmware, the wireless interfaces are
not properly created as configured.

When configuring the WiFi interfaces via uci and applying the
settings using reload_config, hostapd reports errors and no WiFi
interfaces are created.

It seems like OpenWrt tries to dynamically reload the settings instead
of restarting hostapd, but hostapd fails to properly apply them.

To work around this regression until the root cause is found, restart
the wifi interfaces manually after a firmware upgrade.

Fixes: #319

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Tested-by: ArchTux <alex@tux-hausen.de>
2024-03-21 21:53:32 +01:00
Fabian Bläse 86c893161f fff-node: apply firewall rules to br-client only
When switching from ebtables to nftables, the --logical-in and
--logical-out selectors of some rules were missed. This might have been
caused by kmod-nft-bridge not being installed, which is required for the
ibrname and obrname selectors, so it is possible that the migration
(using ebtables-nft) did not apply these selectors.

Add the ibrname and obrname selectors and add the required kernel
module.

Fixes: #315
Fixes: 157fa4eac5 ("fff-firewall: Switch from ip/ebtables to nftables")

Reported-by: Robert Langhammer <rlanghammer@web.de>
Signed-off-by: Fabian Bläse <fabian@blaese.de>
Tested-by: Robert Langhammer <rlanghammer@web.de>
2024-03-21 21:47:10 +01:00
Fabian Bläse 7391ac8312 OpenWrt: bump to v23.05 from 2024-03-08
OpenWrt v23.05 releases up to and including v23.05.2 contain a bug
which causes some SPI flashes to be partially or fully unwriteable [1].

A workaround for this bug has already been added to the v23.05 branch,
but no new version has been released since.

Bump OpenWrt and corresponding feeds to the most recent commit
on the v23.05 branch.

[1] https://github.com/openwrt/openwrt/pull/14361

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2024-03-21 21:47:10 +01:00
Fabian Bläse 23a3af46d2 fff-babel: remove erroneous error messages for absent babel implementation
Fixes: #306

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2024-03-21 14:20:30 +01:00
Fabian Bläse 94c5340700 woodpecker: replace syntax deprecated with 1.0.0
Signed-off-by: Fabian Bläse <fabian@blaese.de>
2024-02-28 10:49:29 +01:00
Fabian Bläse 7c0a24a80c layer3-config: Add DSA migration script for migrated devices
ci/woodpecker/manual/woodpecker Pipeline was successful Details
Because of to the switch from swconfig to DSA, the switchport names
have to be migrated for a few devices. Due to past migrations, we
already have developed a migration script for that.

Duplicate and adjust the script for the newly migrated devices. While at
it, rename the old script to reflect the configuration version bump.

Fixes: #301

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2024-02-16 22:54:44 +01:00
Fabian Bläse ecc590cbaa mpc85xx: retain old compat_version for sysupgrade compatibility
OpenWrt images contain a compat_version, which is used to block upgrades
to newer versions with incompatible configuration, if the configuration
cannot be migrated.

As we maintain our own configuration and all OpenWrt configuration files
are dropped on an upgrade, this upgrade block is not required.

To simplify the upgrade process, retain the old compat_version for the
next sysupgrade release. The compat_version will then be bumped
automatically by the `05_compat-version` board.d script.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2024-02-16 22:54:44 +01:00
Fabian Bläse fc1c0c39ae fff-network: adjust network configuration of TP-Link TL-WDR4900 for DSA
the TL-WDR4900 was migrated to a DSA driver with OpenWrt 23.05. Adjust
our network configuration accordingly.

Fixes: #302

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2024-02-16 22:54:44 +01:00
Fabian Bläse dfb892d4ac fff-network: add missing cpuport case for the FritzBox 4040
When adjusting our configuration for the DSA migration of the FritzBox
4040, the cpuport was forgotten. The cpuport has to be removed for DSA
devices.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2024-02-16 22:54:44 +01:00
Fabian Bläse 1677a35624 fff-layer3-config: bump config_version
With OpenWrt 23.05 a few more devices have been migrated to DSA. Bump
the config_version of layer3-config to reflect the necessary migration.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2024-02-16 22:54:44 +01:00
Fabian Bläse d20b081498 profile: include full hostname in shell prompt
All of our devices are routers. Because they all serve the same purpose,
it is quite common that the first part of the hostname is the same for
multiple devices, and the location of the device is only included in
subsequent parts of the hostname.

Include the full hostname in the shell prompt, so it is easier to
determine the devices location.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2024-02-16 22:53:51 +01:00
Felix 0280e0d3de README: add missing build prerequisites
ci/woodpecker/push/woodpecker Pipeline was successful Details
The packages rsync and python3-distutils are required for a successful
build, but missing in the prerequisites of the README. Add them.

Reviewed-by: Fabian Bläse <fabian@blaese.de>
2024-01-25 17:48:41 +01:00
Johannes Kimmel 5a6a0a39d7 buildscript: add color to the root warning
Use color output when the `tput` command is available.
`tput` handles terminal-dependant capabilities, so the script should
remain portable.

Signed-off-by: Johannes Kimmel <fff@bareminimum.eu>
Reviewed-by: Fabian Bläse <fabian@blaese.de>
2024-01-25 17:48:41 +01:00
Johannes Kimmel de15c71c53 buildscript: print warning instead of failing build
Signed-off-by: Johannes Kimmel <fff@bareminimum.eu>
Reviewed-by: Fabian Bläse <fabian@blaese.de>
2024-01-25 17:48:38 +01:00
Fabian Bläse 06c8718761 Revert "Disable unnecessary busybox features"
This reverts commit 3e27bff731.

Removing these busybox features breaks wireless configuration in various
confusing ways. Revert this change until further analysis.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2024-01-25 17:45:42 +01:00
Fabian Bläse f376cc916d OpenWrt: bump to v23.05.2
Bump core, packages and routing.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2024-01-25 17:45:42 +01:00
Fabian Bläse 774eeade04 Add support for Mikrotik RB5009
ci/woodpecker/pr/woodpecker Pipeline was successful Details
ci/woodpecker/push/woodpecker Pipeline was successful Details
Device support is based on the patch set linked in the OpenWrt Wiki. [1][2]

The aux-loader blob is not included, as it is only required for initial
installation.

Two additional kernel patches for mvpp2 are added to allow receive
hashing to work properly in the DSA setup of the device.

[1] https://openwrt.org/toh/mikrotik/rb5009ug_s_in#installation
[2] https://paste.myconan.net/482114

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2024-01-19 11:43:03 +01:00
Fabian Bläse abd172a309 bsp: work around lm-sensors build error
ci/woodpecker/push/woodpecker Pipeline was successful Details
Building htop with lm-sensors support currently breaks x86_64 image
building. Disable lm-sensors support for all platforms for now, because
we are currently not including lm-sensors anyway.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2024-01-19 01:03:18 +01:00
Fabian Bläse cc5a1d267b layer3: add htop and sysstat commands
The sysstat tools and htop can be valueable tools when debugging
performance issues.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2024-01-18 21:44:49 +01:00
Fabian Bläse 718b8e2afe layer3: add vmstat command
Signed-off-by: Fabian Bläse <fabian@blaese.de>
2024-01-18 21:44:48 +01:00
Fabian Bläse efbed2f9c1 busybox: quality of life improvements
- enable persistent history, save it to tmpfs (ram)
- increase history size to 1024
- enable reverse-i search
- enable watch command
- enable top SMP command

Signed-off-by: Fabian Bläse <fabian@blaese.de>

fff-extra: feature_top_smp (apply for all targets or move to dependency!)
2024-01-18 21:44:28 +01:00
Fabian Bläse c66a5fd1d3 Disable unnecessary libcurl features
Signed-off-by: Fabian Bläse <fabian@blaese.de>
2024-01-18 21:34:04 +01:00
Fabian Bläse 3e27bff731 Disable unnecessary busybox features
Signed-off-by: Fabian Bläse <fabian@blaese.de>
2024-01-18 21:34:04 +01:00
Fabian Bläse 202104c9f2 Remove uclient-fetch
Signed-off-by: Fabian Bläse <fabian@blaese.de>
2024-01-18 21:34:04 +01:00
Fabian Bläse 168b9e1215 ath79: use bigger squashfs block size
A bigger squashfs block size improves compression ratio. The improved
compression ratio is necessary for the Archer C60 devices (v1 + v2)
because they include large wifi drivers.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2024-01-18 21:34:04 +01:00
Fabian Bläse 373c2f7fef Disable unused bird protocols
On a typical Freifunk router, only a small subset of bird protocols
is in use. Disable unused bird protocols to save disk space.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2024-01-18 21:34:04 +01:00
Fabian Bläse 5d08552e7a layer3: move bmon to fff-extra
Bmon takes up a lot of disk space, but is not essential for operation.
Move it to fff-extra.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2024-01-18 21:34:04 +01:00
Fabian Bläse f05c352867 Create fff-extra package for devices with large flash
Devices with large flash can hold more packages and tools to improve
user experience. Create an additional package which can be used to
select packages only on targets with large flash (currently >= 16 MiB).

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2024-01-18 21:34:04 +01:00
Fabian Bläse f7cd560d90 layer3: switch from tcpdump to tcpdump-mini
Signed-off-by: Fabian Bläse <fabian@blaese.de>
2024-01-18 21:34:04 +01:00
Fabian Bläse fe466ffa90 layer3: remove fff-babeld
Babeld has been replaced with bird by default for quite some time now.
Remove babeld and all configurations scripts (fff-babeld) to reduce
image size.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2024-01-18 21:34:04 +01:00
Fabian Bläse 469fa9cbf7 x86_64: use multi-profile for target
Signed-off-by: Fabian Bläse <fabian@blaese.de>
2024-01-18 21:34:04 +01:00
Fabian Bläse 9beee4a9ec Apply upstream device rename of ubnt,unifi-ap
The Unifi AP has been renamed upstream. Accomodate this change by
adjusting strings and paths.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2024-01-18 21:33:58 +01:00
Robert Langhammer 52ffd403c7 node-fff-hoods: Make keyserverurl configurable
Signed-off-by: Robert Langhammer <rlanghammer@web.de>
Reviewed-by: Fabian Bläse <fabian@blaese.de>
2024-01-18 21:33:33 +01:00
Johannes Kimmel 3f88f46715 buildscript: switch to blobless clone
Instead of fetching the complete git repositories, only download
reachable commits and trees. Anything missing will be automatically
fetched on-demand.

The blobless prepare step is about 10% faster and uses 300M less
diskspace.

Additionally the following repository options are disabled:

gc.auto:
    The checkouts are short lived, garbage collection are likely never
    useful

advice.detachedHead:
    Disable the repeating warning message that the repositories are in a
    detached state for cleaner logs.

Reviewed-by: Fabian Bläse <fabian@blaese.de>
2023-12-26 21:42:31 +01:00
Johannes Kimmel 53ac7cc6b5 layer3: add option to enable stateful firewall on client network
ci/woodpecker/push/woodpecker Pipeline failed Details
Add the following option to the client config section in
`/etc/config/gateway` to enable a basic stateful firewall:

```
config client
    option stateful_firewall '1'
```

The firewall will forward icmp mesages and allow any outbound client
traffic and related inbound traffic.

Acked-by: Fabian Bläse <fabian@blaese.de>
2023-12-26 18:53:36 +01:00
Fabian Bläse 61b1bebbd2 ipq40xx: retain old compat_version for sysupgrade compatibility
OpenWrt images contain a compat_version, which is used to block upgrades
to newer versions with incompatible configuration, if the configuration
cannot be migrated.

As we maintain our own configuration and all OpenWrt configuration files
are dropped on an upgrade, this upgrade block is not required.

To simplify the upgrade process, retain the old compat_version for the
next sysupgrade release. The compat_version will then be bumped
automatically by the `05_compat-version` board.d script.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2023-12-26 18:51:44 +01:00
Fabian Bläse 1a5c91b2ef OpenWrt: bump to v23.05
Bump core, packages and routing.

Remove upstreamed build patches.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2023-12-26 18:51:41 +01:00
Fabian Bläse 157fa4eac5 fff-firewall: Switch from ip/ebtables to nftables
Include nftables and appropriate modules. Translate ip- and ebtables
rules to their nftables counterparts. Remove ip/ebtables and modules.

This change intentionally tries to keep structural changes at a minimum
to keep the rule translation comprehensible.

kmod-nft-bridge is not required for fff-node, because it was merged into
a single kernel module since Linux 4.17:
[1] 02c7b25e5f
[2] fbaf48387e

Fixes: #252

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Co-authored-by: Johannes Kimmel <fff@bareminimum.eu>
2023-12-26 18:51:35 +01:00
Fabian Bläse 469f49f795 bsp: move octeon to subtarget structure
ci/woodpecker/push/woodpecker Pipeline is pending Details
ci/woodpecker/manual/woodpecker Pipeline failed Details
OpenWrt 22.03 introduced a generic subtarget for the octeon platform and
moved all targets without a subtarget into it. Adjust our BSP and config
to accomodate this change.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2023-03-30 12:33:22 +02:00
Fabian Bläse 7e80252c28 fff-wireless: add layer3 option for channel bandwidth
ci/woodpecker/push/woodpecker Pipeline is pending Details
It might be desired by the user to change the channel width of the
wireless radios. Implement a layer3 option to make channel width
configurable by the user.

Fixes: #276

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2023-03-21 20:37:01 +01:00
Fabian Bläse 444cee2819 fff-babel-bird2: prevent error message on revert
ci/woodpecker/push/woodpecker Pipeline was successful Details
When reverting configured settings, it is not an error if no temporary
directory for bird babel peers has been created.

Use rm -rf to prevent an error message and early exit of
configure-layer3 scripts.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Johannes Kimmel <fff@bareminimum.eu>
2023-03-13 22:48:25 +01:00
Wolfgang Hüttenhofer 20e38395a2 README.md: Add description of ./buildscript clean command
ci/woodpecker/push/woodpecker Pipeline is pending Details
Signed-off-by: Wolfgang Hüttenhofer <wolfgang.huettenhofer@thw-erlangen.de>
Reviewed-by: Fabian Bläse <fabian@blaese.de>
2023-03-13 22:46:11 +01:00
Wolfgang Hüttenhofer 91ea1bdb99 Add support for TP-Link Archer C7 v4
ci/woodpecker/push/woodpecker Pipeline was successful Details
Tested-by: Wolfgang Hüttenhofer <wolfgang.huettenhofer@thw-erlangen.de>
Signed-off-by: Wolfgang Hüttenhofer <wolfgang.huettenhofer@thw-erlangen.de>
Reviewed-by: Fabian Bläse <fabian@blaese.de>
2023-02-25 22:04:11 +01:00
Fabian Bläse 97942eb075 README.md: Rewrite contribution section for Pull-Request development
Signed-off-by: Fabian Bläse <fabian@blaese.de>
2023-02-25 22:04:11 +01:00
Fabian Bläse c12a9ba263 Use wpad-basic instead of wpad-basic-wolfssl
ci/woodpecker/push/woodpecker Pipeline was successful Details
The flash of some devices is too small to accomodate the additional
wolfssl library, which is included by default on OpenWrt 22.03.

In the future, the currently included mbedtls library should be replaced
with wolfssl, so WPA3, OWE and 802.11s encryption can be used.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2023-02-20 23:32:13 +01:00
Fabian Bläse 072452567f OpenWrt: bump to v22.03
Bump core, packages and routing.

Remove upstreamed build patches.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2023-02-20 23:32:13 +01:00
Fabian Bläse fcc8119906 bsp/x86-64: Include vmxnet3 driver
ci/woodpecker/push/woodpecker Pipeline was successful Details
Signed-off-by: Fabian Bläse <fabian@blaese.de>
2022-12-01 20:53:56 +01:00
Fabian Bläse d9d2612f3c build_patches: Add patch to fix wdr4900 wifi interface configuration
A Linux patch which changed the kernel behavior of pci device naming
was backported to Linux 5.4, and is therefore included in OpenWrt
21.02.5.

However, the OpenWrt scripts generating the default uci configuration
were not updated to accomodate this change. Therefore, wifi interface
configuration does have various side effects on the wdr4900. Most of the
time, more than two wifi radio/interface configurations are generated,
which results in wifi not working properly (because our own
configuration layer relies on the default configuration done by
OpenWrt).

Backport a patch from OpenWrt 22.03 / master, which works around this
problem but has not been applied to the 21.02 branch.

Based on: 7f4b4c29f3 (OpenWrt)

Ref: https://github.com/openwrt/openwrt/issues/11002
Ref: https://github.com/openwrt/openwrt/pull/11005
Ref: https://github.com/openwrt/openwrt/issues/10530
Ref: https://github.com/openwrt/openwrt/pull/10554
Fixes: #267

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2022-12-01 20:53:53 +01:00
Fabian Bläse 0e62ca5307 fff-dhcp: Do not generate dns records for local hostname
ci/woodpecker/push/woodpecker Pipeline was successful Details
By default OpenWRT generates A and AAAA records for the routers
hostname. This might interferes with upstream records and breaks when
DNSSEC is utilized.

Therefore, disable this features.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2022-11-26 16:47:24 +01:00
Fabian Bläse d34438d8b1 build_patches: Add support for EON EN25QX128A
Add support for a new SPI flash to the Linux kernel. It is required for
recent versions of the Xiaomi Mi 4A Gigabit, which utilizes this SPI
flash.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Tested-by: Fabian Bläse <fabian@blaese.de>
2022-11-26 16:47:14 +01:00
Robert Langhammer 306ed093f7 tools/dep-tree
The tool dep-tree is broken since commit "Simplify firmware variant selection"

Use the new package names for the roots of the tree to fix it.

Signed-off-by: Robert Langhammer <rlanghammer@web.de>
Reviewed-by: Fabian Bläse <fabian@blaese.de>
2022-11-26 16:43:40 +01:00
Fabian Bläse 2085c5e4af fff-babel: Use bird2 implementation by default
The bird2 babel implementation has proven to be the more reliable option
over babeld, especially on low-end hardware. It has been working
flawlessly on many test installations.

Use bird2 instead of babeld, if no implementation is specified via uci.

While at it, use the automatically incrementing $(COMMITCOUNT) for
PKG_RELEASE.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Christian Dresel <freifunk@dresel.systems>
2022-11-26 16:43:15 +01:00
Fabian Bläse e695b2a87a OpenWrt: bump to v21.02.5
Bump core, packages and routing.

Refresh patches.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Acked-by: Johannes Kimmel <fff@bareminimum.eu>

[fff@bareminimum.eu: Tested on EdgeRouter X]
Tested-by: Johannes Kimmel <fff@bareminimum.eu>
2022-10-19 17:07:49 +02:00
Fabian Bläse 0d06be1749 OpenWrt: bump to v21.02.3
ci/woodpecker/push/woodpecker Pipeline was successful Details
Bump core, packages and routing.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2022-08-14 12:35:23 +02:00
Fabian Bläse bdfdbba76a fff-layer3-config: return error values in functions instead of terminating
Many functions of configure-layer3 terminate the program after
successful execution, as they were originally only intended for
execution of configure-layer3 commands.

However, some functions are used both for command exection, but also as
helper functions. For example, revert_changes() is used as a helper
function in test_changes(). Terminating the program at the end of the
function therefore ends the exection of test_changes() prematurely. As a
result, the test mode of configure-layer3 never reloads services after
a successful configuration revert.

Replace exit commands with appropriate function return values, which can
then be evaluated by the caller where appropriate.

While at it, add a missing return to the parameter validation in
execute_subshell().

Fixes: #256

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Robert Langhammer <rlanghammer@web.de>
2022-07-22 12:48:52 +02:00
Fabian Bläse baca28ece3 fff-web-ui: fix port selection for TWO_PORT devices
Support for devices with two ports was originally intended for built-in
swconfig switches with only two externally exposed ethernet ports.

With the switch from ath71xx to ath79, the only device which ever made
use of this uncommon configuration (CPE210-v1) now has to dedicated
interfaces exposed to Linux. Therefore, two-port support was modified to
support two distinct interfaces instead of swconfig switch
configuration, which also simplified support for a few other devices.

However, the Web UI has not been taken into account. Due to the way the
Web UI detected a two-port device, the already implemented port selector
is not shown.

Use the TWO_PORT variable introduced with the change mentioned above to
detect two-port devices instead.

Fixes: #257
Fixes: c22032e254 ("fff-network: support native two-port devices")

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Robert Langhammer <rlanghammer@web.de>
2022-07-22 12:48:52 +02:00
Johannes Kimmel 9bc3690cbd fff-babel-bird2: fix filter for router ip imports
Currently router ipv6 addresses imported via the direct protocol from
the lo interface are all filtered. This should fix it.

Signed-off-by: Johannes Kimmel <fff@bareminimum.eu>
Reviewed-by: Fabian Bläse <fabian@blaese.de>
2022-07-22 12:48:52 +02:00
Robert Langhammer e6efc9671a fff-web-ui: fix redirection of stderr
The stderr of batctl should be redirected.

In a row of pipes a redirection at the end will only redirect the output of the last command! Put it on the right place.

It's just shell grammar.

Signed-off-by: Robert Langhammer <rlanghammer@web.de>
Reviewed-by: Christian Dresel <freifunk@dresel.systems>
2022-07-22 12:48:52 +02:00
Fabian Bläse a62f7cdf96 fff-web-ui: make update notification less ugly
The update notification has been botched into the web ui a long time
ago. It has not been overhauled ever since.

Make it at least a little bit less ugly.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2022-07-22 12:48:52 +02:00
Fabian Bläse daf4467a8a fff-web-ui: do not request unnecessary reboot
None of our current settings require a reboot to be applied. Only a
hood change is not done immediately. Therefore, the user is not required
to reboot the router after changing settings, so remove the reboot
request.

Fixes: #107

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Christian Dresel <freifunk@dresel.systems>
2022-07-22 12:48:48 +02:00
Fabian Bläse b81c15d111 fff-web-ui: reconfigure port mode without reboot
A full reboot is not required for changing the port mode. The port mode
is configured dynamically using configurenetwork, which can be launched
after the port mode has been changed.

Fixes: #107

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Acked-by: Christian Dresel <freifunk@dresel.systems>
2022-07-22 12:48:33 +02:00
Fabian Bläse f8182af459 fff-web-ui: update leaflet to 1.7.1
Signed-off-by: Fabian Bläse <fabian@blaese.de>
Tested-by: Fabian Bläse <fabian@blaese.de>
2022-07-22 12:43:47 +02:00
Adrian Schmutzler 0dfa1140ff buildscript: provide option to set number of threads during build
This allows to specify the number of threads used in
'./buildscript build' manually by adding them as third option, e.g.

./buildscript build fast 20
./buildscript build debug 4
./buildscript build default 10

Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
Reviewed-by: Fabian Bläse <fabian@blaese.de>
2022-07-22 12:43:19 +02:00
Fabian Bläse 20d12f943e buildscript: drop md5 checksum
ci/woodpecker/push/woodpecker Pipeline was successful Details
The md5 checksum has not been used by fff-upgrade since 2016 [1]. Since
md5 does not have any advantages over sha256 in our use case, drop md5
checksum entirely.

[1] da1199a55b

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Christian Dresel <freifunk@dresel.systems>
2022-04-13 19:22:31 +02:00
Fabian Bläse 90c58d575b buildscript: fix checksum generation for *.img.gz binaries
The new x86_64 target produces gzip compressed binaries, so it is
necessary to generate checksums for *.img.gz files as well.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Christian Dresel <freifunk@dresel.systems>
2022-04-13 19:22:31 +02:00
Fabian Bläse bc3c0b717d fff-ra: set preferred lifetime smaller than valid lifetime
A recent change (b26399283a) introduced an upper limit for the preferred
and valid lifetimes, so the statically configured addresses on the client
interface do not result in infinite lifetimes.

This upper bound is derived from the dhcp lease time. However, the
preferred lifetime is unexpectedly bound by an explicit configuration
option in recent versions of odhcpd. Due to our short dhcp leasetime,
the default value of this option is higher than the lease time, which
results preferred lifetimes longer than the valid lifetime.

As this behavior is rather unintuitive, a proper fix for it should be
done upstream (see #238). Until then, lower the preferred lifetime
option to the same value as our leasetime.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Christian Dresel <freifunk@dresel.systems>
2022-04-13 19:22:27 +02:00
Robert Langhammer f3b1604ff3 nodewatcher: fix errormessage.
Insert the lost "&"

Fixes: #239

Signed-off-by: Robert Langhammer <rlanghammer@web.de>
Reviewed-by: Christian Dresel <freifunk@dresel.systems>
Reviewed-by: Fabian Bläse <fabian@blaese.de>
2022-04-13 19:21:25 +02:00
Fabian Bläse 57408f5dfb fff-layer3-config: show uci syntax errors
ci/woodpecker/push/woodpecker Pipeline was successful Details
Do not hide uci errors when checking if gateway config exists, so an
appropriate uci error message is displayed. This can be helpful to find
syntax errors.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Christian Dresel <freifunk@dresel.systems>
Reviewed-by: Robert Langhammer <rlanghammer@web.de>
2022-04-05 21:25:33 +02:00
Fabian Bläse b26399283a fff-ra: use dhcp leasetime for preferred and valid lifetime
When advertising network prefixes gathered from the interface, odhcpd
sets the preferred and valid lifetime of those prefixes in the router
advertisement to the values set for those addresses on the interface.

When prefixes are configured statically (as done in our firmware), this
means that odhcp announces these prefixes for SLAAC with infinite
preferred and valid lifetimes.

While this does not seem like a problem at first, it hurts significantly
when configuration errors are made or cables are plugged into the wrong
ports, because those addresses never vanish from devices anymore, as long
as they are powered up. Also, it makes it impossible to change prefixes
without gracefully shutting down the RA server, so it can announce zero
lifetimes for previously announced prefixes.

Sadly, odhcp does not have an option to configure these lifetimes
explicitly, but it is possible to limit these lifetimes to the lease
time configured and used for the DHCP functionality of odhcpd.
Enable the appropriate 'ra_useleasetime' option to reduce impact of the
before mentioned problems.

Fixes: #142

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Christian Dresel <freifunk@dresel.systems>
Reviewed-by: Robert Langhammer <rlanghammer@web.de>
2022-04-05 21:25:19 +02:00
Fabian Bläse 20ecca34c0 ci: add woodpecker build pipelines
ci/woodpecker/push/woodpecker Pipeline was successful Details
Add pipeline configuration for Woodpecker CI. This tells Woodpecker how
to build our firmware, so it can automatically generate firmware images
for all commits to the master branch.

Continuous integration not only helps spotting build errors early, but
also allows non-developers to test the firmware during development.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Acked-by: Christian Dresel <freifunk@dresel.systems>
2022-03-31 19:31:25 +02:00
Fabian Bläse 880d56d52c buildscript: Keep target name for x86
The x86 OpenWrt target does not have device names, as x86 images are
generic for various hardware. Therefore, removing the target and
subtarget from the image name results in an indistiguishable image name.

Keep the target name for x86 images, so the resulting images are
distinguishable.

Fixes: #229

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2022-03-31 19:31:25 +02:00
Robert Langhammer 0f67aa2504 nodewatcher: Trigger "WAN Uplink" also with vxlan
Signed-off-by: Robert Langhammer <rlanghammer@web.de>
Acked-by: Fabian Bläse <fabian@blaese.de>
2022-03-31 19:31:25 +02:00
Fabian Bläse 4bf14292f7 fff-mqtt: Switch from mosquitto-ssl to mosquitto-nossl
*-ssl variants of mosquitto require libopenssl, which increases the
storage requirement by almost 1 MB, even when compressed with squashfs.

Because we currently do not need TLS support for fff-mqtt, switch to the
nossl variant to save space and allow building for devices with 8 MiB
flash.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Christian Dresel <freifunk@dresel.systems>
2022-03-31 19:31:25 +02:00
Robert Langhammer 25e227c6b9 fff-vxlan-node: disable vxlan by default
Signed-off-by: Robert Langhammer <rlanghammer@web.de>
Acked-by: Fabian Bläse <fabian@blaese.de>
2022-03-31 19:31:25 +02:00
Robert Langhammer a317557320 fff-vxlan-node: disable vxlan if no peers available
Disabling vxlan via uci solves all problemes.
A reload_config does now everything we need. Bringing up vxlan if peers available and shuting down the Interface if not.
This will also remove old fdb entries and clear the batman tables immediately.

No ifup and no extra cleaning of the fdb is required.

Signed-off-by: Robert Langhammer <rlanghammer@web.de>
Acked-by: Fabian Bläse <fabian@blaese.de>
2022-03-31 19:31:25 +02:00
Robert Langhammer 4cd3b17714 fff-vxlan-node: do not set vid if GW not reachable
Signed-off-by: Robert Langhammer <rlanghammer@web.de>
Acked-by: Fabian Bläse <fabian@blaese.de>
2022-03-31 19:31:25 +02:00
Robert Langhammer 7947107ed3 fff-vxlan-node: reset vid
Reset vid if no peers are available.

If a router switches to a hood without vxlan, or the peers in the hoodfile disappear, the vid should be reset.

Signed-off-by: Robert Langhammer <rlanghammer@web.de>
Acked-by: Fabian Bläse <fabian@blaese.de>
2022-03-31 19:31:25 +02:00
Robert Langhammer 378163d834 fff-vxlan-node: fix cleanup
Without "uci commit" peers do not appear in /etc/config network. Use uci show instead.

Signed-off-by: Robert Langhammer <rlanghammer@web.de>
Acked-by: Fabian Bläse <fabian@blaese.de>
2022-03-31 19:31:25 +02:00
Robert Langhammer 405e0a43d5 fff-vxlan: remove uci commit
Remove this leftover from the test phase.

Signed-off-by: Robert Langhammer <rlanghammer@web.de>
Acked-by: Fabian Bläse <fabian@blaese.de>
2022-03-31 19:31:25 +02:00
Fabian Bläse 41b4168290 fff-network: Do not configure switch for ONE and TWO_PORT devices
In a previous change all static configuration has been moved from
configurenetwork to a static uci-defaults script. As the configuration
of the switch is completely static, while port assignment for ONE and
TWO_PORT devices is dynamic, this patch slightly changed the condition
for the creation of the switch config.

Instead of only configuring the switch, if ONE_PORT and TWO_PORT is not
set, the switch is now always configured if a swconfig device is
present. However, some ONE and TWO_PORT devices have a swconfig device,
even though only a single physical port is connected to it. Those
devices require an unconfigured switch to function properly.

Therefore, introduce additional conditions, so the switch configuration
is not generated if ONE_PORT or TWO_PORT is set.

Fixes: 1c3328e64a ("Remove static configuration from dynamic script")

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2022-03-31 19:31:25 +02:00
Fabian Bläse 0234203bed treewide: remove ETHPORT leftovers
ETHPORT was used to configure devices with two physical ethernet ports,
one of them being connected directly to the CPU, while the other one is
connected to the internal switch of the platform.

As the GL-AR150 has been converted to the TWO_PORT codepath and no other
devices utilizes ETHPORT, remove all leftovers.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Tested-by: Sebastian Beck <freifunk@beibecks.de>
2022-03-31 19:31:25 +02:00
Fabian Bläse 240a506ee7 fff-network: convert GL-AR150 to TWOPORT
The GL-AR150 has two ethernet ports. One of them is connected directly
to the CPU (labeled "WAN"), while the other one (labeled "LAN") is
connected to the internal switch of the AR9330 platform.

Previously, this device had its own codepath in configurenetwork,
utilizing the ETHPORT variable, so the single physical port of the
switch could be connected to either the CLIENT or BATMAN vlan of the
SWITCHPORT.

When adding support for TWO_PORT devices, this codepath was accidentally
removed, so the LAN-Port was not configured anymore.

Configuring the internal switch is not necessary when only a single
physical port ist connected to it. Instead, leave the switch
unconfigured, so it behaves like an unmanaged vlan-transparent switch.

As we support TWO_PORT devices now, utilize the TWO_PORT codepath
(instead of the ONE_PORT codepath, which would be equivalent to the old
behaviour) to make both ports configureable. To retain the previously
configured mode of the LAN-Port, migrate ETHPORT to LAN1MODE before
executing configurenetwork.

Fixes: #222
Fixes: c22032e254 ("fff-network: support native two-port devices")

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Tested-by: Sebastian Beck <freifunk@beibecks.de>
2022-03-31 19:31:12 +02:00
Fabian Bläse f89503660d Simplify firmware variant selection
Instead of tampering with the 'DEFAULT' property of meta packages on
every build in a non-portable way, use the build system as intended and
select packages using an approriate build config ('.config').

This is achived by adding the approriate variant package to the build
config before expanding it using defconfig.

By that, the fff-variant-* packages and FFF_VARIANT environment variable
can be removed. Base packages required in both variants are now included
via fff-base (formerly fff-variant/default).

Besides cleaning up the build process, this change also fixes a recent
issue with build dependencies, as they are evaluated on a per-package
basis instead of per-variant. Due to that, dependencies of all
variants are compiled, regardless of the selected variant. Combined with
a recent build issue of mosquitto (see [1]), the node variant could not
be built from a clean state.

[1] https://github.com/eclipse/mosquitto/issues/2432

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2022-03-31 19:17:01 +02:00
Robert Langhammer 7a5bef0d7d fff-fastd: fix fastd start/stop
fastd startup changed to procd. That's why it's broken.
Now a fastd reload can be used for all conditions.
An extra fastd stop is implemented to bring down the Interface.
fastd reload doesn't do that.

Fixes: #215

Signed-off-by: Robert Langhammer <rlanghammer@web.de>
Acked-by: Fabian Bläse <fabian@blaese.de>
2022-03-23 19:47:38 +01:00
Robert Langhammer 8e127a3936 fff-vpn-select: do not configure peers on vpn-stop
There are two reasons why there should be no peers.
Meshrouter without wan or no peers in hoodfile for a protocol.
With this patch there is only one condition left for vpn-start-stop.
Peers present or not. And it is less complicated to implement start/stop.

Signed-off-by: Robert Langhammer <rlanghammer@web.de>
Acked-by: Fabian Bläse <fabian@blaese.de>
2022-03-23 19:47:22 +01:00
Christian Dresel 2bc21aa63f fff-layer3: Add latency to nodewatcher
This patch add the latency to the nodewatcher data.

The target of the ping can configure in /etc/config/fff

Example:

config latency 'latency'
	option ipv4 'ff1.zbau.f3netze.de'
	option ipv6 'ff1.zbau.f3netze.de'

if no target is set, no latency is send.

Signed-off-by: Christian Dresel <freifunk@dresel.systems>
Acked-by: Fabian Bläse <fabian@blaese.de>
2022-03-23 19:47:05 +01:00
Fabian Bläse a43b37e9f6 fff-babel: Make implementation runtime switchable
Some users might want to prefer one babel implementation over another
for various reasons. Having to compile the firmware from scratch can be
quite tedious in that case.

Instead, make the babel implementation switchable at runtime.

The implementation can be switched manually using the uci option
`babelimpl.impl.impl`, which currently is not upgrade-safe.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Acked-by: Christian Dresel <freifunk@dresel.systems>
2022-03-23 19:47:02 +01:00
Fabian Bläse 803e2746df Add bird2 as selectable babel implementation
Bird 2 has a few advantages over babeld. Especially the possiblity to
dynamically reload the configuration without restarting the daemon and
birds significant performance advantage make it an interesting
alternative to babeld for our firmware.

This adds the necessary implementation-specific fff-babel-bird2 package,
which allows to integrate bird2 into the fff firmware.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Acked-by: Christian Dresel <freifunk@dresel.systems>
2022-03-23 19:46:58 +01:00
Fabian Bläse 71d137d4f1 Add support for different babel implementations
To be able to swap out babeld for a different babel implementation in
the future, this splits all fff-specific configuration into a seperate
fff-babel package.

Implementation specific configuration is done in
/lib/functions/fff/babeldaemon, which is included with every selectable
babel implementation. It contains functions, which are called by the
fff-specific code, and therefore allows to configure the implementation
specific parts.

The babel implementation is provided by implementation-specific
fff-packages, which provide 'fff-babel-implementation'. At the moment,
only fff-babeld is supported for use as babel implementation.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Acked-by: Christian Dresel <freifunk@dresel.systems>
2022-03-23 19:46:30 +01:00
Fabian Bläse 128a748626 Add support for x86_64
This patch adds support for the x86_64 target. Both legacy and UEFI boot
are supported.

Currently, only a single network interface is supported, which is
configured like any other ONE_PORT device. Therefore, this target is not
very useful for the node variant. However, vlan interfaces can be
configured for client, wan and peering sections in the layer3
configuation.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Christian Dresel <freifunk@dresel.systems>
Reviewed-by: Robert Langhammer <rlanghammer@web.de>
2022-03-11 12:34:59 +01:00
Fabian Bläse 9a3b499cae fff-babeld: create filter for prefixes used with snat
If a prefix is used for a client interface utilizing snat, it shall
not be publicly reachable, so it can be reused across multiple routers.

To prevent such prefixes from leaking, create appropriate babel filters
if snat is used.

Fixes: #196

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Christian Dresel <freifunk@dresel.systems>
2022-03-11 12:34:32 +01:00
Johannes Kimmel 87d923c1ef fff-dhcp: increase dns cachesize
The default cachesize for dnsmasq is 150 entries, which results in a
poor cache hit rate.

Raise the default to 1024 to provide better cache hit rates on all
devices while still keeping memory usage in check.

Further increase the cachesize to 8192 entries for systems with enough
ram (currently more than 64MB).

The memory usage will increase roughly 100B per entry.

The size was chosen empirically. Higher values don't seem to increase
cache hit rate a lot.

Signed-off-by: Johannes Kimmel <fff@bareminimum.eu>
Reviewed-by: Fabian Bläse <fabian@blaese.de>
2022-03-05 19:31:00 +01:00
Christian Dresel 0e8c32a363 fff-layer3: add snmp-utils package
This adds snmp-utils support to facilitate testing future uses for s2nproxy

WIP/RFC for s2nproxy:
#194

Signed-off-by: Christian Dresel <freifunk@dresel.systems>
Reviewed-by: Fabian Bläse <fabian@blaese.de>
2022-03-05 18:19:20 +01:00
Fabian Bläse a5ad4a9b00 fff-config: Set panic on OOM
The OOM killer does not make much sense on a router, because regardless
of which process is killed, most of the time some essential core
functionality is affected.

Set the panic on OOM sysctl, so every OOM leads to a kernel panic and
results in a reboot of the router, which restores a clean state.

Fixes: #131

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Johannes Kimmel <fff@bareminimum.eu>
2022-03-05 18:19:13 +01:00
Fabian Bläse 17bc1a7e62 fff-layer3-config: Always clear client interface list completely
Previously, some interfaces in the client ifname list have been kept.
The actual reason for this is unknown, it might have been used for the
bat0 interfaces.

Filtering the interface list in this way might lead to interfaces being
retained unintentionally, especially with the diverse naming of DSA
interfaces.

As it is not required anymore, remove the retention of some interfaces
completely.

Fixes: #207

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Robert Langhammer <rlanghammer@web.de>
Reviewed-by: Johannes Kimmel <fff@bareminimum.eu>
2022-03-05 18:19:02 +01:00
Fabian Bläse 330ed1b52d build_patches: Add hack which fixes forwarding on a stacked bridge
Currently we are utilizing stacked bridges to keep configuration of DSA
devices as close as possible to swconfig devices. The lower bridge is
for configuration of the DSA hardware and is vlan-aware, while the upper
bridge is used to connect wireless interfaces to the client interface.

A packet arriving from the switch might have the offload_fwd_mark flag
set in the skb to prevent it from being sent to DSA ports, as this has
already been done in hardware.

However, this flag is not cleared before the skb is processed by the
upper bridge, which prevents it from being sent to any other ports of
that bridge. Therefore, communication is not possible between different
ports of that bridge, while communication with the bridge interface
itself is possible.

This issue affects both the layer3 and node variant, but due to the
layer 2 architecture of the node firmware, it is far more noticeable in
the node firmware, as it prevents ethernet clients from sending packets
to the gateway.

Work around this issue by clearing the offload_fwd_mark flag before
passing the skb up.

Fixes: #205

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Johannes Kimmel <fff@bareminimum.eu>
2022-03-05 18:18:51 +01:00
Fabian Bläse 5b23824344 fff-network: Remove hardcoded network config
The base network configuration has been completely migrated to
uci-defaults scripts and any existing network configuration is dropped.

Therefore, the hardcoded /etc/config/network configuration file is not
required anymore. Remove it.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Robert Langhammer <rlanghammer@web.de>
2022-03-05 18:18:47 +01:00
Fabian Bläse 5424eb728c fff-network: restore accidentally removed packet_steering option
With the recent rework of the network configuration, any existing
configuration is dropped in a uci-defaults script (22-network-base) and
generated from scratch. When rebasing this rather old patchset, the
packet_steering option was overlooked, so it is missing now.

Restore the removed packet_steering option by setting it using a
dedicated uci-defaults script.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Robert Langhammer <rlanghammer@web.de>
2022-03-05 18:18:21 +01:00
Fabian Bläse 209c9debbf treewide: reorder layer3-specific uci-default scripts
With a recent patchset the initial boot process of the fff-network
package has been significantly altered. The base network configuration
is now generated by a uci-defaults script which completely drops
any existing network configuration first (22-network-base).

Reorder some uci-defaults scripts which extend the base network
configuration with layer3-specific rules, so they are executed after
22-network-base.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Robert Langhammer <rlanghammer@web.de>
2022-03-05 18:18:02 +01:00
Fabian Bläse 1c3328e64a Remove static configuration from dynamic script
Most of the configuration done in configurenetwork is static and does
not change after the first boot. Move this static configuration into a
uci-defaults script, which is only executed on first boot.

Configuration which might be changed at runtime (e.g. port assignment),
is kept in the configurenetwork script.

To improve readability and speed, combine multiple uci commands into a
uci batch. Drop any existing network configuration before applying our
own configuration. This requires the network.globals section to be
created explicitly. Also, the fdff:: addresses, ETHMESHMAC and ROUTERMAC
can be set unconditionally, as the uci-defaults script is only executed
once. Other than that, the static configuration has not been altered.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Robert Langhammer <rlanghammer@web.de>
2022-03-05 18:18:00 +01:00
Fabian Bläse a8ce8e1ad6 fff-network: Remove unnecessary restart of fff-uradvd
The explicit restat of fff-uradvd is not necessary anymore, as
appropriate procd reload triggers have been added, and reload_config is
executed after every run of configurenetwork.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Robert Langhammer <rlanghammer@web.de>
2022-03-05 18:17:59 +01:00
Fabian Bläse 3f765e4ba7 fff-network: Replace runtime configuration with reload_config
Instead of both setting values in the uci configuration and applying
them manually, only set the values in the uci configuration and do a
combined reload_config afterward.

This not only ensures that the changes to the configuration are actually
correct, but also decreases the runtime of configurenetwork.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Robert Langhammer <rlanghammer@web.de>
2022-03-05 18:17:58 +01:00
Fabian Bläse 1917c8a1df fff-uradvd: Add reload trigger for network
fff-uradvd depends on values stored in the uci network config.
Therefore, a reload is required if the uci network config is modified.

As fff-uradvd does not support reloads, and possibly changing values are
given as command parameters, do a restart on procd reload.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Robert Langhammer <rlanghammer@web.de>
2022-03-05 18:17:25 +01:00
Fabian Bläse c2f80c9999 OpenWrt: bump to v21.02.2
Bump core, packages and routing.

Remove upstreamed build patches.

Remove ath10k memory hack and use the newly added ath10k-smallbuffers
variant instead, but only for devices which actually require it
(and therefore use ath10k-ct-smallbuffers by default).

Adjust for the newly introduced band option for wireless devices, which
is now emitted by OpenWrt by default.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Johannes Kimmel <fff@bareminimum.eu>
2022-03-05 18:09:49 +01:00
Adrian Schmutzler 27baecaf37 treewide: set PKG_RELEASE automatically
COMMITCOUNT allows to have the PKG_RELEASE calculated automatically
based on the number of commits for the package folder.

AUTORELEASE will count the number of commits since the last upstream
bump. This is relevant for packages with PKG_VERSION or
PKG_SOURCE_DATE set, but will not work for us since it assumes the
use of certain identifiers in commit titles.

COMMITCOUNT works fine for most of our packages, with the following
exceptions:

 * fff-nodewatcher would yield a commit count of 55, while the
   current PKG_RELEASE is 61. Thus, we do not touch it for now.

 * Packages that have been renamed will start counting from 1 after
   the rename, since folder renames are not tracked by git. This
   will result in descreasing PKG_RELEASE after the change for
   these packages.
   However, since moving essentially creates a new package anyway,
   counting from 1 makes sense conceptually, and PKG_RELEASE is
   still replaced for these packages.

 * alfred-json and fff-macnock use upstream code and thus would
   normally require AUTORELEASE. As discussed above, this will
   not work for us, so just leave these two untouched.

Note that all this is quite irrelevant for the way we use packages
currently, as without opkg PKG_RELEASE does not matter to us anyway.
So, let's just be happy about not having to bump PKG_RELEASE
anymore, while keeping the basic functionality intact.

The only package where the PKG_RELEASE is actually used for
something is fff-nodewatcher, where the version will be displayed
in the Monitoring.

Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
[fabian@blaese.de: rebase, add new packages]
Signed-off-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Robert Langhammer <rlanghammer@web.de>
Reviewed-by: Johannes Kimmel <fff@bareminimum.eu>
2022-01-09 22:03:09 +01:00
Christian Dresel 825d760bd8 Add package fff-layer3-snat
With this new package it is possible to do SNAT for client IPv4.

The user must set a router_ip in gateway.meta.router_ip, so an ip
address is available for peering interfaces and reachability.

Currently, no extra filtering is done, so the client interface should
only use ip ranges, which are already filtered from being announced
(e.g. 192.168.0.0/16).

Using NAT for IPv4 significantly reduces the need for big
Freifunk-global IP range allocations.

Signed-off-by: Christian Dresel <freifunk@dresel.systems>
Co-authored-by: Fabian Bläse <fabian@blaese.de>
Signed-off-by: Fabian Bläse <fabian@blaese.de>
Tested-by: Christian Dresel <freifunk@dresel.systems>
2022-01-09 21:58:30 +01:00
Fabian Bläse 51ec3648cf fff-babeld: Simplify CIDR mask removal
The removal of CIDR masks from ip addresses is changed to utilize
variable substitutions, which simplifies the expression.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Johannes Kimmel <fff@bareminimum.eu>
2022-01-06 01:07:17 +01:00
Fabian Bläse 8ef6dba5a1 fff-babeld: Only select first list entry from router_ip
The router_ip option can be a list of multiple ip addresses. It is also
possible to specify a subnet using a CIDR mask.

Only a single ip is required for peering interfaces, so select only the
first list entry and remove the CIDR mask.

Fixes: #197

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2022-01-06 01:07:15 +01:00
Robert Langhammer a6b90f1a83 vxlan-node-vpn: add initial vid
Without a vid, netifd is running in an ifup-loop.
This situation is comming up after firstboot. An existing hoodfile causes a set vid.

Signed-off-by: Robert Langhammer <rlanghammer@web.de>
Reviewed-by: Johannes Kimmel <fff@bareminimum.eu>
2022-01-05 22:18:20 +01:00
Robert Langhammer 085dbb64fe fff-fastd: Add batman hardif hop_penalty
Openwrt v21.02.0 contains a new Batman Adv that now offers hop_penalty per hardif.
We can use this to prefer one tunnel for outgoing traffic if there are several VPNs. Eg. fastd and vxlan.

This Patch sets the hop_penalty for the fastd tunnel to 30.

Signed-off-by: Robert Langhammer <rlanghammer@web.de>
Acked-by: Fabian Bläse <fabian@blaese.de>
2021-12-30 16:21:47 +01:00
Robert Langhammer 12f60419cd fff-node: Add package fff-vxlan-node-vpn
This package adds vxlan support to the node variant and configures the vxlan-vpn tunnels to the gateways.

Signed-off-by: Robert Langhammer <rlanghammer@web.de>
Acked-by: Fabian Bläse <fabian@blaese.de>

---
A vpn section for vxlan in hoodfile:

    "vpn": [
       {
        "name": "gatewayname",
        "protocol": "vxlan",
        "address": "gateway.url" (or IP)
       }

"name" is optional.
---
2021-12-30 16:21:37 +01:00
Robert Langhammer 1febd2a9b2 fff-vpn-select: Make vpn-select modular
This rewrite makes vpn-select modular to easely add new vpn-protocols.

The stuff dependent on the vpn-protocol is outsourced to files in /usr/lib/vpn-select.d/ and comes in with the respective vpn package. In this way it is easy to select or deselect vpnprotocols to be build in.

vpn-stop is removed to use the protocol independent start/stop mechanism of vpn-select. Instead, a symlink is used.

Signed-off-by: Robert Langhammer <rlanghammer@web.de>
Reviewed-by: Fabian Bläse <fabian@blaese.de>
2021-12-30 16:21:29 +01:00
Johannes Kimmel feeead6c43 fff-firewall: remove obsolete rules
20-clamp-mss:

Clamping is done in other parts of the network and to a very low static
value. This rules is very likely doing nothing at the moment.

20-filter-ssh:

These rules make use of the conntrack module to ratelimit incoming
connections. Using conntrack comes with a performance penalty for all
traffic. As an alternative, dropbear could be run behind an inetd(-like)
service that does the ratelimit, should removing this rule result in an
actual attack vector.

Removing both rules would enable us to unload the conntrack module all
together, potentially improving overall performance.

Fixes #183

Signed-off-by: Johannes Kimmel <fff@bareminimum.eu>
Acked-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Robert Langhammer <rlanghammer@web.de>
2021-12-30 16:02:02 +01:00
Johannes Kimmel 9d745d0d5c fff-layer3-config: add missing -q option for uci get
Suppresses the unhelpful "uci: Entry not found" message when running
configure-layer3 -c in case there is no `ip6addr` set on the client
interface.

Signed-off-by: Johannes Kimmel <fff@bareminimum.eu>
Reviewed-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Robert Langhammer <rlanghammer@web.de>
2021-12-30 16:01:44 +01:00
Fabian Bläse 7c3f3230ff buildscript: Split removal of chipset and subtarget
Some OpenWrt targets do not have subtargets. The filename only contains
the chipset in that case. Split the removal of chipset and subtarget
into multiple expressions, so the removal of the chipset works on
targets without subtargets as well.

Fixes: #187

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Robert Langhammer <rlanghammer@web.de>
2021-12-30 16:01:36 +01:00
Fabian Bläse a3d62c7fcc Revert "Retain old compat_version for sysupgrade compatibility"
This reverts commit de9d4abf44.

As the compat_version has been bumped with the last release, this hack
can be removed, because the compat_version now is in sync with upstream.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Robert Langhammer <rlanghammer@web.de>
2021-12-30 16:01:12 +01:00
Fabian Bläse c3cb53ebef buildscript: Generate checksum for *.tar and *.img
Some devices use .tar or .img for their firmware images. Our buildscript
currently only generates checksums for .bin files. Therefore, generate
checksums for .tar and .img files as well.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Acked-By: Johannes Kimmel <fff@bareminimum.eu>
2021-12-24 14:41:18 +01:00
Fabian Bläse 40be50311b build_patches: cherry pick kernel bumps to 5.4.163
Our last firmware release has a very specific edge case failure, where
only the edgerouter-x using the node-variant images is unable to boot.

The root cause of this issue could not be identified, but using a
slightly newer or slightly older kernel release than the 5.4.154
included with openwrt-21.02.1 fixes this issue.

Therefore, cherry pick the kernel bumps to 5.4.163 from the
openwrt-21.02 branch until the next OpenWrt release to fix this issue.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
Acked-By: Johannes Kimmel <fff@bareminimum.eu>
2021-12-24 14:36:12 +01:00
180 changed files with 5991 additions and 896 deletions

46
.woodpecker.yml Normal file
View File

@ -0,0 +1,46 @@
clone:
git:
image: woodpeckerci/plugin-git
settings:
tags: true
steps:
buildall-layer3:
image: openwrtorg/imagebuilder
commands:
- export HOME=/home/build/openwrt
- sudo chown -R build:build .
- git config --global user.email "ci@fff.community"
- git config --global user.name "FFF CI"
- ./buildscript selectvariant layer3
- ./buildscript selectbsp bsp/ath79-generic.bsp
- ./buildscript prepare
- ./buildscript buildall
buildall-node:
image: openwrtorg/imagebuilder
commands:
- export HOME=/home/build/openwrt
- sudo chown -R build:build .
- git config --global user.email "ci@fff.community"
- git config --global user.name "FFF CI"
- ./buildscript selectvariant node
- ./buildscript selectbsp bsp/ath79-generic.bsp
- ./buildscript prepare
- ./buildscript buildall
distribute:
image: alpine/git
volumes:
- /var/lib/woodpecker/artifacts:/var/run/artifacts
commands:
- rm -rf /var/run/artifacts/$(git describe --tags)
- mkdir -p /var/run/artifacts/$(git describe --tags)
- cp -r bin/* /var/run/artifacts/$(git describe --tags)/
- echo
- echo
- echo "You can download the built firmware images here:"
- echo "https://ci.fff.community/artifacts/$(git describe --tags)"
when:
branch: [ master ]

View File

@ -8,7 +8,7 @@ Weitere Informationen gibt es auf <https://freifunk.net/> und auf <https://wiki.
# Firmware selbst kompilieren
## Voraussetzungen
* `apt-get install zlib1g-dev lua5.2 build-essential unzip libncurses-dev gawk git subversion libssl-dev` (Sicherlich müssen noch mehr Abhängigkeiten installiert werden, diese Liste wird sich hoffentlich nach und nach füllen. Ein erster Ansatzpunkt sind die Abhängigkeiten von OpenWrt selbst)
* `apt-get install zlib1g-dev lua5.2 build-essential unzip libncurses-dev gawk git subversion libssl-dev rsync python3-distutils` (Sicherlich müssen noch mehr Abhängigkeiten installiert werden, diese Liste wird sich hoffentlich nach und nach füllen. Ein erster Ansatzpunkt sind die Abhängigkeiten von OpenWrt selbst)
* `git clone https://git.freifunk-franken.de/freifunk-franken/firmware.git`
* `cd firmware`
@ -56,6 +56,10 @@ Dieses Kommando arbeitet folgendermaßen:
### `./buildscript updatefeeds`
Aktualisiert die OpenWrt Feeds für zusätzliche Pakete, die in die Firmware eingebaut werden. Dabei werden die Referenzen im build/ Verzeichnis aktualisiert. Dieser Schritt wird bereits von `./buildscript prepare` übernommen, daher ist dies nur bei manuellen Änderungen der Feeds nötig.
### `./buildscript clean`
Entfernt den Inhalt der bin/ und build/ Verzeichnisse und die Feeds in src/packages/. Damit werden beim nächsten `./buildscript prepare` alle Dateien die für das Bauen der Firmware nötig sind neu heruntergeladen. Dies kann nötig sein wenn z.B. seit dem letzen build ein größerer Versionssprung in OpenWRT gemacht wurde. Wenn es Fehler beim bauen gibt, wie fehlende Dependencies o.Ä., ist ein clean mal einen Versuch wert.
* Nach einem clean muss daher erst noch einmal `./buildscript prepare` ausgeführt werden, bevor man mit `./buildscipt build` bauen kann!
### `./buildscript build`
Sollte man am besten mit Hilfe des Tools 'screen' oder ähnlichem laufen lassen um einen Abbruch des Builds bei Verbindungsproblemen oder ähnlichem zu verhindern.
* prebuild
@ -132,9 +136,14 @@ scp root@[ipv6ll%scope]:/etc/network.tl-wr1043nd-v2 /path/to/git/firmware/bsp/wr
```
### BSP commiten und Patch erzeugen
Nun kann man mit `git status` die Änderungen sehen. Mit `git add` staged man diese und mit `git commit` checkt man sie ein. `git format-patch origin/HEAD` erzeugt dann aus deinen Commits ein (oder mehr) Patches. Diese schickst du dann mit `git send-email --to franken-dev@freifunk.net *.patch` an unsere Liste. Dort nimmt sich jemand die Zeit und schaut kurz drüber und wenn alles passt finden deine Änderungen in den Hauptentwicklungszweig und sind ab dann Teil der Freifunk-Franken-Firmware.
Nun kann man mit `git status` die Änderungen sehen.
Damit man an mehreren Änderungen gleichzeitig arbeiten kann, sollte zunächst mit `git checkout -b mein-neues-feature` ein neuer Branch erzeugt werden. Dann können die Änderungen mit `git add` gestaged und danach mit `git commit` eingecheckt werden.
Die so erzeugten Änderungen können dann mit einem Pull Request im [Gitea](https://git.freifunk-franken.de/freifunk-franken/firmware) submitted werden. Dafür ist ein [Account](https://docs.freifunk-franken.de/services/git.freifunk-franken/#anmeldung) nötig. Dazu muss das Firmware-Repository zunächst geforkt werden. Die SSH-Adresse des Forks (steht oben rechts) kann dann mit `git remote set-url origin gitea@git.freifunk-franken.de:meinname/firmware.git` in das lokale Repository eingetragen werden. Danach kann der weiter oben erstellte Branch mit `git push origin mein-neues-feature` in den Fork hochgeladen werden. Nun kann der Pull Request im Freifunk Franken Repository [angelegt](https://git.freifunk-franken.de/freifunk-franken/firmware/pulls) werden.
Soll der Pull Request später geändert werden, dann müssen zunächst die nötigen Änderungen gemacht und danach mit `git commit --amend` in den bereits bestehenden Commit eingefügt werden. Dies kann dann mit `git push --force origin mein-neues-feature` in den Fork hochgeladen werden. Force ist hierbei nötig, da bereits bestehende Commits geändert werden. Der Pull Request wird dann automatisch aktualisiert. Um Reviews zu erleichtern sollten die Änderungen im Pull Request als Kommentar beschrieben werden.
### Patch schicken
Auf der Mailingliste franken-dev@freifunk.net kannst du natürlich jederzeit Fragen stellen, falls etwas nicht klar sein sollte.
## Hinzufügen von Paketen zum Image

View File

@ -5,6 +5,7 @@ images=("openwrt-${chipset}-${subtarget}-glinet_gl-ar150-squashfs-*"
"openwrt-${chipset}-${subtarget}-tplink_archer-c60-v1-squashfs-*"
"openwrt-${chipset}-${subtarget}-tplink_archer-c60-v2-squashfs-*"
"openwrt-${chipset}-${subtarget}-tplink_archer-c7-v2-squashfs-*"
"openwrt-${chipset}-${subtarget}-tplink_archer-c7-v4-squashfs-*"
"openwrt-${chipset}-${subtarget}-tplink_archer-c7-v5-squashfs-*"
"openwrt-${chipset}-${subtarget}-tplink_cpe210-v1-squashfs-*"
"openwrt-${chipset}-${subtarget}-tplink_cpe210-v2-squashfs-*"
@ -19,6 +20,6 @@ images=("openwrt-${chipset}-${subtarget}-glinet_gl-ar150-squashfs-*"
"openwrt-${chipset}-${subtarget}-tplink_tl-wr1043nd-v4-squashfs-*"
"openwrt-${chipset}-${subtarget}-tplink_tl-wr1043n-v5-squashfs-*"
"openwrt-${chipset}-${subtarget}-ubnt_nanostation-loco-m-xw-squashfs-*"
"openwrt-${chipset}-${subtarget}-ubnt_unifi-squashfs-*"
"openwrt-${chipset}-${subtarget}-ubnt_unifi-ap-squashfs-*"
"openwrt-${chipset}-${subtarget}-ubnt_unifiac-mesh-squashfs-*"
)

View File

@ -7,13 +7,15 @@ CONFIG_TARGET_MULTI_PROFILE=y
CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_glinet_gl-ar150=y
CONFIG_TARGET_DEVICE_PACKAGES_ath79_generic_DEVICE_glinet_gl-ar150=""
CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_tplink_archer-c25-v1=y
CONFIG_TARGET_DEVICE_PACKAGES_ath79_generic_DEVICE_tplink_archer-c25-v1="-kmod-ath10k-ct-smallbuffers kmod-ath10k -ath10k-firmware-qca9887-ct ath10k-firmware-qca9887"
CONFIG_TARGET_DEVICE_PACKAGES_ath79_generic_DEVICE_tplink_archer-c25-v1="-kmod-ath10k-ct-smallbuffers kmod-ath10k-smallbuffers -ath10k-firmware-qca9887-ct ath10k-firmware-qca9887"
CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_tplink_archer-c60-v1=y
CONFIG_TARGET_DEVICE_PACKAGES_ath79_generic_DEVICE_tplink_archer-c60-v1="-kmod-ath10k-ct-smallbuffers kmod-ath10k -ath10k-firmware-qca9888-ct ath10k-firmware-qca9888"
CONFIG_TARGET_DEVICE_PACKAGES_ath79_generic_DEVICE_tplink_archer-c60-v1="-kmod-ath10k-ct-smallbuffers kmod-ath10k-smallbuffers -ath10k-firmware-qca9888-ct ath10k-firmware-qca9888"
CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_tplink_archer-c60-v2=y
CONFIG_TARGET_DEVICE_PACKAGES_ath79_generic_DEVICE_tplink_archer-c60-v2="-kmod-ath10k-ct-smallbuffers kmod-ath10k -ath10k-firmware-qca9888-ct ath10k-firmware-qca9888"
CONFIG_TARGET_DEVICE_PACKAGES_ath79_generic_DEVICE_tplink_archer-c60-v2="-kmod-ath10k-ct-smallbuffers kmod-ath10k-smallbuffers -ath10k-firmware-qca9888-ct ath10k-firmware-qca9888"
CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_tplink_archer-c7-v2=y
CONFIG_TARGET_DEVICE_PACKAGES_ath79_generic_DEVICE_tplink_archer-c7-v2="-kmod-ath10k-ct kmod-ath10k -ath10k-firmware-qca988x-ct ath10k-firmware-qca988x"
CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_tplink_archer-c7-v4=y
CONFIG_TARGET_DEVICE_PACKAGES_ath79_generic_DEVICE_tplink_archer-c7-v4="-kmod-ath10k-ct kmod-ath10k -ath10k-firmware-qca988x-ct ath10k-firmware-qca988x"
CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_tplink_archer-c7-v5=y
CONFIG_TARGET_DEVICE_PACKAGES_ath79_generic_DEVICE_tplink_archer-c7-v5="-kmod-ath10k-ct kmod-ath10k -ath10k-firmware-qca988x-ct ath10k-firmware-qca988x"
CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_tplink_cpe210-v1=y
@ -58,8 +60,8 @@ CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_ubnt_nanostation-m=y
CONFIG_TARGET_DEVICE_PACKAGES_ath79_generic_DEVICE_ubnt_nanostation-m="-rssileds"
CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_ubnt_picostation-m=y
CONFIG_TARGET_DEVICE_PACKAGES_ath79_generic_DEVICE_ubnt_picostation-m="-rssileds"
CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_ubnt_unifi=y
CONFIG_TARGET_DEVICE_PACKAGES_ath79_generic_DEVICE_ubnt_unifi=""
CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_ubnt_unifi-ap=y
CONFIG_TARGET_DEVICE_PACKAGES_ath79_generic_DEVICE_ubnt_unifi-ap=""
CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_ubnt_unifiac-mesh=y
CONFIG_TARGET_DEVICE_PACKAGES_ath79_generic_DEVICE_ubnt_unifiac-mesh="-kmod-ath10k-ct kmod-ath10k -ath10k-firmware-qca988x-ct ath10k-firmware-qca988x"
CONFIG_BUSYBOX_CUSTOM=y
@ -83,11 +85,17 @@ CONFIG_KERNEL_SQUASHFS_FRAGMENT_CACHE_SIZE=1
CONFIG_PACKAGE_hostapd-mini=y
CONFIG_PACKAGE_iwinfo=m
CONFIG_PACKAGE_libiwinfo=m
CONFIG_PACKAGE_libuclient=m
CONFIG_PACKAGE_libwolfssl=m
CONFIG_PACKAGE_opkg=m
CONFIG_PACKAGE_wpad-basic=y
CONFIG_PACKAGE_uclient-fetch=m
CONFIG_PACKAGE_wpad-basic-wolfssl=m
CONFIG_PACKAGE_wpad-mini=m
CONFIG_PACKAGE_ath10k-firmware-qca9887=m
CONFIG_PACKAGE_ath10k-firmware-qca9888=m
CONFIG_PACKAGE_ath10k-firmware-qca988x=m
CONFIG_PACKAGE_kmod-ath10k-smallbuffers=m
CONFIG_PACKAGE_kmod-ath10k=m
CONFIG_PACKAGE_ath10k-firmware-qca9887-ct=m
CONFIG_PACKAGE_ath10k-firmware-qca9888-ct=m
@ -95,3 +103,9 @@ CONFIG_PACKAGE_ath10k-firmware-qca988x-ct=m
CONFIG_PACKAGE_kmod-ath10k-ct-smallbuffers=m
CONFIG_PACKAGE_kmod-ath10k-ct=m
CONFIG_STRIP_KERNEL_EXPORTS=y
CONFIG_TARGET_SQUASHFS_BLOCK_SIZE=1024
# CONFIG_LIBCURL_FILE is not set
# CONFIG_LIBCURL_FTP is not set
# CONFIG_LIBCURL_PROXY is not set
# CONFIG_LIBCURL_UNIX_SOCKETS is not set
# CONFIG_HTOP_LMSENSORS is not set

View File

@ -26,4 +26,4 @@ alias ls='ls --color=auto'
alias ip='ip --color=auto'
# and color my prompt
export PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
export PS1='\[\033[01;32m\]\u@\H\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

View File

@ -0,0 +1 @@
/tmp/.ash_history

View File

@ -18,8 +18,15 @@ CONFIG_CLEAN_IPKG=y
# CONFIG_PACKAGE_ALFRED_VIS is not set
CONFIG_PACKAGE_ath10k-firmware-qca4019=m
CONFIG_PACKAGE_ath10k-firmware-qca4019-ct=m
CONFIG_PACKAGE_fff-extra=y
CONFIG_PACKAGE_kmod-ath10k=m
CONFIG_PACKAGE_kmod-ath10k-ct=m
CONFIG_PACKAGE_libuclient=m
CONFIG_PACKAGE_libwolfssl=m
CONFIG_PACKAGE_opkg=m
CONFIG_PACKAGE_wpad-basic=y
CONFIG_PACKAGE_uclient-fetch=m
CONFIG_PACKAGE_wpad-basic-wolfssl=m
CONFIG_STRIP_KERNEL_EXPORTS=y
CONFIG_PACKAGE_kmod-hwmon-core=y
# CONFIG_HTOP_LMSENSORS is not set

View File

@ -23,9 +23,20 @@ CONFIG_CLEAN_IPKG=y
# CONFIG_FASTD_ENABLE_METHOD_GENERIC_GMAC is not set
# CONFIG_FASTD_ENABLE_METHOD_GENERIC_UMAC is not set
# CONFIG_PACKAGE_ALFRED_VIS is not set
CONFIG_PACKAGE_fff-extra=y
CONFIG_PACKAGE_libuclient=m
CONFIG_PACKAGE_libwolfssl=m
CONFIG_PACKAGE_opkg=m
CONFIG_PACKAGE_wpad-basic=y
CONFIG_PACKAGE_uclient-fetch=m
CONFIG_PACKAGE_wpad-basic-wolfssl=m
CONFIG_PACKAGE_ath10k-firmware-qca99x0=m
CONFIG_PACKAGE_kmod-ath10k=y
CONFIG_PACKAGE_ath10k-firmware-qca99x0-ct=m
CONFIG_PACKAGE_kmod-ath10k-ct=m
CONFIG_STRIP_KERNEL_EXPORTS=y
# CONFIG_LIBCURL_FILE is not set
# CONFIG_LIBCURL_FTP is not set
# CONFIG_LIBCURL_PROXY is not set
# CONFIG_LIBCURL_UNIX_SOCKETS is not set
# CONFIG_HTOP_LMSENSORS is not set

View File

@ -23,6 +23,17 @@ CONFIG_CLEAN_IPKG=y
# CONFIG_FASTD_ENABLE_METHOD_GENERIC_GMAC is not set
# CONFIG_FASTD_ENABLE_METHOD_GENERIC_UMAC is not set
# CONFIG_PACKAGE_ALFRED_VIS is not set
CONFIG_PACKAGE_fff-extra=y
CONFIG_PACKAGE_libuclient=m
CONFIG_PACKAGE_libwolfssl=m
CONFIG_PACKAGE_opkg=m
CONFIG_PACKAGE_wpad-basic=y
CONFIG_PACKAGE_uclient-fetch=m
CONFIG_PACKAGE_wpad-basic-wolfssl=m
CONFIG_STRIP_KERNEL_EXPORTS=y
CONFIG_TARGET_SQUASHFS_BLOCK_SIZE=512
# CONFIG_LIBCURL_FILE is not set
# CONFIG_LIBCURL_FTP is not set
# CONFIG_LIBCURL_PROXY is not set
# CONFIG_LIBCURL_UNIX_SOCKETS is not set
# CONFIG_HTOP_LMSENSORS is not set

6
bsp/mvebu-cortexa72.bsp Normal file
View File

@ -0,0 +1,6 @@
chipset=mvebu
subtarget=cortexa72
images=(
"openwrt-mvebu-cortexa72-mikrotik_rb5009-squashfs*"
)

View File

@ -0,0 +1,48 @@
# Generated using "./buildscript config openwrt".
# Do no edit manually
#
CONFIG_TARGET_mvebu=y
CONFIG_TARGET_mvebu_cortexa72=y
CONFIG_TARGET_MULTI_PROFILE=y
CONFIG_TARGET_DEVICE_mvebu_cortexa72_DEVICE_mikrotik_rb5009=y
CONFIG_TARGET_DEVICE_PACKAGES_mvebu_cortexa72_DEVICE_mikrotik_rb5009=""
CONFIG_BUSYBOX_CUSTOM=y
CONFIG_TARGET_PER_DEVICE_ROOTFS=y
# CONFIG_BUSYBOX_CONFIG_BRCTL is not set
# CONFIG_BUSYBOX_CONFIG_CHGRP is not set
# CONFIG_BUSYBOX_CONFIG_CHOWN is not set
# CONFIG_BUSYBOX_CONFIG_CROND is not set
# CONFIG_BUSYBOX_CONFIG_CRONTAB is not set
# CONFIG_BUSYBOX_CONFIG_FEATURE_FAST_TOP is not set
# CONFIG_BUSYBOX_CONFIG_FEATURE_NTPD_SERVER is not set
# CONFIG_BUSYBOX_CONFIG_IFCONFIG is not set
# CONFIG_BUSYBOX_CONFIG_IP is not set
# CONFIG_BUSYBOX_CONFIG_MKSWAP is not set
# CONFIG_BUSYBOX_CONFIG_ROUTE is not set
# CONFIG_BUSYBOX_CONFIG_SWAPOFF is not set
# CONFIG_BUSYBOX_CONFIG_SWAPON is not set
CONFIG_CLEAN_IPKG=y
# CONFIG_DROPBEAR_CURVE25519 is not set
# CONFIG_FASTD_ENABLE_CIPHER_SALSA2012 is not set
# CONFIG_FASTD_ENABLE_MAC_GHASH is not set
# CONFIG_FASTD_ENABLE_MAC_UHASH is not set
# CONFIG_FASTD_ENABLE_METHOD_COMPOSED_GMAC is not set
# CONFIG_FASTD_ENABLE_METHOD_COMPOSED_UMAC is not set
# CONFIG_FASTD_ENABLE_METHOD_GENERIC_GMAC is not set
# CONFIG_FASTD_ENABLE_METHOD_GENERIC_UMAC is not set
# CONFIG_PACKAGE_ALFRED_VIS is not set
CONFIG_PACKAGE_fff-extra=y
CONFIG_PACKAGE_libuclient=m
CONFIG_PACKAGE_libwolfssl=m
CONFIG_PACKAGE_opkg=m
CONFIG_PACKAGE_uclient-fetch=m
CONFIG_PACKAGE_wpad-basic=y
CONFIG_PACKAGE_wpad-basic-wolfssl=m
CONFIG_STRIP_KERNEL_EXPORTS=y
# CONFIG_TARGET_ROOTFS_EXT4FS is not set
CONFIG_TARGET_SQUASHFS_BLOCK_SIZE=512
# CONFIG_LIBCURL_FILE is not set
# CONFIG_LIBCURL_FTP is not set
# CONFIG_LIBCURL_PROXY is not set
# CONFIG_LIBCURL_UNIX_SOCKETS is not set
# CONFIG_HTOP_LMSENSORS is not set

View File

@ -2,5 +2,5 @@ chipset=octeon
subtarget=generic
images=(
"openwrt-${chipset}-ubnt_edgerouter-4-*"
"openwrt-${chipset}-${subtarget}-ubnt_edgerouter-4-*"
)

View File

@ -2,10 +2,10 @@
# Do no edit manually
#
CONFIG_TARGET_octeon=y
CONFIG_TARGET_octeon_generic=y
CONFIG_TARGET_MULTI_PROFILE=y
CONFIG_TARGET_PER_DEVICE_ROOTFS=y
CONFIG_TARGET_DEVICE_octeon_DEVICE_ubnt_edgerouter-4=y
CONFIG_TARGET_DEVICE_PACKAGES_octeon_DEVICE_ubnt_edgerouter-4=""
CONFIG_TARGET_DEVICE_octeon_generic_DEVICE_ubnt_edgerouter-4=y
CONFIG_TARGET_DEVICE_PACKAGES_octeon_generic_DEVICE_ubnt_edgerouter-4=""
CONFIG_BUSYBOX_CUSTOM=y
CONFIG_TARGET_PER_DEVICE_ROOTFS=y
# CONFIG_BUSYBOX_CONFIG_BRCTL is not set
@ -16,6 +16,17 @@ CONFIG_TARGET_PER_DEVICE_ROOTFS=y
CONFIG_CLEAN_IPKG=y
# CONFIG_DROPBEAR_CURVE25519 is not set
# CONFIG_PACKAGE_ALFRED_VIS is not set
CONFIG_PACKAGE_fff-extra=y
CONFIG_PACKAGE_libuclient=m
CONFIG_PACKAGE_libwolfssl=m
CONFIG_PACKAGE_opkg=m
CONFIG_PACKAGE_wpad-basic=y
CONFIG_PACKAGE_uclient-fetch=m
CONFIG_PACKAGE_wpad-basic-wolfssl=m
CONFIG_STRIP_KERNEL_EXPORTS=y
CONFIG_TARGET_SQUASHFS_BLOCK_SIZE=512
# CONFIG_LIBCURL_FILE is not set
# CONFIG_LIBCURL_FTP is not set
# CONFIG_LIBCURL_PROXY is not set
# CONFIG_LIBCURL_UNIX_SOCKETS is not set
# CONFIG_HTOP_LMSENSORS is not set

View File

@ -29,6 +29,17 @@ CONFIG_CLEAN_IPKG=y
# CONFIG_FASTD_ENABLE_METHOD_GENERIC_GMAC is not set
# CONFIG_FASTD_ENABLE_METHOD_GENERIC_UMAC is not set
# CONFIG_PACKAGE_ALFRED_VIS is not set
CONFIG_PACKAGE_fff-extra=y
CONFIG_PACKAGE_libuclient=m
CONFIG_PACKAGE_libwolfssl=m
CONFIG_PACKAGE_opkg=m
CONFIG_PACKAGE_wpad-basic=y
CONFIG_PACKAGE_uclient-fetch=m
CONFIG_PACKAGE_wpad-basic-wolfssl=m
CONFIG_STRIP_KERNEL_EXPORTS=y
CONFIG_TARGET_SQUASHFS_BLOCK_SIZE=512
# CONFIG_LIBCURL_FILE is not set
# CONFIG_LIBCURL_FTP is not set
# CONFIG_LIBCURL_PROXY is not set
# CONFIG_LIBCURL_UNIX_SOCKETS is not set
# CONFIG_HTOP_LMSENSORS is not set

View File

@ -4,4 +4,5 @@ images=("openwrt-${chipset}-${subtarget}-tplink_archer-c50-v3-squashfs-*"
"openwrt-${chipset}-${subtarget}-tplink_archer-c50-v4-squashfs-*"
"openwrt-${chipset}-${subtarget}-tplink_tl-wr841n-v13-squashfs-*"
"openwrt-${chipset}-${subtarget}-xiaomi_mi-router-4a-100m-squashfs-*"
"openwrt-${chipset}-${subtarget}-xiaomi_mi-router-4a-100m-intl-squashfs-*"
)

View File

@ -12,6 +12,8 @@ CONFIG_TARGET_DEVICE_ramips_mt76x8_DEVICE_tplink_tl-wr841n-v13=y
CONFIG_TARGET_DEVICE_PACKAGES_ramips_mt76x8_DEVICE_tplink_tl-wr841n-v13=""
CONFIG_TARGET_DEVICE_ramips_mt76x8_DEVICE_xiaomi_mi-router-4a-100m=y
CONFIG_TARGET_DEVICE_PACKAGES_ramips_mt76x8_DEVICE_xiaomi_mi-router-4a-100m=""
CONFIG_TARGET_DEVICE_ramips_mt76x8_DEVICE_xiaomi_mi-router-4a-100m-intl=y
CONFIG_TARGET_DEVICE_PACKAGES_ramips_mt76x8_DEVICE_xiaomi_mi-router-4a-100m-intl=""
CONFIG_BUSYBOX_CUSTOM=y
CONFIG_TARGET_PER_DEVICE_ROOTFS=y
# CONFIG_BUSYBOX_CONFIG_BRCTL is not set
@ -29,5 +31,15 @@ CONFIG_CLEAN_IPKG=y
# CONFIG_FASTD_ENABLE_METHOD_GENERIC_GMAC is not set
# CONFIG_FASTD_ENABLE_METHOD_GENERIC_UMAC is not set
# CONFIG_PACKAGE_ALFRED_VIS is not set
CONFIG_PACKAGE_libuclient=m
CONFIG_PACKAGE_libwolfssl=m
CONFIG_PACKAGE_opkg=m
CONFIG_PACKAGE_wpad-basic=y
CONFIG_PACKAGE_uclient-fetch=m
CONFIG_PACKAGE_wpad-basic-wolfssl=m
CONFIG_STRIP_KERNEL_EXPORTS=y
# CONFIG_LIBCURL_FILE is not set
# CONFIG_LIBCURL_FTP is not set
# CONFIG_LIBCURL_PROXY is not set
# CONFIG_LIBCURL_UNIX_SOCKETS is not set
# CONFIG_HTOP_LMSENSORS is not set

4
bsp/x86-64.bsp Normal file
View File

@ -0,0 +1,4 @@
chipset=x86
subtarget=64
images=("openwrt-${chipset}-${subtarget}-generic-squashfs-combined-*"
)

31
bsp/x86-64/.config Normal file
View File

@ -0,0 +1,31 @@
# Generated using "./buildscript config openwrt".
# Do no edit manually
#
CONFIG_TARGET_x86=y
CONFIG_TARGET_x86_64=y
CONFIG_TARGET_MULTI_PROFILE=y
CONFIG_TARGET_DEVICE_x86_64_DEVICE_generic=y
CONFIG_TARGET_DEVICE_PACKAGES_x86_64_DEVICE_generic=""
CONFIG_BUSYBOX_CUSTOM=y
CONFIG_TARGET_PER_DEVICE_ROOTFS=y
# CONFIG_BUSYBOX_CONFIG_BRCTL is not set
# CONFIG_BUSYBOX_CONFIG_CROND is not set
# CONFIG_BUSYBOX_CONFIG_CRONTAB is not set
# CONFIG_BUSYBOX_CONFIG_FEATURE_FAST_TOP is not set
# CONFIG_BUSYBOX_CONFIG_FEATURE_NTPD_SERVER is not set
CONFIG_CLEAN_IPKG=y
# CONFIG_PACKAGE_ALFRED_VIS is not set
CONFIG_PACKAGE_fff-extra=y
CONFIG_PACKAGE_kmod-vmxnet3=y
CONFIG_PACKAGE_libuclient=m
CONFIG_PACKAGE_libwolfssl=m
CONFIG_PACKAGE_opkg=m
CONFIG_PACKAGE_wpad-basic=y
CONFIG_PACKAGE_uclient-fetch=m
CONFIG_PACKAGE_wpad-basic-wolfssl=m
CONFIG_STRIP_KERNEL_EXPORTS=y
# CONFIG_LIBCURL_FILE is not set
# CONFIG_LIBCURL_FTP is not set
# CONFIG_LIBCURL_PROXY is not set
# CONFIG_LIBCURL_UNIX_SOCKETS is not set
# CONFIG_HTOP_LMSENSORS is not set

View File

@ -6,10 +6,10 @@ This disables all OpenWrt config migration mechanisms except for
files listed in /etc/sysupgrade.conf
diff --git a/package/base-files/files/sbin/sysupgrade b/package/base-files/files/sbin/sysupgrade
index 7e0a00e13b8ee4be7163936fd01a7beff0ce5c99..97f50dc83088e29fba651741fff28c70f7585b3f 100755
index 9315091302..be8325463e 100755
--- a/package/base-files/files/sbin/sysupgrade
+++ b/package/base-files/files/sbin/sysupgrade
@@ -135,14 +135,14 @@ list_static_conffiles() {
@@ -139,14 +139,14 @@ list_static_conffiles() {
local filter=$1
find $(sed -ne '/^[[:space:]]*$/d; /^#/d; p' \

View File

@ -3,11 +3,11 @@ Date: Sat, 8 Jul 2017 10:47:28 +0200
Subject: set root password
diff --git a/package/base-files/files/etc/shadow b/package/base-files/files/etc/shadow
index 4b4154f21f478cc025a350363b3e34319c6afacc..b8d180a95691ab09f9c4d759ffd97da34a022623 100644
index 39bdb9c90a..b8d180a956 100644
--- a/package/base-files/files/etc/shadow
+++ b/package/base-files/files/etc/shadow
@@ -1,4 +1,4 @@
-root::0:0:99999:7:::
-root:::0:99999:7:::
+root:$1$OmvoKpjK$e.lPVnBxsrAbNV4EoH3xb1:0:0:99999:7:::
daemon:*:0:0:99999:7:::
ftp:*:0:0:99999:7:::

View File

@ -5,13 +5,12 @@ Subject: build: remove libustream and certs from default packages
This effectively reverts upstream commit e79df3516d3e ("build: add
libustream and certs to default pkgs").
The libustream-wolfssl library conflicts with the libustream-mbedtls
we are selecting in fff-web-ui and is probably much bigger.
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
[fabian@blaese.de: Rebase onto OpenWrt 23.05]
Signed-off-by: Fabian Bläse <fabian@blaese.de>
diff --git a/include/target.mk b/include/target.mk
index 7526224972e18148fec8a12318ca7f90a382475f..338e97f836759fc454986210e5818ad390ba6efb 100644
index b5e3e7ff6f..2324b6cc11 100644
--- a/include/target.mk
+++ b/include/target.mk
@@ -12,12 +12,10 @@ DEVICE_TYPE?=router
@ -23,7 +22,7 @@ index 7526224972e18148fec8a12318ca7f90a382475f..338e97f836759fc454986210e5818ad3
fstools \
libc \
libgcc \
- libustream-wolfssl \
- libustream-mbedtls \
logd \
mtd \
netifd \

View File

@ -1,72 +0,0 @@
From: Adrian Schmutzler <freifunk@adrianschmutzler.de>
Date: Wed, 10 Feb 2021 22:53:00 +0100
Subject: mac80211: add back ath10k_pci memory hacks
These hacks have been removed in commit 1e27befe63ff ("mac80211: remove
ath10k_pci memory hacks").
However, since we still use mainline ath10k, we will need them.
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
diff --git a/package/kernel/mac80211/patches/ath/960-ath10k-limit-htt-rx-ring-size.patch b/package/kernel/mac80211/patches/ath/960-ath10k-limit-htt-rx-ring-size.patch
new file mode 100644
index 0000000000000000000000000000000000000000..e907c7ab73677a3db928ef3620d77bf22a4d752a
--- /dev/null
+++ b/package/kernel/mac80211/patches/ath/960-ath10k-limit-htt-rx-ring-size.patch
@@ -0,0 +1,11 @@
+--- a/drivers/net/wireless/ath/ath10k/htt.h
++++ b/drivers/net/wireless/ath/ath10k/htt.h
+@@ -236,7 +236,7 @@ enum htt_rx_ring_flags {
+ };
+
+ #define HTT_RX_RING_SIZE_MIN 128
+-#define HTT_RX_RING_SIZE_MAX 2048
++#define HTT_RX_RING_SIZE_MAX 512
+ #define HTT_RX_RING_SIZE HTT_RX_RING_SIZE_MAX
+ #define HTT_RX_RING_FILL_LEVEL (((HTT_RX_RING_SIZE) / 2) - 1)
+ #define HTT_RX_RING_FILL_LEVEL_DUAL_MAC (HTT_RX_RING_SIZE - 1)
diff --git a/package/kernel/mac80211/patches/ath/961-ath10k-limit-pci-buffer-size.patch b/package/kernel/mac80211/patches/ath/961-ath10k-limit-pci-buffer-size.patch
new file mode 100644
index 0000000000000000000000000000000000000000..b5e5c3a9bb00a407096936ece1916e331e0164f5
--- /dev/null
+++ b/package/kernel/mac80211/patches/ath/961-ath10k-limit-pci-buffer-size.patch
@@ -0,0 +1,38 @@
+--- a/drivers/net/wireless/ath/ath10k/pci.c
++++ b/drivers/net/wireless/ath/ath10k/pci.c
+@@ -131,7 +131,7 @@ static const struct ce_attr pci_host_ce_
+ .flags = CE_ATTR_FLAGS,
+ .src_nentries = 0,
+ .src_sz_max = 2048,
+- .dest_nentries = 512,
++ .dest_nentries = 128,
+ .recv_cb = ath10k_pci_htt_htc_rx_cb,
+ },
+
+@@ -140,7 +140,7 @@ static const struct ce_attr pci_host_ce_
+ .flags = CE_ATTR_FLAGS,
+ .src_nentries = 0,
+ .src_sz_max = 2048,
+- .dest_nentries = 128,
++ .dest_nentries = 64,
+ .recv_cb = ath10k_pci_htc_rx_cb,
+ },
+
+@@ -167,7 +167,7 @@ static const struct ce_attr pci_host_ce_
+ .flags = CE_ATTR_FLAGS,
+ .src_nentries = 0,
+ .src_sz_max = 512,
+- .dest_nentries = 512,
++ .dest_nentries = 128,
+ .recv_cb = ath10k_pci_htt_rx_cb,
+ },
+
+@@ -192,7 +192,7 @@ static const struct ce_attr pci_host_ce_
+ .flags = CE_ATTR_FLAGS,
+ .src_nentries = 0,
+ .src_sz_max = 2048,
+- .dest_nentries = 128,
++ .dest_nentries = 96,
+ .recv_cb = ath10k_pci_pktlog_rx_cb,
+ },
+

View File

@ -1,25 +0,0 @@
From: =?UTF-8?q?Fabian=20Bl=C3=A4se?= <fabian@blaese.de>
Date: Mon, 19 Jul 2021 21:54:29 +0200
Subject: [PATCH] ramips: add missing label-mac-device for Xiaomi Mi Router 4A
(100M)
As both the Mi Router 4A (100M) and the Mi Router 4C use the same
label-mac-device, the alias can be moved to the shared dtsi.
Signed-off-by: Fabian Bläse <fabian@blaese.de>
---
target/linux/ramips/dts/mt7628an_xiaomi_mi-router-4.dtsi | 1 +
1 file changed, 1 insertion(+)
diff --git a/target/linux/ramips/dts/mt7628an_xiaomi_mi-router-4.dtsi b/target/linux/ramips/dts/mt7628an_xiaomi_mi-router-4.dtsi
index 0f5897f5c593..d3f5e33be732 100644
--- a/target/linux/ramips/dts/mt7628an_xiaomi_mi-router-4.dtsi
+++ b/target/linux/ramips/dts/mt7628an_xiaomi_mi-router-4.dtsi
@@ -11,6 +11,7 @@
led-failsafe = &led_power_yellow;
led-running = &led_power_blue;
led-upgrade = &led_power_yellow;
+ label-mac-device = &ethernet;
};
chosen {

View File

@ -1,19 +0,0 @@
From: =?UTF-8?q?Fabian=20Bl=C3=A4se?= <fabian@blaese.de>
Date: Sat, 23 Oct 2021 23:34:07 +0200
Subject: [PATCH] mt7621: retain old compat_version
diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
index a3bc14d59d..99887e8192 100644
--- a/target/linux/ramips/image/mt7621.mk
+++ b/target/linux/ramips/image/mt7621.mk
@@ -91,8 +91,7 @@ define Build/zytrx-header
endef
define Device/dsa-migration
- DEVICE_COMPAT_VERSION := 1.1
- DEVICE_COMPAT_MESSAGE := Config cannot be migrated from swconfig to DSA
+ DEVICE_COMPAT_VERSION := 1.0
endef
define Device/adslr_g7

View File

@ -1,132 +0,0 @@
From: =?UTF-8?q?Fabian=20Bl=C3=A4se?= <fabian@blaese.de>
Date: Sat, 7 Aug 2021 00:40:34 +0200
Subject: [PATCH] Disable ipq40xx lan/wan separation
While the ipq40xx only has a single MDIO connection to the switch chip,
the ipq40xx essedma ethernet driver configures two gmac interfaces,
which are seperated into WAN and LAN ports using vlan cid at driver
level. Linux is not aware of these vlan tags.
However, this configuration does interfere with the vlan ids we use in
our firmware. Therefore, this feature is disabled by setting the default
vlan id for all gmacs to 0, changing the port mask so all physical ports
are connected to the first gmac, and reducing the amount of configured
gmacs to one. The definition of the second gmac is kept, because it is
referenced by some devices. The default configuration of the switch chip
is removed accordingly.
These changes are currently only done with the FritzBox 4040 in mind.
---
.../linux/ipq40xx/base-files/etc/board.d/01_leds | 2 +-
.../ipq40xx/base-files/etc/board.d/02_network | 3 +--
.../drivers/net/ethernet/qualcomm/essedma/edma.h | 16 ++++++++--------
.../linux/ipq40xx/files/drivers/net/phy/ar40xx.c | 2 ++
...1-dts-ipq4019-add-ethernet-essedma-node.patch | 6 +++---
5 files changed, 15 insertions(+), 14 deletions(-)
diff --git a/target/linux/ipq40xx/base-files/etc/board.d/01_leds b/target/linux/ipq40xx/base-files/etc/board.d/01_leds
index ac11655904..147e159ea1 100755
--- a/target/linux/ipq40xx/base-files/etc/board.d/01_leds
+++ b/target/linux/ipq40xx/base-files/etc/board.d/01_leds
@@ -19,7 +19,7 @@ asus,rt-ac58u)
;;
avm,fritzbox-4040)
ucidef_set_led_wlan "wlan" "WLAN" "green:wlan" "phy0tpt" "phy1tpt"
- ucidef_set_led_netdev "wan" "WAN" "green:wan" "eth1"
+ ucidef_set_led_switch "wan" "WAN" "green:wan" "switch0" "0x20"
ucidef_set_led_switch "lan" "LAN" "green:lan" "switch0" "0x1e"
;;
avm,fritzbox-7530 |\
diff --git a/target/linux/ipq40xx/base-files/etc/board.d/02_network b/target/linux/ipq40xx/base-files/etc/board.d/02_network
index 1d4c78833a..ea2cc60186 100755
--- a/target/linux/ipq40xx/base-files/etc/board.d/02_network
+++ b/target/linux/ipq40xx/base-files/etc/board.d/02_network
@@ -59,9 +59,8 @@ ipq40xx_setup_interfaces()
linksys,ea6350v3|\
linksys,ea8300|\
linksys,mr8300)
- ucidef_set_interfaces_lan_wan "eth0" "eth1"
ucidef_add_switch "switch0" \
- "0u@eth0" "1:lan" "2:lan" "3:lan" "4:lan"
+ "0@eth0" "1:lan" "2:lan" "3:lan" "4:lan" "5:wan"
;;
avm,fritzbox-7530)
ucidef_add_switch "switch0" \
diff --git a/target/linux/ipq40xx/files/drivers/net/ethernet/qualcomm/essedma/edma.h b/target/linux/ipq40xx/files/drivers/net/ethernet/qualcomm/essedma/edma.h
index 015e5f5026..daa60639d1 100644
--- a/target/linux/ipq40xx/files/drivers/net/ethernet/qualcomm/essedma/edma.h
+++ b/target/linux/ipq40xx/files/drivers/net/ethernet/qualcomm/essedma/edma.h
@@ -57,14 +57,14 @@
#define EDMA_LAN 1
/* VLAN tag */
-#define EDMA_LAN_DEFAULT_VLAN 1
-#define EDMA_WAN_DEFAULT_VLAN 2
-
-#define EDMA_DEFAULT_GROUP1_VLAN 1
-#define EDMA_DEFAULT_GROUP2_VLAN 2
-#define EDMA_DEFAULT_GROUP3_VLAN 3
-#define EDMA_DEFAULT_GROUP4_VLAN 4
-#define EDMA_DEFAULT_GROUP5_VLAN 5
+#define EDMA_LAN_DEFAULT_VLAN 0
+#define EDMA_WAN_DEFAULT_VLAN 0
+
+#define EDMA_DEFAULT_GROUP1_VLAN 0
+#define EDMA_DEFAULT_GROUP2_VLAN 0
+#define EDMA_DEFAULT_GROUP3_VLAN 0
+#define EDMA_DEFAULT_GROUP4_VLAN 0
+#define EDMA_DEFAULT_GROUP5_VLAN 0
/* Queues exposed to linux kernel */
#define EDMA_NETDEV_TX_QUEUE 4
diff --git a/target/linux/ipq40xx/files/drivers/net/phy/ar40xx.c b/target/linux/ipq40xx/files/drivers/net/phy/ar40xx.c
index c35ba2799f..0517e4f29e 100644
--- a/target/linux/ipq40xx/files/drivers/net/phy/ar40xx.c
+++ b/target/linux/ipq40xx/files/drivers/net/phy/ar40xx.c
@@ -1481,6 +1481,7 @@ ar40xx_vlan_init(struct ar40xx_priv *priv)
unsigned long bmp;
/* By default Enable VLAN */
+ /*
priv->vlan = 1;
priv->vlan_table[AR40XX_LAN_VLAN] = priv->cpu_bmp | priv->lan_bmp;
priv->vlan_table[AR40XX_WAN_VLAN] = priv->cpu_bmp | priv->wan_bmp;
@@ -1492,6 +1493,7 @@ ar40xx_vlan_init(struct ar40xx_priv *priv)
bmp = priv->wan_bmp;
for_each_set_bit(port, &bmp, AR40XX_NUM_PORTS)
priv->pvid[port] = AR40XX_WAN_VLAN;
+ */
return 0;
}
diff --git a/target/linux/ipq40xx/patches-5.4/711-dts-ipq4019-add-ethernet-essedma-node.patch b/target/linux/ipq40xx/patches-5.4/711-dts-ipq4019-add-ethernet-essedma-node.patch
index 7b2ddfe00d..1a01b08e41 100644
--- a/target/linux/ipq40xx/patches-5.4/711-dts-ipq4019-add-ethernet-essedma-node.patch
+++ b/target/linux/ipq40xx/patches-5.4/711-dts-ipq4019-add-ethernet-essedma-node.patch
@@ -36,7 +36,7 @@ Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
+ qcom,rx_head_buf_size = <1540>;
+ qcom,mdio_supported;
+ qcom,poll_required = <1>;
-+ qcom,num_gmac = <2>;
++ qcom,num_gmac = <1>;
+ interrupts = <0 65 IRQ_TYPE_EDGE_RISING
+ 0 66 IRQ_TYPE_EDGE_RISING
+ 0 67 IRQ_TYPE_EDGE_RISING
@@ -74,7 +74,7 @@ Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
+
+ gmac0: gmac0 {
+ local-mac-address = [00 00 00 00 00 00];
-+ vlan_tag = <1 0x1f>;
++ vlan_tag = <0 0x3f>;
+ };
+
+ gmac1: gmac1 {
@@ -83,7 +83,7 @@ Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
+ qcom,poll_required = <1>;
+ qcom,forced_speed = <1000>;
+ qcom,forced_duplex = <1>;
-+ vlan_tag = <2 0x20>;
++ vlan_tag = <0 0x00>;
+ };
+ };
+

View File

@ -0,0 +1,27 @@
From: =?UTF-8?q?Fabian=20Bl=C3=A4se?= <fabian@blaese.de>
Date: Sun, 6 Aug 2023 19:57:16 +0200
Subject: [PATCH 1/2] ipq40xx: re-add label MAC address for FritzBox 4040
The MAC address of the GMAC is contained inside the CWMP-Account
number on the label.
The label MAC address alias was defined previously, but it has been
removed with the switch to IPQESS / DSA.
Restore the label MAC address alias.
Fixes: 27b441cbaf42 ("ipq40xx: drop ESSEDMA + AR40xx DTS nodes")
Signed-off-by: Fabian Bläse <fabian@blaese.de>
diff --git a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-fritzbox-4040.dts b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-fritzbox-4040.dts
index e448206c36..ec1112ee2b 100644
--- a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-fritzbox-4040.dts
+++ b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-fritzbox-4040.dts
@@ -14,6 +14,7 @@
led-failsafe = &flash;
led-running = &power;
led-upgrade = &flash;
+ label-mac-device = &gmac;
};
soc {

View File

@ -0,0 +1,17 @@
From: =?UTF-8?q?Fabian=20Bl=C3=A4se?= <fabian@blaese.de>
Date: Tue, 8 Aug 2023 20:59:16 +0200
Subject: [PATCH] ipq40xx: retain old compat_version
diff --git a/target/linux/ipq40xx/image/Makefile b/target/linux/ipq40xx/image/Makefile
index 2ba4c779a0..5851b29875 100644
--- a/target/linux/ipq40xx/image/Makefile
+++ b/target/linux/ipq40xx/image/Makefile
@@ -10,8 +10,6 @@ define Device/Default
IMAGES := sysupgrade.bin
IMAGE/sysupgrade.bin = sysupgrade-tar | append-metadata
IMAGE/sysupgrade.bin/squashfs :=
- DEVICE_COMPAT_VERSION := 1.1
- DEVICE_COMPAT_MESSAGE := Config cannot be migrated from swconfig to DSA
endef
include $(SUBTARGET).mk

View File

@ -0,0 +1,17 @@
From: =?UTF-8?q?Fabian=20Bl=C3=A4se?= <fabian@blaese.de>
Date: Wed, 24 Jan 2024 16:50:12 +0200
Subject: [PATCH] mpc85xx: retain old compat_version
diff --git a/target/linux/mpc85xx/image/p1010.mk b/target/linux/mpc85xx/image/p1010.mk
index c0de19f6c6..5aa580300f 100644
--- a/target/linux/mpc85xx/image/p1010.mk
+++ b/target/linux/mpc85xx/image/p1010.mk
@@ -51,8 +51,6 @@ define Device/tplink_tl-wdr4900-v1
DEVICE_VENDOR := TP-Link
DEVICE_MODEL := TL-WDR4900
DEVICE_VARIANT := v1
- DEVICE_COMPAT_VERSION := 1.1
- DEVICE_COMPAT_MESSAGE := Config cannot be migrated from swconfig to DSA
TPLINK_HEADER_VERSION := 1
TPLINK_HWID := 0x49000001
TPLINK_HWREV := 1

View File

@ -0,0 +1,29 @@
From: =?UTF-8?q?Fabian=20Bl=C3=A4se?= <fabian@blaese.de>
Date: Thu, 24 Feb 2022 00:04:47 +0100
Subject: [PATCH] Add hack which fixes forwarding on a stacked bridge
configuration using DSA
---
.../999-fix-stacked-bridge-forwarding.patch | 12 ++++++++++++
1 file changed, 12 insertions(+)
create mode 100644 target/linux/generic/hack-5.15/999-fix-stacked-bridge-forwarding.patch
diff --git a/target/linux/generic/hack-5.15/999-fix-stacked-bridge-forwarding.patch b/target/linux/generic/hack-5.15/999-fix-stacked-bridge-forwarding.patch
new file mode 100644
index 0000000000..e1d4cb9cd5
--- /dev/null
+++ b/target/linux/generic/hack-5.15/999-fix-stacked-bridge-forwarding.patch
@@ -0,0 +1,12 @@
+--- a/net/bridge/br_input.c
++++ b/net/bridge/br_input.c
+@@ -52,6 +52,9 @@ static int br_pass_frame_up(struct sk_bu
+ return NET_RX_DROP;
+ }
+
++ /* remove offload flag, so upper bridges do not drop the packet */
++ br_switchdev_frame_unmark(skb);
++
+ indev = skb->dev;
+ skb->dev = brdev;
+ skb = br_handle_vlan(br, NULL, vg, skb);

View File

@ -0,0 +1,53 @@
From ab8d25d5ac1b307dacdc3e5e44e23248f4b9a018 Mon Sep 17 00:00:00 2001
From: Serhii Serhieiev <adron@mstnt.com>
Date: Wed, 9 Feb 2022 09:07:57 +0200
Subject: [PATCH 01/18] generic: fix mikrotik/rb_softconfig work(crc mismatch)
with 64K block size
Signed-off-by: Serhii Serhieiev <adron@mstnt.com>
---
.../files/drivers/platform/mikrotik/rb_softconfig.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/target/linux/generic/files/drivers/platform/mikrotik/rb_softconfig.c b/target/linux/generic/files/drivers/platform/mikrotik/rb_softconfig.c
index 5acff6aa91..2332089a46 100644
--- a/target/linux/generic/files/drivers/platform/mikrotik/rb_softconfig.c
+++ b/target/linux/generic/files/drivers/platform/mikrotik/rb_softconfig.c
@@ -58,6 +58,7 @@
#define RB_SOFTCONFIG_VER "0.05"
#define RB_SC_PR_PFX "[rb_softconfig] "
+#define SOFT_CONF_FIXED_SIZE 0x1000
#define RB_SC_HAS_WRITE_SUPPORT true
#define RB_SC_WMODE S_IWUSR
@@ -636,7 +637,7 @@ static ssize_t sc_commit_store(struct kobject *kobj, struct kobj_attribute *attr
write_lock(&sc_bufrwl);
if (!flush) // reread
- ret = mtd_read(mtd, 0, mtd->size, &bytes_rw, sc_buf);
+ ret = mtd_read(mtd, 0, sc_buflen, &bytes_rw, sc_buf);
else { // crc32 + commit
/*
* CRC32 is computed on the entire buffer, excluding the CRC
@@ -658,7 +659,7 @@ static ssize_t sc_commit_store(struct kobject *kobj, struct kobj_attribute *attr
ei.len = mtd->size;
ret = mtd_erase(mtd, &ei);
if (!ret)
- ret = mtd_write(mtd, 0, mtd->size, &bytes_rw, sc_buf);
+ ret = mtd_write(mtd, 0, sc_buflen, &bytes_rw, sc_buf);
/*
* Handling mtd_write() failure here is a tricky situation. The
@@ -708,7 +709,7 @@ int rb_softconfig_init(struct kobject *rb_kobj, struct mtd_info *mtd)
if (ret)
return -ENODEV;
- sc_buflen = mtd->size;
+ sc_buflen = mtd->size > SOFT_CONF_FIXED_SIZE ? SOFT_CONF_FIXED_SIZE : mtd->size;
sc_buf = kmalloc(sc_buflen, GFP_KERNEL);
if (!sc_buf) {
__put_mtd_device(mtd);
--
2.42.1

View File

@ -0,0 +1,70 @@
From d1b6214aadbce601ebf54e8f673bbf427b4e33ec Mon Sep 17 00:00:00 2001
From: Serhii Serhieiev <adron@mstnt.com>
Date: Wed, 9 Feb 2022 09:32:30 +0200
Subject: [PATCH 02/18] mvebu: add aux-loader2 support
This auxiliary bootloader implements the ability to run the OpenWrt Linux kernel(FIT image)
from the RouterBOOT. The thing is that RouterBOOT is able to load ONLY program code in ELF format.
To bypass this restriction, the auxiliary bootloader extends the capabilities of the RouterBOOT -
by adding support for loading system from FIT images.
Source code is available under GPLv2: https://github.com/adron-s/aux-loader2
Signed-off-by: Serhii Serhieiev <adron@mstnt.com>
[fabian@blaese.de: Remove aux-loader blob, as it is only required for initial installation]
Signed-off-by: Fabian Bläse <fabian@blaese.de>
---
target/linux/mvebu/image/Makefile | 12 ++++++++++++
target/linux/mvebu/image/cortexa72.mk | 19 +++++++++++++++++++
2 files changed, 25 insertions(+)
diff --git a/target/linux/mvebu/image/Makefile b/target/linux/mvebu/image/Makefile
index 57129d2dcb..180b909cbd 100644
--- a/target/linux/mvebu/image/Makefile
+++ b/target/linux/mvebu/image/Makefile
@@ -162,6 +162,12 @@ define Build/uDPU-firmware
-f $(KDIR_TMP)/$(DEVICE_IMG_PREFIX)-firmware.tgz -C $@-fw .
endef
+define Device/FitImageLzma
+ KERNEL_SUFFIX := -fit-uImage.itb
+ KERNEL := kernel-bin | lzma | fit lzma $$(KDIR)/image-$$(DEVICE_DTS).dtb | pad-to 64k
+ KERNEL_NAME := Image
+endef
+
define Device/Default
PROFILES := Default
DEVICE_DTS = $$(SOC)-$(lastword $(subst _, ,$(1)))
diff --git a/target/linux/mvebu/image/cortexa72.mk b/target/linux/mvebu/image/cortexa72.mk
index 7f344f1de2..fc4712a597 100644
--- a/target/linux/mvebu/image/cortexa72.mk
+++ b/target/linux/mvebu/image/cortexa72.mk
@@ -52,6 +52,25 @@ define Device/marvell_macchiatobin-singleshot
endef
TARGET_DEVICES += marvell_macchiatobin-singleshot
+define Device/mikrotik_rb5009
+ DEVICE_DTS := armada-7040-rb5009
+ DEVICE_DTS_DIR := $(DTS_DIR)/marvell
+ $(call Device/FitImageLzma)
+ DEVICE_VENDOR := MikroTik
+ DEVICE_MODEL := RB5009
+ SOC := armada-7040
+ KERNEL_LOADADDR := 0x22000000
+ KERNEL_INITRAMFS = $$(KERNEL)
+ KERNEL_INITRAMFS_SUFFIX := -fit-uImage.elf
+ BLOCKSIZE := 64k
+ IMAGE_SIZE := 15360k
+ IMAGES := sysupgrade.bin
+ IMAGE/sysupgrade.bin := append-kernel | pad-to $$(BLOCKSIZE) | \
+ append-rootfs | pad-rootfs | check-size | append-metadata
+ DEVICE_PACKAGES += kmod-i2c-gpio
+endef
+TARGET_DEVICES += mikrotik_rb5009
+
define Device/marvell_clearfog-gt-8k
$(call Device/Default-arm64)
DEVICE_VENDOR := SolidRun
--
2.42.1

View File

@ -0,0 +1,439 @@
From 4994d15a2708e3c2e5df3d91061a4899cb44a979 Mon Sep 17 00:00:00 2001
From: Serhii Serhieiev <adron@mstnt.com>
Date: Wed, 9 Feb 2022 09:45:47 +0200
Subject: [PATCH 03/18] mvebu: mvebu: add support for RB5009UG+S+IN.
This patch adds support for Mikrotik RB5009UG+S+IN.
Specifications:
- SoC: Marvell Armada 7040 (88F7040) - 4 cores, ARMv8, 1.4GHz, 64bit
- RAM: 1024MB DDR4
- Flash: 16MB SPI NOR flash, 1024MB NAND
- Ethernet: One Marvell 88E6393X - Amethyst: one 2.5G + seven 1G ports and one SFP+
- LED: User, SFP, Hdr1, Hdr2
- Buttons: Reset
- UART: 115200 8n1
- USB: One USB3 port
Signed-off-by: Serhii Serhieiev <adron@mstnt.com>
---
.../base-files/etc/board.d/02_network | 3 +
.../base-files/lib/upgrade/platform.sh | 4 +
.../boot/dts/marvell/armada-7040-rb5009.dts | 377 ++++++++++++++++++
3 files changed, 384 insertions(+)
create mode 100644 target/linux/mvebu/files/arch/arm64/boot/dts/marvell/armada-7040-rb5009.dts
diff --git a/target/linux/mvebu/cortexa72/base-files/etc/board.d/02_network b/target/linux/mvebu/cortexa72/base-files/etc/board.d/02_network
index 6a5861084e..ccb89add24 100644
--- a/target/linux/mvebu/cortexa72/base-files/etc/board.d/02_network
+++ b/target/linux/mvebu/cortexa72/base-files/etc/board.d/02_network
@@ -32,6 +32,9 @@ marvell,armada7040-db)
marvell,armada8040-clearfog-gt-8k)
ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4 eth2" "eth0 eth1"
;;
+mikrotik,rb5009)
+ ucidef_set_interfaces_lan_wan "p2 p3 p4 p5 p6 p7 p8" "sfp p1"
+ ;;
*)
ucidef_set_interface_lan "eth0"
;;
diff --git a/target/linux/mvebu/cortexa72/base-files/lib/upgrade/platform.sh b/target/linux/mvebu/cortexa72/base-files/lib/upgrade/platform.sh
index dc964a3117..d61e937cdc 100755
--- a/target/linux/mvebu/cortexa72/base-files/lib/upgrade/platform.sh
+++ b/target/linux/mvebu/cortexa72/base-files/lib/upgrade/platform.sh
@@ -35,6 +35,10 @@ platform_do_upgrade() {
marvell,armada8040-clearfog-gt-8k)
legacy_sdcard_do_upgrade "$1"
;;
+ mikrotik,rb5009)
+ PART_NAME=firmware
+ default_do_upgrade "$1"
+ ;;
*)
default_do_upgrade "$1"
;;
diff --git a/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/armada-7040-rb5009.dts b/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/armada-7040-rb5009.dts
new file mode 100644
index 0000000000..66c74451f0
--- /dev/null
+++ b/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/armada-7040-rb5009.dts
@@ -0,0 +1,377 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+/dts-v1/;
+
+#include "armada-7040.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "MikroTik RB5009";
+ compatible = "mikrotik,rb5009", "marvell,armada7040",
+ "marvell,armada-ap806-quad", "marvell,armada-ap806";
+
+ chosen {
+ stdout-path = "serial0:115200n8";
+ };
+
+ memory@0 {
+ device_type = "memory";
+ reg = <0x0 0x0 0x0 0x40000000>;
+ };
+
+ aliases {
+ led-boot = &led_user;
+ led-failsafe = &led_user;
+ led-running = &led_user;
+ led-upgrade = &led_user;
+ };
+
+ sfp_i2c: sfp-i2c {
+ compatible = "i2c-gpio";
+ sda-gpios = <&cp0_gpio1 0 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+ scl-gpios = <&cp0_gpio1 1 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+ };
+
+ keys {
+ compatible = "gpio-keys";
+
+ reset {
+ label = "reset";
+ gpios = <&cp0_gpio1 28 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_RESTART>;
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ led_user: user {
+ label = "green:user";
+ gpios = <&cp0_gpio2 26 GPIO_ACTIVE_LOW>;
+ };
+
+ sfp {
+ label = "green:sfp";
+ gpios = <&cp0_gpio2 25 GPIO_ACTIVE_LOW>;
+ };
+
+ hdr1 {
+ label = "blue:hdr1";
+ gpios = <&cp0_gpio1 4 GPIO_ACTIVE_LOW>;
+ };
+
+ hdr2 {
+ label = "blue:hdr2";
+ gpios = <&cp0_gpio2 19 GPIO_ACTIVE_LOW>;
+ };
+ };
+
+ sfp: sfp {
+ compatible = "sff,sfp";
+ i2c-bus = <&sfp_i2c>;
+ };
+};
+
+&uart0 {
+ status = "okay";
+
+ pinctrl-0 = <&uart0_pins>;
+ pinctrl-names = "default";
+};
+
+
+&spi0 {
+ status = "okay";
+
+ spi-flash@0 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "jedec,spi-nor";
+ reg = <0>;
+ spi-max-frequency = <20000000>;
+
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ partition@0 {
+ label = "ATF";
+ reg = <0x0 0x95c04>;
+ read-only;
+ };
+ partition@1 {
+ label = "backup_RouterBOOT";
+ reg = <0x95c04 0x193FC>;
+ read-only;
+ };
+ hard_config: partition@2 {
+ label = "hard_config";
+ reg = <0xaf000 0x1000>;
+ read-only;
+ };
+ partition@3 {
+ label = "RouterBOOT";
+ reg = <0xb0000 0x10000>;
+ };
+ partition@4 {
+ label = "soft_config";
+ reg = <0xc0000 0x10000>;
+ };
+ partition@5 {
+ label = "DTS";
+ reg = <0xd0000 0x10000>;
+ read-only;
+ };
+ partition@6 {
+ label = "free_space";
+ reg = <0xe0000 0x20000>;
+ };
+ partition@7 {
+ compatible = "denx,fit";
+ label = "firmware";
+ reg = <0x100000 0xf00000>;
+ };
+ partition@8 {
+ label = "first_1M";
+ reg = <0x0 0x100000>;
+ };
+ };
+ };
+};
+
+&cp0_nand_controller {
+ status = "okay";
+
+ nand@0 {
+ reg = <0>;
+ nand-rb = <0>;
+ nand-ecc-mode = "hw";
+ nand-ecc-strength = <4>;
+ nand-ecc-step-size = <512>;
+ nand-on-flash-bbt;
+
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ partition@0 {
+ label = "RouterBoard NAND Boot";
+ reg = <0x0 0x800000>;
+ };
+
+ partition@800000 {
+ label = "RouterBoard NAND Main";
+ reg = <0x800000 0x3f800000>;
+ };
+ };
+ };
+};
+
+&cp0_gpio2 {
+ enable-usb-power {
+ gpio-hog;
+ gpios = <23 GPIO_ACTIVE_HIGH>;
+ output-high;
+ line-name = "enable USB power";
+ };
+
+ enable-leds-power {
+ gpio-hog;
+ gpios = <27 GPIO_ACTIVE_HIGH>;
+ output-high;
+ line-name = "enable LED-s power";
+ };
+};
+
+&cp0_usb3_1 {
+ status = "okay";
+};
+
+&cp0_i2c0 {
+ status = "okay";
+ clock-frequency = <100000>;
+};
+
+&cp0_mdio {
+ status = "okay";
+};
+
+&cp0_ethernet {
+ status = "okay";
+};
+
+&cp0_eth0 {
+ /* This port is connected to 88E6393X switch */
+ status = "okay";
+ phy-mode = "10gbase-r";
+ managed = "in-band-status";
+ nvmem-cells = <&macaddr_hard>;
+ nvmem-cell-names = "mac-address";
+ mac-address-increment = <0>;
+};
+
+&cp0_mdio {
+ status = "okay";
+
+ switch@0 {
+ /* Actual device is MV88E6393X */
+ compatible = "marvell,mv88e6190";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0>;
+ //strict-cpu-mode = <1>;
+ //reset-gpios = <&cp0_gpio2 2 GPIO_ACTIVE_HIGH>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+ label = "cpu";
+ ethernet = <&cp0_eth0>;
+ };
+
+ port@1 {
+ reg = <1>;
+ label = "p8";
+ phy-handle = <&switch0phy1>;
+ nvmem-cells = <&macaddr_hard>;
+ nvmem-cell-names = "mac-address";
+ mac-address-increment = <7>;
+ };
+
+ port@2 {
+ reg = <2>;
+ label = "p7";
+ phy-handle = <&switch0phy2>;
+ nvmem-cells = <&macaddr_hard>;
+ nvmem-cell-names = "mac-address";
+ mac-address-increment = <6>;
+ };
+
+ port@3 {
+ reg = <3>;
+ label = "p6";
+ phy-handle = <&switch0phy3>;
+ nvmem-cells = <&macaddr_hard>;
+ nvmem-cell-names = "mac-address";
+ mac-address-increment = <5>;
+ };
+
+ port@4 {
+ reg = <4>;
+ label = "p5";
+ phy-handle = <&switch0phy4>;
+ nvmem-cells = <&macaddr_hard>;
+ nvmem-cell-names = "mac-address";
+ mac-address-increment = <4>;
+ };
+
+ port@5 {
+ reg = <5>;
+ label = "p4";
+ phy-handle = <&switch0phy5>;
+ nvmem-cells = <&macaddr_hard>;
+ nvmem-cell-names = "mac-address";
+ mac-address-increment = <3>;
+ };
+
+ port@6 {
+ reg = <6>;
+ label = "p3";
+ phy-handle = <&switch0phy6>;
+ nvmem-cells = <&macaddr_hard>;
+ nvmem-cell-names = "mac-address";
+ mac-address-increment = <2>;
+ };
+
+ port@7 {
+ reg = <7>;
+ label = "p2";
+ phy-handle = <&switch0phy7>;
+ nvmem-cells = <&macaddr_hard>;
+ nvmem-cell-names = "mac-address";
+ mac-address-increment = <1>;
+ };
+
+ port@9 {
+ reg = <9>;
+ label = "p1";
+ phy-mode = "sgmii";
+ phy-handle = <&switch0phy9>;
+ managed = "in-band-status";
+ nvmem-cells = <&macaddr_hard>;
+ nvmem-cell-names = "mac-address";
+ mac-address-increment = <0>;
+ };
+
+ port@a {
+ reg = <10>;
+ label = "sfp";
+ phy-mode = "10gbase-r";
+ managed = "in-band-status";
+ sfp = <&sfp>;
+ nvmem-cells = <&macaddr_hard>;
+ nvmem-cell-names = "mac-address";
+ mac-address-increment = <8>;
+ };
+ };
+
+ mdio {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ switch0phy1: switch0phy1@1 {
+ reg = <0x1>;
+ };
+
+ switch0phy2: switch0phy2@2 {
+ reg = <0x2>;
+ };
+
+ switch0phy3: switch0phy3@3 {
+ reg = <0x3>;
+ };
+
+ switch0phy4: switch0phy4@4 {
+ reg = <0x4>;
+ };
+
+ switch0phy5: switch0phy5@5 {
+ reg = <0x5>;
+ };
+
+ switch0phy6: switch0phy6@6 {
+ reg = <0x6>;
+ };
+
+ switch0phy7: switch0phy7@7 {
+ reg = <0x7>;
+ };
+ };
+
+ mdio1 {
+ compatible = "marvell,mv88e6xxx-mdio-external";
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ switch0phy9: switch0phy9@0 {
+ reg = <0>;
+ };
+ };
+ };
+};
+
+&hard_config {
+ compatible = "nvmem-cells";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ macaddr_hard: macaddr@10 {
+ reg = <0x10 0x6>;
+ };
+};
--
2.42.1

View File

@ -0,0 +1,85 @@
From ddf04b2773e5316e2b645ee669d172e8a61b2d00 Mon Sep 17 00:00:00 2001
From: Serhii Serhieiev <adron@mstnt.com>
Date: Mon, 14 Feb 2022 06:50:56 +0200
Subject: [PATCH 04/18] mvebu: RB5009: start to use UBI
Now UBI on a NAND flash drive is used as rootfs.
The kernel is still located on a NOR flash drive in the form of a FIT image.
Signed-off-by: Serhii Serhieiev <adron@mstnt.com>
---
.../cortexa72/base-files/lib/upgrade/platform.sh | 3 +--
.../arm64/boot/dts/marvell/armada-7040-rb5009.dts | 12 +++---------
target/linux/mvebu/image/cortexa72.mk | 6 +-----
3 files changed, 5 insertions(+), 16 deletions(-)
diff --git a/target/linux/mvebu/cortexa72/base-files/lib/upgrade/platform.sh b/target/linux/mvebu/cortexa72/base-files/lib/upgrade/platform.sh
index d61e937cdc..55bdfb7264 100755
--- a/target/linux/mvebu/cortexa72/base-files/lib/upgrade/platform.sh
+++ b/target/linux/mvebu/cortexa72/base-files/lib/upgrade/platform.sh
@@ -36,8 +36,7 @@ platform_do_upgrade() {
legacy_sdcard_do_upgrade "$1"
;;
mikrotik,rb5009)
- PART_NAME=firmware
- default_do_upgrade "$1"
+ nand_do_upgrade "$1"
;;
*)
default_do_upgrade "$1"
diff --git a/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/armada-7040-rb5009.dts b/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/armada-7040-rb5009.dts
index 66c74451f0..5535f8ad89 100644
--- a/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/armada-7040-rb5009.dts
+++ b/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/armada-7040-rb5009.dts
@@ -129,8 +129,7 @@
reg = <0xe0000 0x20000>;
};
partition@7 {
- compatible = "denx,fit";
- label = "firmware";
+ label = "kernel";
reg = <0x100000 0xf00000>;
};
partition@8 {
@@ -158,13 +157,8 @@
#size-cells = <1>;
partition@0 {
- label = "RouterBoard NAND Boot";
- reg = <0x0 0x800000>;
- };
-
- partition@800000 {
- label = "RouterBoard NAND Main";
- reg = <0x800000 0x3f800000>;
+ label = "ubi";
+ reg = <0x0 0x40000000>;
};
};
};
diff --git a/target/linux/mvebu/image/cortexa72.mk b/target/linux/mvebu/image/cortexa72.mk
index fc4712a597..9f872d3afc 100644
--- a/target/linux/mvebu/image/cortexa72.mk
+++ b/target/linux/mvebu/image/cortexa72.mk
@@ -56,17 +56,13 @@ define Device/mikrotik_rb5009
DEVICE_DTS := armada-7040-rb5009
DEVICE_DTS_DIR := $(DTS_DIR)/marvell
$(call Device/FitImageLzma)
+ $(Device/NAND-128K)
DEVICE_VENDOR := MikroTik
DEVICE_MODEL := RB5009
SOC := armada-7040
KERNEL_LOADADDR := 0x22000000
KERNEL_INITRAMFS = $$(KERNEL)
KERNEL_INITRAMFS_SUFFIX := -fit-uImage.elf
- BLOCKSIZE := 64k
- IMAGE_SIZE := 15360k
- IMAGES := sysupgrade.bin
- IMAGE/sysupgrade.bin := append-kernel | pad-to $$(BLOCKSIZE) | \
- append-rootfs | pad-rootfs | check-size | append-metadata
DEVICE_PACKAGES += kmod-i2c-gpio
endef
TARGET_DEVICES += mikrotik_rb5009
--
2.42.1

View File

@ -0,0 +1,29 @@
From de0624d0317cd14d6eba6b239457de6f2596d1e7 Mon Sep 17 00:00:00 2001
From: Serhii Serhieiev <adron@mstnt.com>
Date: Tue, 15 Feb 2022 07:35:09 +0200
Subject: [PATCH 06/18] mvebu: RB5009: remove sfp port from wan bridge
The presence of two bridges leads to a conflict between vlans
and Wan ports become inoperative.
Signed-off-by: Serhii Serhieiev <adron@mstnt.com>
---
target/linux/mvebu/cortexa72/base-files/etc/board.d/02_network | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/target/linux/mvebu/cortexa72/base-files/etc/board.d/02_network b/target/linux/mvebu/cortexa72/base-files/etc/board.d/02_network
index ccb89add24..e1703029be 100644
--- a/target/linux/mvebu/cortexa72/base-files/etc/board.d/02_network
+++ b/target/linux/mvebu/cortexa72/base-files/etc/board.d/02_network
@@ -33,7 +33,7 @@ marvell,armada8040-clearfog-gt-8k)
ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4 eth2" "eth0 eth1"
;;
mikrotik,rb5009)
- ucidef_set_interfaces_lan_wan "p2 p3 p4 p5 p6 p7 p8" "sfp p1"
+ ucidef_set_interfaces_lan_wan "p2 p3 p4 p5 p6 p7 p8 sfp" "p1"
;;
*)
ucidef_set_interface_lan "eth0"
--
2.42.1

View File

@ -0,0 +1,32 @@
From daf670f8f34df3169d64f1d9e45453c3b0f61185 Mon Sep 17 00:00:00 2001
From: Robert Marko <robimarko@gmail.com>
Date: Mon, 14 Mar 2022 18:55:25 +0100
Subject: [PATCH 07/18] mvebu: rb5009: add SFP GPIO pins
After finally being able to trace them out using a breakout lets add the
required SFP GPIO pins.
Signed-off-by: Robert Marko <robimarko@gmail.com>
---
.../files/arch/arm64/boot/dts/marvell/armada-7040-rb5009.dts | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/armada-7040-rb5009.dts b/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/armada-7040-rb5009.dts
index 5535f8ad89..0babac6f08 100644
--- a/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/armada-7040-rb5009.dts
+++ b/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/armada-7040-rb5009.dts
@@ -70,6 +70,11 @@
sfp: sfp {
compatible = "sff,sfp";
i2c-bus = <&sfp_i2c>;
+ mod-def0-gpios = <&cp0_gpio1 11 GPIO_ACTIVE_LOW>;
+ los-gpios = <&cp0_gpio1 2 GPIO_ACTIVE_HIGH>;
+ tx-fault-gpios = <&cp0_gpio1 6 GPIO_ACTIVE_HIGH>;
+ tx-disable-gpios = <&cp0_gpio1 5 GPIO_ACTIVE_HIGH>;
+ rate-select0-gpios = <&cp0_gpio1 3 GPIO_ACTIVE_HIGH>;
};
};
--
2.42.1

View File

@ -0,0 +1,39 @@
From 16969a4451e09d1bd0b7aff2208d514a6bcbf011 Mon Sep 17 00:00:00 2001
From: Stijn Segers <foss@volatilesystems.org>
Date: Tue, 20 Sep 2022 23:05:43 +0200
Subject: [PATCH 08/18] mvebu: rb5009: use QCA8081 label for 2.5 GbE port in
DTS
The SFP+ interface is clearly labeled as such in the DTS,
unlike the 2,5 GbE QCA8081. Label it to distinguish it from
the GbE ports as well. Taken from robimarko's tree at
https://github.com/robimarko/openwrt/tree/rb5009-5.15.
---
.../files/arch/arm64/boot/dts/marvell/armada-7040-rb5009.dts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/armada-7040-rb5009.dts b/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/armada-7040-rb5009.dts
index 0babac6f08..0c9742d2d8 100644
--- a/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/armada-7040-rb5009.dts
+++ b/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/armada-7040-rb5009.dts
@@ -301,7 +301,7 @@
reg = <9>;
label = "p1";
phy-mode = "sgmii";
- phy-handle = <&switch0phy9>;
+ phy-handle = <&qca8081>;
managed = "in-band-status";
nvmem-cells = <&macaddr_hard>;
nvmem-cell-names = "mac-address";
@@ -358,7 +358,7 @@
#address-cells = <1>;
#size-cells = <0>;
- switch0phy9: switch0phy9@0 {
+ qca8081: qca8081@0 {
reg = <0>;
};
};
--
2.42.1

View File

@ -0,0 +1,24 @@
From a4964c4d4d8367d3dbf225efaa4488af76c4e97a Mon Sep 17 00:00:00 2001
From: Stijn Segers <foss@volatilesystems.org>
Date: Wed, 30 Nov 2022 19:23:29 +0100
Subject: [PATCH 09/18] mvebu: cortexa72: add missing symbol
---
target/linux/mvebu/cortexa72/config-5.15 | 1 +
1 file changed, 1 insertion(+)
diff --git a/target/linux/mvebu/cortexa72/config-5.15 b/target/linux/mvebu/cortexa72/config-5.15
index 978208f1cb..27a413c624 100644
--- a/target/linux/mvebu/cortexa72/config-5.15
+++ b/target/linux/mvebu/cortexa72/config-5.15
@@ -93,6 +93,7 @@ CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
CONFIG_SWIOTLB=y
CONFIG_SYSCTL_EXCEPTION_TRACE=y
CONFIG_THREAD_INFO_IN_TASK=y
+# CONFIG_UCLAMP_TASK is not set
CONFIG_UNMAP_KERNEL_AT_EL0=y
CONFIG_VMAP_STACK=y
CONFIG_ZONE_DMA32=y
--
2.42.1

View File

@ -0,0 +1,35 @@
From 3363cd5d3afd161f3a6d1aa94889c36c42073216 Mon Sep 17 00:00:00 2001
From: Stijn Segers <foss@volatilesystems.org>
Date: Sun, 18 Sep 2022 15:46:26 +0200
Subject: [PATCH 10/18] mvebu: cortexa72: enable SBSA Watchdog, Mikrotik RB
Sysfs and MTD_SPLIT_FIT_FW
---
target/linux/mvebu/cortexa72/config-5.15 | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/target/linux/mvebu/cortexa72/config-5.15 b/target/linux/mvebu/cortexa72/config-5.15
index 27a413c624..0f19de730e 100644
--- a/target/linux/mvebu/cortexa72/config-5.15
+++ b/target/linux/mvebu/cortexa72/config-5.15
@@ -35,6 +35,7 @@ CONFIG_ARM_GIC_V3_ITS=y
CONFIG_ARM_GIC_V3_ITS_PCI=y
# CONFIG_ARM_PL172_MPMC is not set
CONFIG_ARM_PSCI_FW=y
+CONFIG_ARM_SBSA_WATCHDOG=y
CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y
CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y
CONFIG_CPU_LITTLE_ENDIAN=y
@@ -54,6 +55,9 @@ CONFIG_MFD_IEI_WT61P803_PUZZLE=y
CONFIG_MFD_SYSCON=y
CONFIG_MMC_SDHCI_XENON=y
CONFIG_MODULES_USE_ELF_RELA=y
+CONFIG_MIKROTIK=y
+CONFIG_MIKROTIK_RB_SYSFS=y
+CONFIG_MTD_SPLIT_FIT_FW=y
CONFIG_MVEBU_GICP=y
CONFIG_MVEBU_ICU=y
CONFIG_MVEBU_ODMI=y
--
2.42.1

View File

@ -0,0 +1,30 @@
From 97711723fb3d695c87133b2ec6ab5a9b6dea352c Mon Sep 17 00:00:00 2001
From: Stijn Segers <foss@volatilesystems.org>
Date: Fri, 23 Sep 2022 23:54:15 +0200
Subject: [PATCH 11/18] mvebu: cortexa72: performance as default scheduler
It looks more and more like demand-based governors cause extra
jitter, so ditch 'schedutil' and switch to 'performance'
Signed-off-by: Stijn Segers <foss@volatilesystems.org>
---
target/linux/mvebu/cortexa72/config-5.15 | 3 +++
1 file changed, 3 insertions(+)
diff --git a/target/linux/mvebu/cortexa72/config-5.15 b/target/linux/mvebu/cortexa72/config-5.15
index 0f19de730e..5d7b5594aa 100644
--- a/target/linux/mvebu/cortexa72/config-5.15
+++ b/target/linux/mvebu/cortexa72/config-5.15
@@ -38,6 +38,9 @@ CONFIG_ARM_PSCI_FW=y
CONFIG_ARM_SBSA_WATCHDOG=y
CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y
CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_LITTLE_ENDIAN=y
CONFIG_DMA_DIRECT_REMAP=y
CONFIG_FRAME_POINTER=y
--
2.42.1

View File

@ -0,0 +1,118 @@
From facbe16f6981dccaf682980a2cb18790d6eae0d2 Mon Sep 17 00:00:00 2001
From: Robert Marko <robimarko@gmail.com>
Date: Sun, 30 Jan 2022 13:03:13 +0100
Subject: [PATCH 12/18] mvebu: add Amethyst specific SMI setup
Amethyst switches require different external SMI GPIO setup then other
switches, so provide it since RB5009 uses the external SMI bus.
Signed-off-by: Robert Marko <robimarko@gmail.com>
---
...x-add-Amethyst-specific-SMI-GPIO-fun.patch | 95 +++++++++++++++++++
1 file changed, 95 insertions(+)
create mode 100644 target/linux/mvebu/patches-5.15/706-net-dsa-mv88e6xxx-add-Amethyst-specific-SMI-GPIO-fun.patch
diff --git a/target/linux/mvebu/patches-5.15/706-net-dsa-mv88e6xxx-add-Amethyst-specific-SMI-GPIO-fun.patch b/target/linux/mvebu/patches-5.15/706-net-dsa-mv88e6xxx-add-Amethyst-specific-SMI-GPIO-fun.patch
new file mode 100644
index 0000000000..248b8b9d6c
--- /dev/null
+++ b/target/linux/mvebu/patches-5.15/706-net-dsa-mv88e6xxx-add-Amethyst-specific-SMI-GPIO-fun.patch
@@ -0,0 +1,95 @@
+From 40aa82107e7b1e7f20cbf6e644005c0c606f9f79 Mon Sep 17 00:00:00 2001
+From: Robert Marko <robimarko@gmail.com>
+Date: Fri, 14 Jan 2022 15:17:37 +0100
+Subject: [PATCH] net: dsa: mv88e6xxx: add Amethyst specific SMI GPIO function
+
+The existing mv88e6xxx_g2_scratch_gpio_set_smi() cannot be used on the
+88E6393X as it requires certain P0_MODE, it also checks the CPU mode
+as it impacts the bit setting value.
+
+This is all irrelevant for Amethyst (MV88E6191X/6193X/6393X) as only
+the default value of the SMI_PHY Config bit is set to CPU_MGD bootstrap
+pin value but it can be changed without restrictions so that GPIO pins
+9 and 10 are used as SMI pins.
+
+So, introduce Amethyst specific function and call that if the Amethyst
+family wants to setup the external PHY.
+
+Signed-off-by: Robert Marko <robimarko@gmail.com>
+---
+ drivers/net/dsa/mv88e6xxx/chip.c | 5 +++-
+ drivers/net/dsa/mv88e6xxx/global2.h | 2 ++
+ drivers/net/dsa/mv88e6xxx/global2_scratch.c | 31 +++++++++++++++++++++
+ 3 files changed, 37 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
+index 43d126628610..b3803101d612 100644
+--- a/drivers/net/dsa/mv88e6xxx/chip.c
++++ b/drivers/net/dsa/mv88e6xxx/chip.c
+@@ -3409,7 +3409,10 @@ static int mv88e6xxx_mdio_register(struct mv88e6xxx_chip *chip,
+
+ if (external) {
+ mv88e6xxx_reg_lock(chip);
+- err = mv88e6xxx_g2_scratch_gpio_set_smi(chip, true);
++ if (chip->info->family == MV88E6XXX_FAMILY_6393)
++ err = mv88e6393x_g2_scratch_gpio_set_smi(chip, true);
++ else
++ err = mv88e6xxx_g2_scratch_gpio_set_smi(chip, true);
+ mv88e6xxx_reg_unlock(chip);
+
+ if (err)
+diff --git a/drivers/net/dsa/mv88e6xxx/global2.h b/drivers/net/dsa/mv88e6xxx/global2.h
+index f3e27573a386..e0649f21f28e 100644
+--- a/drivers/net/dsa/mv88e6xxx/global2.h
++++ b/drivers/net/dsa/mv88e6xxx/global2.h
+@@ -370,6 +370,8 @@ extern const struct mv88e6xxx_gpio_ops mv88e6352_gpio_ops;
+
+ int mv88e6xxx_g2_scratch_gpio_set_smi(struct mv88e6xxx_chip *chip,
+ bool external);
++int mv88e6393x_g2_scratch_gpio_set_smi(struct mv88e6xxx_chip *chip,
++ bool external);
+ int mv88e6xxx_g2_atu_stats_set(struct mv88e6xxx_chip *chip, u16 kind, u16 bin);
+ int mv88e6xxx_g2_atu_stats_get(struct mv88e6xxx_chip *chip, u16 *stats);
+
+diff --git a/drivers/net/dsa/mv88e6xxx/global2_scratch.c b/drivers/net/dsa/mv88e6xxx/global2_scratch.c
+index eda710062933..dc3f4645fa52 100644
+--- a/drivers/net/dsa/mv88e6xxx/global2_scratch.c
++++ b/drivers/net/dsa/mv88e6xxx/global2_scratch.c
+@@ -289,3 +289,34 @@ int mv88e6xxx_g2_scratch_gpio_set_smi(struct mv88e6xxx_chip *chip,
+
+ return mv88e6xxx_g2_scratch_write(chip, misc_cfg, val);
+ }
++
++/**
++ * mv88e6393x_g2_scratch_gpio_set_smi - set gpio muxing for external smi
++ * @chip: chip private data
++ * @external: set mux for external smi, or free for gpio usage
++ *
++ * MV88E6191X/6193X/6393X GPIO pins 9 and 10 can be configured as an
++ * external SMI interface or as regular GPIO-s.
++ *
++ * They however have a different register layout then the existing
++ * function.
++ */
++
++int mv88e6393x_g2_scratch_gpio_set_smi(struct mv88e6xxx_chip *chip,
++ bool external)
++{
++ int misc_cfg = MV88E6352_G2_SCRATCH_MISC_CFG;
++ int err;
++ u8 val;
++
++ err = mv88e6xxx_g2_scratch_read(chip, misc_cfg, &val);
++ if (err)
++ return err;
++
++ if (external)
++ val &= ~MV88E6352_G2_SCRATCH_MISC_CFG_NORMALSMI;
++ else
++ val |= MV88E6352_G2_SCRATCH_MISC_CFG_NORMALSMI;
++
++ return mv88e6xxx_g2_scratch_write(chip, misc_cfg, val);
++}
+--
+2.34.1
+
--
2.42.1

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,29 @@
From 211bc4d66dd5b1c17ad85ed1a51bf202aa8c62b5 Mon Sep 17 00:00:00 2001
From: Stijn Segers <foss@volatilesystems.org>
Date: Sun, 18 Sep 2022 17:07:22 +0200
Subject: [PATCH 14/18] mvebu: rb5009: add QCA8081 PHY support for 5.15
The required DT nodes area already in adrons's RB5009 DTS, so we
only need to enable the relevant kernel symbol in 5.15.
Robimarko's tree use the 'qca8081' label whereas adrons's uses
the more generic 'switch0phy9' one.
---
target/linux/mvebu/cortexa72/config-5.15 | 1 +
1 file changed, 1 insertion(+)
diff --git a/target/linux/mvebu/cortexa72/config-5.15 b/target/linux/mvebu/cortexa72/config-5.15
index 5d7b5594aa..29d9ee3556 100644
--- a/target/linux/mvebu/cortexa72/config-5.15
+++ b/target/linux/mvebu/cortexa72/config-5.15
@@ -36,6 +36,7 @@ CONFIG_ARM_GIC_V3_ITS_PCI=y
# CONFIG_ARM_PL172_MPMC is not set
CONFIG_ARM_PSCI_FW=y
CONFIG_ARM_SBSA_WATCHDOG=y
+CONFIG_AT803X_PHY=y
CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y
CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
--
2.42.1

View File

@ -0,0 +1,154 @@
From e1abb1ddb7177391d9e02be985e5950d3dd233e0 Mon Sep 17 00:00:00 2001
From: Stijn Segers <foss@volatilesystems.org>
Date: Sat, 26 Aug 2023 12:08:34 +0200
Subject: [PATCH 15/18] generic: backport 5.18 AT803x fiber support patch
Commit e1242fc3390 backported some 5.18 AT803x patches, which were
modified to apply to 5.15. With the QCA8081 patches part of the 5.16
merge window, those 5.18 AT803x patches need to be the actual upstream
ones; otherwise RB5009UG just hangs at boot time.
Signed-off-by: Stijn Segers <foss@volatilesystems.org>
---
...-01-net-phy-at803x-add-fiber-support.patch | 37 ++++++++++---------
1 file changed, 20 insertions(+), 17 deletions(-)
diff --git a/target/linux/generic/backport-5.15/778-v5.18-01-net-phy-at803x-add-fiber-support.patch b/target/linux/generic/backport-5.15/778-v5.18-01-net-phy-at803x-add-fiber-support.patch
index 7cb21ed00d..989dc06ca6 100644
--- a/target/linux/generic/backport-5.15/778-v5.18-01-net-phy-at803x-add-fiber-support.patch
+++ b/target/linux/generic/backport-5.15/778-v5.18-01-net-phy-at803x-add-fiber-support.patch
@@ -20,9 +20,11 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/at803x.c | 76 +++++++++++++++++++++++++++++++++++-----
1 file changed, 67 insertions(+), 9 deletions(-)
+diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c
+index 052b2eb9f101f..3f3d4c164df40 100644
--- a/drivers/net/phy/at803x.c
+++ b/drivers/net/phy/at803x.c
-@@ -48,6 +48,8 @@
+@@ -51,6 +51,8 @@
#define AT803X_INTR_ENABLE_PAGE_RECEIVED BIT(12)
#define AT803X_INTR_ENABLE_LINK_FAIL BIT(11)
#define AT803X_INTR_ENABLE_LINK_SUCCESS BIT(10)
@@ -31,10 +33,11 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
#define AT803X_INTR_ENABLE_WIRESPEED_DOWNGRADE BIT(5)
#define AT803X_INTR_ENABLE_POLARITY_CHANGED BIT(1)
#define AT803X_INTR_ENABLE_WOL BIT(0)
-@@ -82,6 +84,17 @@
+@@ -85,7 +87,17 @@
+ #define AT803X_DEBUG_DATA 0x1E
#define AT803X_MODE_CFG_MASK 0x0F
- #define AT803X_MODE_CFG_SGMII 0x01
+-#define AT803X_MODE_CFG_SGMII 0x01
+#define AT803X_MODE_CFG_BASET_RGMII 0x00
+#define AT803X_MODE_CFG_BASET_SGMII 0x01
+#define AT803X_MODE_CFG_BX1000_RGMII_50OHM 0x02
@@ -49,7 +52,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
#define AT803X_PSSR 0x11 /*PHY-Specific Status Register*/
#define AT803X_PSSR_MR_AN_COMPLETE 0x0200
-@@ -199,6 +212,8 @@ struct at803x_priv {
+@@ -283,6 +295,8 @@ struct at803x_priv {
u16 clk_25m_mask;
u8 smarteee_lpi_tw_1g;
u8 smarteee_lpi_tw_100m;
@@ -58,7 +61,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
struct regulator_dev *vddio_rdev;
struct regulator_dev *vddh_rdev;
struct regulator *vddio;
-@@ -674,7 +689,33 @@ static int at803x_probe(struct phy_devic
+@@ -784,7 +798,33 @@ static int at803x_probe(struct phy_device *phydev)
return ret;
}
@@ -92,7 +95,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
}
static void at803x_remove(struct phy_device *phydev)
-@@ -687,6 +728,7 @@ static void at803x_remove(struct phy_dev
+@@ -797,6 +837,7 @@ static void at803x_remove(struct phy_device *phydev)
static int at803x_get_features(struct phy_device *phydev)
{
@@ -100,7 +103,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
int err;
err = genphy_read_abilities(phydev);
-@@ -704,12 +746,13 @@ static int at803x_get_features(struct ph
+@@ -823,12 +864,13 @@ static int at803x_get_features(struct phy_device *phydev)
* As a result of that, ESTATUS_1000_XFULL is set
* to 1 even when operating in copper TP mode.
*
@@ -119,7 +122,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
return 0;
}
-@@ -773,15 +816,18 @@ static int at8031_pll_config(struct phy_
+@@ -892,15 +934,18 @@ static int at8031_pll_config(struct phy_device *phydev)
static int at803x_config_init(struct phy_device *phydev)
{
@@ -141,7 +144,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
phy_unlock_mdio_bus(phydev);
if (ret)
return ret;
-@@ -840,6 +886,7 @@ static int at803x_ack_interrupt(struct p
+@@ -959,6 +1004,7 @@ static int at803x_ack_interrupt(struct phy_device *phydev)
static int at803x_config_intr(struct phy_device *phydev)
{
@@ -149,7 +152,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
int err;
int value;
-@@ -856,6 +903,10 @@ static int at803x_config_intr(struct phy
+@@ -975,6 +1021,10 @@ static int at803x_config_intr(struct phy_device *phydev)
value |= AT803X_INTR_ENABLE_DUPLEX_CHANGED;
value |= AT803X_INTR_ENABLE_LINK_FAIL;
value |= AT803X_INTR_ENABLE_LINK_SUCCESS;
@@ -160,12 +163,12 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
err = phy_write(phydev, AT803X_INTR_ENABLE, value);
} else {
-@@ -923,8 +974,12 @@ static void at803x_link_change_notify(st
+@@ -1107,8 +1157,12 @@ static int at803x_read_specific_status(struct phy_device *phydev)
static int at803x_read_status(struct phy_device *phydev)
{
+ struct at803x_priv *priv = phydev->priv;
- int ss, err, old_link = phydev->link;
+ int err, old_link = phydev->link;
+ if (priv->is_1000basex)
+ return genphy_c37_read_status(phydev);
@@ -173,7 +176,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
/* Update the link, but return if there was an error */
err = genphy_update_link(phydev);
if (err)
-@@ -1023,6 +1078,7 @@ static int at803x_config_mdix(struct phy
+@@ -1162,6 +1216,7 @@ static int at803x_config_mdix(struct phy_device *phydev, u8 ctrl)
static int at803x_config_aneg(struct phy_device *phydev)
{
@@ -181,13 +184,13 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
int ret;
ret = at803x_config_mdix(phydev, phydev->mdix_ctrl);
-@@ -1039,6 +1095,9 @@ static int at803x_config_aneg(struct phy
+@@ -1178,6 +1233,9 @@ static int at803x_config_aneg(struct phy_device *phydev)
return ret;
}
+ if (priv->is_1000basex)
+ return genphy_c37_config_aneg(phydev);
+
- return genphy_config_aneg(phydev);
- }
-
+ /* Do not restart auto-negotiation by setting ret to 0 defautly,
+ * when calling __genphy_config_aneg later.
+ */
--
2.42.1

View File

@ -0,0 +1,70 @@
From fa76a94d8c10d66f0204500e3cb86969b6ba4bd7 Mon Sep 17 00:00:00 2001
From: Stijn Segers <foss@volatilesystems.org>
Date: Sat, 26 Aug 2023 12:13:58 +0200
Subject: [PATCH 16/18] generic: replace at803x null pointer fix with upstream
one
Signed-off-by: Stijn Segers <foss@volatilesystems.org>
---
...LL-pointer-dereference-on-AR9331-PHY.patch | 27 +++++++++++++++++--
1 file changed, 25 insertions(+), 2 deletions(-)
diff --git a/target/linux/generic/backport-5.15/778-v5.18-03-net-phy-at803x-fix-NULL-pointer-dereference-on-AR9331-PHY.patch b/target/linux/generic/backport-5.15/778-v5.18-03-net-phy-at803x-fix-NULL-pointer-dereference-on-AR9331-PHY.patch
index 53d6325c49..0ac5fda4a0 100644
--- a/target/linux/generic/backport-5.15/778-v5.18-03-net-phy-at803x-fix-NULL-pointer-dereference-on-AR9331-PHY.patch
+++ b/target/linux/generic/backport-5.15/778-v5.18-03-net-phy-at803x-fix-NULL-pointer-dereference-on-AR9331-PHY.patch
@@ -1,8 +1,10 @@
-From 9926de7315be3d606cc011a305ad9adb9e8e14c9 Mon Sep 17 00:00:00 2001
+From 66fa352215e8455ba2e5f33793535795bd3e36ca Mon Sep 17 00:00:00 2001
From: Oleksij Rempel <o.rempel@pengutronix.de>
Date: Sat, 18 Jun 2022 14:23:33 +0200
Subject: [PATCH] net: phy: at803x: fix NULL pointer dereference on AR9331 PHY
+[ Upstream commit 9926de7315be3d606cc011a305ad9adb9e8e14c9 ]
+
Latest kernel will explode on the PHY interrupt config, since it depends
now on allocated priv. So, run probe to allocate priv to fix it.
@@ -39,13 +41,16 @@ Fixes: 3265f4218878 ("net: phy: at803x: add fiber support")
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/phy/at803x.c | 6 ++++++
1 file changed, 6 insertions(+)
+diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c
+index 6a467e7817a6a..59fe356942b51 100644
--- a/drivers/net/phy/at803x.c
+++ b/drivers/net/phy/at803x.c
-@@ -1592,6 +1592,8 @@ static struct phy_driver at803x_driver[]
+@@ -2072,6 +2072,8 @@ static struct phy_driver at803x_driver[] = {
/* ATHEROS AR9331 */
PHY_ID_MATCH_EXACT(ATH9331_PHY_ID),
.name = "Qualcomm Atheros AR9331 built-in PHY",
@@ -54,3 +59,21 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
.suspend = at803x_suspend,
.resume = at803x_resume,
.flags = PHY_POLL_CABLE_TEST,
+@@ -2087,6 +2089,8 @@ static struct phy_driver at803x_driver[] = {
+ /* Qualcomm Atheros QCA9561 */
+ PHY_ID_MATCH_EXACT(QCA9561_PHY_ID),
+ .name = "Qualcomm Atheros QCA9561 built-in PHY",
++ .probe = at803x_probe,
++ .remove = at803x_remove,
+ .suspend = at803x_suspend,
+ .resume = at803x_resume,
+ .flags = PHY_POLL_CABLE_TEST,
+@@ -2151,6 +2155,8 @@ static struct phy_driver at803x_driver[] = {
+ PHY_ID_MATCH_EXACT(QCA8081_PHY_ID),
+ .name = "Qualcomm QCA8081",
+ .flags = PHY_POLL_CABLE_TEST,
++ .probe = at803x_probe,
++ .remove = at803x_remove,
+ .config_intr = at803x_config_intr,
+ .handle_interrupt = at803x_handle_interrupt,
+ .get_tunable = at803x_get_tunable,
--
2.42.1

View File

@ -0,0 +1,172 @@
From 3202c7d6107b5c09d1995a23e8fb0625922789b3 Mon Sep 17 00:00:00 2001
From: Stijn Segers <foss@volatilesystems.org>
Date: Sat, 29 Apr 2023 16:35:49 +0200
Subject: [PATCH 17/18] kernel: replace QCA8081 2.5Gb patch with upstream one
The v2 of this patch was merged into 5.17. Drop the old patch
and replace it with v2.
---
...a8081-with-speeds-lower-than-2.5Gb-s.patch | 59 +++++++++++++
...a8081-with-speeds-lower-than-2.5Gb-s.patch | 84 -------------------
2 files changed, 59 insertions(+), 84 deletions(-)
create mode 100644 target/linux/generic/backport-5.15/778-v5.17-net-phy-Fix-qca8081-with-speeds-lower-than-2.5Gb-s.patch
delete mode 100644 target/linux/generic/pending-5.15/790-net-net-phy-Fix-qca8081-with-speeds-lower-than-2.5Gb-s.patch
diff --git a/target/linux/generic/backport-5.15/778-v5.17-net-phy-Fix-qca8081-with-speeds-lower-than-2.5Gb-s.patch b/target/linux/generic/backport-5.15/778-v5.17-net-phy-Fix-qca8081-with-speeds-lower-than-2.5Gb-s.patch
new file mode 100644
index 0000000000..1d8e7997fd
--- /dev/null
+++ b/target/linux/generic/backport-5.15/778-v5.17-net-phy-Fix-qca8081-with-speeds-lower-than-2.5Gb-s.patch
@@ -0,0 +1,59 @@
+From 881cc731df6af99a21622e9be25a23b81adcd10b Mon Sep 17 00:00:00 2001
+From: Jonathan McDowell <noodles@earth.li>
+Date: Mon, 31 Jan 2022 13:56:41 +0000
+Subject: [PATCH] net: phy: Fix qca8081 with speeds lower than 2.5Gb/s
+
+A typo in qca808x_read_status means we try to set SMII mode on the port
+rather than SGMII when the link speed is not 2.5Gb/s. This results in no
+traffic due to the mismatch in configuration between the phy and the
+mac.
+
+v2:
+ Only change interface mode when the link is up
+
+Fixes: 79c7bc0521545 ("net: phy: add qca8081 read_status")
+Cc: stable@vger.kernel.org
+Signed-off-by: Jonathan McDowell <noodles@earth.li>
+Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+---
+ drivers/net/phy/at803x.c | 26 +++++++++++++-------------
+ 1 file changed, 13 insertions(+), 13 deletions(-)
+
+diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c
+index 5b6c0d120e09e2..29aa811af430f0 100644
+--- a/drivers/net/phy/at803x.c
++++ b/drivers/net/phy/at803x.c
+@@ -1688,19 +1688,19 @@ static int qca808x_read_status(struct phy_device *phydev)
+ if (ret < 0)
+ return ret;
+
+- if (phydev->link && phydev->speed == SPEED_2500)
+- phydev->interface = PHY_INTERFACE_MODE_2500BASEX;
+- else
+- phydev->interface = PHY_INTERFACE_MODE_SMII;
+-
+- /* generate seed as a lower random value to make PHY linked as SLAVE easily,
+- * except for master/slave configuration fault detected.
+- * the reason for not putting this code into the function link_change_notify is
+- * the corner case where the link partner is also the qca8081 PHY and the seed
+- * value is configured as the same value, the link can't be up and no link change
+- * occurs.
+- */
+- if (!phydev->link) {
++ if (phydev->link) {
++ if (phydev->speed == SPEED_2500)
++ phydev->interface = PHY_INTERFACE_MODE_2500BASEX;
++ else
++ phydev->interface = PHY_INTERFACE_MODE_SGMII;
++ } else {
++ /* generate seed as a lower random value to make PHY linked as SLAVE easily,
++ * except for master/slave configuration fault detected.
++ * the reason for not putting this code into the function link_change_notify is
++ * the corner case where the link partner is also the qca8081 PHY and the seed
++ * value is configured as the same value, the link can't be up and no link change
++ * occurs.
++ */
+ if (phydev->master_slave_state == MASTER_SLAVE_STATE_ERR) {
+ qca808x_phy_ms_seed_enable(phydev, false);
+ } else {
diff --git a/target/linux/generic/pending-5.15/790-net-net-phy-Fix-qca8081-with-speeds-lower-than-2.5Gb-s.patch b/target/linux/generic/pending-5.15/790-net-net-phy-Fix-qca8081-with-speeds-lower-than-2.5Gb-s.patch
deleted file mode 100644
index 2bec96d306..0000000000
--- a/target/linux/generic/pending-5.15/790-net-net-phy-Fix-qca8081-with-speeds-lower-than-2.5Gb-s.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From patchwork Sun Jan 30 10:25:28 2022
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-X-Patchwork-Submitter: Jonathan McDowell <noodles@earth.li>
-X-Patchwork-Id: 12729797
-X-Patchwork-Delegate: kuba@kernel.org
-Return-Path: <netdev-owner@kernel.org>
-X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
- aws-us-west-2-korg-lkml-1.web.codeaurora.org
-Received: from vger.kernel.org (vger.kernel.org [23.128.96.18])
- by smtp.lore.kernel.org (Postfix) with ESMTP id 1DD5EC433EF
- for <netdev@archiver.kernel.org>; Sun, 30 Jan 2022 10:55:25 +0000 (UTC)
-Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
- id S240477AbiA3KzX (ORCPT <rfc822;netdev@archiver.kernel.org>);
- Sun, 30 Jan 2022 05:55:23 -0500
-Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36812 "EHLO
- lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
- with ESMTP id S239076AbiA3KzV (ORCPT
- <rfc822;netdev@vger.kernel.org>); Sun, 30 Jan 2022 05:55:21 -0500
-X-Greylist: delayed 1780 seconds by postgrey-1.37 at
- lindbergh.monkeyblade.net; Sun, 30 Jan 2022 02:55:21 PST
-Received: from the.earth.li (the.earth.li
- [IPv6:2a00:1098:86:4d:c0ff:ee:15:900d])
- by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6EAD9C061714;
- Sun, 30 Jan 2022 02:55:21 -0800 (PST)
-DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=earth.li;
- s=the;
- h=Content-Type:MIME-Version:Message-ID:Subject:Cc:To:From:Date:Sender:
- Reply-To:Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date
- :Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:
- References:List-Id:List-Help:List-Unsubscribe:List-Subscribe:List-Post:
- List-Owner:List-Archive;
- bh=zynwQsXAChbzANQqprwMGE7qGv9t50Oo07QICLYU9a0=; b=Z
- K8tRPtlmUhokQQlgSXpHDLec4xjYjkTQl6oFZ1GPCWgQy2YyrGnhNmtUr8GG4q3NR0jhiKh9A2y61
- pfq1eOPalgLqQ47fxD6JmCK8r/Sb6cXRKYN3OZ8NiEC9yhT8uxEqYe1tTUJL6RVfepb6+yFT5sp2Y
- Osx4iy/QAibB+/8I6lhU5Tb35eztlYgE+/Mky3gIAhyM5kvHjcj4/S6i6Sw2UW27P3tuvH0JetOT6
- OFx58fSC5azHX6pNGqx+Na+tHVtfBMkIiOpdumXyswfZDNqGvg6eXTMPsSZUJ269N1dkqPLBB7Mwz
- jtBcyMpAaEbN7MJWuh2h0DMYmTymlFFrg==;
-Received: from noodles by the.earth.li with local (Exim 4.94.2)
- (envelope-from <noodles@earth.li>)
- id 1nE7Oi-00A0XI-KA; Sun, 30 Jan 2022 10:25:28 +0000
-Date: Sun, 30 Jan 2022 10:25:28 +0000
-From: Jonathan McDowell <noodles@earth.li>
-To: Andrew Lunn <andrew@lunn.ch>,
- Heiner Kallweit <hkallweit1@gmail.com>,
- Russell King <linux@armlinux.org.uk>,
- David Miller <davem@davemloft.net>,
- Jakub Kicinski <kuba@kernel.org>, Luo Jie <luoj@codeaurora.org>
-Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
- Robert Marko <robimarko@gmail.com>
-Subject: [PATCH net] net: phy: Fix qca8081 with speeds lower than 2.5Gb/s
-Message-ID: <YfZnmMteVry/A1XR@earth.li>
-MIME-Version: 1.0
-Content-Disposition: inline
-Precedence: bulk
-List-ID: <netdev.vger.kernel.org>
-X-Mailing-List: netdev@vger.kernel.org
-X-Patchwork-Delegate: kuba@kernel.org
-
-A typo in qca808x_read_status means we try to set SMII mode on the port
-rather than SGMII when the link speed is not 2.5Gb/s. This results in no
-traffic due to the mismatch in configuration between the phy and the
-mac.
-
-Fixes: 79c7bc0521545 ("net: phy: add qca8081 read_status")
-Signed-off-by: Jonathan McDowell <noodles@earth.li>
----
- drivers/net/phy/at803x.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c
-index 5b6c0d120e09..7077e3a92d31 100644
---- a/drivers/net/phy/at803x.c
-+++ b/drivers/net/phy/at803x.c
-@@ -1691,7 +1691,7 @@ static int qca808x_read_status(struct phy_device *phydev)
- if (phydev->link && phydev->speed == SPEED_2500)
- phydev->interface = PHY_INTERFACE_MODE_2500BASEX;
- else
-- phydev->interface = PHY_INTERFACE_MODE_SMII;
-+ phydev->interface = PHY_INTERFACE_MODE_SGMII;
-
- /* generate seed as a lower random value to make PHY linked as SLAVE easily,
- * except for master/slave configuration fault detected.
--
2.42.1

View File

@ -0,0 +1,890 @@
From 68fc4f780968f0f76bc6eebda329b525542ccd5e Mon Sep 17 00:00:00 2001
From: Stijn Segers <foss@volatilesystems.org>
Date: Sat, 26 Aug 2023 12:35:10 +0200
Subject: [PATCH 18/18] kernel: 5.15: refresh RB5009UG patches
Signed-off-by: Stijn Segers <foss@volatilesystems.org>
---
...eplace-AT803X_DEVICE_ADDR-with-MDIO_.patch | 9 ++------
...-v5.16-net-phy-at803x-use-phy_modify.patch | 7 +------
...t-phy-at803x-improve-the-WOL-feature.patch | 11 +++-------
...-at803x-use-GENMASK-for-speed-status.patch | 7 +------
...6-net-phy-at803x-add-QCA9561-support.patch | 21 +++++++------------
...-phy-add-qca8081-ethernet-phy-driver.patch | 9 ++------
...5.16-net-phy-add-qca8081-read_status.patch | 17 ++++++---------
....16-net-phy-add-qca8081-get_features.patch | 9 ++------
...5.16-net-phy-add-qca8081-config_aneg.patch | 9 ++------
...tants-for-fast-retrain-related-regis.patch | 5 -----
...-net-phy-add-genphy_c45_fast_retrain.patch | 11 ++--------
...5.16-net-phy-add-qca8081-config_init.patch | 9 ++------
...081-soft_reset-and-enable-master-sla.patch | 13 ++++--------
...ca8081-master-slave-seed-value-if-li.patch | 7 +------
...5.16-net-phy-add-qca8081-cdt-feature.patch | 15 +++++--------
...a8081-with-speeds-lower-than-2.5Gb-s.patch | 4 +---
...-01-net-phy-at803x-add-fiber-support.patch | 20 ++++++++----------
...y-at803x-support-downstream-SFP-cage.patch | 4 ++--
...LL-pointer-dereference-on-AR9331-PHY.patch | 8 +++----
...ix-error-return-code-in-at803x_probe.patch | 2 +-
...x-add-Amethyst-specific-SMI-GPIO-fun.patch | 15 +++----------
21 files changed, 60 insertions(+), 152 deletions(-)
diff --git a/target/linux/generic/backport-5.15/765-v5.16-net-phy-at803x-replace-AT803X_DEVICE_ADDR-with-MDIO_.patch b/target/linux/generic/backport-5.15/765-v5.16-net-phy-at803x-replace-AT803X_DEVICE_ADDR-with-MDIO_.patch
index 2b0b24e62c..5678f064bd 100644
--- a/target/linux/generic/backport-5.15/765-v5.16-net-phy-at803x-replace-AT803X_DEVICE_ADDR-with-MDIO_.patch
+++ b/target/linux/generic/backport-5.15/765-v5.16-net-phy-at803x-replace-AT803X_DEVICE_ADDR-with-MDIO_.patch
@@ -14,8 +14,6 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/at803x.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
-diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c
-index 69da011e82c8..d0f41cdaec75 100644
--- a/drivers/net/phy/at803x.c
+++ b/drivers/net/phy/at803x.c
@@ -70,7 +70,6 @@
@@ -26,7 +24,7 @@ index 69da011e82c8..d0f41cdaec75 100644
#define AT803X_LOC_MAC_ADDR_0_15_OFFSET 0x804C
#define AT803X_LOC_MAC_ADDR_16_31_OFFSET 0x804B
#define AT803X_LOC_MAC_ADDR_32_47_OFFSET 0x804A
-@@ -338,7 +337,8 @@ static int at803x_set_wol(struct phy_device *phydev,
+@@ -337,7 +336,8 @@ static int at803x_set_wol(struct phy_dev
const u8 *mac;
int ret;
u32 value;
@@ -36,7 +34,7 @@ index 69da011e82c8..d0f41cdaec75 100644
AT803X_LOC_MAC_ADDR_32_47_OFFSET,
AT803X_LOC_MAC_ADDR_16_31_OFFSET,
AT803X_LOC_MAC_ADDR_0_15_OFFSET,
-@@ -354,7 +354,7 @@ static int at803x_set_wol(struct phy_device *phydev,
+@@ -353,7 +353,7 @@ static int at803x_set_wol(struct phy_dev
return -EINVAL;
for (i = 0; i < 3; i++)
@@ -45,6 +43,3 @@ index 69da011e82c8..d0f41cdaec75 100644
mac[(i * 2) + 1] | (mac[(i * 2)] << 8));
value = phy_read(phydev, AT803X_INTR_ENABLE);
---
-2.34.1
-
diff --git a/target/linux/generic/backport-5.15/766-v5.16-net-phy-at803x-use-phy_modify.patch b/target/linux/generic/backport-5.15/766-v5.16-net-phy-at803x-use-phy_modify.patch
index fbd7de0519..be1befa69d 100644
--- a/target/linux/generic/backport-5.15/766-v5.16-net-phy-at803x-use-phy_modify.patch
+++ b/target/linux/generic/backport-5.15/766-v5.16-net-phy-at803x-use-phy_modify.patch
@@ -13,11 +13,9 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/at803x.c | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
-diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c
-index d0f41cdaec75..cf25cd428ffa 100644
--- a/drivers/net/phy/at803x.c
+++ b/drivers/net/phy/at803x.c
-@@ -357,16 +357,12 @@ static int at803x_set_wol(struct phy_device *phydev,
+@@ -356,16 +356,12 @@ static int at803x_set_wol(struct phy_dev
phy_write_mmd(phydev, MDIO_MMD_PCS, offsets[i],
mac[(i * 2) + 1] | (mac[(i * 2)] << 8));
@@ -36,6 +34,3 @@ index d0f41cdaec75..cf25cd428ffa 100644
if (ret)
return ret;
value = phy_read(phydev, AT803X_INTR_STATUS);
---
-2.34.1
-
diff --git a/target/linux/generic/backport-5.15/767-v5.16-net-phy-at803x-improve-the-WOL-feature.patch b/target/linux/generic/backport-5.15/767-v5.16-net-phy-at803x-improve-the-WOL-feature.patch
index 1109e0a81e..e6edf2ce21 100644
--- a/target/linux/generic/backport-5.15/767-v5.16-net-phy-at803x-improve-the-WOL-feature.patch
+++ b/target/linux/generic/backport-5.15/767-v5.16-net-phy-at803x-improve-the-WOL-feature.patch
@@ -19,8 +19,6 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/at803x.c | 45 +++++++++++++++++++++++++++++++++-------
1 file changed, 38 insertions(+), 7 deletions(-)
-diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c
-index cf25cd428ffa..1363f12ba659 100644
--- a/drivers/net/phy/at803x.c
+++ b/drivers/net/phy/at803x.c
@@ -70,6 +70,8 @@
@@ -32,7 +30,7 @@ index cf25cd428ffa..1363f12ba659 100644
#define AT803X_LOC_MAC_ADDR_0_15_OFFSET 0x804C
#define AT803X_LOC_MAC_ADDR_16_31_OFFSET 0x804B
#define AT803X_LOC_MAC_ADDR_32_47_OFFSET 0x804A
-@@ -335,8 +337,7 @@ static int at803x_set_wol(struct phy_device *phydev,
+@@ -334,8 +336,7 @@ static int at803x_set_wol(struct phy_dev
{
struct net_device *ndev = phydev->attached_dev;
const u8 *mac;
@@ -42,7 +40,7 @@ index cf25cd428ffa..1363f12ba659 100644
unsigned int i;
const unsigned int offsets[] = {
AT803X_LOC_MAC_ADDR_32_47_OFFSET,
-@@ -357,18 +358,45 @@ static int at803x_set_wol(struct phy_device *phydev,
+@@ -356,18 +357,45 @@ static int at803x_set_wol(struct phy_dev
phy_write_mmd(phydev, MDIO_MMD_PCS, offsets[i],
mac[(i * 2) + 1] | (mac[(i * 2)] << 8));
@@ -91,7 +89,7 @@ index cf25cd428ffa..1363f12ba659 100644
}
static void at803x_get_wol(struct phy_device *phydev,
-@@ -379,8 +407,11 @@ static void at803x_get_wol(struct phy_device *phydev,
+@@ -378,8 +406,11 @@ static void at803x_get_wol(struct phy_de
wol->supported = WAKE_MAGIC;
wol->wolopts = 0;
@@ -105,6 +103,3 @@ index cf25cd428ffa..1363f12ba659 100644
wol->wolopts |= WAKE_MAGIC;
}
---
-2.34.1
-
diff --git a/target/linux/generic/backport-5.15/768-v5.16-net-phy-at803x-use-GENMASK-for-speed-status.patch b/target/linux/generic/backport-5.15/768-v5.16-net-phy-at803x-use-GENMASK-for-speed-status.patch
index 534878a266..f8420c8d1f 100644
--- a/target/linux/generic/backport-5.15/768-v5.16-net-phy-at803x-use-GENMASK-for-speed-status.patch
+++ b/target/linux/generic/backport-5.15/768-v5.16-net-phy-at803x-use-GENMASK-for-speed-status.patch
@@ -12,8 +12,6 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/at803x.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
-diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c
-index 1363f12ba659..3465f2bb6356 100644
--- a/drivers/net/phy/at803x.c
+++ b/drivers/net/phy/at803x.c
@@ -33,10 +33,10 @@
@@ -31,7 +29,7 @@ index 1363f12ba659..3465f2bb6356 100644
#define AT803X_SS_DUPLEX BIT(13)
#define AT803X_SS_SPEED_DUPLEX_RESOLVED BIT(11)
#define AT803X_SS_MDIX BIT(6)
-@@ -994,7 +994,7 @@ static int at803x_read_status(struct phy_device *phydev)
+@@ -985,7 +985,7 @@ static int at803x_read_status(struct phy
if (sfc < 0)
return sfc;
@@ -40,6 +38,3 @@ index 1363f12ba659..3465f2bb6356 100644
case AT803X_SS_SPEED_10:
phydev->speed = SPEED_10;
break;
---
-2.34.1
-
diff --git a/target/linux/generic/backport-5.15/769-0-v5.16-net-phy-at803x-add-QCA9561-support.patch b/target/linux/generic/backport-5.15/769-0-v5.16-net-phy-at803x-add-QCA9561-support.patch
index 48fbac610a..68e7eae7bb 100644
--- a/target/linux/generic/backport-5.15/769-0-v5.16-net-phy-at803x-add-QCA9561-support.patch
+++ b/target/linux/generic/backport-5.15/769-0-v5.16-net-phy-at803x-add-QCA9561-support.patch
@@ -17,11 +17,9 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/phy/at803x.c | 23 +++++++++++++++++++++--
1 file changed, 21 insertions(+), 2 deletions(-)
-diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c
-index 3feee4d59030..ae7e1f1c59f0 100644
--- a/drivers/net/phy/at803x.c
+++ b/drivers/net/phy/at803x.c
-@@ -153,6 +153,7 @@
+@@ -161,6 +161,7 @@
#define QCA8327_A_PHY_ID 0x004dd033
#define QCA8327_B_PHY_ID 0x004dd034
#define QCA8337_PHY_ID 0x004dd036
@@ -29,7 +27,7 @@ index 3feee4d59030..ae7e1f1c59f0 100644
#define QCA8K_PHY_ID_MASK 0xffffffff
#define QCA8K_DEVFLAGS_REVISION_MASK GENMASK(2, 0)
-@@ -1237,7 +1238,8 @@ static int at803x_cable_test_get_status(struct phy_device *phydev,
+@@ -1263,7 +1264,8 @@ static int at803x_cable_test_get_status(
int pair, ret;
if (phydev->phy_id == ATH9331_PHY_ID ||
@@ -39,7 +37,7 @@ index 3feee4d59030..ae7e1f1c59f0 100644
pair_mask = 0x3;
else
pair_mask = 0xf;
-@@ -1277,7 +1279,8 @@ static int at803x_cable_test_start(struct phy_device *phydev)
+@@ -1303,7 +1305,8 @@ static int at803x_cable_test_start(struc
phy_write(phydev, MII_BMCR, BMCR_ANENABLE);
phy_write(phydev, MII_ADVERTISE, ADVERTISE_CSMA);
if (phydev->phy_id != ATH9331_PHY_ID &&
@@ -49,11 +47,10 @@ index 3feee4d59030..ae7e1f1c59f0 100644
phy_write(phydev, MII_CTRL1000, 0);
/* we do all the (time consuming) work later */
-@@ -1408,6 +1411,21 @@ static struct phy_driver at803x_driver[] = {
- .read_status = at803x_read_status,
+@@ -1516,6 +1519,21 @@ static struct phy_driver at803x_driver[]
.soft_reset = genphy_soft_reset,
.config_aneg = at803x_config_aneg,
-+}, {
+ }, {
+ /* Qualcomm Atheros QCA9561 */
+ PHY_ID_MATCH_EXACT(QCA9561_PHY_ID),
+ .name = "Qualcomm Atheros QCA9561 built-in PHY",
@@ -68,10 +65,11 @@ index 3feee4d59030..ae7e1f1c59f0 100644
+ .read_status = at803x_read_status,
+ .soft_reset = genphy_soft_reset,
+ .config_aneg = at803x_config_aneg,
- }, {
++}, {
/* QCA8337 */
.phy_id = QCA8337_PHY_ID,
-@@ -1466,6 +1484,7 @@ static struct mdio_device_id __maybe_unused atheros_tbl[] = {
+ .phy_id_mask = QCA8K_PHY_ID_MASK,
+@@ -1576,6 +1594,7 @@ static struct mdio_device_id __maybe_unu
{ PHY_ID_MATCH_EXACT(QCA8337_PHY_ID) },
{ PHY_ID_MATCH_EXACT(QCA8327_A_PHY_ID) },
{ PHY_ID_MATCH_EXACT(QCA8327_B_PHY_ID) },
@@ -79,6 +77,3 @@ index 3feee4d59030..ae7e1f1c59f0 100644
{ }
};
---
-2.34.1
-
diff --git a/target/linux/generic/backport-5.15/769-v5.16-net-phy-add-qca8081-ethernet-phy-driver.patch b/target/linux/generic/backport-5.15/769-v5.16-net-phy-add-qca8081-ethernet-phy-driver.patch
index 1aec1eae60..0b09503898 100644
--- a/target/linux/generic/backport-5.15/769-v5.16-net-phy-add-qca8081-ethernet-phy-driver.patch
+++ b/target/linux/generic/backport-5.15/769-v5.16-net-phy-add-qca8081-ethernet-phy-driver.patch
@@ -16,8 +16,6 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/at803x.c | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
-diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c
-index 3465f2bb6356..aae27fe3e1e1 100644
--- a/drivers/net/phy/at803x.c
+++ b/drivers/net/phy/at803x.c
@@ -158,6 +158,8 @@
@@ -38,7 +36,7 @@ index 3465f2bb6356..aae27fe3e1e1 100644
MODULE_AUTHOR("Matus Ujhelyi");
MODULE_LICENSE("GPL");
-@@ -1591,6 +1593,18 @@ static struct phy_driver at803x_driver[] = {
+@@ -1581,6 +1583,18 @@ static struct phy_driver at803x_driver[]
.get_stats = at803x_get_stats,
.suspend = qca83xx_suspend,
.resume = qca83xx_resume,
@@ -57,7 +55,7 @@ index 3465f2bb6356..aae27fe3e1e1 100644
}, };
module_phy_driver(at803x_driver);
-@@ -1605,6 +1619,7 @@ static struct mdio_device_id __maybe_unused atheros_tbl[] = {
+@@ -1595,6 +1609,7 @@ static struct mdio_device_id __maybe_unu
{ PHY_ID_MATCH_EXACT(QCA8327_A_PHY_ID) },
{ PHY_ID_MATCH_EXACT(QCA8327_B_PHY_ID) },
{ PHY_ID_MATCH_EXACT(QCA9561_PHY_ID) },
@@ -65,6 +63,3 @@ index 3465f2bb6356..aae27fe3e1e1 100644
{ }
};
---
-2.34.1
-
diff --git a/target/linux/generic/backport-5.15/770-v5.16-net-phy-add-qca8081-read_status.patch b/target/linux/generic/backport-5.15/770-v5.16-net-phy-add-qca8081-read_status.patch
index 3e7572b034..bbaf30eeb8 100644
--- a/target/linux/generic/backport-5.15/770-v5.16-net-phy-add-qca8081-read_status.patch
+++ b/target/linux/generic/backport-5.15/770-v5.16-net-phy-add-qca8081-read_status.patch
@@ -17,8 +17,6 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/at803x.c | 95 ++++++++++++++++++++++++++++++----------
1 file changed, 73 insertions(+), 22 deletions(-)
-diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c
-index aae27fe3e1e1..cecf78e6c643 100644
--- a/drivers/net/phy/at803x.c
+++ b/drivers/net/phy/at803x.c
@@ -41,6 +41,9 @@
@@ -31,7 +29,7 @@ index aae27fe3e1e1..cecf78e6c643 100644
#define AT803X_INTR_ENABLE 0x12
#define AT803X_INTR_ENABLE_AUTONEG_ERR BIT(15)
#define AT803X_INTR_ENABLE_SPEED_CHANGED BIT(14)
-@@ -959,27 +962,9 @@ static void at803x_link_change_notify(struct phy_device *phydev)
+@@ -951,27 +954,9 @@ static void at803x_link_change_notify(st
}
}
@@ -61,7 +59,7 @@ index aae27fe3e1e1..cecf78e6c643 100644
/* Read the AT8035 PHY-Specific Status register, which indicates the
* speed and duplex that the PHY is actually using, irrespective of
-@@ -990,13 +975,19 @@ static int at803x_read_status(struct phy_device *phydev)
+@@ -982,13 +967,19 @@ static int at803x_read_status(struct phy
return ss;
if (ss & AT803X_SS_SPEED_DUPLEX_RESOLVED) {
@@ -83,7 +81,7 @@ index aae27fe3e1e1..cecf78e6c643 100644
case AT803X_SS_SPEED_10:
phydev->speed = SPEED_10;
break;
-@@ -1006,6 +997,9 @@ static int at803x_read_status(struct phy_device *phydev)
+@@ -998,6 +989,9 @@ static int at803x_read_status(struct phy
case AT803X_SS_SPEED_1000:
phydev->speed = SPEED_1000;
break;
@@ -93,7 +91,7 @@ index aae27fe3e1e1..cecf78e6c643 100644
}
if (ss & AT803X_SS_DUPLEX)
phydev->duplex = DUPLEX_FULL;
-@@ -1030,6 +1024,35 @@ static int at803x_read_status(struct phy_device *phydev)
+@@ -1022,6 +1016,35 @@ static int at803x_read_status(struct phy
}
}
@@ -129,7 +127,7 @@ index aae27fe3e1e1..cecf78e6c643 100644
if (phydev->autoneg == AUTONEG_ENABLE && phydev->autoneg_complete)
phy_resolve_aneg_pause(phydev);
-@@ -1434,6 +1457,33 @@ static int qca83xx_suspend(struct phy_device *phydev)
+@@ -1426,6 +1449,33 @@ static int qca83xx_suspend(struct phy_de
return 0;
}
@@ -163,7 +161,7 @@ index aae27fe3e1e1..cecf78e6c643 100644
static struct phy_driver at803x_driver[] = {
{
/* Qualcomm Atheros AR8035 */
-@@ -1605,6 +1655,7 @@ static struct phy_driver at803x_driver[] = {
+@@ -1595,6 +1645,7 @@ static struct phy_driver at803x_driver[]
.get_wol = at803x_get_wol,
.suspend = genphy_suspend,
.resume = genphy_resume,
@@ -171,6 +169,3 @@ index aae27fe3e1e1..cecf78e6c643 100644
}, };
module_phy_driver(at803x_driver);
---
-2.34.1
-
diff --git a/target/linux/generic/backport-5.15/771-v5.16-net-phy-add-qca8081-get_features.patch b/target/linux/generic/backport-5.15/771-v5.16-net-phy-add-qca8081-get_features.patch
index 7cc6a79e7b..1408a2a403 100644
--- a/target/linux/generic/backport-5.15/771-v5.16-net-phy-add-qca8081-get_features.patch
+++ b/target/linux/generic/backport-5.15/771-v5.16-net-phy-add-qca8081-get_features.patch
@@ -13,11 +13,9 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/at803x.c | 10 ++++++++++
1 file changed, 10 insertions(+)
-diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c
-index cecf78e6c643..c4b7ac03cd35 100644
--- a/drivers/net/phy/at803x.c
+++ b/drivers/net/phy/at803x.c
-@@ -744,6 +744,15 @@ static int at803x_get_features(struct phy_device *phydev)
+@@ -726,6 +726,15 @@ static int at803x_get_features(struct ph
if (err)
return err;
@@ -33,7 +31,7 @@ index cecf78e6c643..c4b7ac03cd35 100644
if (phydev->drv->phy_id != ATH8031_PHY_ID)
return 0;
-@@ -1653,6 +1662,7 @@ static struct phy_driver at803x_driver[] = {
+@@ -1643,6 +1652,7 @@ static struct phy_driver at803x_driver[]
.set_tunable = at803x_set_tunable,
.set_wol = at803x_set_wol,
.get_wol = at803x_get_wol,
@@ -41,6 +39,3 @@ index cecf78e6c643..c4b7ac03cd35 100644
.suspend = genphy_suspend,
.resume = genphy_resume,
.read_status = qca808x_read_status,
---
-2.34.1
-
diff --git a/target/linux/generic/backport-5.15/772-v5.16-net-phy-add-qca8081-config_aneg.patch b/target/linux/generic/backport-5.15/772-v5.16-net-phy-add-qca8081-config_aneg.patch
index 2b9b2edbf8..ebf524bcf4 100644
--- a/target/linux/generic/backport-5.15/772-v5.16-net-phy-add-qca8081-config_aneg.patch
+++ b/target/linux/generic/backport-5.15/772-v5.16-net-phy-add-qca8081-config_aneg.patch
@@ -13,11 +13,9 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/at803x.c | 26 +++++++++++++++++++++++++-
1 file changed, 25 insertions(+), 1 deletion(-)
-diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c
-index c4b7ac03cd35..70c1025e8e5d 100644
--- a/drivers/net/phy/at803x.c
+++ b/drivers/net/phy/at803x.c
-@@ -1109,7 +1109,30 @@ static int at803x_config_aneg(struct phy_device *phydev)
+@@ -1101,7 +1101,30 @@ static int at803x_config_aneg(struct phy
return ret;
}
@@ -49,7 +47,7 @@ index c4b7ac03cd35..70c1025e8e5d 100644
}
static int at803x_get_downshift(struct phy_device *phydev, u8 *d)
-@@ -1663,6 +1686,7 @@ static struct phy_driver at803x_driver[] = {
+@@ -1653,6 +1676,7 @@ static struct phy_driver at803x_driver[]
.set_wol = at803x_set_wol,
.get_wol = at803x_get_wol,
.get_features = at803x_get_features,
@@ -57,6 +55,3 @@ index c4b7ac03cd35..70c1025e8e5d 100644
.suspend = genphy_suspend,
.resume = genphy_resume,
.read_status = qca808x_read_status,
---
-2.34.1
-
diff --git a/target/linux/generic/backport-5.15/773-v5-16-net-phy-add-constants-for-fast-retrain-related-regis.patch b/target/linux/generic/backport-5.15/773-v5-16-net-phy-add-constants-for-fast-retrain-related-regis.patch
index 31c08efc85..bddbdb9f87 100644
--- a/target/linux/generic/backport-5.15/773-v5-16-net-phy-add-constants-for-fast-retrain-related-regis.patch
+++ b/target/linux/generic/backport-5.15/773-v5-16-net-phy-add-constants-for-fast-retrain-related-regis.patch
@@ -15,8 +15,6 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
include/uapi/linux/mdio.h | 9 +++++++++
1 file changed, 9 insertions(+)
-diff --git a/include/uapi/linux/mdio.h b/include/uapi/linux/mdio.h
-index bdf77dffa5a4..c54e6eae5366 100644
--- a/include/uapi/linux/mdio.h
+++ b/include/uapi/linux/mdio.h
@@ -53,12 +53,14 @@
@@ -62,6 +60,3 @@ index bdf77dffa5a4..c54e6eae5366 100644
/* 2.5G/5G Extended abilities register. */
#define MDIO_PMA_NG_EXTABLE_2_5GBT 0x0001 /* 2.5GBASET ability */
#define MDIO_PMA_NG_EXTABLE_5GBT 0x0002 /* 5GBASET ability */
---
-2.34.1
-
diff --git a/target/linux/generic/backport-5.15/774-v5.16-net-phy-add-genphy_c45_fast_retrain.patch b/target/linux/generic/backport-5.15/774-v5.16-net-phy-add-genphy_c45_fast_retrain.patch
index 0cf37833f6..8aca8c1925 100644
--- a/target/linux/generic/backport-5.15/774-v5.16-net-phy-add-genphy_c45_fast_retrain.patch
+++ b/target/linux/generic/backport-5.15/774-v5.16-net-phy-add-genphy_c45_fast_retrain.patch
@@ -13,11 +13,9 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/phy.h | 1 +
2 files changed, 35 insertions(+)
-diff --git a/drivers/net/phy/phy-c45.c b/drivers/net/phy/phy-c45.c
-index c617dbcad6ea..b01180e1f578 100644
--- a/drivers/net/phy/phy-c45.c
+++ b/drivers/net/phy/phy-c45.c
-@@ -611,6 +611,40 @@ int genphy_c45_loopback(struct phy_device *phydev, bool enable)
+@@ -611,6 +611,40 @@ int genphy_c45_loopback(struct phy_devic
}
EXPORT_SYMBOL_GPL(genphy_c45_loopback);
@@ -58,11 +56,9 @@ index c617dbcad6ea..b01180e1f578 100644
struct phy_driver genphy_c45_driver = {
.phy_id = 0xffffffff,
.phy_id_mask = 0xffffffff,
-diff --git a/include/linux/phy.h b/include/linux/phy.h
-index 736e1d1a47c4..04e90423fa88 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
-@@ -1584,6 +1584,7 @@ int genphy_c45_config_aneg(struct phy_device *phydev);
+@@ -1624,6 +1624,7 @@ int genphy_c45_config_aneg(struct phy_de
int genphy_c45_loopback(struct phy_device *phydev, bool enable);
int genphy_c45_pma_resume(struct phy_device *phydev);
int genphy_c45_pma_suspend(struct phy_device *phydev);
@@ -70,6 +66,3 @@ index 736e1d1a47c4..04e90423fa88 100644
/* Generic C45 PHY driver */
extern struct phy_driver genphy_c45_driver;
---
-2.34.1
-
diff --git a/target/linux/generic/backport-5.15/775-v5.16-net-phy-add-qca8081-config_init.patch b/target/linux/generic/backport-5.15/775-v5.16-net-phy-add-qca8081-config_init.patch
index 9c27de67b3..6d2aae0d97 100644
--- a/target/linux/generic/backport-5.15/775-v5.16-net-phy-add-qca8081-config_init.patch
+++ b/target/linux/generic/backport-5.15/775-v5.16-net-phy-add-qca8081-config_init.patch
@@ -15,8 +15,6 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/at803x.c | 107 +++++++++++++++++++++++++++++++++++++++
1 file changed, 107 insertions(+)
-diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c
-index 70c1025e8e5d..da710523b7c4 100644
--- a/drivers/net/phy/at803x.c
+++ b/drivers/net/phy/at803x.c
@@ -178,6 +178,51 @@
@@ -71,7 +69,7 @@ index 70c1025e8e5d..da710523b7c4 100644
MODULE_DESCRIPTION("Qualcomm Atheros AR803x and QCA808X PHY driver");
MODULE_AUTHOR("Matus Ujhelyi");
MODULE_LICENSE("GPL");
-@@ -1489,6 +1534,67 @@ static int qca83xx_suspend(struct phy_device *phydev)
+@@ -1481,6 +1526,67 @@ static int qca83xx_suspend(struct phy_de
return 0;
}
@@ -139,7 +137,7 @@ index 70c1025e8e5d..da710523b7c4 100644
static int qca808x_read_status(struct phy_device *phydev)
{
int ret;
-@@ -1690,6 +1796,7 @@ static struct phy_driver at803x_driver[] = {
+@@ -1680,6 +1786,7 @@ static struct phy_driver at803x_driver[]
.suspend = genphy_suspend,
.resume = genphy_resume,
.read_status = qca808x_read_status,
@@ -147,6 +145,3 @@ index 70c1025e8e5d..da710523b7c4 100644
}, };
module_phy_driver(at803x_driver);
---
-2.34.1
-
diff --git a/target/linux/generic/backport-5.15/776-v5.16-net-phy-add-qca8081-soft_reset-and-enable-master-sla.patch b/target/linux/generic/backport-5.15/776-v5.16-net-phy-add-qca8081-soft_reset-and-enable-master-sla.patch
index bf34b4bdfb..6ddbad3a06 100644
--- a/target/linux/generic/backport-5.15/776-v5.16-net-phy-add-qca8081-soft_reset-and-enable-master-sla.patch
+++ b/target/linux/generic/backport-5.15/776-v5.16-net-phy-add-qca8081-soft_reset-and-enable-master-sla.patch
@@ -15,8 +15,6 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/at803x.c | 48 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 48 insertions(+)
-diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c
-index da710523b7c4..1418db4f2091 100644
--- a/drivers/net/phy/at803x.c
+++ b/drivers/net/phy/at803x.c
@@ -223,6 +223,12 @@
@@ -32,7 +30,7 @@ index da710523b7c4..1418db4f2091 100644
MODULE_DESCRIPTION("Qualcomm Atheros AR803x and QCA808X PHY driver");
MODULE_AUTHOR("Matus Ujhelyi");
MODULE_LICENSE("GPL");
-@@ -1569,6 +1575,26 @@ static int qca808x_phy_fast_retrain_config(struct phy_device *phydev)
+@@ -1561,6 +1567,26 @@ static int qca808x_phy_fast_retrain_conf
return 0;
}
@@ -59,7 +57,7 @@ index da710523b7c4..1418db4f2091 100644
static int qca808x_config_init(struct phy_device *phydev)
{
int ret;
-@@ -1590,6 +1616,16 @@ static int qca808x_config_init(struct phy_device *phydev)
+@@ -1582,6 +1608,16 @@ static int qca808x_config_init(struct ph
if (ret)
return ret;
@@ -76,7 +74,7 @@ index da710523b7c4..1418db4f2091 100644
/* Configure adc threshold as 100mv for the link 10M */
return at803x_debug_reg_mask(phydev, QCA808X_PHY_DEBUG_ADC_THRESHOLD,
QCA808X_ADC_THRESHOLD_MASK, QCA808X_ADC_THRESHOLD_100MV);
-@@ -1622,6 +1658,17 @@ static int qca808x_read_status(struct phy_device *phydev)
+@@ -1614,6 +1650,17 @@ static int qca808x_read_status(struct ph
return 0;
}
@@ -94,7 +92,7 @@ index da710523b7c4..1418db4f2091 100644
static struct phy_driver at803x_driver[] = {
{
/* Qualcomm Atheros AR8035 */
-@@ -1797,6 +1844,7 @@ static struct phy_driver at803x_driver[] = {
+@@ -1787,6 +1834,7 @@ static struct phy_driver at803x_driver[]
.resume = genphy_resume,
.read_status = qca808x_read_status,
.config_init = qca808x_config_init,
@@ -102,6 +100,3 @@ index da710523b7c4..1418db4f2091 100644
}, };
module_phy_driver(at803x_driver);
---
-2.34.1
-
diff --git a/target/linux/generic/backport-5.15/777-v5.16-net-phy-adjust-qca8081-master-slave-seed-value-if-li.patch b/target/linux/generic/backport-5.15/777-v5.16-net-phy-adjust-qca8081-master-slave-seed-value-if-li.patch
index 1f614e99a4..c0ed0d770a 100644
--- a/target/linux/generic/backport-5.15/777-v5.16-net-phy-adjust-qca8081-master-slave-seed-value-if-li.patch
+++ b/target/linux/generic/backport-5.15/777-v5.16-net-phy-adjust-qca8081-master-slave-seed-value-if-li.patch
@@ -19,11 +19,9 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/at803x.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
-diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c
-index 1418db4f2091..00733badcda5 100644
--- a/drivers/net/phy/at803x.c
+++ b/drivers/net/phy/at803x.c
-@@ -1655,6 +1655,22 @@ static int qca808x_read_status(struct phy_device *phydev)
+@@ -1647,6 +1647,22 @@ static int qca808x_read_status(struct ph
else
phydev->interface = PHY_INTERFACE_MODE_SMII;
@@ -46,6 +44,3 @@ index 1418db4f2091..00733badcda5 100644
return 0;
}
---
-2.34.1
-
diff --git a/target/linux/generic/backport-5.15/778-v5.16-net-phy-add-qca8081-cdt-feature.patch b/target/linux/generic/backport-5.15/778-v5.16-net-phy-add-qca8081-cdt-feature.patch
index d49fb2f566..ecdc902dfd 100644
--- a/target/linux/generic/backport-5.15/778-v5.16-net-phy-add-qca8081-cdt-feature.patch
+++ b/target/linux/generic/backport-5.15/778-v5.16-net-phy-add-qca8081-cdt-feature.patch
@@ -16,8 +16,6 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/at803x.c | 194 ++++++++++++++++++++++++++++++++++++++-
1 file changed, 191 insertions(+), 3 deletions(-)
-diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c
-index 00733badcda5..f1cbe1f6ddec 100644
--- a/drivers/net/phy/at803x.c
+++ b/drivers/net/phy/at803x.c
@@ -229,6 +229,32 @@
@@ -53,7 +51,7 @@ index 00733badcda5..f1cbe1f6ddec 100644
MODULE_DESCRIPTION("Qualcomm Atheros AR803x and QCA808X PHY driver");
MODULE_AUTHOR("Matus Ujhelyi");
MODULE_LICENSE("GPL");
-@@ -1319,8 +1345,14 @@ static int at803x_cdt_start(struct phy_device *phydev, int pair)
+@@ -1311,8 +1337,14 @@ static int at803x_cdt_start(struct phy_d
{
u16 cdt;
@@ -70,7 +68,7 @@ index 00733badcda5..f1cbe1f6ddec 100644
return phy_write(phydev, AT803X_CDT, cdt);
}
-@@ -1328,10 +1360,16 @@ static int at803x_cdt_start(struct phy_device *phydev, int pair)
+@@ -1320,10 +1352,16 @@ static int at803x_cdt_start(struct phy_d
static int at803x_cdt_wait_for_completion(struct phy_device *phydev)
{
int val, ret;
@@ -88,7 +86,7 @@ index 00733badcda5..f1cbe1f6ddec 100644
30000, 100000, true);
return ret < 0 ? ret : 0;
-@@ -1685,6 +1723,153 @@ static int qca808x_soft_reset(struct phy_device *phydev)
+@@ -1677,6 +1715,153 @@ static int qca808x_soft_reset(struct phy
return qca808x_phy_ms_seed_enable(phydev, true);
}
@@ -242,7 +240,7 @@ index 00733badcda5..f1cbe1f6ddec 100644
static struct phy_driver at803x_driver[] = {
{
/* Qualcomm Atheros AR8035 */
-@@ -1848,6 +2033,7 @@ static struct phy_driver at803x_driver[] = {
+@@ -1838,6 +2023,7 @@ static struct phy_driver at803x_driver[]
/* Qualcomm QCA8081 */
PHY_ID_MATCH_EXACT(QCA8081_PHY_ID),
.name = "Qualcomm QCA8081",
@@ -250,7 +248,7 @@ index 00733badcda5..f1cbe1f6ddec 100644
.config_intr = at803x_config_intr,
.handle_interrupt = at803x_handle_interrupt,
.get_tunable = at803x_get_tunable,
-@@ -1861,6 +2047,8 @@ static struct phy_driver at803x_driver[] = {
+@@ -1851,6 +2037,8 @@ static struct phy_driver at803x_driver[]
.read_status = qca808x_read_status,
.config_init = qca808x_config_init,
.soft_reset = qca808x_soft_reset,
@@ -259,6 +257,3 @@ index 00733badcda5..f1cbe1f6ddec 100644
}, };
module_phy_driver(at803x_driver);
---
-2.34.1
-
diff --git a/target/linux/generic/backport-5.15/778-v5.17-net-phy-Fix-qca8081-with-speeds-lower-than-2.5Gb-s.patch b/target/linux/generic/backport-5.15/778-v5.17-net-phy-Fix-qca8081-with-speeds-lower-than-2.5Gb-s.patch
index 1d8e7997fd..566be8f958 100644
--- a/target/linux/generic/backport-5.15/778-v5.17-net-phy-Fix-qca8081-with-speeds-lower-than-2.5Gb-s.patch
+++ b/target/linux/generic/backport-5.15/778-v5.17-net-phy-Fix-qca8081-with-speeds-lower-than-2.5Gb-s.patch
@@ -20,11 +20,9 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/at803x.c | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
-diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c
-index 5b6c0d120e09e2..29aa811af430f0 100644
--- a/drivers/net/phy/at803x.c
+++ b/drivers/net/phy/at803x.c
-@@ -1688,19 +1688,19 @@ static int qca808x_read_status(struct phy_device *phydev)
+@@ -1680,19 +1680,19 @@ static int qca808x_read_status(struct ph
if (ret < 0)
return ret;
diff --git a/target/linux/generic/backport-5.15/778-v5.18-01-net-phy-at803x-add-fiber-support.patch b/target/linux/generic/backport-5.15/778-v5.18-01-net-phy-at803x-add-fiber-support.patch
index 989dc06ca6..46bbfa0cae 100644
--- a/target/linux/generic/backport-5.15/778-v5.18-01-net-phy-at803x-add-fiber-support.patch
+++ b/target/linux/generic/backport-5.15/778-v5.18-01-net-phy-at803x-add-fiber-support.patch
@@ -20,8 +20,6 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/at803x.c | 76 +++++++++++++++++++++++++++++++++++-----
1 file changed, 67 insertions(+), 9 deletions(-)
-diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c
-index 052b2eb9f101f..3f3d4c164df40 100644
--- a/drivers/net/phy/at803x.c
+++ b/drivers/net/phy/at803x.c
@@ -51,6 +51,8 @@
@@ -61,7 +59,7 @@ index 052b2eb9f101f..3f3d4c164df40 100644
struct regulator_dev *vddio_rdev;
struct regulator_dev *vddh_rdev;
struct regulator *vddio;
-@@ -784,7 +798,33 @@ static int at803x_probe(struct phy_device *phydev)
+@@ -784,7 +798,33 @@ static int at803x_probe(struct phy_devic
return ret;
}
@@ -95,7 +93,7 @@ index 052b2eb9f101f..3f3d4c164df40 100644
}
static void at803x_remove(struct phy_device *phydev)
-@@ -797,6 +837,7 @@ static void at803x_remove(struct phy_device *phydev)
+@@ -797,6 +837,7 @@ static void at803x_remove(struct phy_dev
static int at803x_get_features(struct phy_device *phydev)
{
@@ -103,7 +101,7 @@ index 052b2eb9f101f..3f3d4c164df40 100644
int err;
err = genphy_read_abilities(phydev);
-@@ -823,12 +864,13 @@ static int at803x_get_features(struct phy_device *phydev)
+@@ -823,12 +864,13 @@ static int at803x_get_features(struct ph
* As a result of that, ESTATUS_1000_XFULL is set
* to 1 even when operating in copper TP mode.
*
@@ -122,7 +120,7 @@ index 052b2eb9f101f..3f3d4c164df40 100644
return 0;
}
-@@ -892,15 +934,18 @@ static int at8031_pll_config(struct phy_device *phydev)
+@@ -892,15 +934,18 @@ static int at8031_pll_config(struct phy_
static int at803x_config_init(struct phy_device *phydev)
{
@@ -144,7 +142,7 @@ index 052b2eb9f101f..3f3d4c164df40 100644
phy_unlock_mdio_bus(phydev);
if (ret)
return ret;
-@@ -959,6 +1004,7 @@ static int at803x_ack_interrupt(struct phy_device *phydev)
+@@ -959,6 +1004,7 @@ static int at803x_ack_interrupt(struct p
static int at803x_config_intr(struct phy_device *phydev)
{
@@ -152,7 +150,7 @@ index 052b2eb9f101f..3f3d4c164df40 100644
int err;
int value;
-@@ -975,6 +1021,10 @@ static int at803x_config_intr(struct phy_device *phydev)
+@@ -975,6 +1021,10 @@ static int at803x_config_intr(struct phy
value |= AT803X_INTR_ENABLE_DUPLEX_CHANGED;
value |= AT803X_INTR_ENABLE_LINK_FAIL;
value |= AT803X_INTR_ENABLE_LINK_SUCCESS;
@@ -163,7 +161,7 @@ index 052b2eb9f101f..3f3d4c164df40 100644
err = phy_write(phydev, AT803X_INTR_ENABLE, value);
} else {
-@@ -1107,8 +1157,12 @@ static int at803x_read_specific_status(struct phy_device *phydev)
+@@ -1107,8 +1157,12 @@ static int at803x_read_specific_status(s
static int at803x_read_status(struct phy_device *phydev)
{
@@ -176,7 +174,7 @@ index 052b2eb9f101f..3f3d4c164df40 100644
/* Update the link, but return if there was an error */
err = genphy_update_link(phydev);
if (err)
-@@ -1162,6 +1216,7 @@ static int at803x_config_mdix(struct phy_device *phydev, u8 ctrl)
+@@ -1162,6 +1216,7 @@ static int at803x_config_mdix(struct phy
static int at803x_config_aneg(struct phy_device *phydev)
{
@@ -184,7 +182,7 @@ index 052b2eb9f101f..3f3d4c164df40 100644
int ret;
ret = at803x_config_mdix(phydev, phydev->mdix_ctrl);
-@@ -1178,6 +1233,9 @@ static int at803x_config_aneg(struct phy_device *phydev)
+@@ -1178,6 +1233,9 @@ static int at803x_config_aneg(struct phy
return ret;
}
diff --git a/target/linux/generic/backport-5.15/778-v5.18-02-net-phy-at803x-support-downstream-SFP-cage.patch b/target/linux/generic/backport-5.15/778-v5.18-02-net-phy-at803x-support-downstream-SFP-cage.patch
index 8393cb32e8..3205cd5b5c 100644
--- a/target/linux/generic/backport-5.15/778-v5.18-02-net-phy-at803x-support-downstream-SFP-cage.patch
+++ b/target/linux/generic/backport-5.15/778-v5.18-02-net-phy-at803x-support-downstream-SFP-cage.patch
@@ -25,7 +25,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
#include <dt-bindings/net/qca-ar803x.h>
#define AT803X_SPECIFIC_FUNCTION_CONTROL 0x10
-@@ -555,6 +557,55 @@ static int at8031_register_regulators(st
+@@ -664,6 +666,55 @@ static int at8031_register_regulators(st
return 0;
}
@@ -81,7 +81,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
static int at803x_parse_dt(struct phy_device *phydev)
{
struct device_node *node = phydev->mdio.dev.of_node;
-@@ -662,6 +713,11 @@ static int at803x_parse_dt(struct phy_de
+@@ -771,6 +822,11 @@ static int at803x_parse_dt(struct phy_de
phydev_err(phydev, "failed to get VDDIO regulator\n");
return PTR_ERR(priv->vddio);
}
diff --git a/target/linux/generic/backport-5.15/778-v5.18-03-net-phy-at803x-fix-NULL-pointer-dereference-on-AR9331-PHY.patch b/target/linux/generic/backport-5.15/778-v5.18-03-net-phy-at803x-fix-NULL-pointer-dereference-on-AR9331-PHY.patch
index 0ac5fda4a0..5829b05d2c 100644
--- a/target/linux/generic/backport-5.15/778-v5.18-03-net-phy-at803x-fix-NULL-pointer-dereference-on-AR9331-PHY.patch
+++ b/target/linux/generic/backport-5.15/778-v5.18-03-net-phy-at803x-fix-NULL-pointer-dereference-on-AR9331-PHY.patch
@@ -46,11 +46,9 @@ Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/phy/at803x.c | 6 ++++++
1 file changed, 6 insertions(+)
-diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c
-index 6a467e7817a6a..59fe356942b51 100644
--- a/drivers/net/phy/at803x.c
+++ b/drivers/net/phy/at803x.c
-@@ -2072,6 +2072,8 @@ static struct phy_driver at803x_driver[] = {
+@@ -2059,6 +2059,8 @@ static struct phy_driver at803x_driver[]
/* ATHEROS AR9331 */
PHY_ID_MATCH_EXACT(ATH9331_PHY_ID),
.name = "Qualcomm Atheros AR9331 built-in PHY",
@@ -59,7 +57,7 @@ index 6a467e7817a6a..59fe356942b51 100644
.suspend = at803x_suspend,
.resume = at803x_resume,
.flags = PHY_POLL_CABLE_TEST,
-@@ -2087,6 +2089,8 @@ static struct phy_driver at803x_driver[] = {
+@@ -2074,6 +2076,8 @@ static struct phy_driver at803x_driver[]
/* Qualcomm Atheros QCA9561 */
PHY_ID_MATCH_EXACT(QCA9561_PHY_ID),
.name = "Qualcomm Atheros QCA9561 built-in PHY",
@@ -68,7 +66,7 @@ index 6a467e7817a6a..59fe356942b51 100644
.suspend = at803x_suspend,
.resume = at803x_resume,
.flags = PHY_POLL_CABLE_TEST,
-@@ -2151,6 +2155,8 @@ static struct phy_driver at803x_driver[] = {
+@@ -2138,6 +2142,8 @@ static struct phy_driver at803x_driver[]
PHY_ID_MATCH_EXACT(QCA8081_PHY_ID),
.name = "Qualcomm QCA8081",
.flags = PHY_POLL_CABLE_TEST,
diff --git a/target/linux/generic/backport-5.15/778-v5.18-04-net-phy-at803x-fix-error-return-code-in-at803x_probe.patch b/target/linux/generic/backport-5.15/778-v5.18-04-net-phy-at803x-fix-error-return-code-in-at803x_probe.patch
index cdae5b4ca4..f3aaff34ae 100644
--- a/target/linux/generic/backport-5.15/778-v5.18-04-net-phy-at803x-fix-error-return-code-in-at803x_probe.patch
+++ b/target/linux/generic/backport-5.15/778-v5.18-04-net-phy-at803x-fix-error-return-code-in-at803x_probe.patch
@@ -17,7 +17,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
--- a/drivers/net/phy/at803x.c
+++ b/drivers/net/phy/at803x.c
-@@ -749,8 +749,10 @@ static int at803x_probe(struct phy_devic
+@@ -858,8 +858,10 @@ static int at803x_probe(struct phy_devic
int ccr = phy_read(phydev, AT803X_REG_CHIP_CONFIG);
int mode_cfg;
diff --git a/target/linux/mvebu/patches-5.15/706-net-dsa-mv88e6xxx-add-Amethyst-specific-SMI-GPIO-fun.patch b/target/linux/mvebu/patches-5.15/706-net-dsa-mv88e6xxx-add-Amethyst-specific-SMI-GPIO-fun.patch
index 248b8b9d6c..e5c605c40f 100644
--- a/target/linux/mvebu/patches-5.15/706-net-dsa-mv88e6xxx-add-Amethyst-specific-SMI-GPIO-fun.patch
+++ b/target/linux/mvebu/patches-5.15/706-net-dsa-mv88e6xxx-add-Amethyst-specific-SMI-GPIO-fun.patch
@@ -22,11 +22,9 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
drivers/net/dsa/mv88e6xxx/global2_scratch.c | 31 +++++++++++++++++++++
3 files changed, 37 insertions(+), 1 deletion(-)
-diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
-index 43d126628610..b3803101d612 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
-@@ -3409,7 +3409,10 @@ static int mv88e6xxx_mdio_register(struct mv88e6xxx_chip *chip,
+@@ -3424,7 +3424,10 @@ static int mv88e6xxx_mdio_register(struc
if (external) {
mv88e6xxx_reg_lock(chip);
@@ -38,11 +36,9 @@ index 43d126628610..b3803101d612 100644
mv88e6xxx_reg_unlock(chip);
if (err)
-diff --git a/drivers/net/dsa/mv88e6xxx/global2.h b/drivers/net/dsa/mv88e6xxx/global2.h
-index f3e27573a386..e0649f21f28e 100644
--- a/drivers/net/dsa/mv88e6xxx/global2.h
+++ b/drivers/net/dsa/mv88e6xxx/global2.h
-@@ -370,6 +370,8 @@ extern const struct mv88e6xxx_gpio_ops mv88e6352_gpio_ops;
+@@ -371,6 +371,8 @@ extern const struct mv88e6xxx_gpio_ops m
int mv88e6xxx_g2_scratch_gpio_set_smi(struct mv88e6xxx_chip *chip,
bool external);
@@ -51,11 +47,9 @@ index f3e27573a386..e0649f21f28e 100644
int mv88e6xxx_g2_atu_stats_set(struct mv88e6xxx_chip *chip, u16 kind, u16 bin);
int mv88e6xxx_g2_atu_stats_get(struct mv88e6xxx_chip *chip, u16 *stats);
-diff --git a/drivers/net/dsa/mv88e6xxx/global2_scratch.c b/drivers/net/dsa/mv88e6xxx/global2_scratch.c
-index eda710062933..dc3f4645fa52 100644
--- a/drivers/net/dsa/mv88e6xxx/global2_scratch.c
+++ b/drivers/net/dsa/mv88e6xxx/global2_scratch.c
-@@ -289,3 +289,34 @@ int mv88e6xxx_g2_scratch_gpio_set_smi(struct mv88e6xxx_chip *chip,
+@@ -289,3 +289,34 @@ int mv88e6xxx_g2_scratch_gpio_set_smi(st
return mv88e6xxx_g2_scratch_write(chip, misc_cfg, val);
}
@@ -90,6 +84,3 @@ index eda710062933..dc3f4645fa52 100644
+
+ return mv88e6xxx_g2_scratch_write(chip, misc_cfg, val);
+}
---
-2.34.1
-
--
2.42.1

View File

@ -0,0 +1,41 @@
From 4540ecce14d98e8c06a9bff6307bfaaf4074f99e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fabian=20Bl=C3=A4se?= <fabian@blaese.de>
Date: Sat, 18 Nov 2023 23:30:43 +0100
Subject: [PATCH] mvpp2: enable dsa parser entry
---
.../999-mvpp2-enable-dsa-parser-entry.patch | 22 +++++++++++++++++++
1 file changed, 22 insertions(+)
create mode 100644 target/linux/mvebu/patches-5.15/999-mvpp2-enable-dsa-parser-entry.patch
diff --git a/target/linux/mvebu/patches-5.15/999-mvpp2-enable-dsa-parser-entry.patch b/target/linux/mvebu/patches-5.15/999-mvpp2-enable-dsa-parser-entry.patch
new file mode 100644
index 0000000000..fe5c2657d9
--- /dev/null
+++ b/target/linux/mvebu/patches-5.15/999-mvpp2-enable-dsa-parser-entry.patch
@@ -0,0 +1,22 @@
+--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
++++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
+@@ -4757,7 +4757,7 @@ static int mvpp2_open(struct net_device
+ netdev_err(dev, "mvpp2_prs_mac_da_accept own addr failed\n");
+ return err;
+ }
+- err = mvpp2_prs_tag_mode_set(port->priv, port->id, MVPP2_TAG_TYPE_MH);
++ err = mvpp2_prs_tag_mode_set(port->priv, port->id, MVPP2_TAG_TYPE_DSA);
+ if (err) {
+ netdev_err(dev, "mvpp2_prs_tag_mode_set failed\n");
+ return err;
+--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c
++++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c
+@@ -1260,7 +1260,7 @@ static void mvpp2_prs_dsa_init(struct mv
+
+ /* Shift 0 bytes */
+ mvpp2_prs_sram_shift_set(&pe, 0, MVPP2_PRS_SRAM_OP_SEL_SHIFT_ADD);
+- mvpp2_prs_shadow_set(priv, pe.index, MVPP2_PRS_LU_MAC);
++ mvpp2_prs_shadow_set(priv, pe.index, MVPP2_PRS_LU_DSA);
+
+ /* Clear all sram ai bits for next iteration */
+ mvpp2_prs_sram_ai_update(&pe, 0, MVPP2_PRS_SRAM_AI_MASK);
--
2.42.1

View File

@ -0,0 +1,30 @@
From fddf68b6c559df4e7b8561ea57d6e27bc4b0a8db Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fabian=20Bl=C3=A4se?= <fabian@blaese.de>
Date: Mon, 20 Nov 2023 21:28:16 +0100
Subject: [PATCH] mvpp2: vlan after dsa
---
.../linux/mvebu/patches-5.15/999-vlan-after-dsa.patch | 11 +++++++++++
1 file changed, 11 insertions(+)
create mode 100644 target/linux/mvebu/patches-5.15/999-vlan-after-dsa.patch
diff --git a/target/linux/mvebu/patches-5.15/999-vlan-after-dsa.patch b/target/linux/mvebu/patches-5.15/999-vlan-after-dsa.patch
new file mode 100644
index 0000000000..d6f241ca08
--- /dev/null
+++ b/target/linux/mvebu/patches-5.15/999-vlan-after-dsa.patch
@@ -0,0 +1,11 @@
+--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c
++++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c
+@@ -576,7 +576,7 @@ static void mvpp2_prs_dsa_tag_set(struct
+ /* Set result info bits to 'no vlans' */
+ mvpp2_prs_sram_ri_update(&pe, MVPP2_PRS_RI_VLAN_NONE,
+ MVPP2_PRS_RI_VLAN_MASK);
+- mvpp2_prs_sram_next_lu_set(&pe, MVPP2_PRS_LU_L2);
++ mvpp2_prs_sram_next_lu_set(&pe, MVPP2_PRS_LU_VLAN);
+ }
+
+ /* Mask all ports */
--
2.42.1

View File

@ -7,15 +7,15 @@ set -o pipefail
builddir=./build
# OpenWrt: package hashes correspond to core repo version
OPENWRTREV="v21.02.1"
PACKAGEREV="ded142471e36831d2af63c7fe5062c4367f8ccd2"
ROUTINGREV="9e7698f20d1edf8f912fbce2f21400f3cc772b31"
OPENWRTREV="2f2eceab1307d9f9c33f151d442ab97c95bd0400"
PACKAGEREV="b1b33235b221b36458942c2cb8f51d0e1d0d8f89"
ROUTINGREV="648753932d5a7deff7f2bdb33c000018a709ad84"
# Gluon packages: master from 2020-02-04
GLUONREV="12e41d0ff07ec54bbd67a31ab50d12ca04f2238c"
OPENWRT_PKGS="gpioctl-sysfs libugpio fastd haserl micrond mtr bmon"
ROUTING_PKGS="kmod-batman-adv batctl alfred babeld"
OPENWRT_PKGS="gpioctl-sysfs libugpio fastd haserl micrond mtr bmon htop sysstat procps-ng procps-ng-vmstat"
ROUTING_PKGS="kmod-batman-adv batctl alfred babeld bird2"
GLUON_PKGS="simple-tc uradvd"
FFF_VARIANTS="node layer3"
@ -54,29 +54,28 @@ checkout_git(){
local MYGIT="git -C $DIRECTORY"
echo "checking out $REPO_URL to $DIRECTORY in version $COMMITID"
if [ -d "$DIRECTORY" ]; then
if $MYGIT remote -v | grep -q "$REPO_URL" ; then
echo "Right remote detected"
# Remove untracked files
$MYGIT clean -f -d
# Select desired commit and remove local changes (-f)
if ! $MYGIT checkout -f "$COMMITID" ; then
echo "commitid not found trying to fetch new commits"
$MYGIT fetch --all && $MYGIT checkout "$COMMITID"
fi
else
echo "wrong remote or not an git repo at all -> deleting whole directory"
/bin/rm -rf "$DIRECTORY"
#needs to be without -C!!!
git clone "$REPO_URL" "$DIRECTORY"
$MYGIT checkout "$COMMITID"
fi
else
echo "We need to do a fresh checkout"
#needs to be without -C!!!
git clone "$REPO_URL" "$DIRECTORY"
$MYGIT checkout "$COMMITID"
if ! $MYGIT remote -v | grep -q "$REPO_URL"; then
echo "we need to do a fresh clone"
/bin/rm -rf -- "$DIRECTORY"
mkdir "$DIRECTORY"
$MYGIT clone --progress --no-checkout --filter=blob:none "$REPO_URL" .
$MYGIT config gc.auto 0
$MYGIT config advice.detachedHead 0
fi
echo
# Remove untracked files
$MYGIT clean -f -d
# Select desired commit and remove local changes (-f)
if ! $MYGIT checkout --progress --force "$COMMITID" ; then
echo "commitid not found trying to fetch new commits"
$MYGIT fetch --all && $MYGIT checkout "$COMMITID"
fi
echo
}
get_source() {
@ -126,20 +125,9 @@ prepare() {
patch_target
# apply variant to ensure the included file "variant.mk"
# exists in builddir.
apply_variant
update_feeds
}
apply_variant() {
# set the variant for this build
export FFF_VARIANT=$(cat selected_variant)
# force the reevaluation of this Makefile to make note of the new variant
touch ./src/packages/fff/fff/Makefile
}
update_feeds() {
## generate own feeds.conf
#this local variable should be globally configure variable used in get_source and here
@ -174,8 +162,6 @@ update_feeds() {
}
prebuild() {
apply_variant
#create filesdir for our config
/bin/rm -rf "$builddir"/files
mkdir "$builddir"/files
@ -193,6 +179,9 @@ prebuild() {
version="$variant-$version"
fi
# select variant packages
echo "CONFIG_PACKAGE_fff-${variant}=y" >> "$builddir"/.config
{
echo "FIRMWARE_VERSION=\"$version\""
echo "VARIANT=\"$variant\""
@ -218,13 +207,19 @@ build() {
case "$1" in
"debug")
make V=99
if [ -n "$2" ]; then
make V=99 -j $2
else
make V=99
fi
;;
"fast")
ionice -c 2 -- nice -n 1 -- make -j $((cpus*2))
[ -n "$2" ] && threads=$2 || threads=$((cpus*2))
ionice -c 2 -- nice -n 1 -- make -j $threads
;;
*)
ionice -c 3 -- nice -n 10 -- make -j $((cpus+1))
[ -n "$2" ] && threads=$2 || threads=$((cpus+1))
ionice -c 3 -- nice -n 10 -- make -j $threads
;;
esac
@ -290,7 +285,13 @@ cp_firmware() {
filename_build=${f##*/}
filename_build=${filename_build//openwrt/fff-${version}}
filename_build=${filename_build//squashfs-/}
filename_build=${filename_build//${chipset}-${subtarget}-/}
# The x86 OpenWrt target does not have a device name,
# so keep the target and subtarget for identification.
if [ "$chipset" != "x86" ]; then
filename_build=${filename_build//${chipset}-/}
filename_build=${filename_build//${subtarget}-/}
fi
cp "$f" "$imagedestpath/$filename_build"
done
done
@ -316,8 +317,7 @@ buildrelease() {
fi
cd bin/$variant
for binary in *.bin; do
md5sum "$binary" > ./"$binary".md5
for binary in *.bin *.img *.img.gz *.tar; do
sha256sum "$binary" > ./"$binary".sha256
done
echo -e "VERSION:$version" > release.nfo
@ -381,8 +381,12 @@ buildall() {
}
if [ "$(/usr/bin/id -u)" -eq 0 ]; then
echo "don't run buildscript as root"
exit 1
TPUT=$(command -v tput || echo ":")
textWarn="$($TPUT bold setaf 1)" # bold + red
textReset="$($TPUT sgr0)" # be a good citizen
printf "${textWarn}WARNING: buildscript is running as root${textReset}\n"
printf "${textWarn}WARNING: build may fail at a later stage${textReset}\n"
fi
if [ "$1" != "selectbsp" -a "$1" != "selectvariant" ]; then
@ -449,13 +453,13 @@ case "$1" in
"build")
if [ "$2" = "help" ] || [ "$2" = "x" ]; then
echo "This option compiles the firmware"
echo "Normaly the build uses lower IO and System priorities, "
echo "Normally the build uses lower IO and System priorities, "
echo "you can append \"fast\" option, to use normal user priorities"
echo
echo "Usage: $0 $1 [fast|debug]"
echo "Usage: $0 $1 [fast|debug] [numthreads]"
echo
else
build "$2"
build "$2" "$3"
fi
;;
"config")

View File

@ -0,0 +1,18 @@
From: =?UTF-8?q?Fabian=20Bl=C3=A4se?= <fabian@blaese.de>
Date: Sat, 6 Jan 2024 13:24:58 +0100
Subject: [PATCH] bird: disable unnecessary protocols
diff --git a/bird2/Makefile b/bird2/Makefile
index 9fd0031..dc827b0 100644
--- a/bird2/Makefile
+++ b/bird2/Makefile
@@ -97,7 +97,7 @@ protocols, telling BIRD to show various information, telling it to show
a routing table filtered by a filter, or asking BIRD to reconfigure.
endef
-CONFIGURE_ARGS += --disable-libssh
+CONFIGURE_ARGS += --disable-libssh --with-protocols="babel pipe radv static"
define Package/bird2/conffiles
/etc/bird.conf

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=fff-alfred-monitoring-proxy
PKG_RELEASE:=5
PKG_RELEASE:=$(COMMITCOUNT)
include $(INCLUDE_DIR)/package.mk

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=fff-alfred
PKG_RELEASE:=2
PKG_RELEASE:=$(COMMITCOUNT)
include $(INCLUDE_DIR)/package.mk

View File

@ -0,0 +1,29 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=fff-babel-bird2
PKG_RELEASE:=$(COMMITCOUNT)
include $(INCLUDE_DIR)/package.mk
define Package/fff-babel-bird2
SECTION:=base
CATEGORY:=Freifunk
TITLE:=Freifunk-Franken babel-bird2
URL:=https://www.freifunk-franken.de
DEPENDS:=+bird2 +bird2c +owipcalc
PROVIDES:=fff-babel-implementation
endef
define Package/fff-babel-bird2/description
This is the Freifunk Franken Firmware babel-bird2 package.
endef
define Build/Compile
# nothing
endef
define Package/fff-babel-bird2/install
$(CP) ./files/* $(1)/
endef
$(eval $(call BuildPackage,fff-babel-bird2))

View File

@ -0,0 +1,123 @@
# router id is not required for babeld, but necessary for bird startup
router id 192.0.2.0;
ipv4 table fff4;
ipv6 sadr table fff6;
protocol device {
scan time 15;
}
# device routes for ipv4 peering address
protocol direct {
ipv4 {
table fff4;
import filter {
include "/tmp/bird/include/nat-filter.conf";
if (net ~ 10.50.0.0/16 || net ~ 10.83.0.0/16) && net.len = 32 then {
accept;
}
reject;
};
};
}
# device routes on loopback interface
protocol direct {
ipv4 {
table fff4;
import filter {
include "/tmp/bird/include/nat-filter.conf";
if net ~ 10.50.0.0/16 || net ~ 10.83.0.0/16 then {
accept;
}
reject;
};
};
ipv6 sadr {
table fff6;
import filter {
if net ~ fdff::/64 from ::/0 then {
reject;
}
# only import GUA + ULA addresses
if net !~ 2000::/3 from ::/0 && net !~ fc00::/7 from ::/0 then {
reject;
}
accept;
};
import keep filtered;
};
interface "lo";
}
# ipv6 kernel route interface
protocol kernel {
ipv6 sadr {
table fff6;
import filter {
# only import routes from kernel with proto static
if krt_source != 4 then {
reject;
}
if net ~ fdff::/64 from ::/0 then {
reject;
}
accept;
};
export all;
preference 200;
};
kernel table 10;
scan time 15;
learn yes;
}
# ipv4 kernel route interface
protocol kernel {
ipv4 {
table fff4;
import filter {
include "/tmp/bird/include/nat-filter.conf";
# only import routes from kernel with proto static
if krt_source = 4 then {
accept;
}
reject;
};
export all;
preference 200;
};
kernel table 10;
scan time 15;
learn yes;
}
protocol babel {
# required due to static configuration of global router id.
# also improves reconnect speed after restart.
randomize router id yes;
ipv4 {
table fff4;
import all;
export all;
};
ipv6 sadr {
table fff6;
import all;
export all;
};
include "/tmp/bird/include/babelpeers.conf";
};

View File

@ -0,0 +1,45 @@
#!/bin/sh /etc/rc.common
# Copyright (C) 2010-2017 OpenWrt.org
USE_PROCD=1
START=70
BIRD_BIN="/usr/sbin/bird"
BIRD_CONF="/etc/bird.conf"
BIRD_PID_FILE="/var/run/bird.pid"
start_service() {
mkdir -p /var/run
set_include_path
procd_open_instance
procd_set_param command $BIRD_BIN -f -c $BIRD_CONF -P $BIRD_PID_FILE
procd_set_param file "$BIRD_CONF"
procd_set_param stdout 1
procd_set_param stderr 1
procd_set_param respawn
procd_close_instance
}
reload_service() {
set_include_path
procd_send_signal fff-bird
}
set_include_path() {
# Change include file path, so bird uses the correct configuration, depending on the configuration state:
# - If test mode is active (and /tmp/bird/fff exists), switch to the temporary configuration to be tested.
# - If new settings are applied or the old settings are restored after an unsuccessful test (and /tmp/bird/fff does not exist),
# switch back to the permanent configuration (/etc/bird/fff).
mkdir -p /tmp/bird/include
if [ -d /tmp/bird/fff ]; then
echo 'include "/tmp/bird/fff/babelpeers/*.conf";' > /tmp/bird/include/babelpeers.conf
echo 'include "/tmp/bird/fff/nat-filter.conf";' > /tmp/bird/include/nat-filter.conf
else
echo 'include "/etc/bird/fff/babelpeers/*.conf";' > /tmp/bird/include/babelpeers.conf
echo 'include "/etc/bird/fff/nat-filter.conf";' > /tmp/bird/include/nat-filter.conf
fi
}

View File

@ -0,0 +1,4 @@
/etc/init.d/bird disable
rm -f /etc/init.d/bird
exit 0

View File

@ -0,0 +1,5 @@
# SPDX-License-Identifier: GPL-3.0-only
mv /etc/bird-fff.conf /etc/bird.conf
exit 0

View File

@ -0,0 +1,72 @@
# SPDX-License-Identifier: GPL-3.0-only
babel_get_version() {
/usr/sbin/bird --version 2>&1 | sed "s/BIRD version /bird-/"
}
babel_add_interface() {
[ "$#" -ne "4" ] && return 1
local name="$1"
local interface="$2"
local type="$3"
local rxcost="$4"
mkdir -p /tmp/bird/fff/babelpeers
echo "interface \"$interface\" { type $type; rxcost $rxcost; };" > /tmp/bird/fff/babelpeers/$name.conf
return 0
}
babel_delete_interface() {
[ "$#" -ne "1" ] && return 1
local name="$1"
# Removing peers from /etc is not necessary, as all peers are generated into /tmp on every configuration run,
# which completely overwrites existing peers in /etc in the apply step.
rm -f /tmp/bird/fff/babelpeers/$name.conf
return 0
}
babel_add_redistribute_filter() {
return 0
}
babel_add_private_prefix_filter() {
[ "$#" -ne "1" ] && return 1
local prefix="$1"
prefix=$(owipcalc "$prefix" network prefix "$prefix")
mkdir -p /tmp/bird/fff
echo "if net ~ $prefix then reject;" > /tmp/bird/fff/nat-filter.conf
return 0
}
babel_remove_custom_redistribute_filters() {
mkdir -p /tmp/bird/fff
> /tmp/bird/fff/nat-filter.conf
return 0
}
babel_apply_implementation() {
# error output hidden because apply might be executed without a preceding configure step.
if [ -d /tmp/bird/fff ]; then
rm -rf /etc/bird/fff
mv /tmp/bird/fff /etc/bird/fff
fi
return 0
}
babel_reload_implementation() {
/etc/init.d/fff-bird reload
}
babel_revert() {
rm -rf /tmp/bird/fff
}

View File

@ -0,0 +1,20 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-3.0-only
set -e
set -o pipefail
if ! birdc show status >/dev/null 2>&1; then
# bird daemon not running or unavailable. exit.
exit 0
fi
neighbours="$(birdc -r show babel neighbors |
tail -n +5 |
awk '{ printf "<neighbour><ip>%s</ip><outgoing_interface>%s</outgoing_interface><link_cost>%s</link_cost></neighbour>", $1, $2, $3 }'
)"
echo -n "<babel_neighbours>$neighbours</babel_neighbours>"
exit 0

View File

@ -0,0 +1,28 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=fff-babel
PKG_RELEASE:=$(COMMITCOUNT)
include $(INCLUDE_DIR)/package.mk
define Package/fff-babel
SECTION:=base
CATEGORY:=Freifunk
TITLE:=Freifunk-Franken babel
URL:=https://www.freifunk-franken.de
DEPENDS:=+fff-babel-implementation
endef
define Package/fff-babel/description
This is the Freifunk Franken Firmware babel package.
endef
define Build/Compile
# nothing
endef
define Package/fff-babel/install
$(CP) ./files/* $(1)/
endef
$(eval $(call BuildPackage,fff-babel))

View File

@ -26,7 +26,7 @@ configure() {
fi
}
config_load babeld
config_load network
config_foreach remove_babelpeer interface
#add new peers
@ -75,14 +75,14 @@ configure() {
babel_add_peer6addr "network.$prefixname.ip6addr"
# add babel interface
babel_add_interface "$prefixname" "$iface" "$type" "$rxcost" || { echo "Could not add babeld interface for babelpeer $name"; exit 1; }
babel_add_interface "$prefixname" "$iface" "$type" "$rxcost" || { echo "Could not add babel interface for babelpeer $name"; exit 1; }
}
config_load gateway
config_foreach add_babelpeer babelpeer
# configure babeld filters for custom ipv6 addresses
# configure babel filters for custom ipv6 addresses
## remove old filters
babel_remove_custom_redistribute_filters
@ -90,14 +90,25 @@ configure() {
for prefix in $(uci -q get gateway.@client[0].ip6addr); do
babel_add_redistribute_filter "$prefix"
done
## add deny filters for client prefixes used with snat
if [ "$(uci -q get gateway.@client[0].snat)" = "1" ]; then
for prefix in $(uci -q get gateway.@client[0].ipaddr); do
babel_add_private_prefix_filter "$prefix"
done
fi
}
apply() {
uci commit network
uci commit babeld
babel_apply
}
reload() {
babel_reload
}
revert() {
uci revert network
uci revert babeld
babel_revert
}

View File

@ -1,3 +1,9 @@
implementation=$(uci -q get babelimpl.impl.impl)
[ -z "$implementation" ] && implementation=bird2
. /lib/functions/fff/babeldaemon/$implementation
babel_add_iifrules() {
[ "$#" -ne "1" ] && return 1
@ -38,10 +44,18 @@ babel_add_peeraddr() {
uci add_list "$option"="$peer_ip"
elif router_ip=$(uci -q get gateway.meta.router_ip); then
# use router_ip if no peer_ip is set
uci add_list "$option"="$router_ip"
ip=$router_ip
# use only first ip
ip=${ip%% *}
# remove CIDR mask
ip=${ip%%/*}
uci add_list "$option"="$ip"
elif ipaddr=$(uci -q get gateway.@client[0].ipaddr); then
# use client interface address (without subnet) if no router_ip is set
uci add_list "$option"=$(echo $ipaddr | cut -d / -f1)
uci add_list "$option"=${ipaddr%%/*}
else
echo "WARNING: No peer_ip, router_ip or client interface ipaddr set! IPv4 routing is not possible."
return 1
@ -64,61 +78,39 @@ babel_add_peer6addr() {
return 0
}
babel_add_interface() {
[ "$#" -ne "4" ] && return 1
babel_reload() {
# switch implementation temporarily
case $implementation in
bird2)
[ -f /etc/init.d/babeld ] && /etc/init.d/babeld stop 2>/dev/null
[ -f /etc/init.d/fff-bird ] && /etc/init.d/fff-bird start
;;
babeld)
[ -f /etc/init.d/fff-bird ] && /etc/init.d/fff-bird stop 2>/dev/null
[ -f /etc/init.d/babeld ] && /etc/init.d/babeld start
;;
esac
local name="$1"
local interface="$2"
local type="$3"
local rxcost="$4"
uci set babeld.$name=interface
uci set babeld.$name.ifname="$interface"
uci set babeld.$name.type="$type"
uci set babeld.$name.rxcost="$rxcost"
# call implementation-specific reload commands
babel_reload_implementation
return 0
}
babel_delete_interface() {
[ "$#" -ne "1" ] && return 1
babel_apply() {
# switch implementation persistently
case $implementation in
bird2)
[ -f /etc/init.d/babeld ] && /etc/init.d/babeld disable
[ -f /etc/init.d/fff-bird ] && /etc/init.d/fff-bird enable
;;
babeld)
[ -f /etc/init.d/fff-bird ] && /etc/init.d/fff-bird disable
[ -f /etc/init.d/babeld ] && /etc/init.d/babeld enable
;;
esac
local name="$1"
uci -q del babeld.$name
return 0
}
babel_add_redistribute_filter() {
[ "$#" -ne "1" ] && return 1
local prefix="$1"
config=$(uci add babeld filter)
uci set babeld.$config.type='redistribute'
uci set babeld.$config.ip="$prefix"
uci set babeld.$config.addedbyautoconfig='true'
return 0
}
babel_remove_custom_redistribute_filters() {
[ "$#" -ne "0" ] && return 1
remove_filters() {
local name="$1"
# check if filter was added by configuregateway
if ! [ "$(uci -q get babeld.$name.addedbyautoconfig)" = 'true' ]; then
return
fi
uci -q del babeld.$name
}
config_load babeld
config_foreach remove_filters filter
babel_apply_implementation
return 0
}

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=fff-babeld
PKG_RELEASE:=8
PKG_RELEASE:=$(COMMITCOUNT)
include $(INCLUDE_DIR)/package.mk
@ -11,6 +11,7 @@ define Package/fff-babeld
TITLE:=Freifunk-Franken babeld configuration example
URL:=https://www.freifunk-franken.de
DEPENDS:=+babeld
PROVIDES:=fff-babel-implementation
endef
define Package/fff-babeld/description

View File

@ -0,0 +1,3 @@
/etc/init.d/babeld disable
exit 0

View File

@ -0,0 +1,103 @@
# SPDX-License-Identifier: GPL-3.0-only
babel_get_version() {
/usr/sbin/babeld -V 2>&1
}
babel_add_interface() {
[ "$#" -ne "4" ] && return 1
local name="$1"
local interface="$2"
local type="$3"
local rxcost="$4"
uci set babeld.$name=interface
uci set babeld.$name.ifname="$interface"
uci set babeld.$name.type="$type"
uci set babeld.$name.rxcost="$rxcost"
return 0
}
babel_delete_interface() {
[ "$#" -ne "1" ] && return 1
local name="$1"
uci -q del babeld.$name
return 0
}
babel_add_redistribute_filter() {
[ "$#" -ne "1" ] && return 1
local prefix="$1"
config=$(uci add babeld filter)
uci set babeld.$config.type='redistribute'
uci set babeld.$config.ip="$prefix"
uci set babeld.$config.addedbyautoconfig='true'
return 0
}
babel_add_private_prefix_filter() {
[ "$#" -ne "1" ] && return 1
local prefix="$1"
config=$(uci add babeld filter)
uci set babeld.$config.type='redistribute'
uci set babeld.$config.ip="$prefix"
uci set babeld.$config.addedbyautoconfig='true'
uci set babeld.$config.action='deny'
# move to top, so filter rule has precedence over all other rules
uci reorder babeld.$config=0
config=$(uci add babeld filter)
uci set babeld.$config.type='redistribute'
uci set babeld.$config.ip="$prefix"
uci set babeld.$config.addedbyautoconfig='true'
uci set babeld.$config.local='true'
uci set babeld.$config.action='deny'
# move to top, so filter rule has precedence over all other rules
uci reorder babeld.$config=0
return 0
}
babel_remove_custom_redistribute_filters() {
[ "$#" -ne "0" ] && return 1
remove_filters() {
local name="$1"
# check if filter was added by configuregateway
if ! [ "$(uci -q get babeld.$name.addedbyautoconfig)" = 'true' ]; then
return
fi
uci -q del babeld.$name
}
config_load babeld
config_foreach remove_filters filter
return 0
}
babel_apply_implementation() {
uci commit babeld
}
babel_reload_implementation() {
return 0
}
babel_revert() {
uci revert babeld
}

View File

@ -0,0 +1,36 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=fff-base
PKG_RELEASE:=$(COMMITCOUNT)
include $(INCLUDE_DIR)/package.mk
define Package/fff-base
SECTION:=base
CATEGORY:=Freifunk
TITLE:=Freifunk-Franken base dependencies
URL:=https://www.freifunk-franken.de
DEFAULT:=y
DEPENDS:= \
+@BUSYBOX_CONFIG_FEATURE_REVERSE_SEARCH \
+@BUSYBOX_CONFIG_FEATURE_TOP_SMP_CPU \
+@BUSYBOX_CONFIG_WATCH \
+@BUSYBOX_CONFIG_FEATURE_EDITING_SAVEHISTORY \
+micrond \
+odhcp6c \
+fff-config \
+fff-network \
+fff-nodewatcher \
+fff-simple-tc \
+fff-support \
+fff-sysupgrade \
+fff-timeserver \
+fff-web-ui \
+fff-wireless
endef
define Package/fff-variant/description
This package includes base packages used in the Freifunk-Franken firmware
endef
$(eval $(call BuildPackage,fff-base))

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=fff-batman-adv
PKG_RELEASE:=4
PKG_RELEASE:=$(COMMITCOUNT)
include $(INCLUDE_DIR)/package.mk

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=fff-boardname
PKG_RELEASE:=8
PKG_RELEASE:=$(COMMITCOUNT)
include $(INCLUDE_DIR)/package.mk

View File

@ -1,5 +1,9 @@
BOARD=$(cat /var/sysinfo/board_name)
if uname -a | grep x86_64 > /dev/null; then
BOARD="x86_64"
fi
uci set board.model.name=$BOARD
uci commit board

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=fff-config
PKG_RELEASE:=2
PKG_RELEASE:=$(COMMITCOUNT)
include $(INCLUDE_DIR)/package.mk

View File

@ -0,0 +1 @@
vm.panic_on_oom=1

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=fff-dhcp
PKG_RELEASE:=6
PKG_RELEASE:=$(COMMITCOUNT)
include $(INCLUDE_DIR)/package.mk

View File

@ -1,3 +1,10 @@
# Use a larger cachesize by default
cachesize=1024
# Increase cachesize for systems with enough memory
mem="$(awk '/^MemTotal:/ {print $2}' /proc/meminfo)"
[ "$mem" -gt 65536 ] && cachesize=8192
uci batch >/dev/null <<EOF
delete dhcp.@dnsmasq[0]
delete dhcp.lan
@ -12,12 +19,19 @@ uci batch >/dev/null <<EOF
set dhcp.@dnsmasq[-1].domain='fff.community'
set dhcp.@dnsmasq[-1].expandhosts='0'
set dhcp.@dnsmasq[-1].nonegcache='0'
set dhcp.@dnsmasq[-1].cachesize="$cachesize"
set dhcp.@dnsmasq[-1].authoritative='1'
set dhcp.@dnsmasq[-1].readethers='1'
set dhcp.@dnsmasq[-1].leasefile='/tmp/dhcp.leases'
set dhcp.@dnsmasq[-1].noresolv='1'
set dhcp.@dnsmasq[-1].localservice='1'
# do not generate A or AAAA records for the routers hostname,
# because this might interfere with upstream records.
#
# e.g. hostname: 'router.fff.community'
set dhcp.@dnsmasq[-1].add_local_fqdn='0'
set dhcp.client=dhcp
set dhcp.client.interface='client'
set dhcp.client.leasetime='1h'

View File

@ -0,0 +1,24 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=fff-extra
PKG_RELEASE:=$(COMMITCOUNT)
include $(INCLUDE_DIR)/package.mk
define Package/fff-extra
SECTION:=base
CATEGORY:=Freifunk
TITLE:=Freifunk-Franken gateway configuration
URL:=https://www.freifunk-franken.de
DEPENDS:=+bmon \
+htop \
+procps-ng \
+procps-ng-vmstat \
+sysstat
endef
define Package/fff-extra/description
This package selects useful packages for devices with enough disk space available
endef
$(eval $(call BuildPackage,fff-extra))

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=fff-fastd
PKG_RELEASE:=3
PKG_RELEASE:=$(COMMITCOUNT)
include $(INCLUDE_DIR)/package.mk

View File

@ -29,6 +29,7 @@ ln -s /tmp/fastd_fff_peers /etc/fastd/fff/peers
echo "#!/bin/sh" > /etc/fastd/fff/up.sh
echo "ip link set up dev fffVPN" >> /etc/fastd/fff/up.sh
echo "batctl if add fffVPN" >> /etc/fastd/fff/up.sh
echo "batctl hardif fffVPN hop_penalty 30" >> /etc/fastd/fff/up.sh
chmod +x /etc/fastd/fff/up.sh
exit 0

View File

@ -0,0 +1,29 @@
protocol=fastd
fastd_clear() {
rm /tmp/fastd_fff_peers/* 2>/dev/null
}
fastd_addpeer() {
[ -d /tmp/fastd_fff_peers ] || mkdir /tmp/fastd_fff_peers
# write fastd-config
json_get_var servername name
filename="/etc/fastd/fff/peers/$servername"
echo "#name \"${servername}\";" > "$filename"
json_get_var key key
echo "key \"${key}\";" >> "$filename"
json_get_var address address
json_get_var port port
echo "remote \"${address}\" port ${port};" >> "$filename"
echo "" >> "$filename"
echo "float yes;" >> "$filename"
}
fastd_start_stop() {
if ls /etc/fastd/fff/peers/* &>/dev/null; then
/etc/init.d/fastd reload
else
/etc/init.d/fastd stop
fi
}

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=fff-firewall
PKG_RELEASE:=8
PKG_RELEASE:=$(COMMITCOUNT)
include $(INCLUDE_DIR)/package.mk
@ -10,11 +10,8 @@ define Package/$(PKG_NAME)
CATEGORY:=Freifunk
TITLE:=Freifunk-Franken firewall
URL:=https://www.freifunk-franken.de
DEPENDS:=+arptables \
+ebtables +ebtables-utils \
+kmod-ebtables-ipv4 +kmod-ebtables-ipv6 \
+iptables-mod-filter +iptables-mod-ipopt +iptables-mod-conntrack-extra \
+kmod-nf-conntrack6
DEPENDS:=+kmod-nft-bridge \
+nftables
endef
define Package/$(PKG_NAME)/description

View File

@ -1,6 +1,3 @@
######## CLEAN UP ############
ebtables -F
ebtables -X
iptables-save | awk '/^[*]/ { print $1 } /^:[A-Z]+ [^-]/ { print $1 " ACCEPT" ; } /COMMIT/ { print $0; }' | iptables-restore
ip6tables-save | awk '/^[*]/ { print $1 } /^:[A-Z]+ [^-]/ { print $1 " ACCEPT" ; } /COMMIT/ { print $0; }' | ip6tables-restore
nft -f - <<__EOF
flush ruleset
__EOF

View File

@ -1,2 +0,0 @@
#solves MTU problem with bad ISPs
iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

View File

@ -1,5 +0,0 @@
# Limit ssh to 6 new connections per 60 seconds
/usr/sbin/ip6tables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m recent --set --name dropbear
/usr/sbin/ip6tables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m recent --update --seconds 60 --hitcount 6 --rttl --name dropbear -j DROP
/usr/sbin/iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m recent --set --name dropbear
/usr/sbin/iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m recent --update --seconds 60 --hitcount 6 --rttl --name dropbear -j DROP

View File

@ -0,0 +1 @@
nft -f /etc/nftables-fff.conf

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=fff-hoods
PKG_RELEASE:=19
PKG_RELEASE:=$(COMMITCOUNT)
include $(INCLUDE_DIR)/package.mk

View File

@ -2,4 +2,7 @@
ln -s "$hoodfilewww" /www/hood/keyxchangev2data
uci set fff.keyserver='hood'
uci commit fff
exit 0

View File

@ -1,5 +1,15 @@
# Erlaube nur fe80::1 von BATMAN -> CLIENT
ebtables -A FORWARD -p IPv6 --ip6-source fe80::1 -j IN_ONLY
nft -f - <<__EOF
table bridge filter {
chain INPUT {
# Erlaube nur fe80::1 von BATMAN -> CLIENT
# -p IPv6 --ip6-src fe80::1 -j IN_ONLY
ether type ip6 ip6 saddr fe80::1 counter jump IN_ONLY
}
# Erlaube nur fe80::1 von KNOTEN -> CLIENT
ebtables -A INPUT -p IPv6 --ip6-source fe80::1 -j IN_ONLY
chain FORWARD {
# Erlaube nur fe80::1 von KNOTEN -> CLIENT
# -p IPv6 --ip6-src fe80::1 -j IN_ONLY
ether type ip6 ip6 saddr fe80::1 counter jump IN_ONLY
}
}
__EOF

View File

@ -99,7 +99,7 @@ getKeyserverHoodfile() {
echo "Getting hoodfile from Keyserver"
if /bin/busybox wget -T15 -O "$file" "http://keyserver.freifunk-franken.de/v2/?lat=$lat&long=$long"; then
if /bin/busybox wget -T15 -O "$file" "$(uci -q get fff.keyserver.url || echo "http://keyserver.freifunk-franken.de/v2")/?lat=$lat&long=$long"; then
return 0
else
return 1

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=fff-hoodutils
PKG_RELEASE:=2
PKG_RELEASE:=$(COMMITCOUNT)
include $(INCLUDE_DIR)/package.mk

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=fff-layer3-config
PKG_RELEASE:=9
PKG_RELEASE:=$(COMMITCOUNT)
include $(INCLUDE_DIR)/package.mk

View File

@ -1,13 +1,13 @@
configure() {
# check if gateway config exists
if ! uci -q show gateway > /dev/null; then
if ! uci show gateway > /dev/null; then
echo "ERROR: Gateway config could not be parsed or does not exist."
return 1
fi
# check version of configuration
local expected_version=2
local expected_version=3
local config_version=$(uci -q get gateway.meta.config_version)
if ! [ -n "$config_version" ]; then

View File

@ -20,7 +20,7 @@ configure() {
# ip6addr
#remove old ip6addr
for ip in $(uci get network.client.ip6addr); do
for ip in $(uci -q get network.client.ip6addr); do
if echo "$ip" | grep -v -e "fdff:" -e "fe80::1/64" > /dev/null; then
uci del_list network.client.ip6addr="$ip"
fi
@ -50,14 +50,19 @@ configure() {
# set interface
#remove all eth interfaces
ifaces=$(uci get network.client.ifname | sed 's/\beth[^ ]* *//g' | sed 's/\bswitch[^ ]* *//g')
if vlan=$(uci -q get gateway.@client[0].vlan); then
uci set network.client.ifname="${SWITCHDEV}.$vlan $ifaces"
uci set network.client.ifname="${SWITCHDEV}.$vlan"
elif iface=$(uci -q get gateway.@client[0].iface); then
uci set network.client.ifname="$iface $ifaces"
uci set network.client.ifname="$iface"
else
echo "WARNING: No Interface for client specified"
fi
# stateful firewall
uci -q del network.client.fff_stateful_firewall
if [ "$(uci -q get gateway.@client[0].stateful_firewall)" = 1 ]; then
uci set network.client.fff_stateful_firewall=1
fi
}
apply() {

View File

@ -7,7 +7,7 @@
BOARD="$(uci get board.model.name)"
# only migrate appropriate config versions
[ "$(uci -q get gateway.meta.config_version)" = "1" ] || exit 1
[ "$(uci -q get gateway.meta.config_version)" = "1" ] || exit 0
translate_ports() {
local vlan="$1"
@ -77,3 +77,5 @@ esac
uci set gateway.meta.config_version='2'
uci commit gateway
exit 0

View File

@ -0,0 +1,78 @@
## this script migrates configs from version 2 to 3.
##
## with version 2 the switchport names of some devices changed
## due to the switch to DSA
BOARD="$(uci get board.model.name)"
# only migrate appropriate config versions
[ "$(uci -q get gateway.meta.config_version)" = "2" ] || exit 0
translate_ports() {
local vlan="$1"
local oldports="$(uci -q get gateway.$vlan.ports)"
local newports
local name
local tag
for port in $oldports; do
# generate new tagged/untagged syntax
if [ -z "${port##*t}" ]; then
# port is tagged
tag=":t"
else
# port is untagged
tag=":*"
fi
# generate new name
case "$BOARD" in
avm,fritzbox-4040)
case "${port%%t}" in
1) name="lan1" ;;
2) name="lan2" ;;
3) name="lan3" ;;
4) name="lan4" ;;
5) name="wan" ;;
*) name="" ;;
esac
;;
tplink,tl-wdr4900-v1)
case "${port%%t}" in
1) name="wan" ;;
2) name="lan1" ;;
3) name="lan2" ;;
4) name="lan3" ;;
5) name="lan4" ;;
*) name="" ;;
esac
;;
esac
# catch empty name (invalid entry or old cpuport)
[ -z "$name" ] && continue
# assemble new port name
newports="$newports ${name}${tag}"
done
# cleanup unnecessary spaces
newports=$(echo "$newports" | xargs)
uci set gateway.$vlan.ports="$newports"
}
case "$BOARD" in
avm,fritzbox-4040|\
tplink,tl-wdr4900-v1)
config_load gateway
config_foreach translate_ports vlan
;;
esac
uci set gateway.meta.config_version='3'
uci commit gateway
exit 0

View File

@ -7,6 +7,7 @@
execute_subshell() {
if [ $# -ne 1 ]; then
echo "Usage:" "$0" "<function>"
return 1
fi
for script in /etc/layer3.d/*; do
@ -23,7 +24,7 @@ execute_subshell() {
if [ $? -ne 0 ]; then
echo
echo "Error when executing" "$1" "from" "$(basename "$script")"
exit 1
return 1
fi
done
}
@ -32,29 +33,33 @@ configure() {
echo "This script might remove existing vlans, interfaces, addresses, etc."
read -r -p "Do you really want to continue? (y/n) " response
if ! ( [ "$response" == "y" ] || [ "$response" == "Y" ] ); then
exit 1
return 1
fi
echo
execute_subshell configure
execute_subshell configure || return $?
exit 0
return 0
}
reload_services() {
execute_subshell reload
reload_config
return 0
}
apply_changes() {
execute_subshell apply
reload_services
exit 0
return 0
}
revert_changes() {
execute_subshell revert
exit 0
return 0
}
keep_changes() {

View File

@ -0,0 +1,31 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=fff-layer3-snat
PKG_RELEASE:=$(COMMITCOUNT)
include $(INCLUDE_DIR)/package.mk
define Package/fff-layer3-snat
SECTION:=base
CATEGORY:=Freifunk
TITLE:=Freifunk-Franken layer3 configuration with SNAT
URL:=https://www.freifunk-franken.de
DEPENDS:= \
+fff-firewall \
+fff-layer3-config \
+kmod-nft-nat
endef
define Package/fff-layer3-snat/description
With this package it is possible to make SNAT with IPv4 on the router
endef
define Build/Compile
# nothing
endef
define Package/fff-layer3-snat/install
$(CP) ./files/* $(1)/
endef
$(eval $(call BuildPackage,fff-layer3-snat))

View File

@ -0,0 +1,34 @@
configure() {
# first we delete the snat config
uci -q del network.client.fff_snat
uci -q del network.client.fff_snat_sourceip
if [ "$(uci -q get gateway.@client[0].snat)" = '1' ]; then
# first check the config is plausible
if ! routerip=$(uci -q get gateway.meta.router_ip); then
echo "ERROR: No router_ip set, which is required for SNAT!"
return 1
fi
if ! uci -q get gateway.@client[0].ipaddr >/dev/null; then
echo "ERROR: No ipaddr set, which is required for SNAT!"
return 1
fi
# keep only the first IP
routerip=${routerip%% *}
# keep only the IP without the CIDR
routerip=${routerip%%/*}
# We set the snat config
uci set network.client.fff_snat=1
uci set network.client.fff_snat_sourceip=$routerip
fi
}
apply() {
uci commit network
}
revert() {
uci revert network
}

View File

@ -0,0 +1,10 @@
if [ "$(uci -q get network.client.fff_snat)" = '1' ]; then
nft add table ip mangle
nft add chain ip mangle PREROUTING '{ type filter hook prerouting priority mangle; policy accept; }'
nft add table ip nat
nft add chain ip nat POSTROUTING '{ type nat hook postrouting priority srcnat; policy accept; }'
nft add rule ip mangle PREROUTING iifname "br-client" counter mark set 0x736e6174
nft add rule ip nat POSTROUTING meta mark 0x736e6174 counter snat ip to $(uci -q get network.client.fff_snat_sourceip)
fi

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=fff-layer3
PKG_RELEASE:=9
PKG_RELEASE:=$(COMMITCOUNT)
include $(INCLUDE_DIR)/package.mk
@ -11,33 +11,28 @@ define Package/fff-layer3
TITLE:=Freifunk-Franken gateway configuration
URL:=https://www.freifunk-franken.de
DEPENDS:=+fff-alfred-monitoring-proxy \
+fff-babeld \
+fff-babel \
+fff-babel-bird2 \
+fff-boardname \
+fff-dhcp \
+fff-layer3-config \
+fff-layer3-snat \
+fff-mqtt-monitoring \
+fff-network \
+fff-ra \
+fff-web-mqtt \
+fff-wireguard \
+arptables \
+bmon \
+ebtables \
+ebtables-utils \
+kmod-ebtables-ipv4 \
+kmod-ebtables-ipv6 \
+kmod-sched-cake \
+gre \
+@PACKAGE_grev4 \
+@PACKAGE_grev6 \
+iperf3 \
+ip-full \
+iptables-mod-filter \
+iptables-mod-ipopt \
+iptables-mod-conntrack-extra \
+mtr \
+nftables \
+snmp-utils \
+tc \
+tcpdump \
+tcpdump-mini \
+vxlan
endef

Some files were not shown because too many files have changed in this diff Show More