Compare commits

...

152 Commits

Author SHA1 Message Date
John Crispin
2983d9ca2b ath11k-wifi: add trailing '\' in Makefile
This caused image to pop up builds with no BDF in the image.

Fixes: 1a305421 (ipq807x: add support for wallystech dr6018)
Signed-off-by: John Crispin <john@phrozen.org>
2021-10-29 08:36:21 +02:00
John Crispin
2283a64e57 ipq807x: backport eBPF layer from v5.10 kernel
Signed-off-by: John Crispin <john@phrozen.org>
2021-10-28 19:40:05 +02:00
John Crispin
1a3054218f ipq807x: add support for wallystech dr6018
Signed-off-by: John Crispin <john@phrozen.org>
2021-10-28 19:40:05 +02:00
John Crispin
7d26b55cb5 Dockerfile: install llvm/clang
This is required by the bpf-header compat package.

Signed-off-by: John Crispin <john@phrozen.org>
2021-10-28 19:40:05 +02:00
John Crispin
cd85723609 ipq807x: fix v4.4 kernel-headers for BPF
Signed-off-by: John Crispin <john@phrozen.org>
2021-10-28 10:15:58 +02:00
John Crispin
6d922da9b8 backports: add iproute2 compile fix
Signed-off-by: John Crispin <john@phrozen.org>
2021-10-28 10:15:58 +02:00
John Crispin
6b81555bb2 backports: add bpf-headers compat layer
Signed-off-by: John Crispin <john@phrozen.org>
2021-10-28 10:15:58 +02:00
John Crispin
267157563e ucentral-schema: update to latest HEAD
1bdc8de update the qos scheme/renderer

Signed-off-by: John Crispin <john@phrozen.org>
2021-10-28 10:15:58 +02:00
John Crispin
6505ca0a8f hostapd: fix qos_map_set
The option was incorrectly masked by iw_enable.

Signed-off-by: John Crispin <john@phrozen.org>
2021-10-28 10:15:58 +02:00
John Crispin
5cafdaea60 profiles: add qosify to the ap profile
Signed-off-by: John Crispin <john@phrozen.org>
2021-10-28 10:15:58 +02:00
John Crispin
4a3d4f5609 qosify: add new QoS package
Signed-off-by: John Crispin <john@phrozen.org>
2021-10-28 10:15:58 +02:00
John Crispin
3085dc78ef ucode: update to latest HEAD
* adds resolv module

Signed-off-by: John Crispin <john@phrozen.org>
2021-10-27 18:21:02 +02:00
John Crispin
897ab17137 ucentral-schema: update to latest HEAD
6b3bdb1 force dnsmasq reload after applying a config

Fixes: WIFI-5025
Signed-off-by: John Crispin <john@phrozen.org>
2021-10-22 18:05:38 +02:00
John Crispin
840319e24f udevmand: update to latest HEAD
b5a68ca fix wrap around glitch

Signed-off-by: John Crispin <john@phrozen.org>
2021-10-22 10:35:53 +02:00
John Crispin
00197d703e ath11k: fix regdb upload
Make ath11k honour latest regdb.

Fixes: WIFI-3256
Signed-off-by: John Crispin <john@phrozen.org>
2021-10-22 10:27:47 +02:00
John Crispin
a290ad3764 ucentral-schema: update to latest HEAD
d59450b add bssid to radio stats

Signed-off-by: John Crispin <john@phrozen.org>
2021-10-22 08:18:50 +02:00
John Crispin
972eea34eb ucentral-client: update to latest HEAD
0179c0f Drop 60s socket timeout

Signed-off-by: John Crispin <john@phrozen.org>
2021-10-22 08:17:48 +02:00
John Crispin
851507921a hostapd: add wds fixes to AX hostapd
Signed-off-by: John Crispin <john@phrozen.org>
2021-10-22 08:15:43 +02:00
John Crispin
b364ab3064 certificates: fix the file owner and permission of the certificates
This was breaking hostapd local-certificates support.

Signed-off-by: John Crispin <john@phrozen.org>
2021-10-22 07:58:20 +02:00
John Crispin
45143cc2c9 chilli-redirect: add uamsecret to list of possible options
Fixes: WIFI-4935
Signed-off-by: John Crispin <john@phrozen.org>
2021-10-21 16:02:28 +02:00
John Crispin
895e501b93 hostapd: update to latest HEAD
This fixes an issue where WDS would not work reliably upon AP->STA transition.

Signed-off-by: John Crispin <john@phrozen.org>
2021-10-21 11:33:58 +02:00
John Crispin
7d9594c3c8 netifd: update to latest HEAD
This fixes an issue where WDS would not work reliably upon AP->STA transition.

Signed-off-by: John Crispin <john@phrozen.org>
2021-10-21 11:33:25 +02:00
John Crispin
485c689408 ipq807x: add support for wf194c4
Signed-off-by: John Crispin <john@phrozen.org>
2021-10-20 08:23:04 +02:00
John Crispin
ec2e24e982 workflow: update wf-188 and ec-420 profile
This will let FMS properly pick the files up.

Fixes: WIFI-4929
Signed-off-by: John Crispin <john@phrozen.org>
2021-10-18 10:10:07 +02:00
John Crispin
32f86e2d77 ucentral-event: update to latest HEAD
7b0d136 align event names

Signed-off-by: John Crispin <john@phrozen.org>
2021-10-18 09:32:50 +02:00
John Crispin
53e73b24de ucentral-schema: update metric example
Signed-off-by: John Crispin <john@phrozen.org>
2021-10-18 08:58:36 +02:00
John Crispin
e57dad9009 ucentral-schema: update to latest HEAD
0456fc4 telemetry task was not getting enqueued in the correct runqueue

Signed-off-by: John Crispin <john@phrozen.org>
2021-10-18 08:58:17 +02:00
John Crispin
01c3ce4fc7 ucentral-wifi: update to latest HEAD
b6dd24f add bssid to wifi scan results

Signed-off-by: John Crispin <john@phrozen.org>
2021-10-18 07:01:16 +02:00
John Crispin
6b3d2b8059 ipq40xx: add spw2ac1200-lan-poe profile
Signed-off-by: John Crispin <john@phrozen.org>
2021-10-14 16:22:24 +02:00
John Crispin
ba079bea9f linksys_ea6350-v4: make sure the image land in S3 with the correct name
Signed-off-by: John Crispin <john@phrozen.org>
2021-10-14 12:39:38 +02:00
John Crispin
f971f3a4d4 luci-mod-ucentral: the unit was not correctly rebooting after "save & apply"
Signed-off-by: John Crispin <john@phrozen.org>
2021-10-14 12:12:42 +02:00
Stijn Tintel
32524c19bd This is required for Express Wi-Fi in bridged mode
Fixes: WIFI-4639
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
2021-10-13 18:17:52 +02:00
John Crispin
966353e747 ucentral-schema: update to latest HEAD
73e9fbc open-flow: support OpenFlow bridged mode
ac24d7f drop vlan-id from the gre tunnel definition

Fixes: WIFI-4639
Signed-off-by: John Crispin <john@phrozen.org>
2021-10-13 18:17:46 +02:00
John Crispin
37f30d95f8 ucentral-schema: update to latest HEAD
7e59b14 only generate docs if the tool is installed
e440ced open-flow: fix controller property type
b85abaf generate-reader.uc: introduce ip format
288997c open-flow: update generated files
e9d7049 generate.sh: generate schemareader.uc before docs

Signed-off-by: John Crispin <john@phrozen.org>
2021-10-13 16:44:19 +02:00
John Crispin
e699bebac7 fbwifi: sync with latest HEAD
Fixes: WIFI-4910
Signed-off-by: John Crispin <john@phrozen.org>
2021-10-13 14:08:12 +02:00
John Crispin
0e5ec91a12 luci: start using the upstream feed and move the maverick packages into the tree
Fixes: WIFI-4911
Signed-off-by: John Crispin <john@phrozen.org>
2021-10-13 13:01:39 +02:00
John Crispin
3cad34e1b9 certififcates: reduce log noise when mounting the certificates partition
Signed-off-by: John Crispin <john@phrozen.org>
2021-10-13 10:51:21 +02:00
Stijn Tintel
2c37a6983f openflow: sync changes from openwrt-packages
c05103da9 openvswitch: add option for OpenFlow datapath desc
 b2bfb572a openvswitch: fix build with libunbound
 9e45d4534 openvswitch: add option for failure mode

Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
2021-10-13 07:37:16 +02:00
John Crispin
330eead632 ipq40xx: improve SPW2AC1200 sysupgrade
with this fix it does not matter if the unit is in primary or secondary boot mode.

Signed-off-by: John Crispin <john@phrozen.org>
2021-10-12 18:25:57 +02:00
John Crispin
f1456f321a ipq807x: update eap102 bdf
Signed-off-by: John Crispin <john@phrozen.org>
2021-10-12 18:25:42 +02:00
John Crispin
9152942d93 ucentral-schema: update to latest HEAD
60549a8 open-flow: use mode ssl by default
70d8465 openflow: remove duplicate code
2718e30 schema: add property to set OpenFlow datapath description

Signed-off-by: John Crispin <john@phrozen.org>
2021-10-12 11:05:20 +02:00
John Crispin
f202250a68 ucentral-schema: update to latest HEAD
50d182c renderer: add missing support for hostapd_bss_raw and hostapd_iface_raw

Signed-off-by: John Crispin <john@phrozen.org>
2021-10-12 10:53:49 +02:00
John Crispin
fad14af474 ipq40xx: improve EdgeCore-SPW2AC1200 sysupgrade
Make sure to always flash into the primary partition.

Signed-off-by: John Crispin <john@phrozen.org>
2021-10-12 08:13:11 +02:00
John Crispin
5a7bafede0 ucentral-schema: update to latest HEAD
8eb586b 11u domain operator name was a singleton but should be an array
4eb1560 iw_nai_realm was being written to uci using set and not add_list
a35a0ea add support for hs20_wan_metrics

Fixes: WIFI-4868
Fixes: WIFI-4869
Fixes: WIFI-4870
Signed-off-by: John Crispin <john@phrozen.org>
2021-10-11 11:51:39 +02:00
John Crispin
6738a933ab ucentral-schema: add example vlan config for switches
Signed-off-by: John Crispin <john@phrozen.org>
2021-10-09 08:11:16 +02:00
John Crispin
a46262aaaa hostapd: fix wpa3-eap modes
wpa3 was not setup correctly and wpa3-192 was missing

Fixes: WIFI-4281
Signed-off-by: John Crispin <john@phrozen.org>
2021-10-07 14:08:17 +02:00
John Crispin
2988180211 maverick: fix feature on single port devices
On single port devices no logical lan interface was setup resulting in
clients associating not being provided with DHCP.

Fixes: WIFI-4641
Signed-off-by: John Crispin <john@phrozen.org>
2021-10-07 09:07:37 +02:00
John Crispin
ec0d693d12 ath79: add certificates partition for indio device
Signed-off-by: John Crispin <john@phrozen.org>
2021-10-05 16:38:32 +02:00
John Crispin
406dad6604 chilli: fix log spam when coova is not used
Fixes: WIFI-4471
Signed-off-by: John Crispin <john@phrozen.org>
2021-10-01 09:38:30 +02:00
John Crispin
b31b236646 mac80211: do not hard abort when iw times out
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-29 15:20:50 +02:00
John Crispin
0c379ed26c netifd: update to latest HEAD
e467e0f wireless: reset retry counter when setup succeeds
0e311d3 wireless: reset number of retries on config change
62e2bb5 main: poll process log stream even if processes are killed
fac471c wireless: process and close script file descriptor when rerunning setup
186f6ea wireless: display log messages for setup/teardown/retry
4d0c2ad wireless: fix applying wireless devices attributes on hotplug events

Signed-off-by: John Crispin <john@phrozen.org>
2021-09-29 15:20:31 +02:00
Max
647d5c8a33 workflow: trigger testing workflow for new releases (#385)
Signed-off-by: Max Brenner <xamrennerb@gmail.com>
2021-09-29 14:19:52 +02:00
Stijn Tintel
7baf962bb8 fbwifi: update to git HEAD
b67be64 fbwifi: fix token validation script

Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
2021-09-29 14:19:21 +02:00
John Crispin
09c23e4f4d netifd: update to latest HEAD
5a4ac30 netifd: rework/fix device free handling

Signed-off-by: John Crispin <john@phrozen.org>
2021-09-28 10:39:15 +02:00
John Crispin
5c82ff107e ucentral-schema: update to latest HEAD
The last update did not regenerate the reader properly

Signed-off-by: John Crispin <john@phrozen.org>
2021-09-27 13:16:50 +02:00
John Crispin
5d642d0325 dynamic-vlan: fix regression introduced by the 21.02 update
board.json uses device instead of ifname.

Fixes: WIFI-4420
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-27 12:55:48 +02:00
John Crispin
a37ed25128 ipq807x: fixes wifi on wf194c
* the maple update broke the caldata extraction for 8x8 units

Fixes: WIFI-4418
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-27 10:05:10 +02:00
John Crispin
544e6ff3a3 Revert "ipq807x: fixes wifi on wf194c"
This reverts commit ab2ff431ee.
2021-09-27 10:05:04 +02:00
John Crispin
ab2ff431ee ipq807x: fixes wifi on wf194c
* the maple update broke the caldata extraction for 8x8 units

Fixes: WIFI-4418
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-27 09:59:46 +02:00
John Crispin
fd884e709b ipq806x/ipq807x: fix lan/wan mapping on ecw5410 and wf194
Fixes: WIFI-3706
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-25 11:06:39 +02:00
Stijn Tintel
a6140a494c fbwifi: update to git HEAD
9febd0a fbwifi: close file handles
 281e8fd fbwifi: allow HTTP/3
 2306d44 fbwifi: quote variables in firewall includes
 c6557bc fbwifi: set webroot for redirect uhttpd instance
 ec76371 fbwifi: wait for xtables lock in firewall includes
 7420154 fbwifi: handle duplicate arp entries
 cc31879 fbwifi: rework UCI state tracking
 594a4e0 fbwifi: fix custom HTTP status codes
 e0d9cca fbwifi: fix CORS for info
 4aa60db fbwifi: drop luci.sgi.cgi module from info
 7b2cf4d README: editing feeds.conf.default should be avoided
 b1adf01 fbwifi: document how to enable/disable

Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
2021-09-25 09:59:24 +02:00
John Crispin
d9b43c559a ucentral-schema: update to latest HEAD
* fix stations mac addr keyword inside telemetry

Fixes: WIFI-4282
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-25 09:53:59 +02:00
John Crispin
ebe982fad7 ucode: update to latest HEAD
This fixes the signed vs unsigned conversion problem inside telemetry

Fixes: WIFI-3040
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-25 09:49:30 +02:00
John Crispin
89ff811e94 profiles: add chilli-redirect to default profile
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-23 16:10:32 +02:00
John Crispin
7c030d452e ucentral-wifi: update to latest HEAD
* fix sta rssi reporting

Fixes: WIFI-4153
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-23 10:20:50 +02:00
John Crispin
24d64b4704 ipq807x: backport latest cake to v4.4
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-22 14:49:39 +02:00
John Crispin
2279c1ab7e netifd: update to latest HEAD
* fixes WDS problems due to hairping mode getting enabled

Signed-off-by: John Crispin <john@phrozen.org>
2021-09-22 14:48:47 +02:00
John Crispin
fc223fae06 fbwifi: add the feed to the base package selection
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-20 18:37:58 +02:00
John Crispin
640e676753 maverick: do not provide uplink connectivity to connected clients
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-20 16:19:34 +02:00
John Crispin
650adaf7ad mac80211/ax: disable encap offload
* this was breaking wds

Signed-off-by: John Crispin <john@phrozen.org>
2021-09-20 16:09:01 +02:00
John Crispin
f4129130dc pass-point: add missing hapd option
* allow setting the hs20 release from uci

Signed-off-by: John Crispin <john@phrozen.org>
2021-09-20 10:44:50 +02:00
John Crispin
8fcd427384 ucentral-schema: update to latest HEAD
* add redsec multi realm and NAPTR support

Fixes: WIFI-3757
Fixes: WIFI-3759
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-20 10:44:50 +02:00
John Crispin
5f26f65e46 openvswitch: update to v2.15.1
* this merges several CVE fixes

Fixes: WIFI-3457
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-20 08:06:48 +02:00
John Crispin
16b70f20e9 Revert "openflow: update to 2.16.0"
This reverts commit 8b2b5a32d1.

Fixes: WIFI-4199
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-20 07:35:14 +02:00
John Crispin
3912a0a362 ucentral-schema: update ucentral-schema to latest HEAD
fixes WAP3 transition mode, which requires optional 11w.

Fixes: WIFI-4208
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-19 16:19:32 +02:00
Stijn Tintel
46342a2621 fbwifi: update to git HEAD
bf7b0c4 fbwifi: add SPDX and copyright headers
 5318143 fbwifi: open https port in FBWIFI_INPUT

Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
2021-09-17 18:01:27 +02:00
John Crispin
a5a37a22ce ipq807x: disable pstore on ipq807x
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-17 10:05:24 +02:00
John Crispin
14d3c44184 ipq807x: backport pstore support
v4.4 was missing OF support for this feature.

Signed-off-by: John Crispin <john@phrozen.org>
2021-09-16 15:27:20 +02:00
John Crispin
2c3becff4b ucentrtal-schema: openflow handler was not rendering mode correctly
Fixes: WIFI-4149
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-15 15:48:46 +02:00
John Crispin
cd6e94f201 ipq807x: add preliminary eap106 support
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-15 14:01:34 +02:00
John Crispin
017bfb6cd5 ucentral-schema: update to latest HEAD
In some situations the renderer was reporting rejects even if there were none.

Signed-off-by: John Crispin <john@phrozen.org>
2021-09-15 09:46:21 +02:00
John Crispin
25e38d4ac4 ucentral-schema: update to latest HEAD
Fix online validation of the schema.

Signed-off-by: John Crispin <john@phrozen.org>
2021-09-15 08:18:26 +02:00
John Crispin
5477419fd7 realtek: fix DMA bringup
A kernel option was missing.

Signed-off-by: John Crispin <john@phrozen.org>
2021-09-15 08:18:02 +02:00
John Crispin
f520e4f5a9 workflow: add/remove a few boards
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-15 08:17:39 +02:00
John Crispin
a3813f4b5d mt7621: add linksys ea6350 and ea7200 support
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-14 17:05:08 +02:00
John Crispin
839bee5a6d ucentral-schema: derive hostname from label-mac if present
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-14 17:02:46 +02:00
John Crispin
3fa8e33a45 ipq807x: update eap102 BDF file
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-14 17:02:11 +02:00
John Crispin
8c52460881 mt76: update to latest HEAD
* fixes of_get_mac() build breakage

Signed-off-by: John Crispin <john@phrozen.org>
2021-09-14 09:20:51 +02:00
John Crispin
0c9bc8a958 ipq50xx: add preliminary maple support
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-14 09:16:37 +02:00
John Crispin
8cd26b4b50 ipq807x: update to 11.4-CS
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-14 09:16:23 +02:00
John Crispin
8e511326d5 ucentral-client: decrease the base reconnect timer
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-13 17:20:15 +02:00
John Crispin
2d40fa3c55 mac80211: fix builds on ath79 targets
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-13 13:43:19 +02:00
John Crispin
f7f91aa5c0 ucentral-client/schema: add telemetry streaming support
Fixes: WIFI-3434
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-13 12:26:19 +02:00
John Crispin
f84eeb94f3 ucentral-wifi: add connected and idle time
Fixes: WIFI-3735
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-13 12:25:15 +02:00
John Crispin
4a1f6009cf ucentral-client: make the AP disconnect from the GW when the unit reboots
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-08 15:11:51 +02:00
John Crispin
99432b9ccb mac80211: rebase backport patch
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-08 12:38:04 +02:00
John Crispin
9008c7b9db ar71xx: drop support
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-08 07:50:14 +02:00
John Crispin
886b8cc103 ucentral-schema: update to latest HEAD
* minor fixes to handling of boolean values

Signed-off-by: John Crispin <john@phrozen.org>
2021-09-07 05:03:45 +02:00
John Crispin
6ad420b218 .github: update workflow to reflect new branch names
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-06 13:39:58 +02:00
John Crispin
0c422f721c mac80211: update to latest HEAD
There was a bad patch, causing tx bcast to not work some times.

Signed-off-by: John Crispin <john@phrozen.org>
2021-09-06 12:16:21 +02:00
John Crispin
fdd199a9f3 profiles: fix wpa3 support
eap192 was not being compiled into the images.

Signed-off-by: John Crispin <john@phrozen.org>
2021-09-06 10:13:17 +02:00
John Crispin
8335267666 chilli-redirect: only write values to uci that are defined
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-06 10:13:17 +02:00
John Crispin
08a0ef6abc ucentralgw: drop build support
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-06 10:13:17 +02:00
John Crispin
1e7efc68a8 config.yml: update 21.02 baseline from RC2->GA
Signed-off-by: John Crispin <john@phrozen.org>
2021-09-04 08:14:58 +02:00
John Crispin
a6256fb1f9 proxy_arp: fix a race condition between hostapd and netifd
* both daemons were racing against eachother causing the wifi to
  sometimes not get started

Signed-off-by: John Crispin <john@phrozen.org>
2021-09-02 13:57:14 +02:00
John Crispin
d0a0715628 chilli-redirect: add 2 more parameters
Signed-off-by: John Crispin <john@phrozen.org>
2021-08-30 19:25:00 +02:00
John Crispin
e5630c6a57 profiles: remove executable bit from indio profile
Signed-off-by: John Crispin <john@phrozen.org>
2021-08-30 07:01:37 +02:00
John Crispin
6524e6ab7f ipq40xx: drop dead code from image Makefile
Signed-off-by: John Crispin <john@phrozen.org>
2021-08-30 07:01:37 +02:00
John Crispin
2303a32b9c uxc: backport required packages for container support
Signed-off-by: John Crispin <john@phrozen.org>
2021-08-30 06:55:36 +02:00
John Crispin
72d33747fe spanning-tree: finalize support
* update realtek kernel
* update netifd
* add to data-model
* add bdpu filtewr support to the bridge layer

Signed-off-by: John Crispin <john@phrozen.org>
2021-08-30 06:54:13 +02:00
John Crispin
a0c32b4915 ipq40xx: add HFCL ION4 support
Signed-off-by: John Crispin <john@phrozen.org>
2021-08-26 17:38:19 +02:00
John Crispin
e97526a324 ucentral-schema: update to latest HEAD
* add chached and buffered memory stats inside telemetry messages

Signed-off-by: John Crispin <john@phrozen.org>
2021-08-26 08:39:51 +02:00
John Crispin
0bd137873c ucentral-schema: update to latest HEAD
* disable STP until final issues are resolved

Signed-off-by: John Crispin <john@phrozen.org>
2021-08-26 05:58:14 +02:00
John Crispin
87bc028384 fbwifi: update to the latest HEAD
* sync with the incubator feed

Signed-off-by: John Crispin <john@phrozen.org>
2021-08-25 17:29:41 +02:00
John Crispin
29a8edbf45 ucentral-schema: update to latest HEAD
* enhance open-flow support

Signed-off-by: John Crispin <john@phrozen.org>
2021-08-25 14:23:01 +02:00
John Crispin
9d0b3d50c1 urstp: add R/STP support
Signed-off-by: John Crispin <john@phrozen.org>
2021-08-25 14:15:10 +02:00
John Crispin
79e8e2e005 netifd: update to latest HEAD
Signed-off-by: John Crispin <john@phrozen.org>
2021-08-25 14:14:21 +02:00
John Crispin
936ecf7b3e libubox: update to latest HEAD
Signed-off-by: John Crispin <john@phrozen.org>
2021-08-25 14:14:05 +02:00
John Crispin
bc49ef6ad6 facebook-wifi: add support for this feature
Signed-off-by: John Crispin <john@phrozen.org>
2021-08-24 17:04:08 +02:00
John Crispin
5d7770a7ad uhttpd: backport latest version from HEAD
Signed-off-by: John Crispin <john@phrozen.org>
2021-08-24 17:03:06 +02:00
John Crispin
040b4455a6 ucentral-schema: add facebook-wifi support
Signed-off-by: John Crispin <john@phrozen.org>
2021-08-24 17:00:26 +02:00
John Crispin
3755107433 firstcontact: support server:port syntax inside redirector field
Signed-off-by: John Crispin <john@phrozen.org>
2021-08-24 08:01:22 +02:00
John Crispin
8b2b5a32d1 openflow: update to 2.16.0
Signed-off-by: John Crispin <john@phrozen.org>
2021-08-23 14:48:06 +02:00
John Crispin
bed0dab28d ucentral-schema: upadte to latest HEAD
* add support for explicitly setting port tagging behaviour

Signed-off-by: John Crispin <john@phrozen.org>
2021-08-20 16:55:32 +02:00
John Crispin
2ac2d9c43f third-party: add chilli-redirect support
Signed-off-by: John Crispin <john@phrozen.org>
2021-08-20 14:12:49 +02:00
John Crispin
7ab801ef8d ucentral-schema: update to latest HEAD
* this fixes rrm events

Signed-off-by: John Crispin <john@phrozen.org>
2021-08-20 14:12:21 +02:00
John Crispin
07a4a1af09 ipq806x: add edgecore_ssw2ac2600 support
Signed-off-by: John Crispin <john@phrozen.org>
2021-08-18 16:04:12 +02:00
John Crispin
382fb8407a ucentral-schema: update to latest HEAD
* ignore 80+80 when selecting a htmode fallback

Signed-off-by: John Crispin <john@phrozen.org>
2021-08-18 14:54:51 +02:00
John Crispin
8d863239f5 ipq806x: update to latest HEAD
* this fixes the ethernet issues

Signed-off-by: John Crispin <john@phrozen.org>
2021-08-18 13:20:54 +02:00
John Crispin
3add17ebd9 ucentral-schema: update to latest HEAD
* enable ACS when htmode fallback gets triggered

Signed-off-by: John Crispin <john@phrozen.org>
2021-08-18 13:20:03 +02:00
John Crispin
82481e1694 firstcontact: add a 10s connect timeout
Signed-off-by: John Crispin <john@phrozen.org>
2021-08-18 11:01:24 +02:00
John Crispin
ccc17c50a7 profiles: remove wolfssl dependency
Signed-off-by: John Crispin <john@phrozen.org>
2021-08-17 11:04:40 +02:00
John Crispin
378d8b8942 realtek: move dsa backports into target folder
Signed-off-by: John Crispin <john@phrozen.org>
2021-08-17 08:00:52 +02:00
John Crispin
78d03f7429 ipq40xx: fix wallys_dr40x9 firmware name
Signed-off-by: John Crispin <john@phrozen.org>
2021-08-16 18:16:48 +02:00
John Crispin
c27eb9af3e mac80211: fix default 6E channel selection
Signed-off-by: John Crispin <john@phrozen.org>
2021-08-16 18:16:12 +02:00
John Crispin
179d1b5770 switch-fabric: add package that handles switch-fabric features
* add support for port mirroring
* lagcp will be housed within this package aswell in future

Signed-off-by: John Crispin <john@phrozen.org>
2021-08-16 18:16:12 +02:00
John Crispin
cf8c89d9e1 ucentral-schema: update to latest HEAD
* this fine tunes the port mirroring support

Signed-off-by: John Crispin <john@phrozen.org>
2021-08-16 18:16:12 +02:00
John Crispin
cbfe1d792b realtek: update to latest staging tree
* add port mirror
* basic bonding support
* various stability fixes

Signed-off-by: John Crispin <john@phrozen.org>
2021-08-16 18:16:12 +02:00
John Crispin
bbd180ddeb hostapd: update to latest HEAD
* fix DFS detetcion segfault
* fix 20mhz chan_width in AX mode

Signed-off-by: John Crispin <john@phrozen.org>
2021-08-16 18:16:12 +02:00
John Crispin
a11eede233 ucentral-wifi: update to latest HEAD
This fixes the wifi 6E channel conversion.

Signed-off-by: John Crispin <john@phrozen.org>
2021-08-16 18:16:12 +02:00
John Crispin
0789a4db83 ipq40xx: add Wallys DR40x9 support
Signed-off-by: John Crispin <john@phrozen.org>
2021-08-13 19:04:57 +02:00
John Crispin
ec5396f9c0 Revert "config.yml: bump OpenWrt baseline to latest 21.02"
This reverts commit 53c2b41a58.
2021-08-12 17:07:51 +02:00
John Crispin
53c2b41a58 config.yml: bump OpenWrt baseline to latest 21.02
Signed-off-by: John Crispin <john@phrozen.org>
2021-08-11 10:05:16 +02:00
John Crispin
9166177cad ucentral-client: update the repo
Give the apply task its own runqueue. This fixes long delays in the allure jobs.

Signed-off-by: John Crispin <john@phrozen.org>
2021-08-11 09:58:57 +02:00
John Crispin
5de9d3fb6f ar71xx: enable all possible ath10k bdf files
Signed-off-by: John Crispin <john@phrozen.org>
2021-08-09 07:58:57 +02:00
John Crispin
7255a5adce netifd: fix compile on older kernels
Signed-off-by: John Crispin <john@phrozen.org>
2021-08-07 15:59:17 +02:00
John Crispin
75e79fe98f ar71xx: fix support for mikrotik rb912 rev3
Signed-off-by: John Crispin <john@phrozen.org>
2021-08-03 18:14:43 +02:00
John Crispin
8f016e7f92 schema: fallback htmode was not always picking the highest bandwidth
Signed-off-by: John Crispin <john@phrozen.org>
2021-08-03 13:28:51 +02:00
John Crispin
f28e626c11 open-flow: enable tls support and update to latest openvswitch uci format
Signed-off-by: John Crispin <john@phrozen.org>
2021-08-03 12:38:28 +02:00
John Crispin
7b049a4da2 schema: add support for adding per netdev speed and duplex settings
Signed-off-by: John Crispin <john@phrozen.org>
2021-08-03 11:39:44 +02:00
John Crispin
c4a409d12d profiles: enable tc-full on realtek switches
Signed-off-by: John Crispin <john@phrozen.org>
2021-08-03 11:37:47 +02:00
John Crispin
df6b7fea80 OpenVSwitch: update to latest HEAD
Signed-off-by: John Crispin <john@phrozen.org>
2021-08-03 08:01:20 +02:00
1007 changed files with 162443 additions and 167800 deletions

View File

@@ -2,7 +2,7 @@ name: Build OpenWrt/uCentral images
on:
push:
branches: [ uCentral-* ]
branches: [ main, next, staging-* ]
tags: [ v* ]
jobs:
@@ -11,7 +11,7 @@ jobs:
strategy:
fail-fast: false
matrix:
target: ['cig_wf188', 'cig_wf194c', 'cig_wf160d', 'edgecore_eap101', 'edgecore_eap102', 'edgecore_ecs4100-12ph', 'edgecore_ecw5211', 'edgecore_ecw5410', 'edgecore_oap100', 'edgecore_spw2ac1200', 'indio_um-305ac', 'linksys_e8450-ubi', 'linksys_ea8300', 'mikrotik_nand', 'tplink_cpe210_v3', 'tplink_cpe510_v3', 'tplink_eap225_outdoor_v1', 'tplink_ec420', 'tplink_ex227', 'tplink_ex228', 'tplink_ex447' ]
target: ['cig_wf188n', 'cig_wf194c', 'cig_wf194c4', 'cig_wf160d', 'edgecore_eap101', 'edgecore_eap102', 'edgecore_ecs4100-12ph', 'edgecore_ecw5211', 'edgecore_ecw5410', 'edgecore_oap100', 'edgecore_ssw2ac2600', 'edgecore_spw2ac1200', 'edgecore_spw2ac1200-lan-poe', 'hfcl_ion4.yml', 'indio_um-305ac', 'linksys_ea6350-v4', 'linksys_e8450-ubi', 'linksys_ea8300', 'tp-link_ec420-g1', 'tplink_ex227', 'tplink_ex228', 'tplink_ex447', 'wallys_dr40x9' ]
steps:
- uses: actions/checkout@v2
@@ -61,3 +61,16 @@ jobs:
[ -f openwrt/tmp/image-file ] && aws s3 cp --acl public-read --content-type "application/octet-stream" "openwrt/$(cat openwrt/tmp/image-file)" "s3://$AWS_S3_BUCKET_NAME/$IMG_NAME"
[ -f openwrt/tmp/image-file ] && aws s3 cp --acl public-read --content-type "application/json" "latest-upgrade.json" "s3://$AWS_S3_BUCKET_NAME/$JSON_NAME"
trigger-testing:
runs-on: ubuntu-latest
needs: build
if: startsWith(github.ref, 'refs/tags/v')
steps:
- name: Trigger testing of release
uses: peter-evans/repository-dispatch@v1
with:
token: ${{ secrets.WLAN_TESTING_PAT }}
repository: Telecominfraproject/wlan-testing
event-type: new-ap-release
client-payload: '{"ref": "${GITHUB_REF#refs/tags/}", "sha": "${{ github.sha }}"}'

View File

@@ -1,7 +1,7 @@
From 08be0915e06fb6f2b62c022099e82bb4d849a8c6 Mon Sep 17 00:00:00 2001
From c51ac602aff1a9b0093687fe39164a3b895fd4a2 Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@nbd.name>
Date: Thu, 22 Oct 2020 10:29:34 +0200
Subject: [PATCH 1/9] build: build kernel image before building
Subject: [PATCH 01/27] build: build kernel image before building
modules/packages
This is needed for linux 5.10, where modules.builtin is generated from
@@ -13,10 +13,10 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/include/kernel-defaults.mk b/include/kernel-defaults.mk
index e5a0ba367b..b069c1e671 100644
index 3aa1baa761..c02e0d34ca 100644
--- a/include/kernel-defaults.mk
+++ b/include/kernel-defaults.mk
@@ -113,7 +113,7 @@ endef
@@ -115,7 +115,7 @@ endef
define Kernel/CompileModules/Default
rm -f $(LINUX_DIR)/vmlinux $(LINUX_DIR)/System.map
@@ -25,7 +25,7 @@ index e5a0ba367b..b069c1e671 100644
endef
OBJCOPY_STRIP = -R .reginfo -R .notes -R .note -R .comment -R .mdebug -R .note.gnu.build-id
@@ -137,7 +137,7 @@ endef
@@ -139,7 +139,7 @@ endef
define Kernel/CompileImage/Default
rm -f $(TARGET_DIR)/init
@@ -34,7 +34,7 @@ index e5a0ba367b..b069c1e671 100644
$(call Kernel/CopyImage)
endef
@@ -147,7 +147,7 @@ define Kernel/CompileImage/Initramfs
@@ -149,7 +149,7 @@ define Kernel/CompileImage/Initramfs
$(CP) $(GENERIC_PLATFORM_DIR)/other-files/init $(TARGET_DIR)/init
$(if $(SOURCE_DATE_EPOCH),touch -hcd "@$(SOURCE_DATE_EPOCH)" $(TARGET_DIR)/init)
rm -rf $(KERNEL_BUILD_DIR)/linux-$(LINUX_VERSION)/usr/initramfs_data.cpio*

View File

@@ -1,7 +1,7 @@
From 6d2e2ff2778ca6360af9bf1e712d7ff276afa54b Mon Sep 17 00:00:00 2001
From 6c50e27b166b30c0b3f7b730717ab4b7f446e4d0 Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@nbd.name>
Date: Wed, 17 Feb 2021 13:49:14 +0100
Subject: [PATCH 2/9] build: fix build with CONFIG_STRIP_KERNEL_EXPORTS
Subject: [PATCH 02/27] build: fix build with CONFIG_STRIP_KERNEL_EXPORTS
Only use symtab.h on the final kernel link
@@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/include/kernel-defaults.mk b/include/kernel-defaults.mk
index b069c1e671..93eed54ae1 100644
index c02e0d34ca..f9316fc3f9 100644
--- a/include/kernel-defaults.mk
+++ b/include/kernel-defaults.mk
@@ -3,7 +3,7 @@
@@ -23,7 +23,7 @@ index b069c1e671..93eed54ae1 100644
EXTRA_LDSFLAGS="-I$(KERNEL_BUILD_DIR) -include symtab.h"
endif
@@ -137,7 +137,7 @@ endef
@@ -139,7 +139,7 @@ endef
define Kernel/CompileImage/Default
rm -f $(TARGET_DIR)/init
@@ -32,7 +32,7 @@ index b069c1e671..93eed54ae1 100644
$(call Kernel/CopyImage)
endef
@@ -147,7 +147,7 @@ define Kernel/CompileImage/Initramfs
@@ -149,7 +149,7 @@ define Kernel/CompileImage/Initramfs
$(CP) $(GENERIC_PLATFORM_DIR)/other-files/init $(TARGET_DIR)/init
$(if $(SOURCE_DATE_EPOCH),touch -hcd "@$(SOURCE_DATE_EPOCH)" $(TARGET_DIR)/init)
rm -rf $(KERNEL_BUILD_DIR)/linux-$(LINUX_VERSION)/usr/initramfs_data.cpio*

View File

@@ -1,7 +1,7 @@
From 0f37bb5919d96aaca7b0d06b56d37dabba87b190 Mon Sep 17 00:00:00 2001
From 369794a62050fadc47b617acb29e19d6f536fe3f Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@nbd.name>
Date: Sat, 24 Oct 2020 21:14:16 +0200
Subject: [PATCH 01/45] kernel: add linux 5.10 support
Subject: [PATCH 03/27] kernel: add linux 5.10 support
Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
@@ -422,7 +422,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
create mode 100644 target/linux/generic/pending-5.10/920-mangle_bootargs.patch
diff --git a/include/image-commands.mk b/include/image-commands.mk
index 51e745958e..bddbed6052 100644
index 4d54a14ba4..2c917d613e 100644
--- a/include/image-commands.mk
+++ b/include/image-commands.mk
@@ -200,11 +200,12 @@ define Build/fit
@@ -744,7 +744,7 @@ index b46fcebc08..e2bb1d0681 100644
AUTOLOAD:=$(call AutoProbe,$(notdir $(NFT_CORE-m)))
KCONFIG:= \
diff --git a/package/kernel/linux/modules/usb.mk b/package/kernel/linux/modules/usb.mk
index d050165df3..3dd20a0696 100644
index 93f99f7cbe..4191590ba7 100644
--- a/package/kernel/linux/modules/usb.mk
+++ b/package/kernel/linux/modules/usb.mk
@@ -1387,7 +1387,7 @@ define KernelPackage/usb-net-cdc-ncm
@@ -12418,10 +12418,10 @@ index 0000000000..4eb5607f17
+# CONFIG_ZSMALLOC is not set
+# CONFIG_ZX_TDM is not set
diff --git a/target/linux/generic/config-5.4 b/target/linux/generic/config-5.4
index 91dc0b0f49..d3e9325f71 100644
index 50e627297e..da0e2e2186 100644
--- a/target/linux/generic/config-5.4
+++ b/target/linux/generic/config-5.4
@@ -3273,6 +3273,7 @@ CONFIG_MTD_ROOTFS_ROOT_DEV=y
@@ -3287,6 +3287,7 @@ CONFIG_MTD_ROOTFS_ROOT_DEV=y
CONFIG_MTD_SPI_NOR_USE_4K_SECTORS_LIMIT=4096
CONFIG_MTD_SPLIT=y
# CONFIG_MTD_SPLIT_BCM_WFI_FW is not set

View File

@@ -1,7 +1,7 @@
From 583b54e2f10ee14b5756d7035e641f7a1bb3095c Mon Sep 17 00:00:00 2001
From 29f60bb65745d63e7d8cce273bd3f773fda251ff Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@nbd.name>
Date: Thu, 9 Apr 2020 09:53:24 +0200
Subject: [PATCH 01/43] mediatek: update to latest trunk version
Subject: [PATCH 04/27] mediatek: update to latest trunk version
Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
@@ -101957,7 +101957,7 @@ diff --git a/target/linux/mediatek/mt7622/config-5.4 b/target/linux/mediatek/mt7
similarity index 67%
rename from target/linux/mediatek/mt7622/config-5.4
rename to target/linux/mediatek/mt7622/config-5.10
index b873bdc40c..2d7f82ce23 100644
index 282cd0bab5..e6696bd50a 100644
--- a/target/linux/mediatek/mt7622/config-5.4
+++ b/target/linux/mediatek/mt7622/config-5.10
@@ -1,59 +1,6 @@
@@ -102116,7 +102116,7 @@ index b873bdc40c..2d7f82ce23 100644
# CONFIG_FUJITSU_ERRATUM_010001 is not set
CONFIG_FW_LOADER_PAGED_BUF=y
CONFIG_GENERIC_ALLOCATOR=y
@@ -267,102 +201,19 @@ CONFIG_GLOB=y
@@ -267,103 +201,20 @@ CONFIG_GLOB=y
CONFIG_GPIOLIB=y
CONFIG_GRO_CELLS=y
CONFIG_HANDLE_DOMAIN_IRQ=y
@@ -102184,6 +102184,7 @@ index b873bdc40c..2d7f82ce23 100644
-CONFIG_HAVE_UID16=y
-CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
CONFIG_HOLES_IN_ZONE=y
# CONFIG_HW_RANDOM_MTK is not set
CONFIG_HZ=250
CONFIG_HZ_250=y
-CONFIG_I2C=y
@@ -102219,7 +102220,7 @@ index b873bdc40c..2d7f82ce23 100644
CONFIG_IO_URING=y
CONFIG_IRQCHIP=y
CONFIG_IRQ_DOMAIN=y
@@ -370,9 +221,10 @@ CONFIG_IRQ_DOMAIN_HIERARCHY=y
@@ -371,9 +222,10 @@ CONFIG_IRQ_DOMAIN_HIERARCHY=y
CONFIG_IRQ_FORCED_THREADING=y
CONFIG_IRQ_TIME_ACCOUNTING=y
CONFIG_IRQ_WORK=y
@@ -102231,7 +102232,7 @@ index b873bdc40c..2d7f82ce23 100644
CONFIG_LOCK_DEBUGGING_SUPPORT=y
CONFIG_LOCK_SPIN_ON_OWNER=y
CONFIG_LZO_COMPRESS=y
@@ -380,21 +232,25 @@ CONFIG_LZO_DECOMPRESS=y
@@ -381,21 +233,25 @@ CONFIG_LZO_DECOMPRESS=y
CONFIG_MAGIC_SYSRQ=y
CONFIG_MDIO_BUS=y
CONFIG_MDIO_DEVICE=y
@@ -102259,7 +102260,7 @@ index b873bdc40c..2d7f82ce23 100644
CONFIG_MTD_RAW_NAND=y
CONFIG_MTD_SPI_NAND=y
CONFIG_MTD_SPI_NOR=y
@@ -422,7 +278,6 @@ CONFIG_NET_DSA=y
@@ -423,7 +279,6 @@ CONFIG_NET_DSA=y
CONFIG_NET_DSA_MT7530=y
CONFIG_NET_DSA_TAG_MTK=y
CONFIG_NET_FLOW_LIMIT=y
@@ -102267,7 +102268,7 @@ index b873bdc40c..2d7f82ce23 100644
CONFIG_NET_MEDIATEK_SOC=y
CONFIG_NET_SWITCHDEV=y
CONFIG_NET_VENDOR_MEDIATEK=y
@@ -447,7 +302,6 @@ CONFIG_PARTITION_PERCPU=y
@@ -448,7 +303,6 @@ CONFIG_PARTITION_PERCPU=y
CONFIG_PCI=y
CONFIG_PCIEAER=y
CONFIG_PCIEASPM=y
@@ -102275,7 +102276,7 @@ index b873bdc40c..2d7f82ce23 100644
# CONFIG_PCIEASPM_DEFAULT is not set
CONFIG_PCIEASPM_PERFORMANCE=y
# CONFIG_PCIEASPM_POWERSAVE is not set
@@ -460,6 +314,7 @@ CONFIG_PCI_DOMAINS=y
@@ -461,6 +315,7 @@ CONFIG_PCI_DOMAINS=y
CONFIG_PCI_DOMAINS_GENERIC=y
CONFIG_PCI_MSI=y
CONFIG_PCI_MSI_IRQ_DOMAIN=y
@@ -102283,7 +102284,7 @@ index b873bdc40c..2d7f82ce23 100644
CONFIG_PGTABLE_LEVELS=3
CONFIG_PHYLIB=y
CONFIG_PHYLINK=y
@@ -477,7 +332,7 @@ CONFIG_PINCTRL_MT7622=y
@@ -478,7 +333,7 @@ CONFIG_PINCTRL_MT7622=y
CONFIG_PINCTRL_MT8516=y
CONFIG_PINCTRL_MTK=y
CONFIG_PINCTRL_MTK_MOORE=y
@@ -102292,7 +102293,7 @@ index b873bdc40c..2d7f82ce23 100644
CONFIG_PM=y
CONFIG_PM_CLK=y
CONFIG_PM_GENERIC_DOMAINS=y
@@ -487,6 +342,20 @@ CONFIG_POWER_RESET=y
@@ -488,6 +343,20 @@ CONFIG_POWER_RESET=y
CONFIG_POWER_RESET_SYSCON=y
CONFIG_POWER_SUPPLY=y
CONFIG_PRINTK_TIME=y
@@ -102313,7 +102314,7 @@ index b873bdc40c..2d7f82ce23 100644
CONFIG_PWM=y
CONFIG_PWM_MEDIATEK=y
# CONFIG_PWM_MTK_DISP is not set
@@ -499,7 +368,9 @@ CONFIG_RATIONAL=y
@@ -500,7 +369,9 @@ CONFIG_RATIONAL=y
CONFIG_RCU_NEED_SEGCBLIST=y
CONFIG_RCU_STALL_COMMON=y
CONFIG_REALTEK_PHY=y
@@ -102324,7 +102325,7 @@ index b873bdc40c..2d7f82ce23 100644
CONFIG_REGMAP=y
CONFIG_REGMAP_MMIO=y
CONFIG_REGULATOR=y
@@ -552,7 +423,6 @@ CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
@@ -555,7 +426,6 @@ CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
CONFIG_THERMAL_EMULATION=y
CONFIG_THERMAL_GOV_BANG_BANG=y
CONFIG_THERMAL_GOV_FAIR_SHARE=y
@@ -102332,7 +102333,7 @@ index b873bdc40c..2d7f82ce23 100644
CONFIG_THERMAL_GOV_STEP_WISE=y
CONFIG_THERMAL_GOV_USER_SPACE=y
CONFIG_THERMAL_OF=y
@@ -584,6 +454,9 @@ CONFIG_WATCHDOG_PRETIMEOUT_GOV_PANIC=y
@@ -587,6 +457,9 @@ CONFIG_WATCHDOG_PRETIMEOUT_GOV_PANIC=y
CONFIG_WATCHDOG_PRETIMEOUT_GOV_SEL=m
CONFIG_WATCHDOG_SYSFS=y
CONFIG_XPS=y

View File

@@ -1,7 +1,7 @@
From 0a0953b5c81a2b5b366a3f0f543db71ffc81f713 Mon Sep 17 00:00:00 2001
From 7ed003d57f1c5273fecddabcdc7bd6845c3854a0 Mon Sep 17 00:00:00 2001
From: John Crispin <john@phrozen.org>
Date: Sat, 20 Feb 2021 08:36:43 +0100
Subject: [PATCH 5/9] sysupgrade-nand: allow limiting rootfs_data by setting
Subject: [PATCH 05/27] sysupgrade-nand: allow limiting rootfs_data by setting
env variable
Check if firmware environment variable 'rootfs_data_max' exists and is

View File

@@ -1,7 +1,7 @@
From eed2e31cb32b565a3ebcc3bc2e9d7dc7a9550b4b Mon Sep 17 00:00:00 2001
From 3c6515c9db444da27192c1182fa1e9ab8ba6e2f6 Mon Sep 17 00:00:00 2001
From: Daniel Golle <daniel@makrotopia.org>
Date: Sat, 30 Jan 2021 13:58:16 +0000
Subject: [PATCH 01/36] uboot-mediatek: add support for linksys e8450
Subject: [PATCH 06/27] uboot-mediatek: add support for linksys e8450
Build U-Boot for the Linksys E8450 in order to have support for UBI.
The loader has a default environment with scripts handling the reset

View File

@@ -1,7 +1,7 @@
From 7837219939ea5d8ecab21acf943a8199bea7e89a Mon Sep 17 00:00:00 2001
From 1a9921bab861dd2c89337c3e4833c716a0474653 Mon Sep 17 00:00:00 2001
From: Daniel Golle <daniel@makrotopia.org>
Date: Fri, 12 Feb 2021 03:09:39 +0000
Subject: [PATCH 7/9] uboot-envtools: add defaults for linksys-e8450-ubi
Subject: [PATCH 07/27] uboot-envtools: add defaults for linksys-e8450-ubi
Add U-Boot environment configuration for the Linksys E8450 (UBI) to
allow access to the bootloader environment from OpenWrt via
@@ -9,17 +9,16 @@ allow access to the bootloader environment from OpenWrt via
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
---
package/boot/uboot-envtools/files/mediatek | 25 ++++++++++++++++++++++
1 file changed, 25 insertions(+)
package/boot/uboot-envtools/files/mediatek | 46 ++++++++++++++++++++++
1 file changed, 46 insertions(+)
create mode 100644 package/boot/uboot-envtools/files/mediatek
diff --git a/package/boot/uboot-envtools/files/mediatek b/package/boot/uboot-envtools/files/mediatek
new file mode 100644
index 0000000000..92a04ea73d
index 0000000000..495a837274
--- /dev/null
+++ b/package/boot/uboot-envtools/files/mediatek
@@ -0,0 +1,25 @@
+#!/bin/sh
@@ -0,0 +1,46 @@
+#
+# Copyright (C) 2021 OpenWrt.org
+#
@@ -34,10 +33,32 @@ index 0000000000..92a04ea73d
+board=$(board_name)
+
+case "$board" in
+"linksys,e8450,ubi")
+linksys,e8450-ubi)
+ ubootenv_add_uci_config "/dev/ubi0_0" "0x0" "0x1f000" "0x1f000" "1"
+ ubootenv_add_uci_config "/dev/ubi0_1" "0x0" "0x1f000" "0x1f000" "1"
+ ;;
+bananapi,bpi-r64)
+ . /lib/upgrade/common.sh
+ export_bootdevice
+ export_partdevice rootdev 0
+ case "$rootdev" in
+ mmc*)
+ local envdev=/dev/$(get_partition_by_name $rootdev ubootenv)
+ ubootenv_add_uci_config "$envdev" "0x0" "0x80000" "0x80000" "1"
+ ubootenv_add_uci_config "$envdev" "0x80000" "0x80000" "0x80000" "1"
+ ;;
+ *)
+ ubootenv_add_uci_config "/dev/ubi0_0" "0x0" "0x1f000" "0x1f000" "1"
+ ubootenv_add_uci_config "/dev/ubi0_1" "0x0" "0x1f000" "0x1f000" "1"
+ ;;
+ esac
+ ;;
+buffalo,wsr-2533dhp2)
+ ubootenv_add_uci_config "/dev/mtd3" "0x0" "0x1000" "0x20000"
+ ;;
+ubnt,unifi-6-lr-ubootmod)
+ ubootenv_add_uci_config "/dev/mtd2" "0x0" "0x4000" "0x10000"
+ ;;
+esac
+
+config_load ubootenv

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,7 @@
From 3b896a540de03ca8dfd5596881f9ec6dc15d72c9 Mon Sep 17 00:00:00 2001
From 4ed9b7d04405d5109681643f3ceebbd25f3f28e2 Mon Sep 17 00:00:00 2001
From: John Crispin <john@phrozen.org>
Date: Wed, 7 Apr 2021 10:46:26 +0200
Subject: [PATCH 01/32] include: set kernel-version.mk
Subject: [PATCH 09/27] include: set kernel-version.mk
Signed-off-by: John Crispin <john@phrozen.org>
---
@@ -9,7 +9,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
1 file changed, 6 insertions(+)
diff --git a/include/kernel-version.mk b/include/kernel-version.mk
index 52e5c11d75..547f57fa11 100644
index fe81dbf603..3c109c13c8 100644
--- a/include/kernel-version.mk
+++ b/include/kernel-version.mk
@@ -6,9 +6,15 @@ ifdef CONFIG_TESTING_KERNEL
@@ -18,12 +18,12 @@ index 52e5c11d75..547f57fa11 100644
+LINUX_VERSION-4.4 = .60
+LINUX_VERSION-4.14 = .193
LINUX_VERSION-5.4 = .111
LINUX_VERSION-5.4 = .142
+LINUX_VERSION-5.10 = .27
+LINUX_KERNEL_HASH-4.4.60 = 2cd8df6f1ac6a5329c5a286ec9b5956215977221a1b731597ed169fff74a9659
+LINUX_KERNEL_HASH-4.14.193 = 0b0fb41d4430e1a42738b341cbfd2f41951aa5cd02acabbd53f076119c8b9f03
LINUX_KERNEL_HASH-5.4.111 = 21626132658dc34cb41b7aa7b80ecf83751890a71ac1a63d77aea9d488271a03
LINUX_KERNEL_HASH-5.4.142 = 99785728968564ba27c7e552d024b560072dcbc885540912eabb5c021e231451
+LINUX_KERNEL_HASH-5.10.27 = d99dc9662951299c53a0a8d8c8d0a72a16ff861d20e927c0f9b14f63282d69d9
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))

View File

@@ -1,7 +1,7 @@
From 43f832c25bb9dee1a817370ab11531e81348f177 Mon Sep 17 00:00:00 2001
From ad860cb413d1934332de60658d5eb8fb64d19663 Mon Sep 17 00:00:00 2001
From: John Crispin <john@phrozen.org>
Date: Sun, 9 May 2021 12:23:00 +0200
Subject: [PATCH 42/43] backport: mkits.sh
Subject: [PATCH 11/27] backport: mkits.sh
969083634481c3ab5fb80509f385ef10ab45b55f
e991c1b8a2385397fc1e657ed73878938997d951
@@ -17,10 +17,10 @@ Signed-off-by: John Crispin <john@phrozen.org>
5 files changed, 95 insertions(+), 12 deletions(-)
diff --git a/include/image-commands.mk b/include/image-commands.mk
index bde6e030bc..f97d4363d1 100644
index 2c917d613e..c6e8eb0293 100644
--- a/include/image-commands.mk
+++ b/include/image-commands.mk
@@ -204,7 +204,7 @@ define Build/fit
@@ -203,7 +203,7 @@ define Build/fit
$(if $(word 3,$(1)),-r $(IMAGE_ROOTFS) -f $(subst _,$(comma),$(DEVICE_NAME))) \
-a $(KERNEL_LOADADDR) -e $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \
$(if $(DEVICE_FDT_NUM),-n $(DEVICE_FDT_NUM)) \
@@ -30,7 +30,7 @@ index bde6e030bc..f97d4363d1 100644
PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage $(if $(word 3,$(1)),-E -B 0x1000 -p 0x1000) -f $@.its $@.new
@mv $@.new $@
diff --git a/include/image.mk b/include/image.mk
index fc46012e87..7a48b789af 100644
index b6e8ab3c84..7c2dcf0e8b 100644
--- a/include/image.mk
+++ b/include/image.mk
@@ -139,7 +139,7 @@ endef

View File

@@ -0,0 +1,39 @@
From 2af08d2e85ee946de5f53bbd0ddf239de9b78f6d Mon Sep 17 00:00:00 2001
From: John Crispin <john@phrozen.org>
Date: Tue, 18 May 2021 10:46:43 +0200
Subject: [PATCH 12/27] libubox: update to latest HEAD
Signed-off-by: John Crispin <john@phrozen.org>
---
package/libs/libubox/Makefile | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/package/libs/libubox/Makefile b/package/libs/libubox/Makefile
index d2c07783e1..33aa73eef7 100644
--- a/package/libs/libubox/Makefile
+++ b/package/libs/libubox/Makefile
@@ -5,9 +5,9 @@ PKG_RELEASE=2
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/libubox.git
-PKG_MIRROR_HASH:=7dd1db1e0074a9c7c722db654cce3111b3bd3cff0bfd791c4497cb0f6c22d3ca
-PKG_SOURCE_DATE:=2021-05-16
-PKG_SOURCE_VERSION:=b14c4688612c05c78ce984d7bde633bce8703b1e
+PKG_MIRROR_HASH:=1cdb91ac0ee925f133ee9f70eac131a99def312fe7cf0aed44df84eb1762e30b
+PKG_SOURCE_DATE:=2021-08-19
+PKG_SOURCE_VERSION:=d716ac4bc4236031d4c3cc1ed362b502e20e3787
PKG_ABI_VERSION:=$(call abi_version_str,$(PKG_SOURCE_DATE))
CMAKE_INSTALL:=1
@@ -67,7 +67,7 @@ define Package/libubox-lua
endef
TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include
-CMAKE_OPTIONS = \
+CMAKE_OPTIONS += \
-DLUAPATH=/usr/lib/lua \
-DABIVERSION="$(PKG_ABI_VERSION)"
--
2.25.1

View File

@@ -1,167 +0,0 @@
From 0ddce2498be815e098154867d0b18293fe613f12 Mon Sep 17 00:00:00 2001
From: John Crispin <john@phrozen.org>
Date: Thu, 27 May 2021 11:57:10 +0200
Subject: [PATCH 13/13] iw: update to latest HEAD
Signed-off-by: John Crispin <john@phrozen.org>
---
package/network/utils/iw/Makefile | 11 +++----
.../utils/iw/patches/200-reduce_size.patch | 30 +++++++++----------
2 files changed, 21 insertions(+), 20 deletions(-)
diff --git a/package/network/utils/iw/Makefile b/package/network/utils/iw/Makefile
index 6db9aaf105..8e11046189 100644
--- a/package/network/utils/iw/Makefile
+++ b/package/network/utils/iw/Makefile
@@ -8,12 +8,13 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=iw
-PKG_VERSION:=5.9
-PKG_RELEASE:=1
+PKG_VERSION:=5.9-8fab0c9e
+PKG_RELEASE:=$(AUTORELEASE)
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=@KERNEL/software/network/iw
-PKG_HASH:=293a07109aeb7e36267cf59e3ce52857e9ffae3a6666eb8ac77894b1839fe1f2
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://git.kernel.org/pub/scm/linux/kernel/git/jberg/iw.git
+PKG_SOURCE_VERSION:=8fab0c9ee9db217587a58efcc37421c86edcb638
+PKG_MIRROR_HASH:=797b322bc03952f3127ae0a7da476c14ada1bbe9a9ae234a56dd6f864c568e16
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
PKG_LICENSE:=GPL-2.0
diff --git a/package/network/utils/iw/patches/200-reduce_size.patch b/package/network/utils/iw/patches/200-reduce_size.patch
index af30876012..83e11405cb 100644
--- a/package/network/utils/iw/patches/200-reduce_size.patch
+++ b/package/network/utils/iw/patches/200-reduce_size.patch
@@ -1,6 +1,6 @@
--- a/event.c
+++ b/event.c
-@@ -944,6 +944,7 @@ static int print_event(struct nl_msg *ms
+@@ -956,6 +956,7 @@ static int print_event(struct nl_msg *ms
}
switch (gnlh->cmd) {
@@ -8,7 +8,7 @@
case NL80211_CMD_NEW_WIPHY:
printf("renamed to %s\n", nla_get_string(tb[NL80211_ATTR_WIPHY_NAME]));
break;
-@@ -979,6 +980,7 @@ static int print_event(struct nl_msg *ms
+@@ -991,6 +992,7 @@ static int print_event(struct nl_msg *ms
case NL80211_CMD_SCHED_SCAN_RESULTS:
printf("got scheduled scan results\n");
break;
@@ -16,7 +16,7 @@
case NL80211_CMD_WIPHY_REG_CHANGE:
case NL80211_CMD_REG_CHANGE:
if (gnlh->cmd == NL80211_CMD_WIPHY_REG_CHANGE)
-@@ -1061,6 +1063,7 @@ static int print_event(struct nl_msg *ms
+@@ -1073,6 +1075,7 @@ static int print_event(struct nl_msg *ms
mac_addr_n2a(macbuf, nla_data(tb[NL80211_ATTR_MAC]));
printf("del station %s\n", macbuf);
break;
@@ -24,7 +24,7 @@
case NL80211_CMD_JOIN_IBSS:
mac_addr_n2a(macbuf, nla_data(tb[NL80211_ATTR_MAC]));
printf("IBSS %s joined\n", macbuf);
-@@ -1254,9 +1257,9 @@ static int print_event(struct nl_msg *ms
+@@ -1271,9 +1274,9 @@ static int print_event(struct nl_msg *ms
case NL80211_CMD_CH_SWITCH_NOTIFY:
parse_ch_switch_notify(tb, gnlh->cmd);
break;
@@ -134,7 +134,7 @@
{
--- a/scan.c
+++ b/scan.c
-@@ -1297,6 +1297,9 @@ static void print_ht_op(const uint8_t ty
+@@ -1306,6 +1306,9 @@ static void print_ht_op(const uint8_t ty
printf("\t\t * secondary channel offset: %s\n",
ht_secondary_offset[data[1] & 0x3]);
printf("\t\t * STA channel width: %s\n", sta_chan_width[(data[1] & 0x4)>>2]);
@@ -144,7 +144,7 @@
printf("\t\t * RIFS: %d\n", (data[1] & 0x8)>>3);
printf("\t\t * HT protection: %s\n", protection[data[2] & 0x3]);
printf("\t\t * non-GF present: %d\n", (data[2] & 0x4) >> 2);
-@@ -1707,6 +1710,14 @@ static void print_ie(const struct ie_pri
+@@ -1716,6 +1719,14 @@ static void print_ie(const struct ie_pri
static const struct ie_print ieprinters[] = {
[0] = { "SSID", print_ssid, 0, 32, BIT(PRINT_SCAN) | BIT(PRINT_LINK), },
@@ -159,7 +159,7 @@
[1] = { "Supported rates", print_supprates, 0, 255, BIT(PRINT_SCAN), },
[3] = { "DS Parameter set", print_ds, 1, 1, BIT(PRINT_SCAN), },
[5] = { "TIM", print_tim, 4, 255, BIT(PRINT_SCAN), },
-@@ -1716,26 +1727,20 @@ static const struct ie_print ieprinters[
+@@ -1725,26 +1736,20 @@ static const struct ie_print ieprinters[
[32] = { "Power constraint", print_powerconstraint, 1, 1, BIT(PRINT_SCAN), },
[35] = { "TPC report", print_tpcreport, 2, 2, BIT(PRINT_SCAN), },
[42] = { "ERP", print_erp, 1, 255, BIT(PRINT_SCAN), },
@@ -187,15 +187,15 @@
};
static void print_wifi_wpa(const uint8_t type, uint8_t len, const uint8_t *data,
-@@ -2279,6 +2284,7 @@ void print_ies(unsigned char *ie, int ie
+@@ -2326,6 +2331,7 @@ void print_ies(unsigned char *ie, int ie
ieprinters[ie[0]].flags & BIT(ptype)) {
print_ie(&ieprinters[ie[0]],
ie[0], ie[1], ie + 2, &ie_buffer);
+#ifdef IW_FULL
} else if (ie[0] == 221 /* vendor */) {
print_vendor(ie[1], ie + 2, unknown, ptype);
- } else if (unknown) {
-@@ -2288,6 +2294,7 @@ void print_ies(unsigned char *ie, int ie
+ } else if (ie[0] == 255 /* extension */) {
+@@ -2337,6 +2343,7 @@ void print_ies(unsigned char *ie, int ie
for (i=0; i<ie[1]; i++)
printf(" %.2x", ie[2+i]);
printf("\n");
@@ -203,7 +203,7 @@
}
ielen -= ie[1] + 2;
ie += ie[1] + 2;
-@@ -2328,6 +2335,7 @@ static void print_capa_non_dmg(__u16 cap
+@@ -2377,6 +2384,7 @@ static void print_capa_non_dmg(__u16 cap
printf(" ESS");
if (capa & WLAN_CAPABILITY_IBSS)
printf(" IBSS");
@@ -211,7 +211,7 @@
if (capa & WLAN_CAPABILITY_CF_POLLABLE)
printf(" CfPollable");
if (capa & WLAN_CAPABILITY_CF_POLL_REQUEST)
-@@ -2356,6 +2364,7 @@ static void print_capa_non_dmg(__u16 cap
+@@ -2405,6 +2413,7 @@ static void print_capa_non_dmg(__u16 cap
printf(" DelayedBACK");
if (capa & WLAN_CAPABILITY_IMM_BACK)
printf(" ImmediateBACK");
@@ -219,7 +219,7 @@
}
static int print_bss_handler(struct nl_msg *msg, void *arg)
-@@ -2440,8 +2449,10 @@ static int print_bss_handler(struct nl_m
+@@ -2489,8 +2498,10 @@ static int print_bss_handler(struct nl_m
if (bss[NL80211_BSS_FREQUENCY]) {
int freq = nla_get_u32(bss[NL80211_BSS_FREQUENCY]);
printf("\tfreq: %d\n", freq);
@@ -230,7 +230,7 @@
}
if (bss[NL80211_BSS_BEACON_INTERVAL])
printf("\tbeacon interval: %d TUs\n",
-@@ -2635,6 +2646,7 @@ static int handle_stop_sched_scan(struct
+@@ -2684,6 +2695,7 @@ static int handle_stop_sched_scan(struct
return 0;
}
@@ -238,7 +238,7 @@
COMMAND(scan, sched_start,
SCHED_SCAN_OPTIONS,
NL80211_CMD_START_SCHED_SCAN, 0, CIB_NETDEV, handle_start_sched_scan,
-@@ -2645,3 +2657,4 @@ COMMAND(scan, sched_start,
+@@ -2694,3 +2706,4 @@ COMMAND(scan, sched_start,
COMMAND(scan, sched_stop, "",
NL80211_CMD_STOP_SCHED_SCAN, 0, CIB_NETDEV, handle_stop_sched_scan,
"Stop an ongoing scheduled scan.");
--
2.25.1

View File

@@ -1,7 +1,7 @@
From e413c12b77acc0012a79e8981b553e35d4a2b20e Mon Sep 17 00:00:00 2001
From 41db6b8282d09bd9d7ee453f54e592003904ab0e Mon Sep 17 00:00:00 2001
From: John Crispin <john@phrozen.org>
Date: Wed, 30 Jun 2021 14:21:23 +0200
Subject: [PATCH] umdns: update to latest HEAD
Subject: [PATCH 13/27] umdns: update to latest HEAD
Signed-off-by: John Crispin <john@phrozen.org>
---

View File

@@ -0,0 +1,242 @@
From 9df1500bde8e609dcbbecbefa0eb5a29d9e6f7f5 Mon Sep 17 00:00:00 2001
From: John Crispin <john@phrozen.org>
Date: Fri, 27 Aug 2021 16:52:34 +0200
Subject: [PATCH 14/27] kernel: add bdpu filter support
Signed-off-by: John Crispin <john@phrozen.org>
---
...l-knob-for-filtering-rx-tx-BPDU-pack.patch | 107 ++++++++++++++++++
...l-knob-for-filtering-rx-tx-BPDU-pack.patch | 107 ++++++++++++++++++
2 files changed, 214 insertions(+)
create mode 100644 target/linux/generic/pending-5.10/710-bridge-add-sysctl-knob-for-filtering-rx-tx-BPDU-pack.patch
create mode 100644 target/linux/generic/pending-5.4/710-bridge-add-sysctl-knob-for-filtering-rx-tx-BPDU-pack.patch
diff --git a/target/linux/generic/pending-5.10/710-bridge-add-sysctl-knob-for-filtering-rx-tx-BPDU-pack.patch b/target/linux/generic/pending-5.10/710-bridge-add-sysctl-knob-for-filtering-rx-tx-BPDU-pack.patch
new file mode 100644
index 0000000000..918ae05d12
--- /dev/null
+++ b/target/linux/generic/pending-5.10/710-bridge-add-sysctl-knob-for-filtering-rx-tx-BPDU-pack.patch
@@ -0,0 +1,107 @@
+From: Felix Fietkau <nbd@nbd.name>
+Date: Fri, 27 Aug 2021 12:22:32 +0200
+Subject: [PATCH] bridge: add sysctl knob for filtering rx/tx BPDU packets on a
+ port
+
+Some devices (e.g. wireless APs) can't have devices behind them be part of
+a bridge topology with redundant links, due to address limitations.
+Additionally, broadcast traffic on these devices is somewhat expensive, due to
+the low data rate and wakeups of clients in powersave mode.
+This sysctl knob can be used to ensure that BPDU packets are never sent
+or forwarded to/from these devices
+
+Signed-off-by: Felix Fietkau <nbd@nbd.name>
+---
+
+--- a/include/linux/if_bridge.h
++++ b/include/linux/if_bridge.h
+@@ -56,6 +56,7 @@ struct br_ip_list {
+ #define BR_MRP_AWARE BIT(17)
+ #define BR_MRP_LOST_CONT BIT(18)
+ #define BR_MRP_LOST_IN_CONT BIT(19)
++#define BR_BPDU_FILTER BIT(20)
+
+ #define BR_DEFAULT_AGEING_TIME (300 * HZ)
+
+--- a/net/bridge/br_forward.c
++++ b/net/bridge/br_forward.c
+@@ -191,6 +191,7 @@ out:
+ void br_flood(struct net_bridge *br, struct sk_buff *skb,
+ enum br_pkt_type pkt_type, bool local_rcv, bool local_orig)
+ {
++ const unsigned char *dest = eth_hdr(skb)->h_dest;
+ struct net_bridge_port *prev = NULL;
+ struct net_bridge_port *p;
+
+@@ -206,6 +207,10 @@ void br_flood(struct net_bridge *br, str
+ case BR_PKT_MULTICAST:
+ if (!(p->flags & BR_MCAST_FLOOD) && skb->dev != br->dev)
+ continue;
++ if ((p->flags & BR_BPDU_FILTER) &&
++ unlikely(is_link_local_ether_addr(dest) &&
++ dest[5] == 0))
++ continue;
+ break;
+ case BR_PKT_BROADCAST:
+ if (!(p->flags & BR_BCAST_FLOOD) && skb->dev != br->dev)
+--- a/net/bridge/br_input.c
++++ b/net/bridge/br_input.c
+@@ -305,6 +305,8 @@ static rx_handler_result_t br_handle_fra
+ fwd_mask |= p->group_fwd_mask;
+ switch (dest[5]) {
+ case 0x00: /* Bridge Group Address */
++ if (p->flags & BR_BPDU_FILTER)
++ goto drop;
+ /* If STP is turned off,
+ then must forward to keep loop detection */
+ if (p->br->stp_enabled == BR_NO_STP ||
+--- a/net/bridge/br_sysfs_if.c
++++ b/net/bridge/br_sysfs_if.c
+@@ -233,6 +233,7 @@ BRPORT_ATTR_FLAG(multicast_flood, BR_MCA
+ BRPORT_ATTR_FLAG(broadcast_flood, BR_BCAST_FLOOD);
+ BRPORT_ATTR_FLAG(neigh_suppress, BR_NEIGH_SUPPRESS);
+ BRPORT_ATTR_FLAG(isolated, BR_ISOLATED);
++BRPORT_ATTR_FLAG(bpdu_filter, BR_BPDU_FILTER);
+
+ #ifdef CONFIG_BRIDGE_IGMP_SNOOPING
+ static ssize_t show_multicast_router(struct net_bridge_port *p, char *buf)
+@@ -285,6 +286,7 @@ static const struct brport_attribute *br
+ &brport_attr_group_fwd_mask,
+ &brport_attr_neigh_suppress,
+ &brport_attr_isolated,
++ &brport_attr_bpdu_filter,
+ &brport_attr_backup_port,
+ NULL
+ };
+--- a/net/bridge/br_stp_bpdu.c
++++ b/net/bridge/br_stp_bpdu.c
+@@ -80,7 +80,8 @@ void br_send_config_bpdu(struct net_brid
+ {
+ unsigned char buf[35];
+
+- if (p->br->stp_enabled != BR_KERNEL_STP)
++ if (p->br->stp_enabled != BR_KERNEL_STP ||
++ (p->flags & BR_BPDU_FILTER))
+ return;
+
+ buf[0] = 0;
+@@ -127,7 +128,8 @@ void br_send_tcn_bpdu(struct net_bridge_
+ {
+ unsigned char buf[4];
+
+- if (p->br->stp_enabled != BR_KERNEL_STP)
++ if (p->br->stp_enabled != BR_KERNEL_STP ||
++ (p->flags & BR_BPDU_FILTER))
+ return;
+
+ buf[0] = 0;
+@@ -172,6 +174,9 @@ void br_stp_rcv(const struct stp_proto *
+ if (!(br->dev->flags & IFF_UP))
+ goto out;
+
++ if (p->flags & BR_BPDU_FILTER)
++ goto out;
++
+ if (p->state == BR_STATE_DISABLED)
+ goto out;
+
diff --git a/target/linux/generic/pending-5.4/710-bridge-add-sysctl-knob-for-filtering-rx-tx-BPDU-pack.patch b/target/linux/generic/pending-5.4/710-bridge-add-sysctl-knob-for-filtering-rx-tx-BPDU-pack.patch
new file mode 100644
index 0000000000..586d264cd5
--- /dev/null
+++ b/target/linux/generic/pending-5.4/710-bridge-add-sysctl-knob-for-filtering-rx-tx-BPDU-pack.patch
@@ -0,0 +1,107 @@
+From: Felix Fietkau <nbd@nbd.name>
+Date: Fri, 27 Aug 2021 12:22:32 +0200
+Subject: [PATCH] bridge: add sysctl knob for filtering rx/tx BPDU packets on a
+ port
+
+Some devices (e.g. wireless APs) can't have devices behind them be part of
+a bridge topology with redundant links, due to address limitations.
+Additionally, broadcast traffic on these devices is somewhat expensive, due to
+the low data rate and wakeups of clients in powersave mode.
+This sysctl knob can be used to ensure that BPDU packets are never sent
+or forwarded to/from these devices
+
+Signed-off-by: Felix Fietkau <nbd@nbd.name>
+---
+
+--- a/include/linux/if_bridge.h
++++ b/include/linux/if_bridge.h
+@@ -47,6 +47,7 @@ struct br_ip_list {
+ #define BR_BCAST_FLOOD BIT(14)
+ #define BR_NEIGH_SUPPRESS BIT(15)
+ #define BR_ISOLATED BIT(16)
++#define BR_BPDU_FILTER BIT(17)
+
+ #define BR_DEFAULT_AGEING_TIME (300 * HZ)
+
+--- a/net/bridge/br_forward.c
++++ b/net/bridge/br_forward.c
+@@ -191,6 +191,7 @@ out:
+ void br_flood(struct net_bridge *br, struct sk_buff *skb,
+ enum br_pkt_type pkt_type, bool local_rcv, bool local_orig)
+ {
++ const unsigned char *dest = eth_hdr(skb)->h_dest;
+ struct net_bridge_port *prev = NULL;
+ struct net_bridge_port *p;
+
+@@ -206,6 +207,10 @@ void br_flood(struct net_bridge *br, str
+ case BR_PKT_MULTICAST:
+ if (!(p->flags & BR_MCAST_FLOOD) && skb->dev != br->dev)
+ continue;
++ if ((p->flags & BR_BPDU_FILTER) &&
++ unlikely(is_link_local_ether_addr(dest) &&
++ dest[5] == 0))
++ continue;
+ break;
+ case BR_PKT_BROADCAST:
+ if (!(p->flags & BR_BCAST_FLOOD) && skb->dev != br->dev)
+--- a/net/bridge/br_input.c
++++ b/net/bridge/br_input.c
+@@ -300,6 +300,8 @@ rx_handler_result_t br_handle_frame(stru
+ fwd_mask |= p->group_fwd_mask;
+ switch (dest[5]) {
+ case 0x00: /* Bridge Group Address */
++ if (p->flags & BR_BPDU_FILTER)
++ goto drop;
+ /* If STP is turned off,
+ then must forward to keep loop detection */
+ if (p->br->stp_enabled == BR_NO_STP ||
+--- a/net/bridge/br_sysfs_if.c
++++ b/net/bridge/br_sysfs_if.c
+@@ -233,6 +233,7 @@ BRPORT_ATTR_FLAG(multicast_flood, BR_MCA
+ BRPORT_ATTR_FLAG(broadcast_flood, BR_BCAST_FLOOD);
+ BRPORT_ATTR_FLAG(neigh_suppress, BR_NEIGH_SUPPRESS);
+ BRPORT_ATTR_FLAG(isolated, BR_ISOLATED);
++BRPORT_ATTR_FLAG(bpdu_filter, BR_BPDU_FILTER);
+
+ #ifdef CONFIG_BRIDGE_IGMP_SNOOPING
+ static ssize_t show_multicast_router(struct net_bridge_port *p, char *buf)
+@@ -285,6 +286,7 @@ static const struct brport_attribute *br
+ &brport_attr_group_fwd_mask,
+ &brport_attr_neigh_suppress,
+ &brport_attr_isolated,
++ &brport_attr_bpdu_filter,
+ &brport_attr_backup_port,
+ NULL
+ };
+--- a/net/bridge/br_stp_bpdu.c
++++ b/net/bridge/br_stp_bpdu.c
+@@ -80,7 +80,8 @@ void br_send_config_bpdu(struct net_brid
+ {
+ unsigned char buf[35];
+
+- if (p->br->stp_enabled != BR_KERNEL_STP)
++ if (p->br->stp_enabled != BR_KERNEL_STP ||
++ (p->flags & BR_BPDU_FILTER))
+ return;
+
+ buf[0] = 0;
+@@ -125,7 +126,8 @@ void br_send_tcn_bpdu(struct net_bridge_
+ {
+ unsigned char buf[4];
+
+- if (p->br->stp_enabled != BR_KERNEL_STP)
++ if (p->br->stp_enabled != BR_KERNEL_STP ||
++ (p->flags & BR_BPDU_FILTER))
+ return;
+
+ buf[0] = 0;
+@@ -168,6 +170,9 @@ void br_stp_rcv(const struct stp_proto *
+ if (!(br->dev->flags & IFF_UP))
+ goto out;
+
++ if (p->flags & BR_BPDU_FILTER)
++ goto out;
++
+ if (p->state == BR_STATE_DISABLED)
+ goto out;
+
--
2.25.1

View File

@@ -1,32 +0,0 @@
From 5171503cfa4387370fd4c33bbcf0d8c4b6ec86e4 Mon Sep 17 00:00:00 2001
From: John Crispin <john@phrozen.org>
Date: Tue, 18 May 2021 10:46:43 +0200
Subject: [PATCH] libubox: update to latest HEAD
Signed-off-by: John Crispin <john@phrozen.org>
---
package/libs/libubox/Makefile | 4 +-
package/network/config/netifd/Makefile | 4 +-
.../config/netifd/patches/100-8021x.patch | 421 ++++++++++++++++++
3 files changed, 425 insertions(+), 4 deletions(-)
create mode 100644 package/network/config/netifd/patches/100-8021x.patch
diff --git a/package/libs/libubox/Makefile b/package/libs/libubox/Makefile
index 4d582eacfd..8644764d59 100644
--- a/package/libs/libubox/Makefile
+++ b/package/libs/libubox/Makefile
@@ -5,9 +5,9 @@ PKG_RELEASE=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/libubox.git
-PKG_MIRROR_HASH:=97dc4eba01cf2c5d6a6d0db3747e0cdc0d95cb87e51b3115272e7d3e69a8b255
+#PKG_MIRROR_HASH:=97dc4eba01cf2c5d6a6d0db3747e0cdc0d95cb87e51b3115272e7d3e69a8b255
PKG_SOURCE_DATE:=2020-12-12
-PKG_SOURCE_VERSION:=357877693ca363b12e6e7e14d345639b2440cd07
+PKG_SOURCE_VERSION:=b14c4688612c05c78ce984d7bde633bce8703b1e
PKG_ABI_VERSION:=$(call abi_version_str,$(PKG_SOURCE_DATE))
CMAKE_INSTALL:=1
--
2.25.1

View File

@@ -0,0 +1,33 @@
From 8ba5feb6aaba50bda126db027490c7d37e428e3b Mon Sep 17 00:00:00 2001
From: Stijn Tintel <stijn@linux-ipv6.be>
Date: Fri, 20 Aug 2021 16:11:12 +0300
Subject: [PATCH 15/27] uhttpd: add config option for json_script
Add a config option for json_script instead of unconditionally including
all json files in /etc/uhttpd in every uhttpd instance. This makes it
possible to configure a single instance with an unconditional redirect,
which is currently not possible as it would render all other uhttpd
instances unusable.
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
---
package/network/services/uhttpd/files/uhttpd.init | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/package/network/services/uhttpd/files/uhttpd.init b/package/network/services/uhttpd/files/uhttpd.init
index 869f79bea2..7020912c6c 100755
--- a/package/network/services/uhttpd/files/uhttpd.init
+++ b/package/network/services/uhttpd/files/uhttpd.init
@@ -195,7 +195,8 @@ start_instance()
append_bool "$cfg" redirect_https "-q" 0
}
- for file in /etc/uhttpd/*.json; do
+ config_get json_script "$cfg" json_script
+ for file in $json_script; do
[ -s "$file" ] && procd_append_param command -H "$file"
done
--
2.25.1

View File

@@ -0,0 +1,41 @@
From 63281b982b3692828ff453dcb9e68b8e43d628e5 Mon Sep 17 00:00:00 2001
From: John Crispin <john@phrozen.org>
Date: Mon, 21 Jun 2021 12:53:28 +0200
Subject: [PATCH 16/27] iwinfo: update to latest git HEAD
Signed-off-by: John Crispin <john@phrozen.org>
---
package/network/utils/iwinfo/Makefile | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/package/network/utils/iwinfo/Makefile b/package/network/utils/iwinfo/Makefile
index 815c477988..d235f07da9 100644
--- a/package/network/utils/iwinfo/Makefile
+++ b/package/network/utils/iwinfo/Makefile
@@ -11,12 +11,20 @@ PKG_RELEASE:=2.1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/iwinfo.git
-PKG_SOURCE_DATE:=2021-04-30
-PKG_SOURCE_VERSION:=c45f0b584b4b86f8250f90ea19afca271c114fa2
-PKG_MIRROR_HASH:=24ad04791254a0523cd15a4fec6116d9ff121e006c93e5e41459f91347b33ec2
+PKG_SOURCE_DATE:=2021-06-09
+PKG_SOURCE_VERSION:=c0414642fead263a4a6a686ad3cb7e965ec8a23a
+PKG_MIRROR_HASH:=c5686bbae86753c53db03a686b034bbb80d31107cc359ebd8522ea1c82db35ea
PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
PKG_LICENSE:=GPL-2.0
+PKG_FLAGS := nonshared
+
+PKG_CONFIG_DEPENDS := \
+ CONFIG_PACKAGE_kmod-brcm-wl \
+ CONFIG_PACKAGE_kmod-brcm-wl-mini \
+ CONFIG_PACKAGE_kmod-brcm-wl-mimo \
+ CONFIG_PACKAGE_kmod-cfg80211
+
IWINFO_ABI_VERSION:=20210430
include $(INCLUDE_DIR)/package.mk
--
2.25.1

View File

@@ -1,45 +0,0 @@
From 6c7e11cccbd28224a9a473a36df1102b4257d356 Mon Sep 17 00:00:00 2001
From: DENG Qingfang <dqfext@gmail.com>
Date: Fri, 9 Apr 2021 12:25:08 +0800
Subject: [PATCH 5/6] kernel/modules: move act_gact into kmod-sched-core
As the name suggests, act_gact has the generic actions such as dropping
and accepting packets, so move it into kmod-sched-core.
Signed-off-by: DENG Qingfang <dqfext@gmail.com>
---
package/kernel/linux/modules/netsupport.mk | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/package/kernel/linux/modules/netsupport.mk b/package/kernel/linux/modules/netsupport.mk
index 9fd49c1392..4343e850e9 100644
--- a/package/kernel/linux/modules/netsupport.mk
+++ b/package/kernel/linux/modules/netsupport.mk
@@ -721,7 +721,7 @@ $(eval $(call KernelPackage,mppe))
SCHED_MODULES = $(patsubst $(LINUX_DIR)/net/sched/%.ko,%,$(wildcard $(LINUX_DIR)/net/sched/*.ko))
-SCHED_MODULES_CORE = sch_ingress sch_fq_codel sch_hfsc sch_htb sch_tbf cls_basic cls_fw cls_route cls_flow cls_tcindex cls_u32 em_u32 act_mirred act_skbedit cls_matchall
+SCHED_MODULES_CORE = sch_ingress sch_fq_codel sch_hfsc sch_htb sch_tbf cls_basic cls_fw cls_route cls_flow cls_tcindex cls_u32 em_u32 act_gact act_mirred act_skbedit cls_matchall
SCHED_MODULES_FILTER = $(SCHED_MODULES_CORE) act_connmark act_ctinfo sch_cake sch_netem sch_mqprio em_ipset cls_bpf cls_flower act_bpf act_vlan
SCHED_MODULES_EXTRA = $(filter-out $(SCHED_MODULES_FILTER),$(SCHED_MODULES))
SCHED_FILES = $(patsubst %,$(LINUX_DIR)/net/sched/%.ko,$(filter $(SCHED_MODULES_CORE),$(SCHED_MODULES)))
@@ -745,6 +745,7 @@ define KernelPackage/sched-core
CONFIG_NET_CLS_ROUTE4 \
CONFIG_NET_CLS_TCINDEX \
CONFIG_NET_CLS_U32 \
+ CONFIG_NET_ACT_GACT \
CONFIG_NET_ACT_MIRRED \
CONFIG_NET_ACT_SKBEDIT \
CONFIG_NET_CLS_MATCHALL \
@@ -899,7 +900,6 @@ define KernelPackage/sched
CONFIG_NET_SCH_FQ \
CONFIG_NET_SCH_PIE \
CONFIG_NET_ACT_POLICE \
- CONFIG_NET_ACT_GACT \
CONFIG_NET_ACT_IPT \
CONFIG_NET_ACT_PEDIT \
CONFIG_NET_ACT_SIMP \
--
2.25.1

View File

@@ -0,0 +1,136 @@
From c9e9ca475bc2eb90beb23a2c67c39389f8cb2527 Mon Sep 17 00:00:00 2001
From: John Crispin <john@phrozen.org>
Date: Thu, 27 May 2021 13:24:47 +0200
Subject: [PATCH 01/58] netifd: update to latest HEAD
Signed-off-by: John Crispin <john@phrozen.org>
---
package/network/config/netifd/Makefile | 8 ++--
.../netifd/patches/002-fix-dhcp-issue.patch | 17 +++++++++
.../config/netifd/patches/100-script.patch | 21 +++++++++++
.../config/netifd/patches/hairpin.patch | 37 +++++++++++++++++++
4 files changed, 78 insertions(+), 5 deletions(-)
create mode 100644 package/network/config/netifd/patches/002-fix-dhcp-issue.patch
create mode 100644 package/network/config/netifd/patches/100-script.patch
create mode 100644 package/network/config/netifd/patches/hairpin.patch
diff --git a/package/network/config/netifd/Makefile b/package/network/config/netifd/Makefile
index 4b5f110da2..d41bddfd56 100644
--- a/package/network/config/netifd/Makefile
+++ b/package/network/config/netifd/Makefile
@@ -5,16 +5,14 @@ PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/netifd.git
-PKG_SOURCE_DATE:=2021-07-26
-PKG_SOURCE_VERSION:=440eb0647708274cc8d7d9e7c2bb0cfdfba90023
-PKG_MIRROR_HASH:=eed957036ab608fdc49bdf801fc5b4405fcd2a3a5e5d3343ec39898e156c10e9
+PKG_SOURCE_DATE:=2021-10-20
+PKG_SOURCE_VERSION:=c61a1d432b34babe230e49a82712608b07410fc3
+PKG_MIRROR_HASH:=2b040d039c560cbc04dfe1e496aa81f714a032db88986803728dd6b724c11cd2
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=
-PKG_BUILD_PARALLEL:=1
-
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk
diff --git a/package/network/config/netifd/patches/002-fix-dhcp-issue.patch b/package/network/config/netifd/patches/002-fix-dhcp-issue.patch
new file mode 100644
index 0000000000..6f1d2e708e
--- /dev/null
+++ b/package/network/config/netifd/patches/002-fix-dhcp-issue.patch
@@ -0,0 +1,17 @@
+Index: netifd-2019-08-05-5e02f944/interface.c
+===================================================================
+--- netifd-2019-08-05-5e02f944.orig/interface.c
++++ netifd-2019-08-05-5e02f944/interface.c
+@@ -424,7 +424,11 @@ interface_main_dev_cb(struct device_user
+ interface_set_link_state(iface, false);
+ break;
+ case DEV_EVENT_TOPO_CHANGE:
+- interface_proto_event(iface->proto, PROTO_CMD_RENEW, false);
++ /* This renews the dhcp lease when the bridge adds/deletes a
++ * new interface. It causes some dhcp servers to fail in
++ * case where there are many interfaces being added to the
++ * bridge frequently. Disabling this for now. */
++ /* interface_proto_event(iface->proto, PROTO_CMD_RENEW, false); */
+ return;
+ default:
+ break;
diff --git a/package/network/config/netifd/patches/100-script.patch b/package/network/config/netifd/patches/100-script.patch
new file mode 100644
index 0000000000..e7ba83f4bb
--- /dev/null
+++ b/package/network/config/netifd/patches/100-script.patch
@@ -0,0 +1,21 @@
+Index: a/scripts/netifd-wireless.sh
+===================================================================
+--- a/scripts/netifd-wireless.sh
++++ b/scripts/netifd-wireless.sh
+@@ -252,11 +252,14 @@ wireless_vif_parse_encryption() {
+ auth_type=owe
+ ;;
+ wpa3-mixed*)
+- auth_type=eap-eap192
++ auth_type=eap-eap256
+ ;;
+- wpa3*)
++ wpa3-192*)
+ auth_type=eap192
+ ;;
++ wpa3*)
++ auth_type=eap256
++ ;;
+ psk3-mixed*|sae-mixed*)
+ auth_type=psk-sae
+ ;;
diff --git a/package/network/config/netifd/patches/hairpin.patch b/package/network/config/netifd/patches/hairpin.patch
new file mode 100644
index 0000000000..25515d75d4
--- /dev/null
+++ b/package/network/config/netifd/patches/hairpin.patch
@@ -0,0 +1,37 @@
+diff --git a/wireless.c b/wireless.c
+index b26c4e8c8f0b..bd847e72ab40 100644
+--- a/wireless.c
++++ b/wireless.c
+@@ -804,20 +804,13 @@ wireless_interface_init_config(struct wireless_interface *vif)
+ vif->network = cur;
+
+ cur = tb[VIF_ATTR_MODE];
+- if (cur)
+- vif->ap_mode = !strcmp(blobmsg_get_string(cur), "ap");
+-
+- if (!vif->ap_mode)
+- return;
++ vif->ap_mode = cur && !strcmp(blobmsg_get_string(cur), "ap");
+
+ cur = tb[VIF_ATTR_ISOLATE];
+- if (cur)
+- vif->isolate = blobmsg_get_bool(cur);
++ vif->isolate = vif->ap_mode && cur && blobmsg_get_bool(cur);
+
+ cur = tb[VIF_ATTR_PROXYARP];
+- if (cur)
+- vif->proxyarp = blobmsg_get_bool(cur);
+-
++ vif->proxyarp = vif->ap_mode && cur && blobmsg_get_bool(cur);
+ }
+
+ /* vlist update call for wireless interface list */
+@@ -846,8 +839,6 @@ vif_update(struct vlist_tree *tree, struct vlist_node *node_new,
+ wireless_interface_handle_link(vif_old, NULL, false);
+ free(vif_old->config);
+ vif_old->config = blob_memdup(vif_new->config);
+- vif_old->isolate = vif_new->isolate;
+- vif_old->ap_mode = vif_new->ap_mode;
+ wireless_interface_init_config(vif_old);
+ free(vif_new);
+ } else if (vif_new) {
--
2.25.1

View File

@@ -1,16 +1,16 @@
From 84b526991e77774e21c3eb1a193ca3087b624e83 Mon Sep 17 00:00:00 2001
From beaf8ac8acf93bc617d3ed141c750fe1d4f2b047 Mon Sep 17 00:00:00 2001
From: John Crispin <john@phrozen.org>
Date: Thu, 27 May 2021 13:25:19 +0200
Subject: [PATCH 01/41] hostapd: upsate to latest HEAD
Date: Sat, 4 Sep 2021 05:48:27 +0200
Subject: [PATCH 01/56] hostapd: update to latest HEAD
Signed-off-by: John Crispin <john@phrozen.org>
---
package/network/services/hostapd/Makefile | 15 +-
.../hostapd/files/hostapd-basic.config | 2 +-
.../hostapd/files/hostapd-full.config | 4 +-
.../network/services/hostapd/files/hostapd.sh | 156 ++++++++--
.../network/services/hostapd/files/hostapd.sh | 181 +++++++++---
...-fix-frequency-setup-with-HE-enabled.patch | 196 -------------
.../001-wolfssl-init-RNG-with-ECC-key.patch | 43 +++
...> 001-wolfssl-init-RNG-with-ECC-key.patch} | 11 +-
...-init-order-disable-pri-sec-channel-.patch | 126 --------
...andle-HT40-and-mode-downgrade-in-AP-.patch | 102 -------
...ix-frequency-config-for-non-p2p-vht-.patch | 63 ----
@@ -63,18 +63,19 @@ Signed-off-by: John Crispin <john@phrozen.org>
.../hostapd/patches/600-ubus_support.patch | 166 ++++++++---
.../hostapd/patches/700-wifi-reload.patch | 51 ++--
.../hostapd/patches/710-vlan_no_bridge.patch | 41 +++
.../patches/711-wds_bridge_force.patch | 26 ++
.../720-ACS-fix-channel-100-frequency.patch | 30 ++
.../patches/720-iface_max_num_sta.patch | 82 ++++++
.../hostapd/patches/730-ft_iface.patch | 38 +++
.../hostapd/patches/740-snoop_iface.patch | 37 +++
.../hostapd/patches/740-snoop_iface.patch | 72 +++++
...ate-if-no-available-channel-is-found.patch | 37 ---
...of-secondary-device-types-for-P2P-gr.patch | 33 ---
.../services/hostapd/src/src/ap/ubus.c | 217 +++++++++++++-
.../services/hostapd/src/src/ap/ubus.c | 214 +++++++++++++-
.../services/hostapd/src/src/ap/ubus.h | 16 +
.../hostapd/src/src/utils/build_features.h | 2 -
67 files changed, 1302 insertions(+), 2330 deletions(-)
68 files changed, 1336 insertions(+), 2347 deletions(-)
delete mode 100644 package/network/services/hostapd/patches/001-HE-VHT-fix-frequency-setup-with-HE-enabled.patch
create mode 100644 package/network/services/hostapd/patches/001-wolfssl-init-RNG-with-ECC-key.patch
rename package/network/services/hostapd/patches/{802-wolfssl-init-RNG-with-ECC-key.patch => 001-wolfssl-init-RNG-with-ECC-key.patch} (76%)
delete mode 100644 package/network/services/hostapd/patches/002-mesh-fix-channel-init-order-disable-pri-sec-channel-.patch
delete mode 100644 package/network/services/hostapd/patches/003-wpa_supplicant-handle-HT40-and-mode-downgrade-in-AP-.patch
delete mode 100644 package/network/services/hostapd/patches/004-wpa_supplicant-fix-frequency-config-for-non-p2p-vht-.patch
@@ -103,6 +104,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
delete mode 100644 package/network/services/hostapd/patches/110-wolfssl-compile-fix.patch
delete mode 100644 package/network/services/hostapd/patches/120-reconfigure-wps-credentials.patch
create mode 100644 package/network/services/hostapd/patches/710-vlan_no_bridge.patch
create mode 100644 package/network/services/hostapd/patches/711-wds_bridge_force.patch
create mode 100644 package/network/services/hostapd/patches/720-ACS-fix-channel-100-frequency.patch
create mode 100644 package/network/services/hostapd/patches/720-iface_max_num_sta.patch
create mode 100644 package/network/services/hostapd/patches/730-ft_iface.patch
@@ -111,7 +113,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
delete mode 100644 package/network/services/hostapd/patches/801-P2P-Fix-copying-of-secondary-device-types-for-P2P-gr.patch
diff --git a/package/network/services/hostapd/Makefile b/package/network/services/hostapd/Makefile
index bd2a7c96ad..fee6889b40 100644
index 67ea89c339..fee6889b40 100644
--- a/package/network/services/hostapd/Makefile
+++ b/package/network/services/hostapd/Makefile
@@ -1,19 +1,17 @@
@@ -126,7 +128,7 @@ index bd2a7c96ad..fee6889b40 100644
include $(TOPDIR)/rules.mk
PKG_NAME:=hostapd
-PKG_RELEASE:=32
-PKG_RELEASE:=35
+PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE_URL:=http://w1.fi/hostap.git
@@ -179,28 +181,39 @@ index df272e443a..61b6daf861 100644
# EAP-SAKE for the integrated EAP server
#CONFIG_EAP_SAKE=y
diff --git a/package/network/services/hostapd/files/hostapd.sh b/package/network/services/hostapd/files/hostapd.sh
index 45a49b8faa..4591958b6f 100644
index aa72e09eba..0265c0518a 100644
--- a/package/network/services/hostapd/files/hostapd.sh
+++ b/package/network/services/hostapd/files/hostapd.sh
@@ -49,6 +49,7 @@ hostapd_append_wpa_key_mgmt() {
@@ -48,13 +48,17 @@ hostapd_append_wpa_key_mgmt() {
;;
eap192)
append wpa_key_mgmt "WPA-EAP-SUITE-B-192"
+ append wpa_key_mgmt "WPA-EAP-SHA256"
[ "${ieee80211r:-0}" -gt 0 ] && append wpa_key_mgmt "FT-EAP"
+ [ "${ieee80211w:-0}" -gt 0 ] && append wpa_key_mgmt "WPA-EAP-SHA256"
;;
eap-eap192)
append wpa_key_mgmt "WPA-EAP-SUITE-B-192"
@@ -91,14 +92,19 @@ hostapd_add_log_config() {
- eap-eap192)
- append wpa_key_mgmt "WPA-EAP-SUITE-B-192"
+ eap-eap256)
append wpa_key_mgmt "WPA-EAP"
+ append wpa_key_mgmt "WPA-EAP-SHA256"
+ [ "${ieee80211r:-0}" -gt 0 ] && append wpa_key_mgmt "FT-EAP"
+ ;;
+ eap256)
+ append wpa_key_mgmt "WPA-EAP-SHA256"
[ "${ieee80211r:-0}" -gt 0 ] && append wpa_key_mgmt "FT-EAP"
- [ "${ieee80211w:-0}" -gt 0 ] && append wpa_key_mgmt "WPA-EAP-SHA256"
;;
sae)
append wpa_key_mgmt "SAE"
@@ -91,6 +95,7 @@ hostapd_add_log_config() {
hostapd_common_add_device_config() {
config_add_array basic_rate
config_add_array supported_rates
+ config_add_string beacon_rate
- config_add_string country
+ config_add_string country country3
config_add_string country country3
config_add_boolean country_ie doth
config_add_boolean spectrum_mgmt_required
config_add_int local_pwr_constraint
@@ -99,6 +104,10 @@ hostapd_common_add_device_config() {
config_add_string require_mode
config_add_boolean legacy_rates
config_add_int cell_density
@@ -211,27 +224,17 @@ index 45a49b8faa..4591958b6f 100644
config_add_string acs_chan_bias
config_add_array hostapd_options
@@ -114,8 +120,9 @@ hostapd_prepare_device_config() {
@@ -115,7 +124,8 @@ hostapd_prepare_device_config() {
local base_cfg=
- json_get_vars country country_ie beacon_int:100 dtim_period:2 doth require_mode legacy_rates \
json_get_vars country country3 country_ie beacon_int:100 dtim_period:2 doth require_mode legacy_rates \
- acs_chan_bias local_pwr_constraint spectrum_mgmt_required airtime_mode cell_density
+ json_get_vars country country3 country_ie beacon_int:100 dtim_period:2 doth require_mode legacy_rates \
+ acs_chan_bias local_pwr_constraint spectrum_mgmt_required airtime_mode cell_density \
+ rts_threshold beacon_rate rssi_reject_assoc_rssi rssi_ignore_probe_request maxassoc
hostapd_set_log_options base_cfg
@@ -128,6 +135,7 @@ hostapd_prepare_device_config() {
[ -n "$country" ] && {
append base_cfg "country_code=$country" "$N"
+ [ -n "$country3" ] && append base_cfg "country3=$country3" "$N"
[ "$country_ie" -gt 0 ] && {
append base_cfg "ieee80211d=1" "$N"
@@ -206,11 +214,16 @@ hostapd_prepare_device_config() {
@@ -207,11 +217,16 @@ hostapd_prepare_device_config() {
hostapd_add_rate brlist "$br"
done
@@ -248,16 +251,7 @@ index 45a49b8faa..4591958b6f 100644
json_get_values opts hostapd_options
for val in $opts; do
@@ -251,6 +264,8 @@ hostapd_common_add_bss_config() {
config_add_int acct_port
config_add_int acct_interval
+ config_add_int bss_load_update_period chan_util_avg_period
+
config_add_string dae_client
config_add_string dae_secret
config_add_int dae_port
@@ -266,7 +281,7 @@ hostapd_common_add_bss_config() {
@@ -269,7 +284,7 @@ hostapd_common_add_bss_config() {
config_add_array domain_match domain_match2 domain_suffix_match domain_suffix_match2
config_add_string ieee80211w_mgmt_cipher
@@ -266,19 +260,15 @@ index 45a49b8faa..4591958b6f 100644
config_add_string vlan_tagged_interface vlan_bridge
config_add_string vlan_file
@@ -281,9 +296,10 @@ hostapd_common_add_bss_config() {
config_add_string wps_device_type wps_device_name wps_manufacturer wps_pin
config_add_string multi_ap_backhaul_ssid multi_ap_backhaul_key
- config_add_boolean wnm_sleep_mode bss_transition
+ config_add_boolean wnm_sleep_mode wnm_sleep_mode_no_keys bss_transition
@@ -287,6 +302,7 @@ hostapd_common_add_bss_config() {
config_add_boolean wnm_sleep_mode wnm_sleep_mode_no_keys bss_transition
config_add_int time_advertisement
config_add_string time_zone
+ config_add_string vendor_elements
config_add_boolean ieee80211k rrm_neighbor_report rrm_beacon_report
@@ -308,6 +324,7 @@ hostapd_common_add_bss_config() {
@@ -311,6 +327,7 @@ hostapd_common_add_bss_config() {
config_add_array supported_rates
config_add_boolean sae_require_mfp
@@ -286,7 +276,7 @@ index 45a49b8faa..4591958b6f 100644
config_add_string 'owe_transition_bssid:macaddr' 'owe_transition_ssid:string'
@@ -316,7 +333,7 @@ hostapd_common_add_bss_config() {
@@ -319,23 +336,33 @@ hostapd_common_add_bss_config() {
config_add_int iw_ipaddr_type_availability iw_gas_address3
config_add_string iw_hessid iw_network_auth_type iw_qos_map_set
config_add_array iw_roaming_consortium iw_domain_name iw_anqp_3gpp_cell_net iw_nai_realm
@@ -295,7 +285,11 @@ index 45a49b8faa..4591958b6f 100644
config_add_boolean hs20 disable_dgaf osen
config_add_int anqp_domain_id
@@ -327,12 +344,22 @@ hostapd_common_add_bss_config() {
- config_add_int hs20_deauth_req_timeout
+ config_add_int hs20_deauth_req_timeout hs20_release
config_add_array hs20_oper_friendly_name
config_add_array osu_provider
config_add_array operator_icon
config_add_array hs20_conn_capab
config_add_string osu_ssid hs20_wan_metrics hs20_operating_class hs20_t_c_filename hs20_t_c_timestamp
@@ -319,7 +313,7 @@ index 45a49b8faa..4591958b6f 100644
}
hostapd_set_vlan_file() {
@@ -384,7 +411,7 @@ append_iw_anqp_3gpp_cell_net() {
@@ -387,7 +414,7 @@ append_iw_anqp_3gpp_cell_net() {
if [ -z "$iw_anqp_3gpp_cell_net_conf" ]; then
iw_anqp_3gpp_cell_net_conf="$1"
else
@@ -328,7 +322,7 @@ index 45a49b8faa..4591958b6f 100644
fi
}
@@ -396,10 +423,22 @@ append_iw_nai_realm() {
@@ -399,10 +426,22 @@ append_iw_nai_realm() {
[ -n "$1" ] && append bss_conf "nai_realm=$1" "$N"
}
@@ -351,7 +345,7 @@ index 45a49b8faa..4591958b6f 100644
append_osu_provider_service_desc() {
append bss_conf "osu_service_desc=$1" "$N"
}
@@ -447,6 +486,7 @@ append_osu_provider() {
@@ -450,6 +489,7 @@ append_osu_provider() {
append bss_conf "osu_method_list=$osu_method_list" "$N"
config_list_foreach "$1" osu_service_desc append_osu_provider_service_desc
@@ -359,7 +353,7 @@ index 45a49b8faa..4591958b6f 100644
config_list_foreach "$1" osu_icon append_osu_icon
append bss_conf "$N"
@@ -456,6 +496,14 @@ append_hs20_conn_capab() {
@@ -459,6 +499,14 @@ append_hs20_conn_capab() {
[ -n "$1" ] && append bss_conf "hs20_conn_capab=$1" "$N"
}
@@ -374,7 +368,7 @@ index 45a49b8faa..4591958b6f 100644
append_airtime_sta_weight() {
[ -n "$1" ] && append bss_conf "airtime_sta_weight=$1" "$N"
}
@@ -479,10 +527,12 @@ hostapd_set_bss_options() {
@@ -482,10 +530,12 @@ hostapd_set_bss_options() {
macfilter ssid utf8_ssid wmm uapsd hidden short_preamble rsn_preauth \
iapp_interface eapol_version dynamic_vlan ieee80211w nasid \
acct_server acct_secret acct_port acct_interval \
@@ -389,7 +383,7 @@ index 45a49b8faa..4591958b6f 100644
set_default isolate 0
set_default maxassoc 0
@@ -503,6 +553,7 @@ hostapd_set_bss_options() {
@@ -506,6 +556,7 @@ hostapd_set_bss_options() {
set_default multi_ap 0
set_default airtime_bss_weight 0
set_default airtime_bss_limit 0
@@ -397,7 +391,7 @@ index 45a49b8faa..4591958b6f 100644
append bss_conf "ctrl_interface=/var/run/hostapd"
if [ "$isolate" -gt 0 ]; then
@@ -529,6 +580,7 @@ hostapd_set_bss_options() {
@@ -532,6 +583,7 @@ hostapd_set_bss_options() {
append bss_conf "uapsd_advertisement_enabled=$uapsd" "$N"
append bss_conf "utf8_ssid=$utf8_ssid" "$N"
append bss_conf "multi_ap=$multi_ap" "$N"
@@ -405,7 +399,7 @@ index 45a49b8faa..4591958b6f 100644
[ "$tdls_prohibit" -gt 0 ] && append bss_conf "tdls_prohibit=$tdls_prohibit" "$N"
@@ -547,6 +599,7 @@ hostapd_set_bss_options() {
@@ -550,19 +602,21 @@ hostapd_set_bss_options() {
append bss_conf "acct_server_shared_secret=$acct_secret" "$N"
[ -n "$acct_interval" ] && \
append bss_conf "radius_acct_interim_interval=$acct_interval" "$N"
@@ -413,7 +407,15 @@ index 45a49b8faa..4591958b6f 100644
}
case "$auth_type" in
@@ -560,6 +613,7 @@ hostapd_set_bss_options() {
- sae|owe|eap192|eap-eap192)
+ sae|owe|eap192|eap256)
set_default ieee80211w 2
set_default sae_require_mfp 1
;;
- psk-sae)
+ psk-sae|eap-eap256)
set_default ieee80211w 1
set_default sae_require_mfp 1
;;
esac
[ -n "$sae_require_mfp" ] && append bss_conf "sae_require_mfp=$sae_require_mfp" "$N"
@@ -421,7 +423,13 @@ index 45a49b8faa..4591958b6f 100644
local vlan_possible=""
@@ -601,7 +655,7 @@ hostapd_set_bss_options() {
@@ -599,12 +653,12 @@ hostapd_set_bss_options() {
vlan_possible=1
wps_possible=1
;;
- eap|eap192|eap-eap192)
+ eap|eap192|eap-eap256|eap256)
json_get_vars \
auth_server auth_secret auth_port \
dae_client dae_secret dae_port \
ownip radius_client_addr \
@@ -430,7 +438,7 @@ index 45a49b8faa..4591958b6f 100644
# radius can provide VLAN ID for clients
vlan_possible=1
@@ -613,18 +667,22 @@ hostapd_set_bss_options() {
@@ -616,18 +670,22 @@ hostapd_set_bss_options() {
set_default auth_port 1812
set_default dae_port 3799
@@ -457,34 +465,17 @@ index 45a49b8faa..4591958b6f 100644
[ -n "$ownip" ] && append bss_conf "own_ip_addr=$ownip" "$N"
[ -n "$radius_client_addr" ] && append bss_conf "radius_client_addr=$radius_client_addr" "$N"
@@ -697,19 +755,24 @@ hostapd_set_bss_options() {
@@ -699,7 +757,8 @@ hostapd_set_bss_options() {
}
append bss_conf "ssid=$ssid" "$N"
[ -n "$network_bridge" ] && append bss_conf "bridge=$network_bridge" "$N"
- [ -n "$network_bridge" ] && append bss_conf "bridge=$network_bridge" "$N"
+ [ -n "$network_bridge" ] && append bss_conf "bridge=$network_bridge${N}wds_bridge=" "$N"
+ [ -n "$network_ifname" ] && append bss_conf "snoop_iface=$network_ifname" "$N"
[ -n "$iapp_interface" ] && {
local ifname
network_get_device ifname "$iapp_interface" || ifname="$iapp_interface"
append bss_conf "iapp_interface=$ifname" "$N"
}
- json_get_vars time_advertisement time_zone wnm_sleep_mode bss_transition
+ json_get_vars time_advertisement time_zone wnm_sleep_mode wnm_sleep_mode_no_keys bss_transition
set_default bss_transition 0
set_default wnm_sleep_mode 0
+ set_default wnm_sleep_mode_no_keys 0
[ -n "$time_advertisement" ] && append bss_conf "time_advertisement=$time_advertisement" "$N"
[ -n "$time_zone" ] && append bss_conf "time_zone=$time_zone" "$N"
- [ "$wnm_sleep_mode" -eq "1" ] && append bss_conf "wnm_sleep_mode=1" "$N"
+ if [ "$wnm_sleep_mode" -eq "1" ]; then
+ append bss_conf "wnm_sleep_mode=1" "$N"
+ [ "$wnm_sleep_mode_no_keys" -eq "1" ] && append bss_conf "wnm_sleep_mode_no_keys=1" "$N"
+ fi
[ "$bss_transition" -eq "1" ] && append bss_conf "bss_transition=1" "$N"
json_get_vars ieee80211k rrm_neighbor_report rrm_beacon_report
@@ -733,7 +796,7 @@ hostapd_set_bss_options() {
@@ -740,7 +799,7 @@ hostapd_set_bss_options() {
append bss_conf "ftm_responder=1" "$N"
[ "$stationary_ap" -eq "1" ] && append bss_conf "stationary_ap=1" "$N"
[ -n "$lci" ] && append bss_conf "lci=$lci" "$N"
@@ -493,7 +484,7 @@ index 45a49b8faa..4591958b6f 100644
}
fi
@@ -757,6 +820,7 @@ hostapd_set_bss_options() {
@@ -764,6 +823,7 @@ hostapd_set_bss_options() {
;;
esac
@@ -501,7 +492,7 @@ index 45a49b8faa..4591958b6f 100644
append bss_conf "mobility_domain=$mobility_domain" "$N"
append bss_conf "ft_psk_generate_local=$ft_psk_generate_local" "$N"
append bss_conf "ft_over_ds=$ft_over_ds" "$N"
@@ -771,6 +835,13 @@ hostapd_set_bss_options() {
@@ -778,6 +838,13 @@ hostapd_set_bss_options() {
set_default r0_key_lifetime 10000
set_default pmk_r1_push 0
@@ -515,7 +506,25 @@ index 45a49b8faa..4591958b6f 100644
[ -n "$r1_key_holder" ] && append bss_conf "r1_key_holder=$r1_key_holder" "$N"
append bss_conf "r0_key_lifetime=$r0_key_lifetime" "$N"
append bss_conf "pmk_r1_push=$pmk_r1_push" "$N"
@@ -856,13 +927,17 @@ hostapd_set_bss_options() {
@@ -822,7 +889,16 @@ hostapd_set_bss_options() {
json_get_vars ieee80211w_mgmt_cipher ieee80211w_max_timeout ieee80211w_retry_timeout
append bss_conf "ieee80211w=$ieee80211w" "$N"
[ "$ieee80211w" -gt "0" ] && {
- append bss_conf "group_mgmt_cipher=${ieee80211w_mgmt_cipher:-AES-128-CMAC}" "$N"
+ case "$auth_type" in
+ eap192)
+ append bss_conf "group_mgmt_cipher=BIP-GMAC-256" "$N"
+ append bss_conf "group_cipher=GCMP-256" "$N"
+ ;;
+ *)
+ append bss_conf "group_mgmt_cipher=${ieee80211w_mgmt_cipher:-AES-128-CMAC}" "$N"
+ ;;
+ esac
+
[ -n "$ieee80211w_max_timeout" ] && \
append bss_conf "assoc_sa_query_max_timeout=$ieee80211w_max_timeout" "$N"
[ -n "$ieee80211w_retry_timeout" ] && \
@@ -863,13 +939,17 @@ hostapd_set_bss_options() {
}
[ -n "$vlan_possible" -a -n "$dynamic_vlan" ] && {
@@ -535,7 +544,7 @@ index 45a49b8faa..4591958b6f 100644
[ -n "$vlan_tagged_interface" ] && \
append bss_conf "vlan_tagged_interface=$vlan_tagged_interface" "$N"
[ -n "$vlan_file" ] && {
@@ -875,6 +950,7 @@ hostapd_set_bss_options() {
@@ -882,6 +962,7 @@ hostapd_set_bss_options() {
json_get_vars iw_hessid iw_venue_group iw_venue_type iw_network_auth_type
json_get_vars iw_roaming_consortium iw_domain_name iw_anqp_3gpp_cell_net iw_nai_realm
json_get_vars iw_anqp_elem iw_qos_map_set iw_ipaddr_type_availability iw_gas_address3
@@ -543,7 +552,12 @@ index 45a49b8faa..4591958b6f 100644
set_default iw_enabled 0
if [ "$iw_enabled" = "1" ]; then
@@ -903,6 +979,8 @@ hostapd_set_bss_options() {
@@ -905,11 +986,12 @@ hostapd_set_bss_options() {
[ -n "$iw_network_auth_type" ] && \
append bss_conf "network_auth_type=$iw_network_auth_type" "$N"
[ -n "$iw_gas_address3" ] && append bss_conf "gas_address3=$iw_gas_address3" "$N"
- [ -n "$iw_qos_map_set" ] && append bss_conf "qos_map_set=$iw_qos_map_set" "$N"
json_for_each_item append_iw_roaming_consortium iw_roaming_consortium
json_for_each_item append_iw_anqp_elem iw_anqp_elem
json_for_each_item append_iw_nai_realm iw_nai_realm
@@ -552,21 +566,36 @@ index 45a49b8faa..4591958b6f 100644
iw_domain_name_conf=
json_for_each_item append_iw_domain_name iw_domain_name
@@ -917,9 +995,11 @@ hostapd_set_bss_options() {
@@ -921,14 +1003,18 @@ hostapd_set_bss_options() {
[ -n "$iw_anqp_3gpp_cell_net_conf" ] && \
append bss_conf "anqp_3gpp_cell_net=$iw_anqp_3gpp_cell_net_conf" "$N"
fi
+ [ -n "$iw_qos_map_set" ] && append bss_conf "qos_map_set=$iw_qos_map_set" "$N"
local hs20 disable_dgaf osen anqp_domain_id hs20_deauth_req_timeout \
- osu_ssid hs20_wan_metrics hs20_operating_class hs20_t_c_filename hs20_t_c_timestamp
+ osu_ssid hs20_wan_metrics hs20_operating_class hs20_t_c_filename hs20_t_c_timestamp \
+ hs20_t_c_server_url
+ hs20_t_c_server_url hs20_release
json_get_vars hs20 disable_dgaf osen anqp_domain_id hs20_deauth_req_timeout \
- osu_ssid hs20_wan_metrics hs20_operating_class hs20_t_c_filename hs20_t_c_timestamp
+ osu_ssid hs20_wan_metrics hs20_operating_class hs20_t_c_filename hs20_t_c_timestamp \
+ hs20_t_c_server_url
+ hs20_t_c_server_url hs20_release
set_default hs20 0
+ set_default hs20_release 1
set_default disable_dgaf $hs20
@@ -938,16 +1018,31 @@ hostapd_set_bss_options() {
set_default osen 0
set_default anqp_domain_id 0
@@ -936,6 +1022,7 @@ hostapd_set_bss_options() {
if [ "$hs20" = "1" ]; then
append bss_conf "hs20=1" "$N"
append_hs20_icons
+ append bss_conf "hs20_release=$hs20_release" "$N"
append bss_conf "disable_dgaf=$disable_dgaf" "$N"
append bss_conf "osen=$osen" "$N"
append bss_conf "anqp_domain_id=$anqp_domain_id" "$N"
@@ -945,16 +1032,31 @@ hostapd_set_bss_options() {
[ -n "$hs20_operating_class" ] && append bss_conf "hs20_operating_class=$hs20_operating_class" "$N"
[ -n "$hs20_t_c_filename" ] && append bss_conf "hs20_t_c_filename=$hs20_t_c_filename" "$N"
[ -n "$hs20_t_c_timestamp" ] && append bss_conf "hs20_t_c_timestamp=$hs20_t_c_timestamp" "$N"
@@ -599,7 +628,15 @@ index 45a49b8faa..4591958b6f 100644
set_default per_sta_vif 0
if [ "$per_sta_vif" -gt 0 ]; then
@@ -1079,9 +1174,9 @@ wpa_supplicant_set_fixed_freq() {
@@ -1079,16 +1181,16 @@ wpa_supplicant_set_fixed_freq() {
append network_data "frequency=$freq" "$N$T"
case "$htmode" in
NOHT) append network_data "disable_ht=1" "$N$T";;
- HT20|VHT20) append network_data "disable_ht40=1" "$N$T";;
+ HT20|VHT20|HE20) append network_data "disable_ht40=1" "$N$T";;
HT40*|VHT40*|VHT80*|VHT160*) append network_data "ht40=1" "$N$T";;
esac
case "$htmode" in
VHT*) append network_data "vht=1" "$N$T";;
esac
case "$htmode" in
@@ -612,7 +649,7 @@ index 45a49b8faa..4591958b6f 100644
*) append network_data "disable_vht=1" "$N$T";;
esac
}
@@ -1099,7 +1194,8 @@ wpa_supplicant_add_network() {
@@ -1106,19 +1208,21 @@ wpa_supplicant_add_network() {
ssid bssid key \
basic_rate mcast_rate \
ieee80211w ieee80211r \
@@ -621,8 +658,15 @@ index 45a49b8faa..4591958b6f 100644
+ default_disabled
case "$auth_type" in
sae|owe|eap192|eap-eap192)
@@ -1112,6 +1208,7 @@ wpa_supplicant_add_network() {
- sae|owe|eap192|eap-eap192)
+ sae|owe|eap-eap256)
set_default ieee80211w 2
;;
- psk-sae)
+ psk-sae|eap192|eap256)
set_default ieee80211w 1
;;
esac
set_default ieee80211r 0
set_default multi_ap 0
@@ -630,7 +674,7 @@ index 45a49b8faa..4591958b6f 100644
local key_mgmt='NONE'
local network_data=
@@ -1143,7 +1240,10 @@ wpa_supplicant_add_network() {
@@ -1150,7 +1254,10 @@ wpa_supplicant_add_network() {
scan_ssid=""
}
@@ -642,6 +686,15 @@ index 45a49b8faa..4591958b6f 100644
case "$auth_type" in
none) ;;
@@ -1186,7 +1293,7 @@ wpa_supplicant_add_network() {
fi
append network_data "$passphrase" "$N$T"
;;
- eap|eap192|eap-eap192)
+ eap|eap192|eap-eap256|eap256)
hostapd_append_wpa_key_mgmt
key_mgmt="$wpa_key_mgmt"
diff --git a/package/network/services/hostapd/patches/001-HE-VHT-fix-frequency-setup-with-HE-enabled.patch b/package/network/services/hostapd/patches/001-HE-VHT-fix-frequency-setup-with-HE-enabled.patch
deleted file mode 100644
index 37c17c50af..0000000000
@@ -844,55 +897,51 @@ index 37c17c50af..0000000000
-
- if (ssid->mesh_basic_rates == NULL) {
- /*
diff --git a/package/network/services/hostapd/patches/001-wolfssl-init-RNG-with-ECC-key.patch b/package/network/services/hostapd/patches/001-wolfssl-init-RNG-with-ECC-key.patch
new file mode 100644
index 0000000000..84fc1c9351
--- /dev/null
diff --git a/package/network/services/hostapd/patches/802-wolfssl-init-RNG-with-ECC-key.patch b/package/network/services/hostapd/patches/001-wolfssl-init-RNG-with-ECC-key.patch
similarity index 76%
rename from package/network/services/hostapd/patches/802-wolfssl-init-RNG-with-ECC-key.patch
rename to package/network/services/hostapd/patches/001-wolfssl-init-RNG-with-ECC-key.patch
index 89d111e991..84fc1c9351 100644
--- a/package/network/services/hostapd/patches/802-wolfssl-init-RNG-with-ECC-key.patch
+++ b/package/network/services/hostapd/patches/001-wolfssl-init-RNG-with-ECC-key.patch
@@ -0,0 +1,43 @@
+From 21ce83b4ae2b9563175fdb4fc4312096cc399cf8 Mon Sep 17 00:00:00 2001
+From: David Bauer <mail@david-bauer.net>
+Date: Wed, 5 May 2021 00:44:34 +0200
+Subject: [PATCH] wolfssl: add RNG to EC key
+
+Since upstream commit 6467de5a8840 ("Randomize z ordinates in
+scalar mult when timing resistant") WolfSSL requires a RNG for
+the EC key when built hardened which is the default.
+
+Set the RNG for the EC key to fix connections for OWE clients.
+
+Signed-off-by: David Bauer <mail@david-bauer.net>
+---
+ src/crypto/crypto_wolfssl.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/src/crypto/crypto_wolfssl.c
++++ b/src/crypto/crypto_wolfssl.c
@@ -14,11 +14,9 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
src/crypto/crypto_wolfssl.c | 4 ++++
1 file changed, 4 insertions(+)
-diff --git a/src/crypto/crypto_wolfssl.c b/src/crypto/crypto_wolfssl.c
-index 2e4bf8962..ed2528159 100644
--- a/src/crypto/crypto_wolfssl.c
+++ b/src/crypto/crypto_wolfssl.c
-@@ -1303,6 +1303,7 @@ int ecc_projective_add_point(ecc_point *P, ecc_point *Q, ecc_point *R,
+@@ -1303,6 +1303,7 @@ int ecc_projective_add_point(ecc_point *
+
+ struct crypto_ec {
+ ecc_key key;
++ WC_RNG rng;
+ mp_int a;
+ mp_int prime;
+ mp_int order;
struct crypto_ec {
ecc_key key;
@@ -26,7 +24,7 @@ index 2e4bf8962..ed2528159 100644
mp_int a;
mp_int prime;
mp_int order;
-@@ -1357,6 +1358,8 @@ struct crypto_ec * crypto_ec_init(int group)
+@@ -1357,6 +1358,8 @@ struct crypto_ec * crypto_ec_init(int gr
+ return NULL;
+
+ if (wc_ecc_init(&e->key) != 0 ||
++ wc_InitRng(&e->rng) != 0 ||
++ wc_ecc_set_rng(&e->key, &e->rng) != 0 ||
+ wc_ecc_set_curve(&e->key, 0, curve_id) != 0 ||
+ mp_init(&e->a) != MP_OKAY ||
+ mp_init(&e->prime) != MP_OKAY ||
return NULL;
if (wc_ecc_init(&e->key) != 0 ||
@@ -35,7 +33,7 @@ index 2e4bf8962..ed2528159 100644
wc_ecc_set_curve(&e->key, 0, curve_id) != 0 ||
mp_init(&e->a) != MP_OKAY ||
mp_init(&e->prime) != MP_OKAY ||
-@@ -1388,6 +1391,7 @@ void crypto_ec_deinit(struct crypto_ec* e)
+@@ -1388,6 +1391,7 @@ void crypto_ec_deinit(struct crypto_ec*
+ mp_clear(&e->order);
+ mp_clear(&e->prime);
+ mp_clear(&e->a);
++ wc_FreeRng(&e->rng);
+ wc_ecc_free(&e->key);
+ os_free(e);
+ }
mp_clear(&e->order);
mp_clear(&e->prime);
mp_clear(&e->a);
@@ -43,6 +41,3 @@ index 2e4bf8962..ed2528159 100644
wc_ecc_free(&e->key);
os_free(e);
}
---
-2.31.1
-
diff --git a/package/network/services/hostapd/patches/002-mesh-fix-channel-init-order-disable-pri-sec-channel-.patch b/package/network/services/hostapd/patches/002-mesh-fix-channel-init-order-disable-pri-sec-channel-.patch
deleted file mode 100644
index c7101b1dbc..0000000000
@@ -5147,6 +5196,38 @@ index 0000000000..73db32e54a
+ } else if (os_strcmp(buf, "per_sta_vif") == 0) {
+ bss->ssid.per_sta_vif = atoi(pos);
+ } else if (os_strcmp(buf, "vlan_file") == 0) {
diff --git a/package/network/services/hostapd/patches/711-wds_bridge_force.patch b/package/network/services/hostapd/patches/711-wds_bridge_force.patch
new file mode 100644
index 0000000000..76a3547805
--- /dev/null
+++ b/package/network/services/hostapd/patches/711-wds_bridge_force.patch
@@ -0,0 +1,26 @@
+Index: hostapd-2021-05-22-b102f19b/hostapd/config_file.c
+===================================================================
+--- hostapd-2021-05-22-b102f19b.orig/hostapd/config_file.c
++++ hostapd-2021-05-22-b102f19b/hostapd/config_file.c
+@@ -2357,6 +2357,8 @@ static int hostapd_config_fill(struct ho
+ sizeof(conf->bss[0]->iface));
+ } else if (os_strcmp(buf, "bridge") == 0) {
+ os_strlcpy(bss->bridge, pos, sizeof(bss->bridge));
++ if (!bss->wds_bridge[0])
++ os_strlcpy(bss->wds_bridge, pos, sizeof(bss->wds_bridge));
+ } else if (os_strcmp(buf, "vlan_bridge") == 0) {
+ os_strlcpy(bss->vlan_bridge, pos, sizeof(bss->vlan_bridge));
+ } else if (os_strcmp(buf, "wds_bridge") == 0) {
+Index: hostapd-2021-05-22-b102f19b/src/ap/ap_drv_ops.c
+===================================================================
+--- hostapd-2021-05-22-b102f19b.orig/src/ap/ap_drv_ops.c
++++ hostapd-2021-05-22-b102f19b/src/ap/ap_drv_ops.c
+@@ -340,8 +340,6 @@ int hostapd_set_wds_sta(struct hostapd_d
+ return -1;
+ if (hapd->conf->wds_bridge[0])
+ bridge = hapd->conf->wds_bridge;
+- else if (hapd->conf->bridge[0])
+- bridge = hapd->conf->bridge;
+ return hapd->driver->set_wds_sta(hapd->drv_priv, addr, aid, val,
+ bridge, ifname_wds);
+ }
diff --git a/package/network/services/hostapd/patches/720-ACS-fix-channel-100-frequency.patch b/package/network/services/hostapd/patches/720-ACS-fix-channel-100-frequency.patch
new file mode 100644
index 0000000000..3ef19e5298
@@ -5317,12 +5398,14 @@ index 0000000000..793e8e0194
+ if (!hapd->l2) {
diff --git a/package/network/services/hostapd/patches/740-snoop_iface.patch b/package/network/services/hostapd/patches/740-snoop_iface.patch
new file mode 100644
index 0000000000..722d1e713a
index 0000000000..6e60cde844
--- /dev/null
+++ b/package/network/services/hostapd/patches/740-snoop_iface.patch
@@ -0,0 +1,37 @@
+--- a/src/ap/ap_config.h
++++ b/src/ap/ap_config.h
@@ -0,0 +1,72 @@
+Index: hostapd-2021-05-22-b102f19b/src/ap/ap_config.h
+===================================================================
+--- hostapd-2021-05-22-b102f19b.orig/src/ap/ap_config.h
++++ hostapd-2021-05-22-b102f19b/src/ap/ap_config.h
+@@ -278,6 +278,7 @@ struct hostapd_bss_config {
+ char iface[IFNAMSIZ + 1];
+ char bridge[IFNAMSIZ + 1];
@@ -5331,9 +5414,40 @@ index 0000000000..722d1e713a
+ char vlan_bridge[IFNAMSIZ + 1];
+ char wds_bridge[IFNAMSIZ + 1];
+
+--- a/src/ap/x_snoop.c
++++ b/src/ap/x_snoop.c
+@@ -71,8 +71,12 @@ x_snoop_get_l2_packet(struct hostapd_dat
+Index: hostapd-2021-05-22-b102f19b/src/ap/x_snoop.c
+===================================================================
+--- hostapd-2021-05-22-b102f19b.orig/src/ap/x_snoop.c
++++ hostapd-2021-05-22-b102f19b/src/ap/x_snoop.c
+@@ -31,14 +31,16 @@ int x_snoop_init(struct hostapd_data *ha
+ return -1;
+ }
+
+- if (hostapd_drv_br_port_set_attr(hapd, DRV_BR_PORT_ATTR_HAIRPIN_MODE,
++ if (!conf->snoop_iface[0] &&
++ hostapd_drv_br_port_set_attr(hapd, DRV_BR_PORT_ATTR_HAIRPIN_MODE,
+ 1)) {
+ wpa_printf(MSG_DEBUG,
+ "x_snoop: Failed to enable hairpin_mode on the bridge port");
+ return -1;
+ }
+
+- if (hostapd_drv_br_port_set_attr(hapd, DRV_BR_PORT_ATTR_PROXYARP, 1)) {
++ if (!conf->snoop_iface[0] &&
++ hostapd_drv_br_port_set_attr(hapd, DRV_BR_PORT_ATTR_PROXYARP, 1)) {
+ wpa_printf(MSG_DEBUG,
+ "x_snoop: Failed to enable proxyarp on the bridge port");
+ return -1;
+@@ -52,7 +54,8 @@ int x_snoop_init(struct hostapd_data *ha
+ }
+
+ #ifdef CONFIG_IPV6
+- if (hostapd_drv_br_set_net_param(hapd, DRV_BR_MULTICAST_SNOOPING, 1)) {
++ if (!conf->snoop_iface[0] &&
++ hostapd_drv_br_set_net_param(hapd, DRV_BR_MULTICAST_SNOOPING, 1)) {
+ wpa_printf(MSG_DEBUG,
+ "x_snoop: Failed to enable multicast snooping on the bridge");
+ return -1;
+@@ -71,8 +74,12 @@ x_snoop_get_l2_packet(struct hostapd_dat
+ {
+ struct hostapd_bss_config *conf = hapd->conf;
+ struct l2_packet_data *l2;
@@ -5347,12 +5461,14 @@ index 0000000000..722d1e713a
+ if (l2 == NULL) {
+ wpa_printf(MSG_DEBUG,
+ "x_snoop: Failed to initialize L2 packet processing %s",
+--- a/hostapd/config_file.c
++++ b/hostapd/config_file.c
+@@ -2357,6 +2357,8 @@ static int hostapd_config_fill(struct ho
+ sizeof(conf->bss[0]->iface));
+ } else if (os_strcmp(buf, "bridge") == 0) {
+Index: hostapd-2021-05-22-b102f19b/hostapd/config_file.c
+===================================================================
+--- hostapd-2021-05-22-b102f19b.orig/hostapd/config_file.c
++++ hostapd-2021-05-22-b102f19b/hostapd/config_file.c
+@@ -2359,6 +2359,8 @@ static int hostapd_config_fill(struct ho
+ os_strlcpy(bss->bridge, pos, sizeof(bss->bridge));
+ if (!bss->wds_bridge[0])
+ os_strlcpy(bss->wds_bridge, pos, sizeof(bss->wds_bridge));
++ } else if (os_strcmp(buf, "snoop_iface") == 0) {
++ os_strlcpy(bss->snoop_iface, pos, sizeof(bss->snoop_iface));
+ } else if (os_strcmp(buf, "vlan_bridge") == 0) {
@@ -5441,7 +5557,7 @@ index 944f7d71c9..0000000000
- dev->info.wps_sec_dev_type_list_len);
- }
diff --git a/package/network/services/hostapd/src/src/ap/ubus.c b/package/network/services/hostapd/src/src/ap/ubus.c
index d03b848f94..07c366508c 100644
index d03b848f94..09b25a29e5 100644
--- a/package/network/services/hostapd/src/src/ap/ubus.c
+++ b/package/network/services/hostapd/src/src/ap/ubus.c
@@ -21,6 +21,7 @@
@@ -5733,7 +5849,7 @@ index d03b848f94..07c366508c 100644
static const struct ubus_method daemon_methods[] = {
UBUS_METHOD("config_add", hostapd_config_add, config_add_policy),
UBUS_METHOD("config_remove", hostapd_config_remove, config_remove_policy),
@@ -1550,3 +1734,24 @@ void hostapd_ubus_notify_beacon_report(
@@ -1550,3 +1734,21 @@ void hostapd_ubus_notify_beacon_report(
ubus_notify(ctx, &hapd->ubus.obj, "beacon-report", b.head, -1);
}
@@ -5744,9 +5860,6 @@ index d03b848f94..07c366508c 100644
+ struct hostapd_data *hapd;
+ int i;
+
+ if (!hapd->ubus.obj.has_subscribers)
+ return;
+
+ blob_buf_init(&b, 0);
+ blobmsg_add_u16(&b, "frequency", frequency);
+ blobmsg_add_u16(&b, "width", chan_width);

View File

@@ -0,0 +1,170 @@
From aab305d662fa77ef4495574c096cb1e065c1908a Mon Sep 17 00:00:00 2001
From: John Crispin <john@phrozen.org>
Date: Sun, 25 Jul 2021 13:32:37 +0200
Subject: [PATCH 20/27] procd: add uxc support
Signed-off-by: John Crispin <john@phrozen.org>
---
package/system/procd/Makefile | 12 ++---
package/system/procd/files/procd.sh | 79 +++++++++++++++++++++++++++++
package/system/procd/files/uxc.init | 4 ++
3 files changed, 89 insertions(+), 6 deletions(-)
diff --git a/package/system/procd/Makefile b/package/system/procd/Makefile
index 30d5adf427..98f1ed1775 100644
--- a/package/system/procd/Makefile
+++ b/package/system/procd/Makefile
@@ -12,9 +12,9 @@ PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/procd.git
-PKG_SOURCE_DATE:=2021-02-23
-PKG_SOURCE_VERSION:=37eed131e9967a35f47bacb3437a9d3c8a57b3f4
-PKG_MIRROR_HASH:=2b0131ff9055ccf987cbeb5f36c2c2585dc780999df6be312fbbbcd61ce676d4
+PKG_SOURCE_DATE:=2021-08-15
+PKG_SOURCE_VERSION:=104b49d6ab25a8cf067e6d8d1f2da7defb9876d4
+PKG_MIRROR_HASH:=d13b566a14e84f6babe8b7d3dfb88e34c3dff0e97d7770d6fe71174685bca628
CMAKE_INSTALL:=1
PKG_LICENSE:=GPL-2.0
@@ -32,7 +32,7 @@ include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk
ifeq ($(DUMP),)
- STAMP_CONFIGURED:=$(strip $(STAMP_CONFIGURED))_$(shell echo $(CONFIG_TARGET_INIT_PATH) | mkhash md5)
+ STAMP_CONFIGURED:=$(strip $(STAMP_CONFIGURED))_$(shell echo $(CONFIG_TARGET_INIT_PATH) | $(MKHASH) md5)
endif
CMAKE_OPTIONS += -DEARLY_PATH="$(TARGET_INIT_PATH)"
@@ -82,7 +82,7 @@ endef
define Package/procd-seccomp
SECTION:=base
CATEGORY:=Base system
- DEPENDS:=@(arm||armeb||mips||mipsel||i386||powerpc||x86_64) @!TARGET_uml \
+ DEPENDS:=@(aarch64||arm||armeb||mips||mipsel||i386||powerpc||x86_64) @!TARGET_uml \
@KERNEL_SECCOMP +libubox +libblobmsg-json
TITLE:=OpenWrt process seccomp helper + utrace
endef
@@ -90,7 +90,7 @@ endef
define Package/uxc
SECTION:=base
CATEGORY:=Base system
- DEPENDS:=+procd-ujail +libubus +libubox +libblobmsg-json
+ DEPENDS:=+procd-ujail +libubus +libubox +libblobmsg-json +blockd +rpcd
TITLE:=OpenWrt container management
MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
endef
diff --git a/package/system/procd/files/procd.sh b/package/system/procd/files/procd.sh
index d86b7219da..3549a5a914 100644
--- a/package/system/procd/files/procd.sh
+++ b/package/system/procd/files/procd.sh
@@ -329,6 +329,82 @@ _procd_add_config_trigger() {
json_close_array
}
+_procd_add_mount_trigger() {
+ json_add_array
+ _procd_add_array_data "$1"
+ local action="$2"
+ local multi=0
+ shift ; shift
+
+ json_add_array
+ _procd_add_array_data "if"
+
+ if [ "$2" ]; then
+ json_add_array
+ _procd_add_array_data "or"
+ multi=1
+ fi
+
+ while [ "$1" ]; do
+ json_add_array
+ _procd_add_array_data "eq" "target" "$1"
+ shift
+ json_close_array
+ done
+
+ [ $multi = 1 ] && json_close_array
+
+ json_add_array
+ _procd_add_array_data "run_script" /etc/init.d/$name $action
+ json_close_array
+
+ json_close_array
+ _procd_add_timeout
+ json_close_array
+}
+
+_procd_add_action_mount_trigger() {
+ local script=$(readlink "$initscript")
+ local name=$(basename ${script:-$initscript})
+ local action="$1"
+ local mpath
+ shift
+
+ _procd_open_trigger
+ _procd_add_mount_trigger mount.add $action "$@"
+ _procd_close_trigger
+}
+
+procd_get_mountpoints() {
+ (
+ __procd_check_mount() {
+ local cfg="$1"
+ local path="${2%%/}/"
+ local target
+ config_get target "$cfg" target
+ target="${target%%/}/"
+ [ "$path" != "${path##$target}" ] && echo "${target%%/}"
+ }
+
+ config_load fstab
+ for mpath in "$@"; do
+ config_foreach __procd_check_mount mount "$mpath"
+ done
+ ) | sort -u
+}
+
+_procd_add_restart_mount_trigger() {
+ local mountpoints="$(procd_get_mountpoints "$@")"
+ [ "${mountpoints//[[:space:]]}" ] &&
+ _procd_add_action_mount_trigger restart $mountpoints
+}
+
+_procd_add_reload_mount_trigger() {
+ local mountpoints="$(procd_get_mountpoints "$@")"
+ [ "${mountpoints//[[:space:]]}" ] &&
+ _procd_add_action_mount_trigger reload $mountpoints
+}
+
_procd_add_raw_trigger() {
json_add_array
_procd_add_array_data "$1"
@@ -560,8 +636,11 @@ _procd_wrapper \
procd_add_raw_trigger \
procd_add_config_trigger \
procd_add_interface_trigger \
+ procd_add_mount_trigger \
procd_add_reload_trigger \
procd_add_reload_interface_trigger \
+ procd_add_reload_mount_trigger \
+ procd_add_restart_mount_trigger \
procd_open_trigger \
procd_close_trigger \
procd_open_instance \
diff --git a/package/system/procd/files/uxc.init b/package/system/procd/files/uxc.init
index 035c8b0b9e..1e75b796f8 100644
--- a/package/system/procd/files/uxc.init
+++ b/package/system/procd/files/uxc.init
@@ -16,3 +16,7 @@ boot() {
__BOOT_UXC=1
start
}
+
+service_triggers() {
+ procd_add_raw_trigger "mount.add" 3000 /etc/init.d/uxc boot
+}
--
2.25.1

View File

@@ -0,0 +1,174 @@
From 23c15e2536d0fa5ed81c5bdfe7623d3370dca997 Mon Sep 17 00:00:00 2001
From: Paul Spooren <mail@aparcar.org>
Date: Fri, 2 Oct 2020 23:30:30 -1000
Subject: [PATCH 21/27] build: create APK files parrallel to IPK
Create APK files based on the folder and control files of IPK packages.
Signed-off-by: Paul Spooren <mail@aparcar.org>
---
include/package-ipkg.mk | 48 +++++++++++++++++++++++++------------
package/Makefile | 2 ++
package/base-files/Makefile | 4 ++++
rules.mk | 2 ++
scripts/apk-make-index.sh | 20 ++++++++++++++++
5 files changed, 61 insertions(+), 15 deletions(-)
create mode 100755 scripts/apk-make-index.sh
diff --git a/include/package-ipkg.mk b/include/package-ipkg.mk
index e972b7de0b..5c31b1774f 100644
--- a/include/package-ipkg.mk
+++ b/include/package-ipkg.mk
@@ -102,6 +102,7 @@ ifeq ($(DUMP),)
ABIV_$(1):=$(call FormatABISuffix,$(1),$(ABI_VERSION))
PDIR_$(1):=$(call FeedPackageDir,$(1))
IPKG_$(1):=$$(PDIR_$(1))/$(1)$$(ABIV_$(1))_$(VERSION)_$(PKGARCH).ipk
+ APK_$(1):=$$(PDIR_$(1))/$(1)$$(ABIV_$(1))_$(VERSION)_$(PKGARCH).apk
IDIR_$(1):=$(PKG_BUILD_DIR)/ipkg-$(PKGARCH)/$(1)
KEEP_$(1):=$(strip $(call Package/$(1)/conffiles))
@@ -200,7 +201,7 @@ $(_endef)
$(PKG_INFO_DIR)/$(1).provides $$(IPKG_$(1)): $(STAMP_BUILT) $(INCLUDE_DIR)/package-ipkg.mk
@rm -rf $$(IDIR_$(1)); \
$$(call remove_ipkg_files,$(1),$$(call opkg_package_files,$(call gen_ipkg_wildcard,$(1))))
- mkdir -p $(PACKAGE_DIR) $$(IDIR_$(1))/CONTROL $(PKG_INFO_DIR)
+ mkdir -p $(PACKAGE_DIR) $$(IDIR_$(1)) $(PKG_INFO_DIR)
$(call Package/$(1)/install,$$(IDIR_$(1)))
$(if $(Package/$(1)/install-overlay),mkdir -p $(PACKAGE_DIR) $$(IDIR_$(1))/rootfs-overlay)
$(call Package/$(1)/install-overlay,$$(IDIR_$(1))/rootfs-overlay)
@@ -226,6 +227,37 @@ $(_endef)
) || true \
)
endif
+
+ ifneq ($$(KEEP_$(1)),)
+ @( \
+ keepfiles=""; \
+ for x in $$(KEEP_$(1)); do \
+ [ -f "$$(IDIR_$(1))/$$$$x" ] || keepfiles="$$$${keepfiles:+$$$$keepfiles }$$$$x"; \
+ done; \
+ [ -z "$$$$keepfiles" ] || { \
+ mkdir -p $$(IDIR_$(1))/lib/upgrade/keep.d; \
+ for x in $$$$keepfiles; do echo $$$$x >> $$(IDIR_$(1))/lib/upgrade/keep.d/$(1); done; \
+ }; \
+ )
+ endif
+
+ $(INSTALL_DIR) $$(PDIR_$(1))
+
+ $(FAKEROOT) apk mkpkg \
+ --info "name:$(1)" \
+ --info "version:$(VERSION)" \
+ --info "description:$()" \
+ --info "arch:$(PKGARCH)" \
+ --info "license:$(LICENSE)" \
+ --info "origin:$(SOURCE)" \
+ --info "maintainer:$(MAINTAINER)" \
+ $$(foreach dep,$$(Package/$(1)/DEPENDS),--info "depends:$$(subst $$(comma),,$$(dep))") \
+ --files "$$(IDIR_$(1))" \
+ --output "$$(APK_$(1))" \
+ --sign "$(BUILD_KEY_APK_SEC)"
+
+ mkdir -p $$(IDIR_$(1))/CONTROL
+
(cd $$(IDIR_$(1))/CONTROL; \
( \
echo "$$$$CONTROL"; \
@@ -249,20 +281,6 @@ $(_endef)
$($(1)_COMMANDS) \
)
- ifneq ($$(KEEP_$(1)),)
- @( \
- keepfiles=""; \
- for x in $$(KEEP_$(1)); do \
- [ -f "$$(IDIR_$(1))/$$$$x" ] || keepfiles="$$$${keepfiles:+$$$$keepfiles }$$$$x"; \
- done; \
- [ -z "$$$$keepfiles" ] || { \
- mkdir -p $$(IDIR_$(1))/lib/upgrade/keep.d; \
- for x in $$$$keepfiles; do echo $$$$x >> $$(IDIR_$(1))/lib/upgrade/keep.d/$(1); done; \
- }; \
- )
- endif
-
- $(INSTALL_DIR) $$(PDIR_$(1))
$(FAKEROOT) $(SCRIPT_DIR)/ipkg-build -m "$(FILE_MODES)" $$(IDIR_$(1)) $$(PDIR_$(1))
@[ -f $$(IPKG_$(1)) ]
diff --git a/package/Makefile b/package/Makefile
index ec503dc527..18a19fff13 100644
--- a/package/Makefile
+++ b/package/Makefile
@@ -60,6 +60,7 @@ $(curdir)/merge-index: $(curdir)/merge
ifndef SDK
$(curdir)/compile: $(curdir)/system/opkg/host/compile
+ $(patsubst %,$(curdir)/%/compile,$(filter-out %/apk/host,$($(curdir)/builddirs))): $(curdir)/system/apk/host/compile
endif
$(curdir)/install: $(TMP_DIR)/.build $(curdir)/merge $(if $(CONFIG_TARGET_PER_DEVICE_ROOTFS),$(curdir)/merge-index)
@@ -84,6 +85,7 @@ $(curdir)/index: FORCE
@for d in $(PACKAGE_SUBDIRS); do ( \
mkdir -p $$d; \
cd $$d || continue; \
+ $(SCRIPT_DIR)/apk-make-index.sh . 2>&1; \
$(SCRIPT_DIR)/ipkg-make-index.sh . 2>&1 > Packages.manifest; \
grep -vE '^(Maintainer|LicenseFiles|Source|SourceName|Require|SourceDateEpoch)' Packages.manifest > Packages; \
case "$$(((64 + $$(stat -L -c%s Packages)) % 128))" in 110|111) \
diff --git a/package/base-files/Makefile b/package/base-files/Makefile
index 8a1ddf96f5..9db4812981 100644
--- a/package/base-files/Makefile
+++ b/package/base-files/Makefile
@@ -107,6 +107,10 @@ ifdef CONFIG_SIGNED_PACKAGES
[ -s $(BUILD_KEY).ucert ] || \
$(STAGING_DIR_HOST)/bin/ucert -I -c $(BUILD_KEY).ucert -p $(BUILD_KEY).pub -s $(BUILD_KEY)
+ [ -s $(BUILD_KEY_APK_SEC) -a -s $(BUILD_KEY_APK_PUB) ] || \
+ openssl ecparam -name prime256v1 -genkey -noout -out $(BUILD_KEY_APK_SEC); \
+ openssl ec -in $(BUILD_KEY_APK_SEC) -pubout > $(BUILD_KEY_APK_PUB)
+
endef
ifndef CONFIG_BUILDBOT
diff --git a/rules.mk b/rules.mk
index f31d9bb113..de81b65d46 100644
--- a/rules.mk
+++ b/rules.mk
@@ -258,6 +258,8 @@ else
endif
BUILD_KEY=$(TOPDIR)/key-build
+BUILD_KEY_APK_SEC=$(TOPDIR)/private-key.pem
+BUILD_KEY_APK_PUB=$(TOPDIR)/public-key.pem
FAKEROOT:=$(STAGING_DIR_HOST)/bin/fakeroot
diff --git a/scripts/apk-make-index.sh b/scripts/apk-make-index.sh
new file mode 100755
index 0000000000..df1f1a2e2b
--- /dev/null
+++ b/scripts/apk-make-index.sh
@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+set -e
+
+pkg_dir=$1
+
+if [ -z "$pkg_dir" ] || [ ! -d "$pkg_dir" ]; then
+ echo "Usage: apk-make-index <package_directory>" >&2
+ exit 1
+fi
+
+(
+ cd "$pkg_dir" || exit 1
+ GLOBIGNORE="kernel*:libc*"
+ set -- *.apk
+ if [ "$1" = '*.apk' ]; then
+ echo "No APK packages found"
+ fi
+ apk index --output APKINDEX.tar.gz "$@"
+ unset GLOBIGNORE
+)
--
2.25.1

View File

@@ -0,0 +1,69 @@
From 8e8b3e443a7f1d0644f43888c8683698f26d4d13 Mon Sep 17 00:00:00 2001
From: Daniel Golle <daniel@makrotopia.org>
Date: Sun, 25 Jul 2021 01:20:31 +0100
Subject: [PATCH 22/27] fstools: update to git HEAD
bad1835 fstools: add partname volume driver
19d7d93 libfstools: partname: several fixes
3c38f0c libfstools: fix build with glibc
d05ad93 libfstools: remove superflus include
964d1e3 partname: allow skipping existing 'rootfs_data' partition
c44b40b overlay: fix syncronizing typo
b5397a1 fstools: block: fix segfault on mount with no target
bd7cc8d block: use dynamically allocated target string
6d8450e blockd: use allocated strings instead of fixed buffers
d47909e libblkid-tiny: fix buffer overflow
67d2297 block: match device path instead of assuming /dev/%s
2aeba88 block: allow autofs and umount commands also on MTD/UBI
3d40a1b blockd: add missing #define _GNU_SOURCE
4d4dcfb blockd: detect mountpoint of /dev/mapper/*
2f42515 block: resolve /dev/mapper/* name for /dev/dm-0 when hotplugging
39558a1 blockd: also send ubus notification on mount hotplug
3386b6b blockd: fix trigger name
cdc9939 blockd: move to its own POSIX process group
59f7c11 blockd: create mountpoint parent folder if needed
9cc96af Revert "block: resolve /dev/mapper/* name for /dev/dm-0 when hotplugging"
06334ac Revert "blockd: detect mountpoint of /dev/mapper/*"
9ab3551 block: use /dev/dm-* instead of /dev/mapper/*
5114595 block: allow remove hotplug event to arrive at blockd
a846c6b blockd: fix length of timeout int passed to ioctl
1d681ca block: support umount device basename
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
---
package/system/fstools/Makefile | 6 +++---
package/system/fstools/files/blockd.init | 1 +
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/package/system/fstools/Makefile b/package/system/fstools/Makefile
index 2da508d541..b582a17bae 100644
--- a/package/system/fstools/Makefile
+++ b/package/system/fstools/Makefile
@@ -12,9 +12,9 @@ PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/fstools.git
-PKG_MIRROR_HASH:=a485792d90c71cd4fb396ce97f42a57ee4d2a3d78e5f3fd0748270ffb14209e6
-PKG_SOURCE_DATE:=2021-01-04
-PKG_SOURCE_VERSION:=c53b18820756f6f32ad0782d3bf489422b7c4ad3
+PKG_MIRROR_HASH:=6a457b812166e04e2244ee1be92a4957666b5d1554315c0e18db1b30376cc617
+PKG_SOURCE_DATE:=2021-07-28
+PKG_SOURCE_VERSION:=cc63933faedd8d4fcdabb872cf4661ac04fe4ba2
CMAKE_INSTALL:=1
PKG_LICENSE:=GPL-2.0
diff --git a/package/system/fstools/files/blockd.init b/package/system/fstools/files/blockd.init
index a4ce57d40d..bdd8bbf622 100755
--- a/package/system/fstools/files/blockd.init
+++ b/package/system/fstools/files/blockd.init
@@ -16,6 +16,7 @@ reload_service() {
start_service() {
procd_open_instance
procd_set_param command "$PROG"
+ procd_set_param watch block
procd_set_param respawn
procd_close_instance
}
--
2.25.1

View File

@@ -0,0 +1,40 @@
From 873052b99d6597209957ec32898fa56324cf34a4 Mon Sep 17 00:00:00 2001
From: Rosen Penev <rosenp@gmail.com>
Date: Sat, 19 Jun 2021 14:45:11 -0700
Subject: [PATCH 23/27] tools/libressl: update to 3.3.3
Fix wrong FPIC variable usage. Fixes compilation under sparc64 host.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
(cherry picked from commit bf4dbbb55e2b8e23f186e1334f1e9ce6a3a8ddfe)
---
tools/libressl/Makefile | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/tools/libressl/Makefile b/tools/libressl/Makefile
index 2b5a33450c..e25b5661ee 100644
--- a/tools/libressl/Makefile
+++ b/tools/libressl/Makefile
@@ -8,8 +8,8 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=libressl
-PKG_VERSION:=3.3.1
-PKG_HASH:=a6d331865e0164a13ac85a228e52517f7cf8f8488f2f95f34e7857302f97cfdb
+PKG_VERSION:=3.3.3
+PKG_HASH:=a471565b36ccd1a70d0bd7d37c6e95c43a26a62829b487d9d2cdebfe58be3066
PKG_RELEASE:=1
PKG_CPE_ID:=cpe:/a:openbsd:libressl
@@ -25,7 +25,7 @@ include $(INCLUDE_DIR)/host-build.mk
HOSTCC := $(HOSTCC_NOCACHE)
HOST_CONFIGURE_ARGS += --enable-static --disable-shared --disable-tests
-HOST_CFLAGS += $(FPIC)
+HOST_CFLAGS += $(HOST_FPIC)
ifeq ($(GNU_HOST_NAME),x86_64-linux-gnux32)
HOST_CONFIGURE_ARGS += --disable-asm
--
2.25.1

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,312 @@
From bf98d3c1de524ca50cbc09f825a4b0648e353624 Mon Sep 17 00:00:00 2001
From: John Crispin <john@phrozen.org>
Date: Fri, 13 Aug 2021 08:47:11 +0200
Subject: [PATCH 25/27] apk: backport package
Signed-off-by: John Crispin <john@phrozen.org>
---
package/system/apk/Makefile | 93 +++++++++++++++++++
...vel@lists.alpinelinux.org-4a6a0840.rsa.pub | 9 ++
...vel@lists.alpinelinux.org-5243ef4b.rsa.pub | 9 ++
...vel@lists.alpinelinux.org-5261cecb.rsa.pub | 9 ++
package/system/apk/files/alpine-repositories | 3 +
.../apk/patches/000-Makefile-version.patch | 11 +++
.../patches/0001-remove-doc-generation.patch | 21 +++++
package/system/apk/patches/100-link.patch | 16 ++++
package/system/apk/patches/100-phtread.patch | 12 +++
...ude-limits.h-to-fix-build-with-glibc.patch | 20 ++++
package/system/apk/test.sh | 9 ++
11 files changed, 212 insertions(+)
create mode 100644 package/system/apk/Makefile
create mode 100644 package/system/apk/files/alpine-keys/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub
create mode 100644 package/system/apk/files/alpine-keys/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub
create mode 100644 package/system/apk/files/alpine-keys/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub
create mode 100644 package/system/apk/files/alpine-repositories
create mode 100644 package/system/apk/patches/000-Makefile-version.patch
create mode 100644 package/system/apk/patches/0001-remove-doc-generation.patch
create mode 100644 package/system/apk/patches/100-link.patch
create mode 100644 package/system/apk/patches/100-phtread.patch
create mode 100644 package/system/apk/patches/100-tar-include-limits.h-to-fix-build-with-glibc.patch
create mode 100644 package/system/apk/test.sh
diff --git a/package/system/apk/Makefile b/package/system/apk/Makefile
new file mode 100644
index 0000000000..335f50c155
--- /dev/null
+++ b/package/system/apk/Makefile
@@ -0,0 +1,93 @@
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=apk
+PKG_VERSION:=3.0.0_pre0
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://git.alpinelinux.org/apk-tools.git
+PKG_SOURCE_DATE:=2021-08-17
+PKG_SOURCE_VERSION:=a46043bcc4cc15b456ef1eac5c5f9d93bd905d53
+PKG_MIRROR_HASH:=e16fd04b18043e78a177acd8c6958fa03fd1484b62c879c2dd0bed8ce9c50625
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_SOURCE_DATE)-$(call version_abbrev,$(PKG_SOURCE_VERSION))
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
+HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/$(PKG_SOURCE_SUBDIR)
+PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.xz
+PKG_RELEASE:=r$(PKG_SOURCE_DATE)-$(call version_abbrev,$(PKG_SOURCE_VERSION))-$(AUTORELEASE)
+
+PKG_MAINTAINER:=Paul Spooren <mail@aparcar.org>
+PKG_LICENSE:=GPL-2.0-only
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
+
+HOST_BUILD_DEPENDS:=lua/host lua-lzlib/host
+PKG_BUILD_DEPENDS:=$(HOST_BUILD_DEPENDS)
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/host-build.mk
+
+define Package/apk
+ SECTION:=utils
+ CATEGORY:=Utilities
+ TITLE:=apk package manager
+ DEPENDS:=+liblua +libopenssl +zlib @!arc
+ URL:=$(PKG_SOURCE_URL)
+endef
+
+define Package/alpine-keys
+ SECTION:=utils
+ CATEGORY:=Utilities
+ TITLE:=Alpine apk public signing keys
+ DEPENDS:=apk
+endef
+
+define Package/alpine-repositories
+ SECTION:=utils
+ CATEGORY:=Utilities
+ TITLE:=Official Alpine repositories
+ DEPENDS:=apk
+endef
+
+MAKE_FLAGS += \
+ LUA=$(STAGING_DIR_HOSTPKG)/bin/lua \
+ LUA_VERSION=5.1 \
+ LUA_PC=lua
+
+HOST_MAKE_FLAGS += \
+ LUA=$(STAGING_DIR_HOSTPKG)/bin/lua \
+ LUA_VERSION=5.1 \
+ DESTDIR=$(STAGING_DIR_HOSTPKG) \
+ SBINDIR=/bin \
+ PREFIX=
+
+HOST_LDFLAGS+=-Wl,-rpath=$(STAGING_DIR_HOSTPKG)/lib -lpthread
+
+define Package/apk/install
+ $(INSTALL_DIR) $(1)/lib/apk/db
+
+ $(INSTALL_DIR) $(1)/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/sbin/apk $(1)/bin/apk
+
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/lib/*.so.* $(1)/usr/lib/
+
+ $(INSTALL_DIR) $(1)/etc/apk/
+ echo $(ARCH) > $(1)/etc/apk/arch
+ touch $(1)/etc/apk/world
+endef
+
+define Package/alpine-keys/install
+ $(INSTALL_DIR) $(1)/etc/apk/keys
+ $(INSTALL_DATA) ./files/alpine-keys/* $(1)/etc/apk/keys
+endef
+
+define Package/alpine-repositories/install
+ $(INSTALL_DIR) $(1)/etc/apk/keys
+ $(INSTALL_DATA) ./files/alpine-repositories $(1)/etc/apk/repositories
+endef
+
+$(eval $(call BuildPackage,apk))
+$(eval $(call BuildPackage,alpine-keys))
+$(eval $(call BuildPackage,alpine-repositories))
+$(eval $(call HostBuild))
diff --git a/package/system/apk/files/alpine-keys/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub b/package/system/apk/files/alpine-keys/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub
new file mode 100644
index 0000000000..bb4bdc80fd
--- /dev/null
+++ b/package/system/apk/files/alpine-keys/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub
@@ -0,0 +1,9 @@
+-----BEGIN PUBLIC KEY-----
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1yHJxQgsHQREclQu4Ohe
+qxTxd1tHcNnvnQTu/UrTky8wWvgXT+jpveroeWWnzmsYlDI93eLI2ORakxb3gA2O
+Q0Ry4ws8vhaxLQGC74uQR5+/yYrLuTKydFzuPaS1dK19qJPXB8GMdmFOijnXX4SA
+jixuHLe1WW7kZVtjL7nufvpXkWBGjsfrvskdNA/5MfxAeBbqPgaq0QMEfxMAn6/R
+L5kNepi/Vr4S39Xvf2DzWkTLEK8pcnjNkt9/aafhWqFVW7m3HCAII6h/qlQNQKSo
+GuH34Q8GsFG30izUENV9avY7hSLq7nggsvknlNBZtFUcmGoQrtx3FmyYsIC8/R+B
+ywIDAQAB
+-----END PUBLIC KEY-----
diff --git a/package/system/apk/files/alpine-keys/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub b/package/system/apk/files/alpine-keys/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub
new file mode 100644
index 0000000000..6cbfad7441
--- /dev/null
+++ b/package/system/apk/files/alpine-keys/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub
@@ -0,0 +1,9 @@
+-----BEGIN PUBLIC KEY-----
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvNijDxJ8kloskKQpJdx+
+mTMVFFUGDoDCbulnhZMJoKNkSuZOzBoFC94omYPtxnIcBdWBGnrm6ncbKRlR+6oy
+DO0W7c44uHKCFGFqBhDasdI4RCYP+fcIX/lyMh6MLbOxqS22TwSLhCVjTyJeeH7K
+aA7vqk+QSsF4TGbYzQDDpg7+6aAcNzg6InNePaywA6hbT0JXbxnDWsB+2/LLSF2G
+mnhJlJrWB1WGjkz23ONIWk85W4S0XB/ewDefd4Ly/zyIciastA7Zqnh7p3Ody6Q0
+sS2MJzo7p3os1smGjUF158s6m/JbVh4DN6YIsxwl2OjDOz9R0OycfJSDaBVIGZzg
+cQIDAQAB
+-----END PUBLIC KEY-----
diff --git a/package/system/apk/files/alpine-keys/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub b/package/system/apk/files/alpine-keys/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub
new file mode 100644
index 0000000000..83f0658e9c
--- /dev/null
+++ b/package/system/apk/files/alpine-keys/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub
@@ -0,0 +1,9 @@
+-----BEGIN PUBLIC KEY-----
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwlzMkl7b5PBdfMzGdCT0
+cGloRr5xGgVmsdq5EtJvFkFAiN8Ac9MCFy/vAFmS8/7ZaGOXoCDWbYVLTLOO2qtX
+yHRl+7fJVh2N6qrDDFPmdgCi8NaE+3rITWXGrrQ1spJ0B6HIzTDNEjRKnD4xyg4j
+g01FMcJTU6E+V2JBY45CKN9dWr1JDM/nei/Pf0byBJlMp/mSSfjodykmz4Oe13xB
+Ca1WTwgFykKYthoLGYrmo+LKIGpMoeEbY1kuUe04UiDe47l6Oggwnl+8XD1MeRWY
+sWgj8sF4dTcSfCMavK4zHRFFQbGp/YFJ/Ww6U9lA3Vq0wyEI6MCMQnoSMFwrbgZw
+wwIDAQAB
+-----END PUBLIC KEY-----
diff --git a/package/system/apk/files/alpine-repositories b/package/system/apk/files/alpine-repositories
new file mode 100644
index 0000000000..5babbb23b4
--- /dev/null
+++ b/package/system/apk/files/alpine-repositories
@@ -0,0 +1,3 @@
+https://dl-cdn.alpinelinux.org/alpine/edge/main
+https://dl-cdn.alpinelinux.org/alpine/edge/community
+
diff --git a/package/system/apk/patches/000-Makefile-version.patch b/package/system/apk/patches/000-Makefile-version.patch
new file mode 100644
index 0000000000..2e7f5b0f15
--- /dev/null
+++ b/package/system/apk/patches/000-Makefile-version.patch
@@ -0,0 +1,11 @@
+--- a/Makefile
++++ b/Makefile
+@@ -4,7 +4,7 @@
+ -include config.mk
+
+ PACKAGE := apk-tools
+-VERSION := 2.12.0
++VERSION := 3.0.0_pre0
+
+ export VERSION
+
diff --git a/package/system/apk/patches/0001-remove-doc-generation.patch b/package/system/apk/patches/0001-remove-doc-generation.patch
new file mode 100644
index 0000000000..dee05c56f2
--- /dev/null
+++ b/package/system/apk/patches/0001-remove-doc-generation.patch
@@ -0,0 +1,21 @@
+From b05a93c48fdbb50f0c464310dc2ce45777d32ea2 Mon Sep 17 00:00:00 2001
+From: Paul Spooren <mail@aparcar.org>
+Date: Fri, 2 Oct 2020 14:08:52 -1000
+Subject: [PATCH] remove doc generation
+
+Signed-off-by: Paul Spooren <mail@aparcar.org>
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/Makefile
++++ b/Makefile
+@@ -25,7 +25,7 @@ export DESTDIR SBINDIR LIBDIR CONFDIR MA
+ ##
+ # Top-level subdirs
+
+-subdirs := libfetch/ src/ doc/
++subdirs := libfetch/ src/
+
+ ##
+ # Include all rules and stuff
diff --git a/package/system/apk/patches/100-link.patch b/package/system/apk/patches/100-link.patch
new file mode 100644
index 0000000000..9cae2787d9
--- /dev/null
+++ b/package/system/apk/patches/100-link.patch
@@ -0,0 +1,16 @@
+diff -urN apk-2021-08-17-a46043bc.orig/src/Makefile apk-2021-08-17-a46043bc/src/Makefile
+--- apk-2021-08-17-a46043bc.orig/src/Makefile 2021-08-17 14:21:04.117760513 +0200
++++ apk-2021-08-17-a46043bc/src/Makefile 2021-08-17 14:21:16.653830180 +0200
+@@ -65,7 +65,11 @@
+ app_convdb.o app_convndx.o app_del.o app_dot.o app_extract.o app_fetch.o \
+ app_fix.o app_index.o app_info.o app_list.o app_manifest.o app_mkndx.o \
+ app_mkpkg.o app_policy.o app_update.o app_upgrade.o app_search.o \
+- app_stats.o app_verify.o app_version.o app_vertest.o applet.o
++ app_stats.o app_verify.o app_version.o app_vertest.o applet.o \
++ adb.o adb_comp.o adb_walk_adb.o adb_walk_genadb.o adb_walk_gentext.o adb_walk_text.o apk_adb.o \
++ atom.o blob.o commit.o common.o context.o crypto_openssl.o database.o hash.o \
++ extract.o extract_v2.o extract_v3.o io.o io_gunzip.o io_url.o tar.o \
++ package.o pathbuilder.o print.o solver.o trust.o version.o
+
+ ifeq ($(ADB),y)
+ libapk.so.$(libapk_soname)-objs += apk_adb.o
diff --git a/package/system/apk/patches/100-phtread.patch b/package/system/apk/patches/100-phtread.patch
new file mode 100644
index 0000000000..c252e14dc1
--- /dev/null
+++ b/package/system/apk/patches/100-phtread.patch
@@ -0,0 +1,12 @@
+diff -urN apk-2021-07-23-3d203e8f.orig/src/Makefile apk-2021-07-23-3d203e8f/src/Makefile
+--- apk-2021-07-23-3d203e8f.orig/src/Makefile 2021-07-25 12:55:05.576564663 +0200
++++ apk-2021-07-23-3d203e8f/src/Makefile 2021-07-25 12:55:48.660862181 +0200
+@@ -87,7 +87,7 @@
+ apk.static-libs := $(apk-static-libs)
+ LDFLAGS_apk.static := -static
+ LIBS_apk.static := -Wl,--as-needed -ldl -Wl,--no-as-needed
+-LDFLAGS_apk += -L$(obj)
++LDFLAGS_apk += -L$(obj) -pthread
+ LDFLAGS_apk-test += -L$(obj)
+
+ CFLAGS_ALL += $(OPENSSL_CFLAGS) $(ZLIB_CFLAGS)
diff --git a/package/system/apk/patches/100-tar-include-limits.h-to-fix-build-with-glibc.patch b/package/system/apk/patches/100-tar-include-limits.h-to-fix-build-with-glibc.patch
new file mode 100644
index 0000000000..43ec7d5f1a
--- /dev/null
+++ b/package/system/apk/patches/100-tar-include-limits.h-to-fix-build-with-glibc.patch
@@ -0,0 +1,20 @@
+From c72ea983e287ec1d8b1f2b3aab1bf40aa7a30b03 Mon Sep 17 00:00:00 2001
+From: Daniel Golle <daniel@makrotopia.org>
+Date: Wed, 4 Aug 2021 21:37:40 +0100
+Subject: [PATCH] tar: include <limits.h> to fix build with glibc
+
+Signed-off-by: Daniel Golle <daniel@makrotopia.org>
+---
+ src/tar.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/src/tar.c
++++ b/src/tar.c
+@@ -9,6 +9,7 @@
+
+ #include <sys/stat.h>
+ #include <sys/sysmacros.h>
++#include <limits.h> /* for SSIZE_MAX with glibc */
+
+ #include "apk_defines.h"
+ #include "apk_tar.h"
diff --git a/package/system/apk/test.sh b/package/system/apk/test.sh
new file mode 100644
index 0000000000..814777fd70
--- /dev/null
+++ b/package/system/apk/test.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+case "$1" in
+ "apk")
+ apk --version | grep "${2/-r*/}"
+ ;;
+ *)
+ return 0;
+esac
--
2.25.1

View File

@@ -0,0 +1,104 @@
From ec862d472fca676cc04ce71b640e880ecefdd477 Mon Sep 17 00:00:00 2001
From: John Crispin <john@phrozen.org>
Date: Fri, 13 Aug 2021 08:48:02 +0200
Subject: [PATCH 26/27] lua-lzlib: backport package
Signed-off-by: John Crispin <john@phrozen.org>
---
package/libs/lua-lzlib/Makefile | 64 +++++++++++++++++++
.../patches/001-allow_optim_flags.patch | 12 ++++
2 files changed, 76 insertions(+)
create mode 100644 package/libs/lua-lzlib/Makefile
create mode 100644 package/libs/lua-lzlib/patches/001-allow_optim_flags.patch
diff --git a/package/libs/lua-lzlib/Makefile b/package/libs/lua-lzlib/Makefile
new file mode 100644
index 0000000000..5e0a16b135
--- /dev/null
+++ b/package/libs/lua-lzlib/Makefile
@@ -0,0 +1,64 @@
+#
+# Copyright (C) 2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=lua-lzlib
+PKG_VERSION:=0.4.3
+PKG_RELEASE:=1
+PKG_MAINTAINER:=Dirk Chang <dirk@kooiot.com>
+PKG_LICENSE:=MIT
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_MIRROR_HASH:=b6ef5e3f04b7f2137b39931a175ee802489a2486e70537770919bcccca10e723
+PKG_SOURCE_URL:=https://github.com/LuaDist/lzlib.git
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_VERSION:=79329a07d8f79c19eadd7ea2752b4c4e1574b015
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
+
+HOST_BUILD_DEPENDS:=lua/host
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/host-build.mk
+
+define Package/lua-lzlib
+ SUBMENU:=Lua
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=Lua zlib binding
+ URL:=http://github.com/LuaDist/lzlib
+ DEPENDS:= +lua +zlib
+endef
+
+define Package/lua-lzlib/description
+ A library to access zlib library functions and also to read/write gzip files using an interface similar to the base io package.
+endef
+
+MAKE_FLAGS += \
+ LUA="$(STAGING_DIR)/usr" \
+ OFLAGS="$(TARGET_CFLAGS)" \
+
+HOST_MAKE_FLAGS += \
+ LUA="$(STAGING_DIR_HOSTPKG)" \
+ OFLAGS="$(HOST_CFLAGS)" \
+
+define Package/lua-lzlib/install
+ $(INSTALL_DIR) $(1)/usr/lib/lua
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/zlib.so $(1)/usr/lib/lua/
+
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/gzip.lua $(1)/usr/lib/lua/
+endef
+
+define Host/Install
+ $(INSTALL_DIR) $(STAGING_DIR_HOSTPKG)/lib/lua/5.1
+ $(INSTALL_BIN) $(HOST_BUILD_DIR)/zlib.so $(STAGING_DIR_HOSTPKG)/lib/lua/5.1
+
+ $(INSTALL_DATA) $(HOST_BUILD_DIR)/gzip.lua $(STAGING_DIR_HOSTPKG)/lib/lua/5.1
+endef
+
+$(eval $(call BuildPackage,lua-lzlib))
+$(eval $(call HostBuild))
diff --git a/package/libs/lua-lzlib/patches/001-allow_optim_flags.patch b/package/libs/lua-lzlib/patches/001-allow_optim_flags.patch
new file mode 100644
index 0000000000..78f981d237
--- /dev/null
+++ b/package/libs/lua-lzlib/patches/001-allow_optim_flags.patch
@@ -0,0 +1,12 @@
+--- a/Makefile
++++ b/Makefile
+@@ -14,7 +14,8 @@ LUABIN= $(LUA)/bin
+ ZLIB=../zlib-1.2.3
+
+ # no need to change anything below here
+-CFLAGS= $(INCS) $(DEFS) $(WARN) -O0 -fPIC
++CFLAGS= $(INCS) $(DEFS) $(WARN) $(OFLAGS) -fPIC
++OFLAGS= -O0
+ WARN= -g -Werror -Wall -pedantic #-ansi
+ INCS= -I$(LUAINC) -I$(ZLIB)
+ LIBS= -L$(ZLIB) -lz -L$(LUALIB) -L$(LUABIN) #-llua51
--
2.25.1

View File

@@ -0,0 +1,35 @@
From 5fc717aa60b36934892d6d77c0637fc53aa7f761 Mon Sep 17 00:00:00 2001
From: Daniel Golle <daniel@makrotopia.org>
Date: Sat, 10 Jul 2021 20:21:26 +0100
Subject: [PATCH 27/27] lua: make it easier to detect host-built Lua
Install pkg-config file also for host-build, clean up Lua symlinks.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
(cherry picked from commit 315f52e0f3bfa3d65ad14ca21a696c6d31c4edcd)
---
package/utils/lua/Makefile | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/package/utils/lua/Makefile b/package/utils/lua/Makefile
index d262d1e1fc..e15142d8d2 100644
--- a/package/utils/lua/Makefile
+++ b/package/utils/lua/Makefile
@@ -134,8 +134,12 @@ define Host/Install
INSTALL_TOP="$(STAGING_DIR_HOSTPKG)" \
install
- $(LN) $(STAGING_DIR_HOSTPKG)/bin/lua5.1 $(STAGING_DIR_HOSTPKG)/bin/lua
- $(LN) $(STAGING_DIR_HOSTPKG)/bin/luac5.1 $(STAGING_DIR_HOSTPKG)/bin/luac
+ $(INSTALL_DIR) $(STAGING_DIR_HOSTPKG)/lib/pkgconfig
+ $(CP) $(HOST_BUILD_DIR)/etc/lua.pc $(STAGING_DIR_HOSTPKG)/lib/pkgconfig/lua5.1.pc
+
+ $(LN) lua5.1 $(STAGING_DIR_HOSTPKG)/bin/lua
+ $(LN) luac5.1 $(STAGING_DIR_HOSTPKG)/bin/luac
+ $(LN) lua5.1.pc $(STAGING_DIR_HOSTPKG)/lib/pkgconfig/lua.pc
endef
define Build/InstallDev
--
2.25.1

View File

@@ -0,0 +1,247 @@
From 99b9f524e94b98ce8fd3e141bf7e07bfa96bbea0 Mon Sep 17 00:00:00 2001
From: John Crispin <john@phrozen.org>
Date: Tue, 14 Sep 2021 09:19:08 +0200
Subject: [PATCH] mt76: update to latest HEAD
Signed-off-by: John Crispin <john@phrozen.org>
---
package/kernel/mt76/Makefile | 7 +-
...the-dst-buffer-to-of_get_mac_address.patch | 206 ++++++++++++++++++
2 files changed, 210 insertions(+), 3 deletions(-)
create mode 100644 package/kernel/mt76/patches/001-of-net-pass-the-dst-buffer-to-of_get_mac_address.patch
diff --git a/package/kernel/mt76/Makefile b/package/kernel/mt76/Makefile
index e4051d8347..431c57a240 100644
--- a/package/kernel/mt76/Makefile
+++ b/package/kernel/mt76/Makefile
@@ -8,11 +8,12 @@ PKG_LICENSE_FILES:=
PKG_SOURCE_URL:=https://github.com/openwrt/mt76
PKG_SOURCE_PROTO:=git
-PKG_SOURCE_DATE:=2021-06-06
-PKG_SOURCE_VERSION:=22b690334c0f49b11534cc2e331c9d5e17c4a0bc
-PKG_MIRROR_HASH:=ff5e563935919d2e40c1e7254ef3bc06f7ecc5e69f8ddd12903e8f5de942d630
+PKG_SOURCE_DATE:=2021-07-15
+PKG_SOURCE_VERSION:=bbebea7d6dc64313132226adc3f7369d36e9359d
+PKG_MIRROR_HASH:=17cd74e72c1f6c8742b698bf6772afacc6fba71b233af8c4d59530600cf44d5b
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
+PKG_USE_NINJA:=0
PKG_BUILD_PARALLEL:=1
PKG_CONFIG_DEPENDS += \
diff --git a/package/kernel/mt76/patches/001-of-net-pass-the-dst-buffer-to-of_get_mac_address.patch b/package/kernel/mt76/patches/001-of-net-pass-the-dst-buffer-to-of_get_mac_address.patch
new file mode 100644
index 0000000000..66075f2771
--- /dev/null
+++ b/package/kernel/mt76/patches/001-of-net-pass-the-dst-buffer-to-of_get_mac_address.patch
@@ -0,0 +1,206 @@
+From 83216e3988cd196183542937c9bd58b279f946af Mon Sep 17 00:00:00 2001
+From: Michael Walle <michael@walle.cc>
+Date: Mon, 12 Apr 2021 19:47:17 +0200
+Subject: of: net: pass the dst buffer to of_get_mac_address()
+
+of_get_mac_address() returns a "const void*" pointer to a MAC address.
+Lately, support to fetch the MAC address by an NVMEM provider was added.
+But this will only work with platform devices. It will not work with
+PCI devices (e.g. of an integrated root complex) and esp. not with DSA
+ports.
+
+There is an of_* variant of the nvmem binding which works without
+devices. The returned data of a nvmem_cell_read() has to be freed after
+use. On the other hand the return of_get_mac_address() points to some
+static data without a lifetime. The trick for now, was to allocate a
+device resource managed buffer which is then returned. This will only
+work if we have an actual device.
+
+Change it, so that the caller of of_get_mac_address() has to supply a
+buffer where the MAC address is written to. Unfortunately, this will
+touch all drivers which use the of_get_mac_address().
+
+Usually the code looks like:
+
+ const char *addr;
+ addr = of_get_mac_address(np);
+ if (!IS_ERR(addr))
+ ether_addr_copy(ndev->dev_addr, addr);
+
+This can then be simply rewritten as:
+
+ of_get_mac_address(np, ndev->dev_addr);
+
+Sometimes is_valid_ether_addr() is used to test the MAC address.
+of_get_mac_address() already makes sure, it just returns a valid MAC
+address. Thus we can just test its return code. But we have to be
+careful if there are still other sources for the MAC address before the
+of_get_mac_address(). In this case we have to keep the
+is_valid_ether_addr() call.
+
+The following coccinelle patch was used to convert common cases to the
+new style. Afterwards, I've manually gone over the drivers and fixed the
+return code variable: either used a new one or if one was already
+available use that. Mansour Moufid, thanks for that coccinelle patch!
+
+<spml>
+@a@
+identifier x;
+expression y, z;
+@@
+- x = of_get_mac_address(y);
++ x = of_get_mac_address(y, z);
+ <...
+- ether_addr_copy(z, x);
+ ...>
+
+@@
+identifier a.x;
+@@
+- if (<+... x ...+>) {}
+
+@@
+identifier a.x;
+@@
+ if (<+... x ...+>) {
+ ...
+ }
+- else {}
+
+@@
+identifier a.x;
+expression e;
+@@
+- if (<+... x ...+>@e)
+- {}
+- else
++ if (!(e))
+ {...}
+
+@@
+expression x, y, z;
+@@
+- x = of_get_mac_address(y, z);
++ of_get_mac_address(y, z);
+ ... when != x
+</spml>
+
+All drivers, except drivers/net/ethernet/aeroflex/greth.c, were
+compile-time tested.
+
+Suggested-by: Andrew Lunn <andrew@lunn.ch>
+Signed-off-by: Michael Walle <michael@walle.cc>
+Reviewed-by: Andrew Lunn <andrew@lunn.ch>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+---
+ arch/arm/mach-mvebu/kirkwood.c | 3 +-
+ arch/powerpc/sysdev/tsi108_dev.c | 5 +-
+ drivers/net/ethernet/aeroflex/greth.c | 6 +--
+ drivers/net/ethernet/allwinner/sun4i-emac.c | 10 ++--
+ drivers/net/ethernet/altera/altera_tse_main.c | 7 +--
+ drivers/net/ethernet/arc/emac_main.c | 8 +--
+ drivers/net/ethernet/atheros/ag71xx.c | 7 +--
+ drivers/net/ethernet/broadcom/bcm4908_enet.c | 7 +--
+ drivers/net/ethernet/broadcom/bcmsysport.c | 7 +--
+ drivers/net/ethernet/broadcom/bgmac-bcma.c | 10 ++--
+ drivers/net/ethernet/broadcom/bgmac-platform.c | 11 ++--
+ drivers/net/ethernet/cadence/macb_main.c | 11 ++--
+ drivers/net/ethernet/cavium/octeon/octeon_mgmt.c | 8 +--
+ drivers/net/ethernet/cavium/thunder/thunder_bgx.c | 5 +-
+ drivers/net/ethernet/davicom/dm9000.c | 10 ++--
+ drivers/net/ethernet/ethoc.c | 6 +--
+ drivers/net/ethernet/ezchip/nps_enet.c | 7 +--
+ drivers/net/ethernet/freescale/fec_main.c | 7 +--
+ drivers/net/ethernet/freescale/fec_mpc52xx.c | 7 +--
+ drivers/net/ethernet/freescale/fman/mac.c | 9 ++--
+ .../net/ethernet/freescale/fs_enet/fs_enet-main.c | 5 +-
+ drivers/net/ethernet/freescale/gianfar.c | 8 +--
+ drivers/net/ethernet/freescale/ucc_geth.c | 5 +-
+ drivers/net/ethernet/hisilicon/hisi_femac.c | 7 +--
+ drivers/net/ethernet/hisilicon/hix5hd2_gmac.c | 7 +--
+ drivers/net/ethernet/lantiq_xrx200.c | 7 +--
+ drivers/net/ethernet/marvell/mv643xx_eth.c | 5 +-
+ drivers/net/ethernet/marvell/mvneta.c | 6 +--
+ .../net/ethernet/marvell/prestera/prestera_main.c | 11 ++--
+ drivers/net/ethernet/marvell/pxa168_eth.c | 9 +---
+ drivers/net/ethernet/marvell/sky2.c | 8 ++-
+ drivers/net/ethernet/mediatek/mtk_eth_soc.c | 11 ++--
+ drivers/net/ethernet/micrel/ks8851_common.c | 7 ++-
+ drivers/net/ethernet/microchip/lan743x_main.c | 5 +-
+ drivers/net/ethernet/nxp/lpc_eth.c | 4 +-
+ drivers/net/ethernet/qualcomm/qca_spi.c | 10 ++--
+ drivers/net/ethernet/qualcomm/qca_uart.c | 9 +---
+ drivers/net/ethernet/renesas/ravb_main.c | 12 +++--
+ drivers/net/ethernet/renesas/sh_eth.c | 5 +-
+ .../net/ethernet/samsung/sxgbe/sxgbe_platform.c | 13 ++---
+ drivers/net/ethernet/socionext/sni_ave.c | 10 ++--
+ .../net/ethernet/stmicro/stmmac/dwmac-anarion.c | 2 +-
+ .../ethernet/stmicro/stmmac/dwmac-dwc-qos-eth.c | 2 +-
+ .../net/ethernet/stmicro/stmmac/dwmac-generic.c | 2 +-
+ drivers/net/ethernet/stmicro/stmmac/dwmac-imx.c | 2 +-
+ .../net/ethernet/stmicro/stmmac/dwmac-intel-plat.c | 2 +-
+ .../net/ethernet/stmicro/stmmac/dwmac-ipq806x.c | 2 +-
+ .../net/ethernet/stmicro/stmmac/dwmac-lpc18xx.c | 2 +-
+ .../net/ethernet/stmicro/stmmac/dwmac-mediatek.c | 2 +-
+ drivers/net/ethernet/stmicro/stmmac/dwmac-meson.c | 2 +-
+ .../net/ethernet/stmicro/stmmac/dwmac-meson8b.c | 2 +-
+ drivers/net/ethernet/stmicro/stmmac/dwmac-oxnas.c | 2 +-
+ .../ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c | 2 +-
+ drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c | 2 +-
+ .../net/ethernet/stmicro/stmmac/dwmac-socfpga.c | 2 +-
+ drivers/net/ethernet/stmicro/stmmac/dwmac-sti.c | 2 +-
+ drivers/net/ethernet/stmicro/stmmac/dwmac-stm32.c | 2 +-
+ drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 2 +-
+ drivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c | 2 +-
+ .../net/ethernet/stmicro/stmmac/dwmac-visconti.c | 2 +-
+ drivers/net/ethernet/stmicro/stmmac/stmmac.h | 2 +-
+ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 +-
+ .../net/ethernet/stmicro/stmmac/stmmac_platform.c | 14 ++---
+ .../net/ethernet/stmicro/stmmac/stmmac_platform.h | 2 +-
+ drivers/net/ethernet/ti/am65-cpsw-nuss.c | 19 ++++---
+ drivers/net/ethernet/ti/cpsw.c | 7 +--
+ drivers/net/ethernet/ti/cpsw_new.c | 7 +--
+ drivers/net/ethernet/ti/davinci_emac.c | 8 +--
+ drivers/net/ethernet/ti/netcp_core.c | 7 +--
+ drivers/net/ethernet/wiznet/w5100-spi.c | 8 ++-
+ drivers/net/ethernet/wiznet/w5100.c | 2 +-
+ drivers/net/ethernet/xilinx/ll_temac_main.c | 8 +--
+ drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 15 +++---
+ drivers/net/ethernet/xilinx/xilinx_emaclite.c | 8 +--
+ drivers/net/wireless/ath/ath9k/init.c | 5 +-
+ drivers/net/wireless/mediatek/mt76/eeprom.c | 9 +---
+ drivers/net/wireless/ralink/rt2x00/rt2x00dev.c | 6 +--
+ drivers/of/of_net.c | 60 ++++++++++------------
+ drivers/staging/octeon/ethernet.c | 10 ++--
+ drivers/staging/wfx/main.c | 7 ++-
+ include/linux/of_net.h | 6 +--
+ include/net/dsa.h | 2 +-
+ net/dsa/dsa2.c | 2 +-
+ net/dsa/slave.c | 2 +-
+ net/ethernet/eth.c | 11 ++--
+ 85 files changed, 218 insertions(+), 364 deletions(-)
+
+diff --git a/drivers/net/wireless/mediatek/mt76/eeprom.c b/drivers/net/wireless/mediatek/mt76/eeprom.c
+index 665b54c5c8ae5..6d895738222ad 100644
+--- a/eeprom.c
++++ b/eeprom.c
+@@ -91,15 +91,9 @@ void
+ {
+ struct mt76_dev *dev = phy->dev;
+
+-#ifdef CONFIG_OF
+ struct device_node *np = dev->dev->of_node;
+- const u8 *mac = NULL;
+
+- if (np)
+- mac = of_get_mac_address(np);
+- if (!IS_ERR_OR_NULL(mac))
+- ether_addr_copy(phy->macaddr, mac);
+-#endif
++ of_get_mac_address(np, phy->macaddr);
+
+ if (!is_valid_ether_addr(phy->macaddr)) {
+ eth_random_addr(phy->macaddr);
+--
+cgit 1.2.3-1.el7
+
--
2.25.1

View File

@@ -0,0 +1,215 @@
From b912dcd063381438ad70f4a3326ff0ac1be7c3ea Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@nbd.name>
Date: Tue, 26 Oct 2021 20:41:22 +0200
Subject: [PATCH] bpf-headers: add a package with kernel headers for ebpf
In order to genererate suitable kernel headers, a 5.10 kernel tree is
prepared with a default config for mips. The arch is forced to mips in
order to avoid issues with inline asm on various architectures in a way
that doesn't involve relying on the host toolchain/headers.
It also has the advantage of supporting both endian types
Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
include/bpf.mk | 60 +++++++++++
package/kernel/bpf-headers/Makefile | 99 +++++++++++++++++++
.../src/include/generated/bounds.h | 14 +++
3 files changed, 173 insertions(+)
create mode 100644 include/bpf.mk
create mode 100644 package/kernel/bpf-headers/Makefile
create mode 100644 package/kernel/bpf-headers/src/include/generated/bounds.h
diff --git a/include/bpf.mk b/include/bpf.mk
new file mode 100644
index 0000000000..4e227a11d0
--- /dev/null
+++ b/include/bpf.mk
@@ -0,0 +1,60 @@
+ifeq ($(CONFIG_BUILD_LLVM_BPF),)
+export PATH:=/usr/local/opt/llvm/bin:$(PATH)
+CLANG:=$(firstword $(shell PATH='$(PATH)' which clang clang-13 clang-12 clang-11 clang-10 clang-9))
+LLVM_VER:=$(subst clang,,$(notdir $(CLANG)))
+else
+CLANG:=$(STAGING_DIR_HOST)/bin/clang
+LLVM_VER:=
+endif
+
+LLVM_PATH:=$(dir $(CLANG))
+LLVM_LLC:=$(LLVM_PATH)/llc$(LLVM_VER)
+LLVM_DIS:=$(LLVM_PATH)/llvm-dis$(LLVM_VER)
+LLVM_OPT:=$(LLVM_PATH)/opt$(LLVM_VER)
+LLVM_STRIP:=$(LLVM_PATH)/llvm-strip$(LLVM_VER)
+
+BPF_KARCH:=mips
+BPF_ARCH:=mips$(if $(CONFIG_BIG_ENDIAN),,el)
+
+BPF_HEADERS_DIR:=$(STAGING_DIR)/bpf-headers
+
+BPF_KERNEL_INCLUDE := \
+ -nostdinc -isystem $(TOOLCHAIN_DIR)/include \
+ -I$(BPF_HEADERS_DIR)/arch/$(BPF_KARCH)/include \
+ -I$(BPF_HEADERS_DIR)/arch/$(BPF_KARCH)/include/asm/mach-generic \
+ -I$(BPF_HEADERS_DIR)/arch/$(BPF_KARCH)/include/generated \
+ -I$(BPF_HEADERS_DIR)/include \
+ -I$(BPF_HEADERS_DIR)/arch/$(BPF_KARCH)/include/uapi \
+ -I$(BPF_HEADERS_DIR)/arch/$(BPF_KARCH)/include/generated/uapi \
+ -I$(BPF_HEADERS_DIR)/include/uapi \
+ -I$(BPF_HEADERS_DIR)/include/generated/uapi \
+ -I$(BPF_HEADERS_DIR)/tools/lib \
+ -I$(BPF_HEADERS_DIR)/tools/testing/selftests \
+ -I$(BPF_HEADERS_DIR)/samples/bpf \
+ -include linux/kconfig.h -include asm_goto_workaround.h
+
+BPF_CFLAGS := \
+ $(BPF_KERNEL_INCLUDE) -I$(PKG_BUILD_DIR) \
+ -D__KERNEL__ -D__BPF_TRACING__ \
+ -D__TARGET_ARCH_${BPF_KARCH} \
+ -m$(if $(CONFIG_BIG_ENDIAN),big,little)-endian \
+ -fno-stack-protector -Wall \
+ -Wno-unused-value -Wno-pointer-sign \
+ -Wno-compare-distinct-pointer-types \
+ -Wno-gnu-variable-sized-type-not-at-end \
+ -Wno-address-of-packed-member -Wno-tautological-compare \
+ -Wno-unknown-warning-option \
+ -fno-asynchronous-unwind-tables \
+ -Wno-uninitialized -Wno-unused-variable \
+ -Wno-unused-label \
+ -O2 -emit-llvm -Xclang -disable-llvm-passes
+
+define CompileBPF
+ $(CLANG) -g -target $(BPF_ARCH)-linux-gnu $(BPF_CFLAGS) $(2) \
+ -c $(1) -o $(patsubst %.c,%.bc,$(1))
+ $(LLVM_OPT) -O2 -mtriple=bpf-pc-linux < $(patsubst %.c,%.bc,$(1)) > $(patsubst %.c,%.opt,$(1))
+ $(LLVM_DIS) < $(patsubst %.c,%.opt,$(1)) > $(patsubst %.c,%.S,$(1))
+ $(LLVM_LLC) -march=bpf -filetype=obj -o $(patsubst %.c,%.o,$(1)) < $(patsubst %.c,%.S,$(1))
+ $(LLVM_STRIP) --strip-debug $(patsubst %.c,%.o,$(1))
+endef
+
diff --git a/package/kernel/bpf-headers/Makefile b/package/kernel/bpf-headers/Makefile
new file mode 100644
index 0000000000..e316feea55
--- /dev/null
+++ b/package/kernel/bpf-headers/Makefile
@@ -0,0 +1,99 @@
+#
+# Copyright (C) 2006-2009 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+include $(TOPDIR)/rules.mk
+
+override QUILT:=
+override HOST_QUILT:=
+
+include $(INCLUDE_DIR)/kernel.mk
+
+
+PKG_NAME:=linux
+PKG_PATCHVER:=5.10
+PKG_VERSION:=$(PKG_PATCHVER)$(strip $(LINUX_VERSION-$(PKG_PATCHVER)))
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=$(LINUX_SITE)
+PKG_HASH:=$(LINUX_KERNEL_HASH-$(strip $(PKG_VERSION)))
+PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/bpf-headers/$(PKG_NAME)-$(PKG_VERSION)
+
+GENERIC_BACKPORT_DIR := $(GENERIC_PLATFORM_DIR)/backport$(if $(wildcard $(GENERIC_PLATFORM_DIR)/backport-$(PKG_PATCHVER)),-$(PKG_PATCHVER))
+GENERIC_PATCH_DIR := $(GENERIC_PLATFORM_DIR)/pending$(if $(wildcard $(GENERIC_PLATFORM_DIR)/pending-$(PKG_PATCHVER)),-$(PKG_PATCHVER))
+GENERIC_HACK_DIR := $(GENERIC_PLATFORM_DIR)/hack$(if $(wildcard $(GENERIC_PLATFORM_DIR)/hack-$(PKG_PATCHVER)),-$(PKG_PATCHVER))
+GENERIC_FILES_DIR := $(foreach dir,$(wildcard $(GENERIC_PLATFORM_DIR)/files $(GENERIC_PLATFORM_DIR)/files-$(PKG_PATCHVER)),"$(dir)")
+PATCH_DIR := $(CURDIR)/patches
+FILES_DIR :=
+
+REAL_LINUX_DIR := $(LINUX_DIR)
+LINUX_DIR := $(PKG_BUILD_DIR)
+
+include $(INCLUDE_DIR)/bpf.mk
+include $(INCLUDE_DIR)/package.mk
+
+define Package/bpf-headers
+ SECTION:=kernel
+ CATEGORY:=Kernel
+ TITLE:=eBPF kernel headers
+ BUILDONLY:=1
+ HIDDEN:=1
+endef
+
+export HOST_EXTRACFLAGS=-I$(STAGING_DIR_HOST)/include
+
+KERNEL_MAKE := \
+ $(MAKE) -C $(PKG_BUILD_DIR) \
+ ARCH=$(BPF_KARCH) \
+ CROSS_COMPILE=$(BPF_ARCH)-linux- \
+ LLVM=1 CC="$(CLANG)" LD="$(TARGET_CROSS)ld" \
+ HOSTCC="$(HOSTCC)" \
+ HOSTCXX="$(HOSTCXX)" \
+ HOST_LOADLIBES="-L$(STAGING_DIR_HOST)/lib" \
+ KBUILD_HOSTLDLIBS="-L$(STAGING_DIR_HOST)/lib" \
+ CONFIG_SHELL="$(BASH)" \
+ INSTALL_HDR_PATH="$(PKG_BUILD_DIR)/user_headers"
+
+define Build/Patch
+ $(Kernel/Patch/Default)
+endef
+
+BPF_DOC = $(wildcard $(patsubst %,$(LINUX_DIR)/scripts/%.py,bpf_doc bpf_helpers_doc))
+
+define Build/Configure
+ grep -vE 'CONFIG_(CPU_.*ENDIAN|HZ)' $(PKG_BUILD_DIR)/arch/mips/configs/generic_defconfig > $(PKG_BUILD_DIR)/.config
+ echo 'CONFIG_CPU_$(if $(CONFIG_BIG_ENDIAN),BIG,LITTLE)_ENDIAN=y' >> $(PKG_BUILD_DIR)/.config
+ grep CONFIG_HZ $(REAL_LINUX_DIR)/.config >> $(PKG_BUILD_DIR)/.config
+ yes '' | $(KERNEL_MAKE) oldconfig
+ grep 'CONFIG_HZ=' $(REAL_LINUX_DIR)/.config | \
+ cut -d= -f2 | \
+ bc -q $(LINUX_DIR)/kernel/time/timeconst.bc \
+ > $(LINUX_DIR)/include/generated/timeconst.h
+ $(BPF_DOC) --header \
+ --file $(LINUX_DIR)/tools/include/uapi/linux/bpf.h \
+ > $(PKG_BUILD_DIR)/tools/lib/bpf/bpf_helper_defs.h
+endef
+
+define Build/Compile
+ $(KERNEL_MAKE) archprepare headers_install
+endef
+
+define Build/InstallDev
+ mkdir -p $(1)/bpf-headers/arch $(1)/bpf-headers/tools
+ $(CP) \
+ $(PKG_BUILD_DIR)/arch/$(BPF_KARCH) \
+ $(1)/bpf-headers/arch/
+ $(CP) \
+ $(PKG_BUILD_DIR)/tools/lib \
+ $(PKG_BUILD_DIR)/tools/testing \
+ $(1)/bpf-headers/tools/
+ $(CP) \
+ $(PKG_BUILD_DIR)/include \
+ $(PKG_BUILD_DIR)/samples \
+ $(PKG_BUILD_DIR)/scripts \
+ $(PKG_BUILD_DIR)/user_headers \
+ $(1)/bpf-headers
+endef
+
+$(eval $(call BuildPackage,bpf-headers))
diff --git a/package/kernel/bpf-headers/src/include/generated/bounds.h b/package/kernel/bpf-headers/src/include/generated/bounds.h
new file mode 100644
index 0000000000..82ff01043c
--- /dev/null
+++ b/package/kernel/bpf-headers/src/include/generated/bounds.h
@@ -0,0 +1,14 @@
+#ifndef __LINUX_BOUNDS_H__
+#define __LINUX_BOUNDS_H__
+/*
+ * DO NOT MODIFY.
+ *
+ * This file was generated by Kbuild
+ */
+
+#define NR_PAGEFLAGS 23 /* __NR_PAGEFLAGS */
+#define MAX_NR_ZONES 4 /* __MAX_NR_ZONES */
+#define NR_CPUS_BITS 1 /* ilog2(CONFIG_NR_CPUS) */
+#define SPINLOCK_SIZE 64 /* sizeof(spinlock_t) */
+
+#endif
--
2.25.1

View File

@@ -0,0 +1,47 @@
From 4b2e6bb352b400e244646a7bc59bc5ca3ca6f5df Mon Sep 17 00:00:00 2001
From: Roman Yeryomin <roman@advem.lv>
Date: Fri, 3 Sep 2021 17:31:11 +0300
Subject: [PATCH 32/32] iproute2: m_xt.so depends on dynsyms.list
When doing parallel build on a fast machine with bottleneck in i/o,
m_xt.so may start linking faster than dynsyms.list gets populated,
resulting in error:
ld:dynsyms.list:0: syntax error in dynamic list
Fix this by adding dynsyms.list as make dependency to m_xt.so
Described also here:
https://bugs.openwrt.org/index.php?do=details&task_id=3353
Change from v1:
- add dynsysms.list dependancy only when shared libs are enabled
Signed-off-by: Roman Yeryomin <roman@advem.lv>
Fixes: FS#3353
---
.../utils/iproute2/patches/175-reduce-dynamic-syms.patch | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/package/network/utils/iproute2/patches/175-reduce-dynamic-syms.patch b/package/network/utils/iproute2/patches/175-reduce-dynamic-syms.patch
index da961a183b..c3892e5a0e 100644
--- a/package/network/utils/iproute2/patches/175-reduce-dynamic-syms.patch
+++ b/package/network/utils/iproute2/patches/175-reduce-dynamic-syms.patch
@@ -26,13 +26,14 @@
q_atm.so: q_atm.c
$(QUIET_CC)$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -shared -fpic -o q_atm.so q_atm.c -latm
-@@ -205,4 +206,15 @@ static-syms.h: $(wildcard *.c)
+@@ -205,4 +206,16 @@ static-syms.h: $(wildcard *.c)
sed -n '/'$$s'[^ ]* =/{s:.* \([^ ]*'$$s'[^ ]*\) .*:extern char \1[] __attribute__((weak)); if (!strcmp(sym, "\1")) return \1;:;p}' $$files ; \
done > $@
+else
+
+tc: dynsyms.list
++m_xt.so: dynsyms.list
+dynsyms.list: $(wildcard *.c)
+ files="$(filter-out $(patsubst %.so,%.c,$(TCSO)), $^)" ; \
+ echo "{" > $@ ; \
--
2.25.1

View File

@@ -1,39 +0,0 @@
From c90fec205137d8d8c1197722a39d5c700ae3f6b1 Mon Sep 17 00:00:00 2001
From: John Crispin <john@phrozen.org>
Date: Mon, 21 Jun 2021 12:53:28 +0200
Subject: [PATCH 02/36] iwinfo: update to latest git HEAD
Signed-off-by: John Crispin <john@phrozen.org>
---
package/network/utils/iwinfo/Makefile | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/package/network/utils/iwinfo/Makefile b/package/network/utils/iwinfo/Makefile
index 3454d615a9..b7c8370bba 100644
--- a/package/network/utils/iwinfo/Makefile
+++ b/package/network/utils/iwinfo/Makefile
@@ -11,9 +11,9 @@ PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/iwinfo.git
-PKG_SOURCE_DATE:=2021-01-31
-PKG_SOURCE_VERSION:=4a32b33e9606f1bc1125f4bc24b0581349e55f2e
-PKG_MIRROR_HASH:=414e5d150efaadba21103e66f862be66a94dcf83c16a2850f7c05051a9b0739d
+PKG_SOURCE_DATE:=2021-06-09
+PKG_SOURCE_VERSION:=c0414642fead263a4a6a686ad3cb7e965ec8a23a
+PKG_MIRROR_HASH:=c5686bbae86753c53db03a686b034bbb80d31107cc359ebd8522ea1c82db35ea
PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
PKG_LICENSE:=GPL-2.0
@@ -25,7 +25,7 @@ PKG_CONFIG_DEPENDS := \
CONFIG_PACKAGE_kmod-brcm-wl-mimo \
CONFIG_PACKAGE_kmod-cfg80211
-IWINFO_ABI_VERSION:=20210106
+IWINFO_ABI_VERSION:=20210430
include $(INCLUDE_DIR)/package.mk
--
2.25.1

View File

@@ -1,98 +0,0 @@
From ddaf9ee904b614f79c87f6d67d6c7b09c5d46eca Mon Sep 17 00:00:00 2001
From: John Crispin <john@phrozen.org>
Date: Thu, 27 May 2021 13:24:47 +0200
Subject: [PATCH 01/44] netifd: update to latest HEAD
Signed-off-by: John Crispin <john@phrozen.org>
---
package/network/config/netifd/Makefile | 12 +++++++++---
.../network/config/netifd/files/etc/udhcpc.user | 1 +
.../config/netifd/files/lib/netifd/dhcp.script | 3 +++
.../netifd/patches/002-fix-dhcp-issue.patch | 17 +++++++++++++++++
4 files changed, 30 insertions(+), 3 deletions(-)
create mode 100644 package/network/config/netifd/files/etc/udhcpc.user
create mode 100644 package/network/config/netifd/patches/002-fix-dhcp-issue.patch
diff --git a/package/network/config/netifd/Makefile b/package/network/config/netifd/Makefile
index 7061456b08..5717a400be 100644
--- a/package/network/config/netifd/Makefile
+++ b/package/network/config/netifd/Makefile
@@ -5,9 +5,9 @@ PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/netifd.git
-PKG_SOURCE_DATE:=2021-01-09
-PKG_SOURCE_VERSION:=c00c8335d6188daa326ecfe5a62da15a9b9987e1
-PKG_MIRROR_HASH:=c740e51e0cec13eec336ba1c7a643db3b64a9a2235f8c1b73a566cb89e841190
+PKG_SOURCE_DATE:=2021-05-26
+PKG_SOURCE_VERSION:=440eb0647708274cc8d7d9e7c2bb0cfdfba90023
+PKG_MIRROR_HASH:=
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
PKG_LICENSE:=GPL-2.0
@@ -25,6 +25,11 @@ define Package/netifd
TITLE:=OpenWrt Network Interface Configuration Daemon
endef
+define Package/netifd/conffiles
+/etc/udhcpc.user
+/etc/udhcpc.user.d/
+endef
+
TARGET_CFLAGS += \
-I$(STAGING_DIR)/usr/include/libnl-tiny \
-I$(STAGING_DIR)/usr/include \
@@ -40,6 +45,7 @@ define Package/netifd/install
$(INSTALL_DIR) $(1)/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/netifd $(1)/sbin/
$(CP) ./files/* $(1)/
+ $(INSTALL_DIR) $(1)/etc/udhcpc.user.d/
$(CP) $(PKG_BUILD_DIR)/scripts/* $(1)/lib/netifd/
endef
diff --git a/package/network/config/netifd/files/etc/udhcpc.user b/package/network/config/netifd/files/etc/udhcpc.user
new file mode 100644
index 0000000000..78e2ba5f18
--- /dev/null
+++ b/package/network/config/netifd/files/etc/udhcpc.user
@@ -0,0 +1 @@
+# This script is sourced by udhcpc's dhcp.script at every DHCP event.
diff --git a/package/network/config/netifd/files/lib/netifd/dhcp.script b/package/network/config/netifd/files/lib/netifd/dhcp.script
index 6585b641d6..e46005d84c 100755
--- a/package/network/config/netifd/files/lib/netifd/dhcp.script
+++ b/package/network/config/netifd/files/lib/netifd/dhcp.script
@@ -112,5 +112,8 @@ esac
# user rules
[ -f /etc/udhcpc.user ] && . /etc/udhcpc.user "$@"
+for f in /etc/udhcpc.user.d/*; do
+ [ -f "$f" ] && (. "$f" "$@")
+done
exit 0
diff --git a/package/network/config/netifd/patches/002-fix-dhcp-issue.patch b/package/network/config/netifd/patches/002-fix-dhcp-issue.patch
new file mode 100644
index 0000000000..6f1d2e708e
--- /dev/null
+++ b/package/network/config/netifd/patches/002-fix-dhcp-issue.patch
@@ -0,0 +1,17 @@
+Index: netifd-2019-08-05-5e02f944/interface.c
+===================================================================
+--- netifd-2019-08-05-5e02f944.orig/interface.c
++++ netifd-2019-08-05-5e02f944/interface.c
+@@ -424,7 +424,11 @@ interface_main_dev_cb(struct device_user
+ interface_set_link_state(iface, false);
+ break;
+ case DEV_EVENT_TOPO_CHANGE:
+- interface_proto_event(iface->proto, PROTO_CMD_RENEW, false);
++ /* This renews the dhcp lease when the bridge adds/deletes a
++ * new interface. It causes some dhcp servers to fail in
++ * case where there are many interfaces being added to the
++ * bridge frequently. Disabling this for now. */
++ /* interface_proto_event(iface->proto, PROTO_CMD_RENEW, false); */
+ return;
+ default:
+ break;
--
2.25.1

View File

@@ -1,51 +0,0 @@
From e01de214b2492e1b8001d6057211017b5f0f6f49 Mon Sep 17 00:00:00 2001
From: John Crispin <john@phrozen.org>
Date: Thu, 27 May 2021 13:25:41 +0200
Subject: [PATCH 04/44] mt76: update to latest HEAD
Signed-off-by: John Crispin <john@phrozen.org>
---
package/kernel/mt76/Makefile | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/package/kernel/mt76/Makefile b/package/kernel/mt76/Makefile
index e9e95fa9b3..431c57a240 100644
--- a/package/kernel/mt76/Makefile
+++ b/package/kernel/mt76/Makefile
@@ -8,11 +8,12 @@ PKG_LICENSE_FILES:=
PKG_SOURCE_URL:=https://github.com/openwrt/mt76
PKG_SOURCE_PROTO:=git
-PKG_SOURCE_DATE:=2021-04-11
-PKG_SOURCE_VERSION:=bf45b30d891961dd7c4139dddb58b909ea2c2b5a
-PKG_MIRROR_HASH:=431cecf80dafa986e805f809522721c2bb26289867d6770695d49baf8b471bea
+PKG_SOURCE_DATE:=2021-07-15
+PKG_SOURCE_VERSION:=bbebea7d6dc64313132226adc3f7369d36e9359d
+PKG_MIRROR_HASH:=17cd74e72c1f6c8742b698bf6772afacc6fba71b233af8c4d59530600cf44d5b
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
+PKG_USE_NINJA:=0
PKG_BUILD_PARALLEL:=1
PKG_CONFIG_DEPENDS += \
@@ -155,7 +156,7 @@ define KernelPackage/mt7615-common
$(KernelPackage/mt76-default)
TITLE:=MediaTek MT7615 wireless driver common code
HIDDEN:=1
- DEPENDS+=@PCI_SUPPORT +kmod-mt76-core +kmod-mt76-connac
+ DEPENDS+=@PCI_SUPPORT +kmod-mt76-core +kmod-mt76-connac +kmod-hwmon-core
FILES:= $(PKG_BUILD_DIR)/mt7615/mt7615-common.ko
endef
@@ -213,7 +214,7 @@ endef
define KernelPackage/mt7915e
$(KernelPackage/mt76-default)
TITLE:=MediaTek MT7915e wireless driver
- DEPENDS+=@PCI_SUPPORT +kmod-mt7615-common +@DRIVER_11AX_SUPPORT
+ DEPENDS+=@PCI_SUPPORT +kmod-mt7615-common +kmod-hwmon-core +kmod-thermal +@DRIVER_11AX_SUPPORT
FILES:= $(PKG_BUILD_DIR)/mt7915/mt7915e.ko
AUTOLOAD:=$(call AutoProbe,mt7915e)
endef
--
2.25.1

View File

@@ -1,39 +0,0 @@
From 26aedfa7e2aa5ab583c68638539d5fc173af173f Mon Sep 17 00:00:00 2001
From: John Crispin <john@phrozen.org>
Date: Mon, 12 Jul 2021 13:09:25 +0200
Subject: [PATCH 36/37] ar71xx: hacks
Signed-off-by: John Crispin <john@phrozen.org>
---
package/kernel/linux/modules/crypto.mk | 2 +-
package/kernel/mac80211/ath.mk | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/package/kernel/linux/modules/crypto.mk b/package/kernel/linux/modules/crypto.mk
index c277c6b8ec..9bee6fd8a9 100644
--- a/package/kernel/linux/modules/crypto.mk
+++ b/package/kernel/linux/modules/crypto.mk
@@ -885,7 +885,7 @@ define KernelPackage/crypto-sha256
CONFIG_CRYPTO_SHA256_SSSE3
FILES:= \
$(LINUX_DIR)/crypto/sha256_generic.ko \
- $(LINUX_DIR)/lib/crypto/libsha256.ko
+ $(LINUX_DIR)/lib/crypto/libsha256.ko@ge4.15
AUTOLOAD:=$(call AutoLoad,09,sha256_generic)
$(call AddDepends/crypto)
endef
diff --git a/package/kernel/mac80211/ath.mk b/package/kernel/mac80211/ath.mk
index ba03ae11a6..ad2860a98e 100644
--- a/package/kernel/mac80211/ath.mk
+++ b/package/kernel/mac80211/ath.mk
@@ -43,6 +43,7 @@ config-$(call config_package,ath9k) += ATH9K
config-$(call config_package,ath9k-common) += ATH9K_COMMON
config-$(call config_package,owl-loader) += ATH9K_PCI_NO_EEPROM
config-$(CONFIG_TARGET_ath79) += ATH9K_AHB
+config-$(CONFIG_TARGET_ar71xx) += ATH9K_AHB
config-$(CONFIG_TARGET_ipq40xx) += ATH10K_AHB
config-$(CONFIG_PCI) += ATH9K_PCI
config-$(CONFIG_ATH_USER_REGD) += ATH_USER_REGD ATH_REG_DYNAMIC_USER_REG_HINTS
--
2.25.1

View File

@@ -1,6 +1,6 @@
repo: https://github.com/openwrt/openwrt.git
branch: openwrt-21.02
revision: 6fd65c657351908302b37447675ee352ec927d93
revision: 378769b5551714ccaa821b481bfeecbf362f351e
output_dir: ./output
patch_folders:

View File

@@ -3,9 +3,9 @@ FROM ubuntu:20.04
RUN apt-get update \
&& DEBIAN_FRONTEND="noninteractive" apt-get -y install tzdata \
&& apt-get install -y \
time git-core build-essential gcc-multilib \
time git-core build-essential gcc-multilib clang \
libncurses5-dev zlib1g-dev gawk flex gettext wget unzip python \
python3 python3-pip python3-yaml libssl-dev rsync \
python3 python3-pip python3-yaml libssl-dev rsync llvm llvm-12 \
&& apt-get clean
RUN git config --global user.email "you@example.com"
RUN git config --global user.name "Your Name"

View File

@@ -0,0 +1,77 @@
# Copyright (c) Facebook, Inc. and its affiliates.
# All rights reserved.
#
# This source code is licensed under the license found in the
# LICENSE file in the root directory of this source tree.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=fbwifi
PKG_VERSION:=2
PKG_RELEASE:=0
PKG_LICENSE:=GPL-2.0
PKG_MAINTAINER:=Simon Kinane <skinane@fb.com>
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
include $(INCLUDE_DIR)/package.mk
define Package/fbwifi
SUBMENU:=Captive Portals
SECTION:=net
CATEGORY:=Network
DEPENDS:=+iptables +luasec +luasocket \
+libuci-lua +luaposix \
+lua-cjson +uhttpd
TITLE:=Facebook Wi-Fi
PKGARCH:=all
endef
define Package/fbwifi/description
Facebook Wi-Fi, an AP authorisation solution
endef
define Package/luci-app-fbwifi
SUBMENU:=3. Applications
SECTION:=luci
CATEGORY:=LuCI
TITLE:=LuCI support for Facebook Wi-Fi
DEPENDS:= \
+fbwifi \
+luci-base +luci-mod-network +luci-mod-status +luci-theme-bootstrap
endef
define Package/luci-app-fbwifi/description
LuCI support for Facebook Wi-Fi
endef
define Package/fbwifi/conffiles
/etc/config/fbwifi
endef
define Build/Prepare
endef
define Build/Configure
endef
define Build/Compile
endef
define Package/fbwifi/install
$(INSTALL_DIR) $(1)
$(CP) ./files/fbwifi/* $(1)/
endef
define Package/luci-app-fbwifi/install
$(INSTALL_DIR) $(1)
$(CP) ./files/luci-app-fbwifi/* $(1)
endef
$(eval $(call BuildPackage,fbwifi))
$(eval $(call BuildPackage,luci-app-fbwifi))

View File

@@ -0,0 +1,22 @@
# Facebook Wi-Fi v2.0 Reference Implementation for OpenWrt
## Getting started
Case studies for OEM customers are available at the official page of [Facebook Wi-Fi](https://www.facebook.com/facebook-wifi).
For OEM engineers, start by reading the init script in [files/etc/init.d/fbwifi](https://github.com/facebookincubator/fbc_owrt_feed/blob/master/fbwifi/files/etc/init.d/fbwifi)
To enable Facebook Wi-Fi, configure the gateway_token in `/etc/config/fbwifi`, and run `fbwifi enable`.
To disable Facebook Wi-Fi, run `fbwifi disable`.
## Contents
The 'files' subdirectory contains two subdirectories, one for the fbwifi
package that implements the Facebook Wi-Fi v2.0 standard for OpenWrt, and
another one containing a LuCI application to configure Facebook Wi-Fi.
The folder structures follow *nix conventions:
- 'etc' is the boot time scripts and configuration
- 'usr' contains procedural scripts, lua common code module and GUI prototype for luci
- 'www' contains the HTTP endpoints as CGI handlers

View File

@@ -0,0 +1,6 @@
config fbwifi 'main'
option enabled '0'
option gateway_token 'FBWIFI:GATEWAY|123456789|0123456789|abcdeABCDE123456789'
option http_port '2060'
option https_port '2061'
option zone 'lan'

View File

@@ -0,0 +1,10 @@
#!/bin/sh
[ "$ACTION" = ifup ] || exit 0
/etc/init.d/fbwifi enabled || exit 0
ip route get fibmatch 1.1.1.1 | grep -q "$DEVICE" || exit 0
logger -t fbwifi "Reloading fbwifi due to $ACTION of $INTERFACE ($DEVICE)"
/etc/init.d/fbwifi restart

View File

@@ -0,0 +1,43 @@
#!/bin/sh /etc/rc.common
START=90
USE_PROCD=1
reload_service() {
restart
}
service_triggers() {
procd_add_reload_trigger fbwifi
}
start_service() {
config_load fbwifi
config_get_bool enabled 'main' 'enabled' '0'
[ "$enabled" -eq 0 ] && return
config_get http_port main http_port
[ -z "$http_port" ] && {
logger -t fbwifi "required option http_port not set"
exit 1
}
config_get https_port main https_port
[ -z "$https_port" ] && {
logger -t fbwifi "required option https_port not set"
exit 1
}
logger "[fbwifi] Enabled; starting"
mkdir -p /tmp/fbwifi
/usr/sbin/fbwifi reload
procd_open_instance
procd_set_param command /usr/sbin/fbwifi_validate_token_db
procd_set_param respawn 1 300 0
procd_close_instance
}

View File

@@ -0,0 +1,156 @@
-- SPDX-License-Identifier: GPL-2.0-only
-- Copyright (c) Facebook, Inc. and its affiliates.
--
-- FBWIFI Lua library
-- function table
local fbwifi = {}
local http = require("ssl.https")
local json = require("cjson")
local log = require("posix.syslog")
local uci = require("uci")
function fbwifi.gateway_token()
token = uci.get("fbwifi.main.gateway_token")
if token and string.len(token) > 0 then
return token
else
log.syslog( log.LOG_WARNING, "[fbwifi] UCI option fbwifi.main.gateway_token is missing" )
return nil
end
end
function fbwifi.validate_token( token )
local valid = false
if string.len(token or '' ) > 0 then
GATEWAY_TOKEN = fbwifi.gateway_token()
URL="https://api.fbwifi.com/v2.0/token"
BODY="token="..token
body, code, headers = http.request(URL.."?access_token="..GATEWAY_TOKEN, BODY)
if code==200 then
valid = true
else
log.syslog(log.LOG_WARNING, "[fbwifi] validate_token:"..body)
end
end
return valid
end
local mac_to_purge=''
function remove_client_by_mac(client)
state = uci.cursor("/var/state", "/tmp/fbwifi")
for key, value in pairs(client) do
if
key == 'mac' and
value == mac_to_purge
then
log.syslog(log.LOG_INFO, string.format("[fbwifi] Purging DB entry %s for MAC %s", client['.name'] or 'unknown', mac_to_purge) )
state:delete("fbwifi", client['.name'])
return
end
end
end
function fbwifi.instate_client_rule( token, client_mac )
log.syslog(log.LOG_INFO, "[fbwifi] Validating client "..client_mac)
state = uci.cursor("/var/state", "/tmp/fbwifi")
state_name = "token_" .. token
RULE_COND="iptables -w -L FBWIFI_CLIENT_TO_INTERNET -t mangle | grep -i -q \"%s\""
RULE_FMT="iptables -w -t mangle -%s FBWIFI_CLIENT_TO_INTERNET -m mac --mac-source \"%s\" -j MARK --set-mark 0xfb"
local RULE
log.syslog(log.LOG_INFO, string.format("[fbwifi] Cleaning DB for MAC %s", client_mac) )
mac_to_purge = client_mac
state:foreach("fbwifi", "client", remove_client_by_mac)
log.syslog(log.LOG_INFO, string.format("[fbwifi] Adding DB entry %s for MAC %s", state_name, client_mac) )
state:set("fbwifi", state_name, "client")
state:set("fbwifi", state_name, "token", token)
state:set("fbwifi", state_name, "mac", client_mac)
state:set("fbwifi", state_name, "authenticated", "true")
-- verify a rule exists for the given client MAC,
-- OR install it
RULE=string.format(RULE_COND.." || "..RULE_FMT, client_mac, "A", client_mac)
log.syslog(log.LOG_INFO, string.format( "[fbwifi] Opening iptables for %s", client_mac ) )
res = os.execute(RULE)
if res ~= 0 then
log.syslog(log.LOG_WARNING, string.format( "[fbwifi] Failed to update iptables (%s)", res ) )
end
log.syslog(log.LOG_INFO, "[fbwifi] "..RULE)
state:save('fbwifi')
state:commit('fbwifi')
end
function fbwifi.revoke_client_rule( token )
if (token == nil) then
log.syslog(log.LOG_INFO, "[fbwifi] Invalidating token, but token is Nil")
return
end
log.syslog(log.LOG_INFO, string.format( "[fbwifi] Invalidating token (%s)", token) )
state = uci.cursor("/var/state", "/tmp/fbwifi")
state_name = "token_" .. token
client_mac = state:get("fbwifi", state_name, "mac")
if client_mac then
RULE_COND="iptables -w -L FBWIFI_CLIENT_TO_INTERNET -t mangle | grep -i -q \"%s\""
RULE_FMT="iptables -w -t mangle -%s FBWIFI_CLIENT_TO_INTERNET -m mac --mac-source \"%s\" -j MARK --set-mark 0xfb"
-- verify a rule exists for the given client MAC,
-- AND delete it
RULE=string.format(RULE_COND.." && "..RULE_FMT, client_mac, "D", client_mac)
res = os.execute(RULE)
if res ~= 0 then
log.syslog(log.LOG_WARNING, string.format( "[fbwifi] Failed to update iptables (%s)", res ) )
end
log.syslog(log.LOG_INFO, "[fbwifi] "..RULE)
state:delete("fbwifi", state_name)
state:save('fbwifi')
state:commit('fbwifi')
else
log.syslog(log.LOG_WARNING, string.format( "[fbwifi] Client MAC not found in DB (%s)", state_name ) )
end
end
function fbwifi.reset()
local success = false
GATEWAY_TOKEN = fbwifi.gateway_token()
URL="https://api.fbwifi.com/v2.0/gateway/reset"
BODY="{}"
body, code, headers = http.request(URL.."?access_token="..GATEWAY_TOKEN, BODY)
if code==200 then
log.syslog(log.LOG_INFO, "[fbwifi] Reset committed")
success = true
else
log.syslog(log.LOG_WARNING, "[fbwifi] Reset failed : "..body)
end
return success
end
--
-- Return the function table to the host script
--
return fbwifi

View File

@@ -0,0 +1,58 @@
#!/bin/sh
case "$1" in
disable)
uci set fbwifi.main.enabled=0
uci delete firewall.fbwifi
uci delete uhttpd.fbwifi_redirect
uci delete uhttpd.main.json_script
uci set uhttpd.main.cert='/etc/uhttpd.crt'
uci set uhttpd.main.key='/etc/uhttpd.key'
uci set uhttpd.main.rfc1918_filter=1
;;
enable)
uci set fbwifi.main.enabled=1
uci set firewall.fbwifi=include
uci set firewall.fbwifi.enabled=1
uci set firewall.fbwifi.family=ipv4
uci set firewall.fbwifi.path=/usr/share/fbwifi/firewall.include
uci set firewall.fbwifi.reload=1
uci set firewall.fbwifi.type=script
uci set uhttpd.fbwifi_redirect=uhttpd
uci set uhttpd.fbwifi_redirect.enabled=1
uci set uhttpd.fbwifi_redirect.cert='/tmp/fbwifi/https_server_cert'
uci set uhttpd.fbwifi_redirect.home='/dev/null'
uci set uhttpd.fbwifi_redirect.json_script='/tmp/fbwifi/uhttpd-redirect.json'
uci set uhttpd.fbwifi_redirect.key='/tmp/fbwifi/https_server_key'
uci set uhttpd.fbwifi_redirect.listen_http='0.0.0.0:2060'
uci set uhttpd.fbwifi_redirect.listen_https='0.0.0.0:2061'
uci set uhttpd.main.cert='/tmp/fbwifi/https_server_cert'
uci set uhttpd.main.json_script='/usr/share/fbwifi/uhttpd.json'
uci set uhttpd.main.key='/tmp/fbwifi/https_server_key'
uci set uhttpd.main.rfc1918_filter=0
;;
reload)
/usr/sbin/fbwifi_get_config
login_url=$(uci -c /var/state get fbwifi.main.captive_portal_url)
[ -z "$login_url" ] && {
logger -t fbwifi "captive_portal_url not available yet"
exit 1
}
printf '{ "request": [ ["redirect", "%s", 302] ] }' "$login_url" > /tmp/fbwifi/uhttpd-redirect.json
/etc/init.d/uhttpd restart
exit 0
;;
esac
uci commit
/etc/init.d/uhttpd restart
reload_config

View File

@@ -0,0 +1,8 @@
echo -e "Runtime configuration and token DB\n"
uci -c /var/state export fbwifi
echo -e "\nDynamic firewall flow rules\n"
iptables -t mangle -L FBWIFI_CLIENT_TO_INTERNET
echo -e "\nDHCP leases\n"
cat /tmp/dhcp.leases

View File

@@ -0,0 +1,39 @@
#!/usr/bin/lua
http = require("ssl.https")
json = require("cjson")
log = require("posix.syslog")
socket = require("socket")
require("uci")
fbwifi = require("fbwifi")
GATEWAY_TOKEN = fbwifi.gateway_token()
state = uci.cursor("/var/state", "/tmp/fbwifi")
payload="name="..socket.dns.gethostname()
function queue_ssid_update(iface)
bssid_file="/sys/class/net/br-"..iface["network"].."/address"
local file = io.open(bssid_file)
if file then
for line in file:lines() do
payload=payload.."&bssid[]="..line
end
file:close()
payload=payload.."ssid[]="..iface["ssid"]
else
log.syslog(log.LOG_WARNING, "[fbwifi] Failed to find BSSID for interface br-"..iface["network"])
end
end
state:foreach("wireless", "wifi-iface", queue_ssid_update)
URL="https://api.fbwifi.com/v2.0/gateway"
body, code, headers = http.request(URL.."?access_token="..GATEWAY_TOKEN, payload)
if code == 200 then
log.syslog(log.LOG_INFO, "[fbwifi] gateway information updated "..body)
os.exit(0)
else
log.syslog(log.LOG_WARNING, "[fbwifi] gateway API failed "..body)
os.exit(code)
end

View File

@@ -0,0 +1,111 @@
#!/usr/bin/lua
http = require("ssl.https")
json = require("cjson")
require("uci")
log = require("posix.syslog")
fbwifi = require("fbwifi")
GATEWAY_TOKEN = fbwifi.gateway_token()
http_port = uci.get("fbwifi.main.http_port")
https_port = uci.get("fbwifi.main.https_port")
statefile = assert(io.open("/var/state/fbwifi", "a"), "could not create state file")
statefile:close()
state = uci.cursor("/var/state", "/tmp/fbwifi")
URL="https://api.fbwifi.com/v2.0/gateway"
body, code, headers = http.request(URL.."?access_token="..GATEWAY_TOKEN.."&fields=config,config_version")
if code == 200 then
log.syslog(log.LOG_INFO, "[fbwifi] Got gateway config ("..code..")")
else
log.syslog(log.LOG_CRIT, "[fbwifi] Failed to get gateway config ("..code..")")
os.exit(1)
end
obj = json.decode(body)
function save_cert(name, value)
log.syslog(log.LOG_INFO, "[fbwifi] Saving cert "..name)
local f = assert(io.open("/tmp/fbwifi/"..name, "w"))
f:write(value)
f:close()
end
function process_redirect(ix, host)
IP_SET = "ip addr replace dev lo "..host
local result = os.execute(IP_SET)
if result == 0 then
log.syslog(log.LOG_INFO, "[fbwifi] Redirect address applied "..host)
else
log.syslog(log.LOG_WARNING, "[fbwifi] Failed to apply redirect address "..host)
end
ip = string.match(host, '([0-9\.]*)/([0-9]*)')
RULE_FMT="grep -q \"%s\" /etc/hosts || echo \"%s\tstar.fbwifigateway.net\" >> /etc/hosts"
HOSTS_RULE = string.format(RULE_FMT, ip, ip)
result = os.execute(HOSTS_RULE)
if result == 0 then
log.syslog(log.LOG_INFO, "[fbwifi] Cached redirect host for DNS")
else
log.syslog(log.LOG_WARNING, "[fbwifi] Failed to amend /etc/hosts")
log.syslog(log.LOG_INFO, "[fbwifi] "..HOSTS_RULE)
end
result = os.execute("iptables -t nat -A FBWIFI_HOST_REDIRLIST -p tcp --dport 80 -d "..ip.." -j ACCEPT # REDIRECT --to-ports "..http_port)
--print(result)
result = os.execute("iptables -t nat -A FBWIFI_HOST_REDIRLIST -p tcp --dport 443 -d "..ip.." -j ACCEPT # REDIRECT --to-ports "..https_port)
--print(result)
end
save_cert("https_server_cert", obj['config']['https_server_cert'])
save_cert("https_server_key", obj['config']['https_server_key'])
result = os.execute("iptables -t nat -F FBWIFI_HOST_REDIRLIST")
--print(result)
table.foreach(obj['config']['host_redirect_ips'], process_redirect)
RULE_FORMAT = "iptables -t mangle -A FBWIFI_TRAFFIC_ALLOWLIST -d %s -p %s --dport %s -j MARK --set-mark 0xfb"
function process_traffic_rule(ix, rule)
log.syslog(log.LOG_INFO, "[fbwifi] Traffic rule "..ix)
if rule["protocol"] == 6 then
PROTO = "tcp"
elseif rule["protocol"] == 17 then
PROTO = "udp"
end
RULE = string.format(RULE_FORMAT, rule["ip"], PROTO, rule["port"])
local result = os.execute(RULE)
if result == 0 then
log.syslog(log.LOG_INFO, "[fbwifi] Traffic rule "..ix)
else
log.syslog(log.LOG_WARNING, "[fbwifi] Failed to install traffic rule ; "..RULE)
end
end
local cross_origin_list = {}
function process_cross_origin_rule(ix, url)
log.syslog(log.LOG_INFO, "[fbwifi] Cross origin rule "..url)
table.insert(cross_origin_list, url)
end
function process_url(url_purpose, fqdn)
log.syslog(log.LOG_INFO, "[fbwifi] Caching "..url_purpose)
state:set("fbwifi", "main", url_purpose, fqdn)
end
state:set("fbwifi", "main", "config")
result = os.execute("iptables -t mangle -F FBWIFI_TRAFFIC_ALLOWLIST ")
--print(result)
table.foreach(obj['config']['traffic_allowlist'], process_traffic_rule)
table.foreach(obj['config']['cross_origin_allowlist'], process_cross_origin_rule)
table.foreach(obj['config']['urls'], process_url)
state:set("fbwifi", "main", "cross_origin_allow_rules", cross_origin_list)
state:set("fbwifi", "main", "config_version", obj['config_version'])
state:save('fbwifi')
state:commit('fbwifi')

View File

@@ -0,0 +1,75 @@
#!/usr/bin/lua
https = require("ssl.https")
json = require("cjson")
log = require("posix.syslog")
fbwifi = require("fbwifi")
require("uci")
state = uci.cursor("/var/state", "/tmp/fbwifi")
GATEWAY_TOKEN = fbwifi.gateway_token()
request = {
tokens = {},
traffic_type = "total",
config_version = state:get("fbwifi", "main", "config_version")
}
function queue_token(client)
request.tokens[client.token]={
incoming = json.null,
outgoing = json.null,
connected_time_sec = json.null,
inactive_time_sec = json.null,
signal_rssi_dbm = json.null,
--expected_tpus_mbps = json.null,
is_connected = true
}
end
state:foreach("fbwifi", "client", queue_token)
print( "\nRequest:\n"..json.encode(request) )
URL="https://api.fbwifi.com/v2.0/tokens"
BODY=string.format(
"tokens=%s&traffic_type=%s&config_version=%s",
json.encode(request.tokens),
"total",
state:get("fbwifi", "main", "config_version")
)
body, code, headers = https.request(URL.."?access_token="..GATEWAY_TOKEN, BODY)
if code then
print( "\nResponse:\n"..body )
end
response = json.decode(body)
--print(response)
--table.foreach(response,print)
--table.foreach(response.tokens,print)
if response.config_valid then
log.syslog(log.LOG_INFO, "[fbwifi] Config validated")
else
log.syslog(log.LOG_WARNING, "[fbwifi] config is stale, refreshing config")
local result = os.execute("/usr/sbin/fbwifi reload")
if result == 0 then
log.syslog(log.LOG_INFO, "[fbwifi] successfully fetched and loaded new config ")
else
log.syslog(log.LOG_WARNING, "[fbwifi] failed to fetch and load new config, possible stale config")
end
end
function process_token(token, metadata)
table.foreach(metadata,print)
if metadata.valid then
print("OK: "..token)
else
print("Nok: "..token)
fbwifi.revoke_client_rule( token )
end
end
table.foreach(response.tokens,process_token)

View File

@@ -0,0 +1,75 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0-only
# Copyright (c) Facebook, Inc. and its affiliates.
IPT4="/usr/sbin/iptables"
set -- --wait 1 --wait-interval 100
fbwifi_http_port="$(uci get fbwifi.main.http_port)"
[ -n "$fbwifi_http_port" ] || {
logger -t fbwifi "required option http_port not set"
exit 1
}
fbwifi_https_port="$(uci get fbwifi.main.https_port)"
[ -n "$fbwifi_https_port" ] || {
logger -t fbwifi "required option https_port not set"
exit 1
}
fbwifi_zone="$(uci get fbwifi.main.zone)"
[ -n "$fbwifi_zone" ] || {
logger -t fbwifi "required option zone not set"
exit 1
}
fbwifi_ifaces="$(fw3 -q zone "$fbwifi_zone")"
## Create custom chains
"$IPT4" "$@" -t filter -N FBWIFI_FORWARD 2>/dev/null
"$IPT4" "$@" -t filter -N FBWIFI_INPUT 2>/dev/null
"$IPT4" "$@" -t mangle -N FBWIFI_CLIENT_TO_INTERNET 2>/dev/null
"$IPT4" "$@" -t mangle -N FBWIFI_PREROUTING 2>/dev/null
"$IPT4" "$@" -t mangle -N FBWIFI_TRAFFIC_ALLOWLIST 2>/dev/null
"$IPT4" "$@" -t nat -N FBWIFI_CLIENT_TO_INTERNET 2>/dev/null
"$IPT4" "$@" -t nat -N FBWIFI_PREROUTING 2>/dev/null
"$IPT4" "$@" -t nat -N FBWIFI_HOST_REDIRLIST 2>/dev/null
## Flush custom chains
"$IPT4" "$@" -t filter -F FBWIFI_FORWARD
"$IPT4" "$@" -t filter -F FBWIFI_INPUT
"$IPT4" "$@" -t mangle -F FBWIFI_CLIENT_TO_INTERNET
"$IPT4" "$@" -t mangle -F FBWIFI_PREROUTING
"$IPT4" "$@" -t mangle -F FBWIFI_TRAFFIC_ALLOWLIST
"$IPT4" "$@" -t nat -F FBWIFI_CLIENT_TO_INTERNET
"$IPT4" "$@" -t nat -F FBWIFI_PREROUTING
"$IPT4" "$@" -t nat -F FBWIFI_HOST_REDIRLIST
## Populate custom chains
"$IPT4" "$@" -t filter -A FBWIFI_FORWARD -p udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT
"$IPT4" "$@" -t filter -A FBWIFI_FORWARD -m conntrack --ctstate NEW -m mark --mark 0xfb -j ACCEPT
"$IPT4" "$@" -t filter -A FBWIFI_FORWARD -j REJECT
"$IPT4" "$@" -t filter -A FBWIFI_INPUT -p tcp --dport "$fbwifi_http_port" -m conntrack --ctstate NEW -j ACCEPT
"$IPT4" "$@" -t filter -A FBWIFI_INPUT -p tcp --dport "$fbwifi_https_port" -m conntrack --ctstate NEW -j ACCEPT
"$IPT4" "$@" -t filter -A FBWIFI_INPUT -p tcp --dport 443 -m conntrack --ctstate NEW -j ACCEPT
"$IPT4" "$@" -t mangle -A FBWIFI_PREROUTING -j FBWIFI_CLIENT_TO_INTERNET
"$IPT4" "$@" -t mangle -A FBWIFI_PREROUTING -j FBWIFI_TRAFFIC_ALLOWLIST
"$IPT4" "$@" -t nat -A FBWIFI_PREROUTING -j FBWIFI_CLIENT_TO_INTERNET
"$IPT4" "$@" -t nat -A FBWIFI_CLIENT_TO_INTERNET -p tcp --dport 80 -m conntrack --ctstate NEW -j FBWIFI_HOST_REDIRLIST
"$IPT4" "$@" -t nat -A FBWIFI_CLIENT_TO_INTERNET -p tcp --dport 443 -m conntrack --ctstate NEW -j FBWIFI_HOST_REDIRLIST
"$IPT4" "$@" -t nat -A FBWIFI_CLIENT_TO_INTERNET -p udp --dport 443 -m conntrack --ctstate NEW -j FBWIFI_HOST_REDIRLIST
"$IPT4" "$@" -t nat -A FBWIFI_CLIENT_TO_INTERNET -p tcp --dport 80 -m conntrack --ctstate NEW -m mark --mark 0xfb -j ACCEPT
"$IPT4" "$@" -t nat -A FBWIFI_CLIENT_TO_INTERNET -p tcp --dport 443 -m conntrack --ctstate NEW -m mark --mark 0xfb -j ACCEPT
"$IPT4" "$@" -t nat -A FBWIFI_CLIENT_TO_INTERNET -p udp --dport 443 -m conntrack --ctstate NEW -m mark --mark 0xfb -j ACCEPT
"$IPT4" "$@" -t nat -A FBWIFI_CLIENT_TO_INTERNET -p tcp --dport 80 -m conntrack --ctstate NEW -j REDIRECT --to-ports "$fbwifi_http_port"
## Hook custom chains in firewall3 chains
"$IPT4" "$@" -t filter -I "zone_${fbwifi_zone}_input" 2 -j FBWIFI_INPUT
"$IPT4" "$@" -t filter -I "zone_${fbwifi_zone}_forward" 2 -j FBWIFI_FORWARD
"$IPT4" "$@" -t nat -I "zone_${fbwifi_zone}_prerouting" 2 -j FBWIFI_PREROUTING
# There are no firewall3 zone chains in the mangle table so we need to do this for all interfaces in the zone
for iface in $fbwifi_ifaces; do
"$IPT4" "$@" -t mangle -I PREROUTING -i "$iface" -j FBWIFI_PREROUTING
done

View File

@@ -0,0 +1,8 @@
{
"request": [
[ "if",
[ "regex", "REQUEST_URI", "^/fbwifi" ],
[ "rewrite", "/cgi-bin%REQUEST_URI%" ]
]
]
}

View File

@@ -0,0 +1,70 @@
#!/usr/bin/lua
require("uci")
log = require("posix.syslog")
fbwifi = require("fbwifi")
state = uci.cursor("/var/state", "/tmp/fbwifi")
function process_cors()
origin = os.getenv("HTTP_ORIGIN")
log.syslog(log.LOG_INFO, string.format("[fbwifi] [auth] process_cors origin %s", origin or 'not found') )
if string.len(origin or '') > 0 then
allow_list = state:get("fbwifi", "main", "cross_origin_allow_rules")
for _, value in pairs(allow_list) do
if value == origin then
log.syslog(log.LOG_INFO, "[fbwifi] [auth] process_cors Appending CORS Headers to HTTP")
print("Access-Control-Allow-Origin: "..origin)
print("Vary: Origin")
break
end
end
else
log.syslog(log.LOG_INFO, "[fbwifi] [auth] process_cors No CORS Headers added to Response")
end
end
method = os.getenv("REQUEST_METHOD")
if method == 'GET' then
log.syslog(log.LOG_INFO, "[fbwifi] [auth] GET handler")
print("Status: 302 Found")
print("Location: "..state:get("fbwifi", "main", "landing_page_url"))
process_cors()
print ('\n')
elseif method == 'POST' then
local token
log.syslog(log.LOG_INFO, "[fbwifi] [auth] POST handler")
process_cors()
print("Status: 200 OK")
form_data=io.read()
while form_data do
token = string.match(form_data, '[%d]+')
if string.len(token or '') > 14 then
client = os.getenv("REMOTE_ADDR")
f = io.popen("awk '/"..client..".*0x2/ { printf(\"%s\", $4) }' /proc/net/arp", 'r')
client_mac = assert(f:read('*a'))
f:close()
if fbwifi.validate_token(token) then
log.syslog(log.LOG_INFO, string.format( "[fbwifi] [auth] POST handler : Validating Token (%s) for MAC (%s)", token or 'nil', client_mac or 'nil') )
fbwifi.instate_client_rule(token, client_mac)
print("\n{\"valid\":true}\n")
else
log.syslog(log.LOG_WARNING, string.format( "[fbwifi] [auth] POST handler : ! Invalid token (%s) for mac (%s) !", token or 'nil', client_mac or 'nil') )
fbwifi.revoke_client_rule(token)
print("\n{\"valid\":false}\n")
end
log.syslog(log.LOG_INFO, "[fbwifi] [auth] POST handler completed")
return
end
form_data=io.read()
end
print ('\n')
log.syslog(log.LOG_WARNING, string.format("[fbwifi] [auth] POST handler : token not found" ))
fbwifi.revoke_client_rule(token)
print("\n{\"valid\":false}\n")
end

View File

@@ -0,0 +1,42 @@
#!/usr/bin/lua
json = require("cjson")
require("uci")
state = uci.cursor("/var/state", "/tmp/fbwifi")
client_mac = ""
token = ""
response = {}
response['venue-info-url'] = state:get("fbwifi", "main", "capport_venue_info_url")
function map_remote_mac_to_token(client)
for key, value in pairs(client) do
if
key == 'mac' and
value == client_mac
then
token = client.token
return false
end
end
end
function hasValidToken(client_ip)
f = io.popen("awk '/"..client_ip..".*0x2/ { printf(\"%s\", $4) }' /proc/net/arp", 'r')
client_mac = assert(f:read('*a'))
f:close()
state:foreach("fbwifi", "client", map_remote_mac_to_token)
return 0 < string.len(token)
end
print("Content-type: application/captive+json; charset=utf-8\n")
client = os.getenv("REMOTE_ADDR")
response['captive'] = not hasValidToken(client)
if response['captive'] then
response['user-portal-url'] = state:get("fbwifi", "main", "captive_portal_url")
end
print( json.encode(response) )

View File

@@ -0,0 +1,57 @@
#!/usr/bin/lua
json = require("cjson")
fbwifi = require("fbwifi")
state = uci.cursor("/var/state", "/tmp/fbwifi")
GATEWAY_TOKEN = fbwifi.gateway_token()
response = { api_version = "2.0", token = json.null }
client_mac = ""
function process_cors()
origin = os.getenv("HTTP_ORIGIN")
if string.len(origin or '') > 0 then
allow_list = state:get("fbwifi", "main", "cross_origin_allow_rules")
for _, value in pairs(allow_list) do
if value == origin then
print("Access-Control-Allow-Origin: "..origin)
print("Vary: Origin")
break
end
end
end
end
function map_remote_mac_to_token(client)
for key, value in pairs(client) do
if
key == 'mac' and
value == client_mac
then
response.token = client.token
return false -- escape outer loop
end
end
end
function getClientToken(client_ip)
f = io.popen("awk '/"..client_ip..".*0x2/ { printf(\"%s\", $4) }' /proc/net/arp", 'r')
client_mac = assert(f:read('*a'))
f:close()
state:foreach("fbwifi", "client", map_remote_mac_to_token)
end
function getGatewayId()
id = string.match(GATEWAY_TOKEN, 'FBWIFI:GATEWAY|[0-9]*|([0-9]*)')
return id
end
process_cors()
print("Content-type: application/json; charset=utf-8\n")
getClientToken(os.getenv("REMOTE_ADDR"))
response.gateway_id = getGatewayId()
print( json.encode(response) )

View File

@@ -0,0 +1,12 @@
-- SPDX-License-Identifier: GPL-2.0-only
-- Copyright (c) Facebook, Inc. and its affiliates.
module("luci.controller.fbwifi", package.seeall)
sys = require "luci.sys"
ut = require "luci.util"
function index()
entry({"admin", "network", "fbwifi"}, template("fbwifi"), "Facebook Wi-Fi", 90).dependent=false
end

View File

@@ -0,0 +1,16 @@
<%#
Copyright
Licensed to the public under the GNU General Public License v2.
-%>
<%+header%>
<h1>Facebook Wi-Fi</h1>
<%
require("uci")
state = uci.cursor("/var/state", "/tmp/fbwifi")
url = state:get("fbwifi", "main", "captive_portal_config_url")
%>
<a href="<% print(url) %>">Configure FB business page</a>
<%+footer%>

View File

@@ -0,0 +1,42 @@
#
# Copyright (C) 2016 LEDE
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=sched-cake
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/dtaht/sch_cake.git
PKG_SOURCE_DATE:=2021-07-09
PKG_SOURCE_VERSION:=d9e1398cc9091e9e7c7a740361e4617b75c24427
#PKG_MIRROR_HASH:=5bf06a804824db36ae393fc174aeec7b12633176e05a765c0931b39df5bd34df
PKG_MAINTAINER:=Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
include $(INCLUDE_DIR)/package.mk
define KernelPackage/sched-cake
SUBMENU:=Network Support
TITLE:=Cake fq_codel/blue derived shaper
URL:=https://github.com/dtaht/sch_cake
FILES:=$(PKG_BUILD_DIR)/sch_cake.ko
AUTOLOAD:=$(call AutoLoad,75,sch_cake)
DEPENDS:=+kmod-ipt-conntrack
endef
include $(INCLUDE_DIR)/kernel-defaults.mk
define KernelPackage/sched-cake/description
Common Applications Kept Enhanced fq_codel/blue derived shaper
endef
define Build/Compile
$(KERNEL_MAKE) SUBDIRS="$(PKG_BUILD_DIR)" modules
endef
$(eval $(call KernelPackage,sched-cake))

View File

@@ -0,0 +1,20 @@
Index: sched-cake-2021-07-09-d9e1398c/cobalt_compat.h
===================================================================
--- sched-cake-2021-07-09-d9e1398c.orig/cobalt_compat.h
+++ sched-cake-2021-07-09-d9e1398c/cobalt_compat.h
@@ -95,15 +95,6 @@ static inline unsigned int __tcp_hdrlen(
}
#endif
-#if KERNEL_VERSION(4, 6, 0) > LINUX_VERSION_CODE
-static inline int skb_try_make_writable(struct sk_buff *skb,
- unsigned int write_len)
-{
- return skb_cloned(skb) && !skb_clone_writable(skb, write_len) &&
- pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
-}
-#endif
-
#if KERNEL_VERSION(4, 11, 0) > LINUX_VERSION_CODE
static inline int skb_mac_offset(const struct sk_buff *skb)
{

View File

@@ -6,7 +6,7 @@ PKG_SOURCE_PROTO:=git
PKG_BRANCH:=master
PKG_RELEASE:=2
PKG_SOURCE_URL:=https://source.codeaurora.org/quic/qsdk/oss/lklm/nss-clients/
PKG_VERSION:=9136ef60bf68ceed760781d3acbeddb05470e432
PKG_VERSION:=153998d70fdba508a59a28c13a606032cbf32686
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
@@ -18,23 +18,12 @@ MAKE_OPTS:=
include $(INCLUDE_DIR)/package.mk
# Keep default as ipq806x for branches that does not have subtarget framework
ifeq ($(CONFIG_TARGET_ipq),y)
subtarget:=$(SUBTARGET)
else
subtarget:=$(CONFIG_TARGET_BOARD)
endif
ifneq (, $(findstring $(subtarget), "ipq807x" "ipq807x_ipq807x" "ipq60xx" "ipq807x_ipq60xx"))
# DTLS Manager v2.0 for Hawkeye/Cypress
DTLSMGR_DIR:=v2.0
# IPsec Manager v2.0 for Hawkeye/Cypress
IPSECMGR_DIR:=v2.0
else
# DTLS Manager v1.0 for Akronite.
DTLSMGR_DIR:=v1.0
# IPsec Manager v1.0 for Akronite.
IPSECMGR_DIR:=v1.0
endif
define KernelPackage/qca-nss-drv-tun6rd
SECTION:=kernel
@@ -437,6 +426,20 @@ define Build/InstallDev/qca-nss-clients
$(CP) $(PKG_BUILD_DIR)/exports/* $(1)/usr/include/qca-nss-clients/
endef
define KernelPackage/qca-nss-drv-wifi-meshmgr
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Network Devices
DEPENDS:=+kmod-qca-nss-drv @!LINUX_3_18
TITLE:=NSS WiFi-Mesh Manager for QCA NSS driver
FILES:=$(PKG_BUILD_DIR)/wifi_meshmgr/qca-nss-wifi-meshmgr.ko
AUTOLOAD:=$(call AutoLoad,51,qca-nss-wifi-meshmgr)
endef
define KernelPackage/qca-nss-drv-wifi-meshmgr/Description
Kernel module for WiFi Mesh manager
endef
define Build/InstallDev
$(call Build/InstallDev/qca-nss-clients,$(1))
endef
@@ -585,6 +588,10 @@ ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-mirror),)
MAKE_OPTS+=mirror=y
endif
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-wifi-meshmgr),)
MAKE_OPTS+=wifi-meshmgr=y
endif
define Build/Compile
$(MAKE) -C "$(LINUX_DIR)" $(strip $(MAKE_OPTS)) \
CROSS_COMPILE="$(TARGET_CROSS)" \
@@ -624,3 +631,4 @@ $(eval $(call KernelPackage,qca-nss-drv-vxlanmgr))
$(eval $(call KernelPackage,qca-nss-drv-match))
#$(eval $(call KernelPackage,qca-nss-drv-tlsmgr))
$(eval $(call KernelPackage,qca-nss-drv-mirror))
$(eval $(call KernelPackage,qca-nss-drv-wifi-meshmgr))

View File

@@ -30,7 +30,7 @@ NSS_DP_INCLUDE += -I$(obj)/hal/gmac_hal_ops/syn/gmac
endif
ccflags-y += $(NSS_DP_INCLUDE)
ccflags-y += -Werror
ccflags-y += -Wall -Werror
ifeq ($(SoC),$(filter $(SoC),ipq807x ipq807x_64 ipq60xx ipq60xx_64))
ccflags-y += -DNSS_DP_PPE_SUPPORT
@@ -43,7 +43,7 @@ endif
ifeq ($(SoC),$(filter $(SoC),ipq807x ipq807x_64))
qca-nss-dp-objs += hal/arch/ipq807x/nss_ipq807x.o
ccflags-y += -DNSS_DP_IPQ807X
ccflags-y += -DNSS_DP_IPQ807X -DNSS_DP_EDMA_TX_SMALL_PKT_WAR
endif
ifeq ($(SoC),$(filter $(SoC),ipq50xx ipq50xx_64))

View File

@@ -68,8 +68,13 @@ static void nss_dp_hal_tcsr_set(void)
* If TZ is not enabled, we can write to the register directly.
*/
if (qcom_scm_is_available()) {
#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 4, 0))
err = qcom_scm_tcsr_reg_write((tcsr_base + TCSR_GMAC_AXI_CACHE_OVERRIDE_OFFSET),
TCSR_GMAC_AXI_CACHE_OVERRIDE_VALUE);
#else
err = qti_scm_tcsr_reg_write((tcsr_base + TCSR_GMAC_AXI_CACHE_OVERRIDE_OFFSET),
TCSR_GMAC_AXI_CACHE_OVERRIDE_VALUE);
#endif
if (err) {
pr_err("%s: SCM TCSR write error: %d\n", __func__, err);
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2016-2020, The Linux Foundation. All rights reserved.
* Copyright (c) 2016-2021, The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@@ -67,6 +67,76 @@ void edma_reg_write(uint32_t reg_off, uint32_t val)
writel(val, edma_hw.reg_base + reg_off);
}
/*
* edma_disable_interrupts()
* Disable EDMA RX/TX interrupt masks.
*/
static void edma_disable_interrupts(void)
{
struct edma_rxdesc_ring *rxdesc_ring = NULL;
struct edma_rxfill_ring *rxfill_ring = NULL;
struct edma_txcmpl_ring *txcmpl_ring = NULL;
int i;
for (i = 0; i < edma_hw.rxdesc_rings; i++) {
rxdesc_ring = &edma_hw.rxdesc_ring[i];
edma_reg_write(EDMA_REG_RXDESC_INT_MASK(rxdesc_ring->id),
EDMA_MASK_INT_CLEAR);
}
for (i = 0; i < edma_hw.txcmpl_rings; i++) {
txcmpl_ring = &edma_hw.txcmpl_ring[i];
edma_reg_write(EDMA_REG_TX_INT_MASK(txcmpl_ring->id),
EDMA_MASK_INT_CLEAR);
}
for (i = 0; i < edma_hw.rxfill_rings; i++) {
rxfill_ring = &edma_hw.rxfill_ring[i];
edma_reg_write(EDMA_REG_RXFILL_INT_MASK(rxfill_ring->id),
EDMA_MASK_INT_CLEAR);
}
/*
* Clear MISC interrupt mask.
*/
edma_reg_write(EDMA_REG_MISC_INT_MASK, EDMA_MASK_INT_CLEAR);
}
/*
* edma_enable_interrupts()
* Enable RX/TX EDMA interrupt masks.
*/
static void edma_enable_interrupts(void)
{
struct edma_rxdesc_ring *rxdesc_ring = NULL;
struct edma_rxfill_ring *rxfill_ring = NULL;
struct edma_txcmpl_ring *txcmpl_ring = NULL;
int i;
for (i = 0; i < edma_hw.rxfill_rings; i++) {
rxfill_ring = &edma_hw.rxfill_ring[i];
edma_reg_write(EDMA_REG_RXFILL_INT_MASK(rxfill_ring->id),
edma_hw.rxfill_intr_mask);
}
for (i = 0; i < edma_hw.txcmpl_rings; i++) {
txcmpl_ring = &edma_hw.txcmpl_ring[i];
edma_reg_write(EDMA_REG_TX_INT_MASK(txcmpl_ring->id),
edma_hw.txcmpl_intr_mask);
}
for (i = 0; i < edma_hw.rxdesc_rings; i++) {
rxdesc_ring = &edma_hw.rxdesc_ring[i];
edma_reg_write(EDMA_REG_RXDESC_INT_MASK(rxdesc_ring->id),
edma_hw.rxdesc_intr_mask);
}
/*
* Enable MISC interrupt mask.
*/
edma_reg_write(EDMA_REG_MISC_INT_MASK, edma_hw.misc_intr_mask);
}
/*
* nss_dp_edma_if_open()
* Do slow path data plane open
@@ -85,6 +155,12 @@ static int edma_if_open(struct nss_dp_data_plane_ctx *dpc,
return NSS_DP_SUCCESS;
napi_enable(&edma_hw.napi);
/*
* Enable the interrupt masks.
*/
edma_enable_interrupts();
return NSS_DP_SUCCESS;
}
@@ -97,6 +173,11 @@ static int edma_if_close(struct nss_dp_data_plane_ctx *dpc)
if (--edma_hw.active != 0)
return NSS_DP_SUCCESS;
/*
* Disable the interrupt masks.
*/
edma_disable_interrupts();
/*
* Disable NAPI
*/
@@ -311,9 +392,6 @@ static int edma_if_deinit(struct nss_dp_data_plane_ctx *dpc)
*/
static int edma_irq_init(void)
{
struct edma_rxdesc_ring *rxdesc_ring = NULL;
struct edma_rxfill_ring *rxfill_ring = NULL;
struct edma_txcmpl_ring *txcmpl_ring = NULL;
int err;
uint32_t entry_num, i;
@@ -433,28 +511,6 @@ static int edma_irq_init(void)
goto misc_intr_req_fail;
}
/*
* Set interrupt mask
*/
for (i = 0; i < edma_hw.rxfill_rings; i++) {
rxfill_ring = &edma_hw.rxfill_ring[i];
edma_reg_write(EDMA_REG_RXFILL_INT_MASK(rxfill_ring->id),
edma_hw.rxfill_intr_mask);
}
for (i = 0; i < edma_hw.txcmpl_rings; i++) {
txcmpl_ring = &edma_hw.txcmpl_ring[i];
edma_reg_write(EDMA_REG_TX_INT_MASK(txcmpl_ring->id),
edma_hw.txcmpl_intr_mask);
}
for (i = 0; i < edma_hw.rxdesc_rings; i++) {
rxdesc_ring = &edma_hw.rxdesc_ring[i];
edma_reg_write(EDMA_REG_RXDESC_INT_MASK(rxdesc_ring->id),
edma_hw.rxdesc_intr_mask);
}
edma_reg_write(EDMA_REG_MISC_INT_MASK, edma_hw.misc_intr_mask);
return 0;
misc_intr_req_fail:

View File

@@ -1,6 +1,6 @@
/*
**************************************************************************
* Copyright (c) 2016, 2018-2020, The Linux Foundation. All rights reserved.
* Copyright (c) 2016, 2018-2021, The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@@ -30,7 +30,7 @@
#define EDMA_NAPI_WORK 100
#define EDMA_START_GMACS NSS_DP_START_IFNUM
#define EDMA_MAX_GMACS NSS_DP_HAL_MAX_PORTS
#define EDMA_TX_PKT_MIN_SIZE 33
#define EDMA_TX_PKT_MIN_SIZE 33 /* IPQ807x EDMA needs a minimum packet size of 33 bytes */
#if defined(NSS_DP_IPQ60XX)
#define EDMA_MAX_TXCMPL_RINGS 24 /* Max TxCmpl rings */
#else

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2016-2018, 2020, The Linux Foundation. All rights reserved.
* Copyright (c) 2016-2018, 2020-21, The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@@ -524,7 +524,7 @@ enum edma_tx edma_ring_xmit(struct edma_hw *ehw,
{
struct nss_dp_dev *dp_dev = netdev_priv(netdev);
struct edma_txdesc_desc *txdesc = NULL;
uint16_t buf_len = skb_headlen(skb);
uint16_t buf_len;
uint16_t hw_next_to_use, hw_next_to_clean, chk_idx;
uint32_t data;
uint32_t store_index = 0;
@@ -560,6 +560,28 @@ enum edma_tx edma_ring_xmit(struct edma_hw *ehw,
return EDMA_TX_DESC;
}
#if defined(NSS_DP_EDMA_TX_SMALL_PKT_WAR)
/*
* IPQ807x EDMA hardware can't process the packet if the packet size is
* less than EDMA_TX_PKT_MIN_SIZE (33 Byte). So, if the packet size
* is indeed less than EDMA_TX_PKT_MIN_SIZE, perform padding
* (if possible), otherwise drop the packet.
* Using skb_padto() API for padding the packet. This API will drop
* the packet if the padding is not possible.
*/
if (unlikely(skb->len < EDMA_TX_PKT_MIN_SIZE)) {
if (skb_padto(skb, EDMA_TX_PKT_MIN_SIZE)) {
netdev_dbg(netdev, "padding couldn't happen, skb is freed.\n");
netdev->stats.tx_dropped++;
spin_unlock_bh(&txdesc_ring->tx_lock);
return EDMA_TX_OK;
}
skb->len = EDMA_TX_PKT_MIN_SIZE;
}
#endif
buf_len = skb_headlen(skb);
/*
* Deliver the ptp packet to phy driver for TX timestamping
*/

View File

@@ -1,6 +1,6 @@
/*
**************************************************************************
* Copyright (c) 2017-2020, The Linux Foundation. All rights reserved.
* Copyright (c) 2017-2021, The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@@ -208,6 +208,10 @@ static int nss_dp_attr_set(struct net_device *dev,
struct switchdev_trans *trans)
{
struct nss_dp_dev *dp_priv = (struct nss_dp_dev *)netdev_priv(dev);
struct net_device *upper_dev;
struct vlan_dev_priv *vlan;
struct list_head *iter;
uint32_t stp_state = attr->u.stp_state;
if (switchdev_trans_ph_prepare(trans))
return 0;
@@ -218,7 +222,33 @@ static int nss_dp_attr_set(struct net_device *dev,
netdev_dbg(dev, "set brport_flags %lu\n", attr->u.brport_flags);
return 0;
case SWITCHDEV_ATTR_ID_PORT_STP_STATE:
return nss_dp_stp_state_set(dp_priv, attr->u.stp_state);
/*
* The stp state is not changed to FAL_STP_DISABLED if
* the net_device (dev) has any vlan configured. Otherwise
* traffic on other vlan(s) will not work.
*
* Note: STP for VLANs is not supported by PPE.
*/
if ((stp_state == BR_STATE_DISABLED) ||
(stp_state == BR_STATE_BLOCKING)) {
rcu_read_lock();
netdev_for_each_upper_dev_rcu(dev, upper_dev, iter) {
if (!is_vlan_dev(upper_dev))
continue;
vlan = vlan_dev_priv(upper_dev);
if (vlan->real_dev == dev) {
rcu_read_unlock();
netdev_dbg(dev, "Do not update stp state to: %u since vlan id: %d is configured on netdevice: %s\n",
stp_state, vlan->vlan_id, vlan->real_dev->name);
return 0;
}
}
rcu_read_unlock();
}
return nss_dp_stp_state_set(dp_priv, stp_state);
default:
return -EOPNOTSUPP;
}

View File

@@ -46,7 +46,7 @@ ifneq (, $(findstring $(subtarget), "ipq807x" "ipq807x_64" "ipq60xx" "ipq60xx_64
endif
endef
EXTRA_CFLAGS+= -I$(STAGING_DIR)/usr/include/qca-nss-gmac -I$(STAGING_DIR)/usr/include/qca-nss-dp
EXTRA_CFLAGS+= -I$(STAGING_DIR)/usr/include/qca-nss-gmac -I$(STAGING_DIR)/usr/include/qca-nss-dp -I$(STAGING_DIR)/usr/include/qca-ssdk
# Keeping default as ipq806x for branches that does not have subtarget framework
subtarget:=$(SUBTARGET)

View File

@@ -8,8 +8,6 @@ obj-m += qca-nss-drv.o
# List the files that belong to the driver in alphabetical order.
#
qca-nss-drv-objs := \
nss_bridge.o \
nss_bridge_log.o \
nss_cmn.o \
nss_core.o \
nss_coredump.o \
@@ -29,16 +27,6 @@ qca-nss-drv-objs := \
nss_ipv4_stats.o \
nss_ipv4_strings.o \
nss_ipv4_log.o \
nss_ipv4_reasm.o \
nss_ipv4_reasm_stats.o \
nss_ipv4_reasm_strings.o \
nss_ipv6.o \
nss_ipv6_stats.o \
nss_ipv6_strings.o \
nss_ipv6_log.o \
nss_ipv6_reasm.o \
nss_ipv6_reasm_stats.o \
nss_ipv6_reasm_strings.o \
nss_log.o \
nss_lso_rx.o \
nss_lso_rx_stats.o \
@@ -70,21 +58,48 @@ qca-nss-drv-objs := \
nss_wifi_log.o \
nss_wifi_stats.o \
nss_wifi_vdev.o \
nss_wifi_if.o \
nss_wifi_if_stats.o \
nss_wifili.o \
nss_wifili_log.o \
nss_wifili_stats.o \
nss_wifili_strings.o \
nss_wifi_mac_db.o \
nss_wifi_ext_vdev.o \
nss_wifi_ext_vdev_stats.o \
nss_wifi_ext_vdev_log.o
nss_wifi_mac_db.o
# Base NSS data plane/HAL support
qca-nss-drv-objs += nss_data_plane/nss_data_plane_common.o
qca-nss-drv-objs += nss_hal/nss_hal.o
ifneq "$(NSS_DRV_BRIDGE_ENABLE)" "n"
ccflags-y += -DNSS_DRV_BRIDGE_ENABLE
qca-nss-drv-objs += \
nss_bridge.o \
nss_bridge_log.o
endif
ifneq "$(NSS_DRV_WIFI_EXT_VDEV_ENABLE)" "n"
ccflags-y += -DNSS_DRV_WIFI_EXT_VDEV_ENABLE
qca-nss-drv-objs += \
nss_wifi_ext_vdev.o \
nss_wifi_ext_vdev_stats.o \
nss_wifi_ext_vdev_log.o
endif
ifneq "$(NSS_DRV_WIFI_MESH_ENABLE)" "n"
ccflags-y += -DNSS_DRV_WIFI_MESH_ENABLE
qca-nss-drv-objs += \
nss_wifi_mesh.o \
nss_wifi_mesh_log.o \
nss_wifi_mesh_stats.o \
nss_wifi_mesh_strings.o
endif
ifneq "$(NSS_DRV_IPV4_REASM_ENABLE)" "n"
ccflags-y += -DNSS_DRV_IPV4_REASM_ENABLE
qca-nss-drv-objs += \
nss_ipv4_reasm.o \
nss_ipv4_reasm_stats.o \
nss_ipv4_reasm_strings.o
endif
ifneq "$(NSS_DRV_L2TP_ENABLE)" "n"
ccflags-y += -DNSS_DRV_L2TP_ENABLE
qca-nss-drv-objs += \
@@ -109,6 +124,22 @@ qca-nss-drv-objs += \
nss_pvxlan_stats.o
endif
ifneq "$(NSS_DRV_IPV6_ENABLE)" "n"
ccflags-y += -DNSS_DRV_IPV6_ENABLE
qca-nss-drv-objs += \
nss_ipv6.o \
nss_ipv6_stats.o \
nss_ipv6_strings.o \
nss_ipv6_log.o
ifneq "$(NSS_DRV_IPV6_REASM_ENABLE)" "n"
ccflags-y += -DNSS_DRV_IPV6_REASM_ENABLE
qca-nss-drv-objs += \
nss_ipv6_reasm.o \
nss_ipv6_reasm_stats.o \
nss_ipv6_reasm_strings.o
endif
endif
ifneq "$(NSS_DRV_TSTAMP_ENABLE)" "n"
ccflags-y += -DNSS_DRV_TSTAMP_ENABLE
qca-nss-drv-objs += \
@@ -121,7 +152,8 @@ ccflags-y += -DNSS_DRV_GRE_ENABLE
qca-nss-drv-objs += \
nss_gre.o \
nss_gre_log.o \
nss_gre_stats.o
nss_gre_stats.o \
nss_gre_strings.o
endif
ifneq "$(NSS_DRV_GRE_REDIR_ENABLE)" "n"
@@ -132,13 +164,17 @@ qca-nss-drv-objs += \
nss_gre_redir_lag_ds.o \
nss_gre_redir_lag_ds_log.o \
nss_gre_redir_lag_ds_stats.o \
nss_gre_redir_lag_ds_strings.o \
nss_gre_redir_lag_us.o \
nss_gre_redir_lag_us_log.o \
nss_gre_redir_lag_us_stats.o \
nss_gre_redir_lag_us_strings.o \
nss_gre_redir_stats.o \
nss_gre_redir_strings.o \
nss_gre_redir_mark.o \
nss_gre_redir_mark_log.o \
nss_gre_redir_mark_stats.o
nss_gre_redir_mark_stats.o \
nss_gre_redir_mark_strings.o
endif
ifneq "$(NSS_DRV_GRE_TUNNEL_ENABLE)" "n"
@@ -146,7 +182,8 @@ ccflags-y += -DNSS_DRV_GRE_TUNNEL_ENABLE
qca-nss-drv-objs += \
nss_gre_tunnel.o \
nss_gre_tunnel_log.o \
nss_gre_tunnel_stats.o
nss_gre_tunnel_stats.o \
nss_gre_tunnel_strings.o
endif
ifneq "$(NSS_DRV_CAPWAP_ENABLE)" "n"
@@ -255,7 +292,8 @@ ccflags-y += -DNSS_DRV_CLMAP_ENABLE
qca-nss-drv-objs += \
nss_clmap.o \
nss_clmap_log.o \
nss_clmap_stats.o
nss_clmap_stats.o \
nss_clmap_strings.o
endif
@@ -272,7 +310,8 @@ ccflags-y += -DNSS_DRV_MATCH_ENABLE
qca-nss-drv-objs += \
nss_match.o \
nss_match_log.o \
nss_match_stats.o
nss_match_stats.o \
nss_match_strings.o
endif
ifneq "$(NSS_DRV_MIRROR_ENABLE)" "n"
@@ -280,7 +319,17 @@ ccflags-y += -DNSS_DRV_MIRROR_ENABLE
qca-nss-drv-objs += \
nss_mirror.o \
nss_mirror_log.o \
nss_mirror_stats.o
nss_mirror_stats.o \
nss_mirror_strings.o
endif
ifneq "$(NSS_DRV_UDP_ST_ENABLE)" "n"
ccflags-y += -DNSS_DRV_UDP_ST_ENABLE
qca-nss-drv-objs += \
nss_udp_st.o \
nss_udp_st_log.o \
nss_udp_st_stats.o \
nss_udp_st_strings.o
endif
ifeq ($(SoC),$(filter $(SoC),ipq806x))
@@ -330,6 +379,7 @@ qca-nss-drv-objs += nss_data_plane/nss_data_plane.o \
nss_ppe.o \
nss_ppe_log.o \
nss_ppe_stats.o \
nss_ppe_strings.o \
nss_ppe_vp.o \
nss_ppe_vp_log.o \
nss_ppe_vp_stats.o
@@ -341,7 +391,9 @@ ifneq "$(NSS_DRV_IPSEC_ENABLE)" "n"
ccflags-y += -DNSS_DRV_IPSEC_ENABLE
qca-nss-drv-objs += \
nss_ipsec_cmn_log.o \
nss_ipsec_cmn.o
nss_ipsec_cmn.o \
nss_ipsec_cmn_stats.o \
nss_ipsec_cmn_strings.o
endif
ifneq "$(NSS_DRV_CRYPTO_ENABLE)" "n"
@@ -351,6 +403,8 @@ ccflags-y += -DNSS_DRV_DMA_ENABLE
qca-nss-drv-objs += \
nss_crypto_cmn.o \
nss_crypto_cmn_log.o \
nss_crypto_cmn_stats.o \
nss_crypto_cmn_strings.o \
nss_dma.o \
nss_dma_log.o \
nss_dma_stats.o \
@@ -361,21 +415,26 @@ ifneq "$(NSS_DRV_DTLS_ENABLE)" "n"
ccflags-y += -DNSS_DRV_DTLS_ENABLE
qca-nss-drv-objs += \
nss_dtls_cmn.o \
nss_dtls_cmn_log.o
nss_dtls_cmn_log.o \
nss_dtls_cmn_stats.o \
nss_dtls_cmn_strings.o
endif
ifneq "$(NSS_DRV_QVPN_ENABLE)" "n"
ccflags-y += -DNSS_DRV_QVPN_ENABLE
qca-nss-drv-objs += \
nss_qvpn.o \
nss_qvpn_stats.o \
nss_qvpn_log.o
nss_qvpn.o \
nss_qvpn_log.o \
nss_qvpn_stats.o \
nss_qvpn_strings.o
endif
ifneq "$(NSS_DRV_TLS_ENABLE)" "n"
ccflags-y += -DNSS_DRV_TLS_ENABLE
qca-nss-drv-objs += \
nss_tls.o \
nss_tls_log.o
nss_tls_log.o \
nss_tls_stats.o \
nss_tls_strings.o
endif
endif
@@ -411,21 +470,27 @@ ifneq "$(NSS_DRV_IPSEC_ENABLE)" "n"
ccflags-y += -DNSS_DRV_IPSEC_ENABLE
qca-nss-drv-objs += \
nss_ipsec_cmn_log.o \
nss_ipsec_cmn.o
nss_ipsec_cmn.o \
nss_ipsec_cmn_stats.o \
nss_ipsec_cmn_strings.o
endif
ifneq "$(NSS_DRV_CRYPTO_ENABLE)" "n"
ccflags-y += -DNSS_DRV_CRYPTO_ENABLE
qca-nss-drv-objs += \
nss_crypto_cmn.o \
nss_crypto_cmn_log.o
nss_crypto_cmn_log.o \
nss_crypto_cmn_stats.o \
nss_crypto_cmn_strings.o
endif
ifneq "$(NSS_DRV_DTLS_ENABLE)" "n"
ccflags-y += -DNSS_DRV_DTLS_ENABLE
qca-nss-drv-objs += \
nss_dtls_cmn.o \
nss_dtls_cmn_log.o
nss_dtls_cmn_log.o \
nss_dtls_cmn_stats.o \
nss_dtls_cmn_strings.o
endif
ccflags-y += -I$(obj)/nss_hal/ipq50xx -DNSS_HAL_IPQ50XX_SUPPORT -DNSS_MULTI_H2N_DATA_RING_SUPPORT
endif
@@ -433,7 +498,7 @@ endif
ccflags-y += -I$(obj)/nss_hal/include -I$(obj)/nss_data_plane/include -I$(obj)/exports -DNSS_DEBUG_LEVEL=0 -DNSS_PKT_STATS_ENABLED=1
ccflags-y += -I$(obj)/nss_data_plane/hal/include
ccflags-y += -DNSS_PM_DEBUG_LEVEL=0 -DNSS_SKB_REUSE_SUPPORT=1
ccflags-y += -Werror
ccflags-y += -Wall -Werror
KERNELVERSION := $(word 1, $(subst ., ,$(KERNELVERSION))).$(word 2, $(subst ., ,$(KERNELVERSION)))

524
feeds/ipq807x/qca-nss-drv/src/exports/nss_api_if.h Normal file → Executable file
View File

@@ -1,6 +1,6 @@
/*
**************************************************************************
* Copyright (c) 2013-2020, The Linux Foundation. All rights reserved.
* Copyright (c) 2013-2021, The Linux Foundation. All rights reserved.
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all copies.
@@ -65,7 +65,6 @@
#include "nss_wifi_vdev.h"
#include "nss_n2h.h"
#include "nss_rps.h"
#include "nss_wifi_if.h"
#include "nss_portid.h"
#include "nss_oam.h"
#include "nss_dtls.h"
@@ -100,6 +99,10 @@
#include "nss_lso_rx.h"
#include "nss_wifi_mac_db_if.h"
#include "nss_wifi_ext_vdev_if.h"
#include "nss_wifili_if.h"
#include "nss_ppe_vp.h"
#include "nss_wifi_mesh.h"
#include "nss_udp_st.h"
#endif
#endif /*__KERNEL__ */
@@ -120,7 +123,7 @@
#define NSS_MAX_PHYSICAL_INTERFACES 8 /**< Maximum number of physical interfaces. */
#define NSS_MAX_VIRTUAL_INTERFACES 16 /**< Maximum number of virtual interfaces. */
#define NSS_MAX_TUNNEL_INTERFACES 4 /**< Maximum number of tunnel interfaces. */
#define NSS_MAX_SPECIAL_INTERFACES 68 /**< Maximum number of special interfaces. */
#define NSS_MAX_SPECIAL_INTERFACES 69 /**< Maximum number of special interfaces. */
#define NSS_MAX_WIFI_RADIO_INTERFACES 3 /**< Maximum number of radio interfaces. */
/*
@@ -271,511 +274,12 @@
#define NSS_DMA_INTERFACE (NSS_SPECIAL_IF_START + 66)
/**< Special interface number for the DMA interface. */
#define NSS_WIFI_EXT_VDEV_INTERFACE (NSS_SPECIAL_IF_START + 67)
/**< Special interface number for WiFi extended virtual interface. */
/**< Special interface number for the Wi-Fi extended virtual interface. */
#define NSS_UDP_ST_INTERFACE (NSS_SPECIAL_IF_START + 68)
/**< Special interface number for the UDP speed test interface. */
#ifdef __KERNEL__ /* only kernel will use. */
/**
* Wireless Multimedia Extention Access Category to TID. @hideinitializer
*/
#define NSS_WIFILI_WME_AC_TO_TID(_ac) ( \
((_ac) == NSS_WIFILI_WME_AC_VO) ? 6 : \
(((_ac) == NSS_WIFILI_WME_AC_VI) ? 5 : \
(((_ac) == NSS_WIFILI_WME_AC_BK) ? 1 : \
0)))
/**
* Wireless TID to Wireless Extension Multimedia Access Category. @hideinitializer
*/
#define NSS_WIFILI_TID_TO_WME_AC(_tid) ( \
(((_tid) == 0) || ((_tid) == 3)) ? NSS_WIFILI_WME_AC_BE : \
((((_tid) == 1) || ((_tid) == 2)) ? NSS_WIFILI_WME_AC_BK : \
((((_tid) == 4) || ((_tid) == 5)) ? NSS_WIFILI_WME_AC_VI : \
NSS_WIFILI_WME_AC_VO)))
/**
* Converts the format of an IPv6 address from Linux to NSS. @hideinitializer
*/
#define IN6_ADDR_TO_IPV6_ADDR(ipv6, in6) \
{ \
((uint32_t *)ipv6)[0] = in6.in6_u.u6_addr32[0]; \
((uint32_t *)ipv6)[1] = in6.in6_u.u6_addr32[1]; \
((uint32_t *)ipv6)[2] = in6.in6_u.u6_addr32[2]; \
((uint32_t *)ipv6)[3] = in6.in6_u.u6_addr32[3]; \
}
/**
* Converts the format of an IPv6 address from NSS to Linux. @hideinitializer
*/
#define IPV6_ADDR_TO_IN6_ADDR(in6, ipv6) \
{ \
in6.in6_u.u6_addr32[0] = ((uint32_t *)ipv6)[0]; \
in6.in6_u.u6_addr32[1] = ((uint32_t *)ipv6)[1]; \
in6.in6_u.u6_addr32[2] = ((uint32_t *)ipv6)[2]; \
in6.in6_u.u6_addr32[3] = ((uint32_t *)ipv6)[3]; \
}
/**
* Format of an IPv6 address (16 * 8 bits).
*/
#define IPV6_ADDR_OCTAL_FMT "%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x"
/**
* Prints an IPv6 address (16 * 8 bits).
*/
#define IPV6_ADDR_TO_OCTAL(ipv6) ((uint16_t *)ipv6)[0], ((uint16_t *)ipv6)[1], ((uint16_t *)ipv6)[2], ((uint16_t *)ipv6)[3], ((uint16_t *)ipv6)[4], ((uint16_t *)ipv6)[5], ((uint16_t *)ipv6)[6], ((uint16_t *)ipv6)[7]
/*
* IPv4 rule sync reasons.
*/
#define NSS_IPV4_SYNC_REASON_STATS 0 /**< Rule for synchronizing statistics. */
#define NSS_IPV4_SYNC_REASON_FLUSH 1 /**< Rule for flushing a cache entry. */
#define NSS_IPV4_SYNC_REASON_EVICT 2 /**< Rule for evicting a cache entry. */
#define NSS_IPV4_SYNC_REASON_DESTROY 3
/**< Rule for destroying a cache entry (requested by the host OS). */
#define NSS_IPV4_SYNC_REASON_PPPOE_DESTROY 4
/**< Rule for destroying a cache entry that belongs to a PPPoE session. */
/**
* nss_ipv4_create
* Information for an IPv4 flow or connection create rule.
*
* All fields must be passed in host-endian order.
*/
struct nss_ipv4_create {
int32_t src_interface_num;
/**< Source interface number (virtual or physical). */
int32_t dest_interface_num;
/**< Destination interface number (virtual or physical). */
int32_t protocol; /**< L4 protocol (e.g., TCP or UDP). */
uint32_t flags; /**< Flags (if any) associated with this rule. */
uint32_t from_mtu; /**< MTU of the incoming interface. */
uint32_t to_mtu; /**< MTU of the outgoing interface. */
uint32_t src_ip; /**< Source IP address. */
int32_t src_port; /**< Source L4 port (e.g., TCP or UDP port). */
uint32_t src_ip_xlate; /**< Translated source IP address (used with SNAT). */
int32_t src_port_xlate; /**< Translated source L4 port (used with SNAT). */
uint32_t dest_ip; /**< Destination IP address. */
int32_t dest_port; /**< Destination L4 port (e.g., TCP or UDP port). */
uint32_t dest_ip_xlate;
/**< Translated destination IP address (used with DNAT). */
int32_t dest_port_xlate;
/**< Translated destination L4 port (used with DNAT). */
uint8_t src_mac[ETH_ALEN];
/**< Source MAC address. */
uint8_t dest_mac[ETH_ALEN];
/**< Destination MAC address. */
uint8_t src_mac_xlate[ETH_ALEN];
/**< Translated source MAC address (post-routing). */
uint8_t dest_mac_xlate[ETH_ALEN];
/**< Translated destination MAC address (post-routing). */
uint8_t flow_window_scale; /**< Window scaling factor (TCP). */
uint32_t flow_max_window; /**< Maximum window size (TCP). */
uint32_t flow_end; /**< TCP window end. */
uint32_t flow_max_end; /**< TCP window maximum end. */
uint32_t flow_pppoe_if_exist;
/**< Flow direction: PPPoE interface exist flag. */
int32_t flow_pppoe_if_num;
/**< Flow direction: PPPoE interface number. */
uint16_t ingress_vlan_tag; /**< Ingress VLAN tag expected for this flow. */
uint8_t return_window_scale;
/**< Window scaling factor of the return direction (TCP). */
uint32_t return_max_window;
/**< Maximum window size of the return direction. */
uint32_t return_end;
/**< Flow end for the return direction. */
uint32_t return_max_end;
/**< Flow maximum end for the return direction. */
uint32_t return_pppoe_if_exist;
/**< Return direction: PPPoE interface existence flag. */
int32_t return_pppoe_if_num;
/**< Return direction: PPPoE interface number. */
uint16_t egress_vlan_tag; /**< Egress VLAN tag expected for this flow. */
uint8_t spo_needed; /**< Indicates whether SPO is required. */
uint32_t param_a0; /**< Custom parameter 0. */
uint32_t param_a1; /**< Custom parameter 1. */
uint32_t param_a2; /**< Custom parameter 2. */
uint32_t param_a3; /**< Custom parameter 3. */
uint32_t param_a4; /**< Custom parameter 4. */
uint32_t qos_tag; /**< Deprecated, will be removed soon. */
uint32_t flow_qos_tag; /**< QoS tag value for the flow direction. */
uint32_t return_qos_tag; /**< QoS tag value for the return direction. */
uint8_t dscp_itag; /**< DSCP marking tag. */
uint8_t dscp_imask; /**< DSCP marking input mask. */
uint8_t dscp_omask; /**< DSCP marking output mask. */
uint8_t dscp_oval; /**< DSCP marking output value. */
uint16_t vlan_itag; /**< VLAN marking tag. */
uint16_t vlan_imask; /**< VLAN marking input mask. */
uint16_t vlan_omask; /**< VLAN marking output mask. */
uint16_t vlan_oval; /**< VLAN marking output value. */
uint32_t in_vlan_tag[MAX_VLAN_DEPTH];
/**< Ingress VLAN tag expected for this flow. */
uint32_t out_vlan_tag[MAX_VLAN_DEPTH];
/**< Egress VLAN tag expected for this flow. */
uint8_t flow_dscp; /**< IP DSCP value for the flow direction. */
uint8_t return_dscp; /**< IP DSCP value for the return direction. */
};
/*
* IPv4 connection flags (to be used with nss_ipv4_create::flags).
*/
#define NSS_IPV4_CREATE_FLAG_NO_SEQ_CHECK 0x01
/**< Rule for not checking sequence numbers. */
#define NSS_IPV4_CREATE_FLAG_BRIDGE_FLOW 0x02
/**< Rule that indicates pure bridge flow (no routing is involved). */
#define NSS_IPV4_CREATE_FLAG_ROUTED 0x04 /**< Rule for a routed connection. */
#define NSS_IPV4_CREATE_FLAG_DSCP_MARKING 0x08 /**< Rule for DSCP marking. */
#define NSS_IPV4_CREATE_FLAG_VLAN_MARKING 0x10 /**< Rule for VLAN marking. */
#define NSS_IPV4_CREATE_FLAG_QOS_VALID 0x20 /**< Rule for QoS is valid. */
/**
* nss_ipv4_destroy
* Information for an IPv4 flow or connection destroy rule.
*/
struct nss_ipv4_destroy {
int32_t protocol; /**< L4 protocol ID. */
uint32_t src_ip; /**< Source IP address. */
int32_t src_port; /**< Source L4 port (e.g., TCP or UDP port). */
uint32_t dest_ip; /**< Destination IP address. */
int32_t dest_port; /**< Destination L4 port (e.g., TCP or UDP port). */
};
/*
* IPv6 rule sync reasons.
*/
#define NSS_IPV6_SYNC_REASON_STATS 0 /**< Rule for synchronizing statistics. */
#define NSS_IPV6_SYNC_REASON_FLUSH 1 /**< Rule for flushing a cache entry. */
#define NSS_IPV6_SYNC_REASON_EVICT 2 /**< Rule for evicting a cache entry. */
#define NSS_IPV6_SYNC_REASON_DESTROY 3
/**< Rule for destroying a cache entry (requested by the host OS). */
#define NSS_IPV6_SYNC_REASON_PPPOE_DESTROY 4
/**< Rule for destroying a cache entry that belongs to a PPPoE session. */
/**
* nss_ipv6_create
* Information for an IPv6 flow or connection create rule.
*
* All fields must be passed in host-endian order.
*/
struct nss_ipv6_create {
int32_t src_interface_num;
/**< Source interface number (virtual or physical). */
int32_t dest_interface_num;
/**< Destination interface number (virtual or physical). */
int32_t protocol; /**< L4 protocol (e.g., TCP or UDP). */
uint32_t flags; /**< Flags (if any) associated with this rule. */
uint32_t from_mtu; /**< MTU of the incoming interface. */
uint32_t to_mtu; /**< MTU of the outgoing interface. */
uint32_t src_ip[4]; /**< Source IP address. */
int32_t src_port; /**< Source L4 port (e.g., TCP or UDP port). */
uint32_t dest_ip[4]; /**< Destination IP address. */
int32_t dest_port; /**< Destination L4 port (e.g., TCP or UDP port). */
uint8_t src_mac[ETH_ALEN]; /**< Source MAC address. */
uint8_t dest_mac[ETH_ALEN]; /**< Destination MAC address. */
uint8_t flow_window_scale; /**< Window scaling factor (TCP). */
uint32_t flow_max_window; /**< Maximum window size (TCP). */
uint32_t flow_end; /**< TCP window end. */
uint32_t flow_max_end; /**< TCP window maximum end. */
uint32_t flow_pppoe_if_exist;
/**< Flow direction: PPPoE interface existence flag. */
int32_t flow_pppoe_if_num;
/**< Flow direction: PPPoE interface number. */
uint16_t ingress_vlan_tag;
/**< Ingress VLAN tag expected for this flow. */
uint8_t return_window_scale;
/**< Window scaling factor (TCP) for the return direction. */
uint32_t return_max_window;
/**< Maximum window size (TCP) for the return direction. */
uint32_t return_end;
/**< End for the return direction. */
uint32_t return_max_end;
/**< Maximum end for the return direction. */
uint32_t return_pppoe_if_exist;
/**< Return direction: PPPoE interface exist flag. */
int32_t return_pppoe_if_num;
/**< Return direction: PPPoE interface number. */
uint16_t egress_vlan_tag; /**< Egress VLAN tag expected for this flow. */
uint32_t qos_tag; /**< Deprecated; will be removed soon. */
uint32_t flow_qos_tag; /**< QoS tag value for flow direction. */
uint32_t return_qos_tag; /**< QoS tag value for the return direction. */
uint8_t dscp_itag; /**< DSCP marking tag. */
uint8_t dscp_imask; /**< DSCP marking input mask. */
uint8_t dscp_omask; /**< DSCP marking output mask. */
uint8_t dscp_oval; /**< DSCP marking output value. */
uint16_t vlan_itag; /**< VLAN marking tag. */
uint16_t vlan_imask; /**< VLAN marking input mask. */
uint16_t vlan_omask; /**< VLAN marking output mask. */
uint16_t vlan_oval; /**< VLAN marking output value. */
uint32_t in_vlan_tag[MAX_VLAN_DEPTH];
/**< Ingress VLAN tag expected for this flow. */
uint32_t out_vlan_tag[MAX_VLAN_DEPTH];
/**< Egress VLAN tag expected for this flow. */
uint8_t flow_dscp; /**< IP DSCP value for flow direction. */
uint8_t return_dscp; /**< IP DSCP value for the return direction. */
};
/*
* IPv6 connection flags (to be used with nss_ipv6_create::flags.
*/
#define NSS_IPV6_CREATE_FLAG_NO_SEQ_CHECK 0x1
/**< Indicates that sequence numbers are not to be checked. */
#define NSS_IPV6_CREATE_FLAG_BRIDGE_FLOW 0x02
/**< Indicates that this is a pure bridge flow (no routing is involved). */
#define NSS_IPV6_CREATE_FLAG_ROUTED 0x04 /**< Rule is for a routed connection. */
#define NSS_IPV6_CREATE_FLAG_DSCP_MARKING 0x08 /**< Rule for DSCP marking. */
#define NSS_IPV6_CREATE_FLAG_VLAN_MARKING 0x10 /**< Rule for VLAN marking. */
#define NSS_IPV6_CREATE_FLAG_QOS_VALID 0x20 /**< Rule for Valid QoS. */
/**
* nss_ipv6_destroy
* Information for an IPv6 flow or connection destroy rule.
*/
struct nss_ipv6_destroy {
int32_t protocol; /**< L4 protocol (e.g., TCP or UDP). */
uint32_t src_ip[4]; /**< Source IP address. */
int32_t src_port; /**< Source L4 port (e.g., TCP or UDP port). */
uint32_t dest_ip[4]; /**< Destination IP address. */
int32_t dest_port; /**< Destination L4 port (e.g., TCP or UDP port). */
};
/**
* nss_ipv4_sync
* Defines packet statistics for IPv4 and also keeps the connection entry alive.
*
* Statistics are bytes and packets seen over a connection.
*
* The addresses are NON-NAT addresses (i.e., true endpoint
* addressing).
*
* The source (src) creates the connection.
*/
struct nss_ipv4_sync {
uint32_t index; /**< Slot ID for cache statistics to host OS. */
/*TODO: use an opaque information as host and NSS
may be using a different mechanism to store rules. */
int32_t protocol; /**< L4 protocol (e.g., TCP or UDP). */
uint32_t src_ip; /**< Source IP address. */
int32_t src_port; /**< Source L4 port (e.g., TCP or UDP port). */
uint32_t src_ip_xlate; /**< Translated source IP address (used with SNAT). */
int32_t src_port_xlate; /**< Translated source L4 port (used with SNAT). */
uint32_t dest_ip; /**< Destination IP address. */
int32_t dest_port; /**< Destination L4 port (e.g., TCP or UDP port). */
uint32_t dest_ip_xlate;
/**< Translated destination IP address (used with DNAT). */
int32_t dest_port_xlate;
/**< Translated destination L4 port (used with DNAT). */
uint32_t flow_max_window; /**< Maximum window size (TCP). */
uint32_t flow_end; /**< TCP window end. */
uint32_t flow_max_end; /**< TCP window maximum end. */
uint32_t flow_rx_packet_count; /**< Rx packet count for the flow interface. */
uint32_t flow_rx_byte_count; /**< Rx byte count for the flow interface. */
uint32_t flow_tx_packet_count; /**< Tx packet count for the flow interface. */
uint32_t flow_tx_byte_count; /**< Tx byte count for the flow interface. */
uint32_t return_max_window;
/**< Maximum window size (TCP) for the return direction. */
uint32_t return_end;
/**< End for the return direction. */
uint32_t return_max_end;
/**< Maximum end for the return direction. */
uint32_t return_rx_packet_count;
/**< Rx packet count for the return direction. */
uint32_t return_rx_byte_count;
/**< Rx byte count for the return direction. */
uint32_t return_tx_packet_count;
/**< Tx packet count for the return direction. */
uint32_t return_tx_byte_count;
/**< Tx byte count for the return direction. */
/**
* Time in Linux jiffies to be added to the current timeout to keep the
* connection alive.
*/
unsigned long int delta_jiffies;
uint8_t reason; /**< Reason for synchronization. */
uint32_t param_a0; /**< Custom parameter 0. */
uint32_t param_a1; /**< Custom parameter 1. */
uint32_t param_a2; /**< Custom parameter 2. */
uint32_t param_a3; /**< Custom parameter 3. */
uint32_t param_a4; /**< Custom parameter 4. */
uint8_t flags; /**< Flags indicating the status of the flow. */
uint32_t qos_tag; /**< QoS value of the flow. */
};
/**
* nss_ipv4_establish
* Defines connection-established message parameters for IPv4.
*/
struct nss_ipv4_establish {
uint32_t index; /**< Slot ID for cache statistics to host OS. */
/*TODO: use an opaque information as host and NSS
may be using a different mechanism to store rules. */
uint8_t protocol; /**< Protocol number. */
uint8_t reserved[3]; /**< Padding for word alignment. */
int32_t flow_interface; /**< Flow interface number. */
uint32_t flow_mtu; /**< MTU for the flow interface. */
uint32_t flow_ip; /**< Flow IP address. */
uint32_t flow_ip_xlate; /**< Translated flow IP address. */
uint32_t flow_ident; /**< Flow identifier (e.g., port). */
uint32_t flow_ident_xlate; /**< Translated flow identifier (e.g., port). */
uint16_t flow_mac[3]; /**< Source MAC address for the flow direction. */
uint32_t flow_pppoe_if_exist; /**< Flow direction: PPPoE interface existence flag. */
int32_t flow_pppoe_if_num; /**< Flow direction: PPPoE interface number. */
uint16_t ingress_vlan_tag; /**< Ingress VLAN tag. */
int32_t return_interface; /**< Return interface number. */
uint32_t return_mtu; /**< MTU for the return interface. */
uint32_t return_ip; /**< Return IP address. */
uint32_t return_ip_xlate; /**< Translated return IP address. */
uint32_t return_ident; /**< Return identier (e.g., port). */
uint32_t return_ident_xlate; /**< Translated return identifier (e.g., port). */
uint16_t return_mac[3]; /**< Source MAC address for the return direction. */
uint32_t return_pppoe_if_exist; /**< Return direction: PPPoE interface existence flag. */
int32_t return_pppoe_if_num; /**< Return direction: PPPoE interface number. */
uint16_t egress_vlan_tag; /**< Egress VLAN tag. */
uint8_t flags; /**< Flags indicating the status of the flow. */
uint32_t qos_tag; /**< QoS value of the flow. */
};
/**
* nss_ipv4_cb_reason
* Reasons for an IPv4 callback.
*/
enum nss_ipv4_cb_reason {
NSS_IPV4_CB_REASON_ESTABLISH = 0,
NSS_IPV4_CB_REASON_SYNC,
NSS_IPV4_CB_REASON_ESTABLISH_FAIL,
};
/**
* nss_ipv4_cb_params
* Message parameters for an IPv4 callback.
*/
struct nss_ipv4_cb_params {
enum nss_ipv4_cb_reason reason; /**< Reason for the callback. */
/**
* Message parameters for an IPv4 callback.
*/
union {
struct nss_ipv4_sync sync;
/**< Parameters for synchronization. */
struct nss_ipv4_establish establish;
/**< Parameters for establishing a connection. */
} params; /**< Payload of parameters. */
};
/**
* nss_ipv6_sync
* Update packet statistics (bytes and packets seen over a connection) and also keep the connection entry alive.
*
* The addresses are NON-NAT addresses (i.e., true endpoint addressing).
*
* The source (src) creates the connection.
*/
struct nss_ipv6_sync {
uint32_t index; /**< Slot ID for cache statistics to the host OS. */
int32_t protocol; /**< L4 protocol (e.g., TCP or UDP). */
uint32_t src_ip[4]; /**< Source IP address. */
int32_t src_port; /**< Source L4 port (e.g., TCP or UDP port). */
uint32_t dest_ip[4]; /**< Destination IP address. */
int32_t dest_port; /**< Destination L4 port (e.g., TCP or UDP port). */
uint32_t flow_max_window; /**< Maximum window size (TCP). */
uint32_t flow_end; /**< TCP window end. */
uint32_t flow_max_end; /**< TCP window maximum end. */
uint32_t flow_rx_packet_count; /**< Rx packet count for the flow interface. */
uint32_t flow_rx_byte_count; /**< Rx byte count for the flow interface. */
uint32_t flow_tx_packet_count; /**< Tx packet count for the flow interface. */
uint32_t flow_tx_byte_count; /**< Tx byte count for the flow interface. */
uint32_t return_max_window;
/**< Maximum window size (TCP) for the return direction. */
uint32_t return_end;
/**< End for the return direction. */
uint32_t return_max_end;
/**< Maximum end for the return direction. */
uint32_t return_rx_packet_count;
/**< Rx packet count for the return direction. */
uint32_t return_rx_byte_count;
/**< Rx byte count for the return direction. */
uint32_t return_tx_packet_count;
/**< Tx packet count for the return direction. */
uint32_t return_tx_byte_count;
/**< Tx byte count for the return direction. */
/**
* Time in Linux jiffies to be added to the current timeout to keep the
* connection alive.
*/
unsigned long int delta_jiffies;
/**
* Non-zero when the NA has ceased to accelerate the given connection.
*/
uint8_t final_sync;
uint8_t evicted; /**< Non-zero if the connection is evicted. */
uint8_t flags; /**< Flags indicating the status of the flow. */
uint32_t qos_tag; /**< QoS value of the flow. */
};
/**
* nss_ipv6_establish
* Defines connection-established message parameters for IPv6.
*/
struct nss_ipv6_establish {
uint32_t index; /**< Slot ID for cache statistics to the host OS. */
uint8_t protocol; /**< Protocol number. */
int32_t flow_interface; /**< Flow interface number. */
uint32_t flow_mtu; /**< MTU for the flow interface. */
uint32_t flow_ip[4]; /**< Flow IP address. */
uint32_t flow_ident; /**< Flow identifier (e.g., port). */
uint16_t flow_mac[3]; /**< Source MAC address for the flow direction. */
uint32_t flow_pppoe_if_exist; /**< Flow direction: PPPoE interface existence flag. */
int32_t flow_pppoe_if_num; /**< Flow direction: PPPoE interface number. */
uint16_t ingress_vlan_tag; /**< Ingress VLAN tag. */
int32_t return_interface; /**< Return interface number. */
uint32_t return_mtu; /**< MTU for the return interface. */
uint32_t return_ip[4]; /**< Return IP address. */
uint32_t return_ident; /**< Return identier (e.g., port). */
uint16_t return_mac[3]; /**< Source MAC address for the return direction. */
uint32_t return_pppoe_if_exist; /**< Return direction: PPPoE interface existence flag. */
int32_t return_pppoe_if_num; /**< Return direction: PPPoE interface number. */
uint16_t egress_vlan_tag; /**< VLAN tag to be inserted for egress direction. */
uint8_t flags; /**< Flags indicating the status of the flow. */
uint32_t qos_tag; /**< QoS value of the flow. */
};
/**
* nss_ipv6_cb_reason
* Reasons for an IPv6 callback.
*/
enum nss_ipv6_cb_reason {
NSS_IPV6_CB_REASON_ESTABLISH = 0,
NSS_IPV6_CB_REASON_SYNC,
NSS_IPV6_CB_REASON_ESTABLISH_FAIL,
};
/**
* nss_ipv6_cb_params
* Message parameters for an IPv6 callback.
*/
struct nss_ipv6_cb_params {
enum nss_ipv6_cb_reason reason; /**< Reason for the callback. */
/**
* Message parameters for an IPv6 callback.
*/
union {
struct nss_ipv6_sync sync;
/**< Parameters for synchronization. */
struct nss_ipv6_establish establish;
/**< Parameters for establishing a connection. */
} params; /**< Callback parameters. */
};
/*
* General utilities
*/
@@ -791,16 +295,6 @@ struct nss_ipv6_cb_params {
*/
typedef void (*nss_if_rx_msg_callback_t)(void *app_data, struct nss_cmn_msg *msg);
/**
* Callback function for IPv4 connection synchronization messages.
*
* @datatypes
* nss_ipv4_cb_params
*
* @param[in] nicb Pointer to the parameter structure for an NSS IPv4 callback.
*/
typedef void (*nss_ipv4_callback_t)(struct nss_ipv4_cb_params *nicb);
/**
* nss_get_state
* Gets the NSS state.

View File

@@ -139,8 +139,8 @@ struct nss_capwap_stats_msg {
uint32_t rx_frag_timeout_drops;
/**< Packets dropped because of a reassembly timeout. */
uint32_t rx_queue_full_drops;
/**< Packets dropped because the queue is full. */
uint32_t rx_n2h_drops;
/**< Packets dropped because of error in packet processing. */
uint32_t rx_n2h_queue_full_drops;
/**< Packets dropped because the NSS-to-host queue is full. */
uint32_t rx_csum_drops;
@@ -297,6 +297,14 @@ struct nss_capwap_flow_rule_msg {
uint32_t flow_id; /**< Flow identification. */
};
/**
* nss_capwap_enable_tunnel_msg
* Structure to update sibling interface number.
*/
struct nss_capwap_enable_tunnel_msg {
uint32_t sibling_if_num; /**< Sibling interface Number. */
};
/**
* nss_capwap_msg
* Data for sending and receiving CAPWAP messages.
@@ -322,6 +330,8 @@ struct nss_capwap_msg {
/**< Flow rule add message. */
struct nss_capwap_flow_rule_msg flow_rule_del;
/**< Flow rule delete message. */
struct nss_capwap_enable_tunnel_msg enable_tunnel;
/**< Enable tunnel message. */
} msg; /**< Message payload. */
};
@@ -358,8 +368,8 @@ struct nss_capwap_tunnel_stats {
uint64_t rx_frag_timeout_drops;
/**< Packets dropped because of a reassembly timeout. */
uint64_t rx_queue_full_drops;
/**< Packets dropped because the queue is full. */
uint64_t rx_n2h_drops;
/**< Packets dropped because of error in processing the packet. */
uint64_t rx_n2h_queue_full_drops;
/**< Packets dropped because the NSS-to-host queue is full. */
uint64_t rx_csum_drops;
@@ -374,6 +384,7 @@ struct nss_capwap_tunnel_stats {
/*
* Tx/encap stats
*/
uint64_t tx_dropped_inner; /**<Packets dropped due to inflow queue full. */
uint64_t tx_segments; /**< Number of segments or fragments. */
uint64_t tx_queue_full_drops;
/**< Packets dropped because the queue is full. */

View File

@@ -1,6 +1,6 @@
/*
**************************************************************************
* Copyright (c) 2019-2020, The Linux Foundation. All rights reserved.
* Copyright (c) 2019-2021, The Linux Foundation. All rights reserved.
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all copies.
@@ -67,6 +67,50 @@ typedef enum nss_clmap_error_types {
NSS_CLMAP_ERROR_MAX, /**< Maximum error type. */
} nss_clmap_error_t;
/**
* nss_clmap_interface_type
* Client map NSS interface type.
*/
enum nss_clmap_interface_type {
NSS_CLMAP_INTERFACE_TYPE_US,
NSS_CLMAP_INTERFACE_TYPE_DS,
NSS_CLMAP_INTERFACE_TYPE_MAX
};
/**
* nss_clmap_stats_type
* Client map statistic counters.
*/
enum nss_clmap_stats_type {
NSS_CLMAP_INTERFACE_STATS_RX_PKTS, /**< Number of packets received. */
NSS_CLMAP_INTERFACE_STATS_RX_BYTES, /**< Number of bytes received. */
NSS_CLMAP_INTERFACE_STATS_TX_PKTS, /**< Number of packets transmitted. */
NSS_CLMAP_INTERFACE_STATS_TX_BYTES, /**< Number of bytes transmitted. */
NSS_CLMAP_INTERFACE_STATS_RX_QUEUE_0_DROPPED, /**< Dropped receive packets 0. */
NSS_CLMAP_INTERFACE_STATS_RX_QUEUE_1_DROPPED, /**< Dropped receive packets 1. */
NSS_CLMAP_INTERFACE_STATS_RX_QUEUE_2_DROPPED, /**< Dropped receive packets 2. */
NSS_CLMAP_INTERFACE_STATS_RX_QUEUE_3_DROPPED, /**< Dropped receive packets 3. */
NSS_CLMAP_INTERFACE_STATS_DROPPED_MACDB_LOOKUP_FAILED, /**< Dropped due to MAC database look up failed. */
NSS_CLMAP_INTERFACE_STATS_DROPPED_INVALID_PACKET_SIZE, /**< Dropped due to invalid size packets. */
NSS_CLMAP_INTERFACE_STATS_DROPPED_LOW_HEADROOM, /**< Dropped due to insufficent headroom. */
NSS_CLMAP_INTERFACE_STATS_DROPPED_NEXT_NODE_QUEUE_FULL, /**< Dropped due to next node queue full. */
NSS_CLMAP_INTERFACE_STATS_DROPPED_PBUF_ALLOC_FAILED, /**< Dropped due to buffer allocation failure. */
NSS_CLMAP_INTERFACE_STATS_DROPPED_LINEAR_FAILED, /**< Dropped due to linear copy failure. */
NSS_CLMAP_INTERFACE_STATS_SHARED_PACKET_CNT, /**< Shared packet count. */
NSS_CLMAP_INTERFACE_STATS_ETHERNET_FRAME_ERROR, /**< Ethernet frame error count. */
NSS_CLMAP_INTERFACE_STATS_MACDB_CREATE_REQUESTS_CNT, /**< MAC database create requests count. */
NSS_CLMAP_INTERFACE_STATS_MACDB_CREATE_MAC_EXISTS_CNT, /**< MAC database create failures, MAC exist count. */
NSS_CLMAP_INTERFACE_STATS_MACDB_CREATE_MAC_TABLE_FULL_CNT,
/**< MAC database create failures, MAC database full count. */
NSS_CLMAP_INTERFACE_STATS_MACDB_DESTROY_REQUESTS_CNT, /**< MAC database destroy requests count. */
NSS_CLMAP_INTERFACE_STATS_MACDB_DESTROY_MAC_NOT_FOUND_CNT,
/**< MAC database destroy failures, MAC not found count. */
NSS_CLMAP_INTERFACE_STATS_MACDB_DESTROY_MAC_UNHASHED_CNT,
/**< MAC database destroy failures, MAC unhashed count. */
NSS_CLMAP_INTERFACE_STATS_MACDB_FLUSH_REQUESTS_CNT, /**< MAC database flush requests count. */
NSS_CLMAP_INTERFACE_STATS_MAX, /**< Maximum statistics type. */
};
/**
* nss_clmap_stats_msg
* Per-interface statistics messages from the NSS firmware.
@@ -111,6 +155,16 @@ struct nss_clmap_flush_mac_msg {
uint32_t nexthop_ifnum; /**< Next hop interface number. */
};
/**
* nss_clmap_stats_notification
* Client map transmission statistics structure.
*/
struct nss_clmap_stats_notification {
uint64_t stats_ctx[NSS_CLMAP_INTERFACE_STATS_MAX]; /**< Context transmission statistics. */
uint32_t core_id; /**< Core ID. */
uint32_t if_num; /**< Interface number. */
};
/**
* nss_clmap_msg
* Data for sending and receiving client map messages.
@@ -301,6 +355,34 @@ extern void nss_clmap_init(void);
extern void nss_clmap_msg_init(struct nss_clmap_msg *ncm, uint16_t if_num, uint32_t type, uint32_t len,
nss_clmap_msg_callback_t cb, void *app_data);
/**
* nss_clmap_stats_unregister_notifier
* Deregisters a statistics notifier.
*
* @datatypes
* notifier_block
*
* @param[in] nb Notifier block.
*
* @return
* 0 on success or non-zero on failure.
*/
extern int nss_clmap_stats_unregister_notifier(struct notifier_block *nb);
/**
* nss_clmap_stats_register_notifier
* Registers a statistics notifier.
*
* @datatypes
* notifier_block
*
* @param[in] nb Notifier block.
*
* @return
* 0 on success or non-zero on failure.
*/
extern int nss_clmap_stats_register_notifier(struct notifier_block *nb);
/**
* @}
*/

View File

@@ -1,6 +1,6 @@
/*
**************************************************************************
* Copyright (c) 2014, 2016-2019, The Linux Foundation. All rights reserved.
* Copyright (c) 2014, 2016-2020, The Linux Foundation. All rights reserved.
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all copies.
@@ -27,6 +27,13 @@
* @{
*/
/*
* Interface Number 1 Valid 7 Core 8 Type 16 Index
*/
typedef int32_t nss_if_num_t;
#define NSS_IF_IS_TYPE_DYNAMIC(if_num) (if_num != -1)
#define NSS_IF_IS_VALID(if_num) (if_num < NSS_MAX_NET_INTERFACES)
/**
* @struct nss_ctx_instance
* Forward declaration for structure that contains instance data for each

View File

@@ -1,6 +1,6 @@
/*
**************************************************************************
* Copyright (c) 2020, The Linux Foundation. All rights reserved.
* Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@@ -52,6 +52,43 @@ enum nss_dma_msg_error {
NSS_DMA_MSG_ERROR_MAX /**< Maximum error type. */
};
/**
* nss_dma_stats_types
* DMA node statistics.
*/
enum nss_dma_stats_types {
NSS_DMA_STATS_NO_REQ = NSS_STATS_NODE_MAX,
/**< Request descriptor not available. */
NSS_DMA_STATS_NO_DESC, /**< DMA descriptors not available. */
NSS_DMA_STATS_NEXTHOP, /**< Failed to retrive next hop. */
NSS_DMA_STATS_FAIL_NEXTHOP_QUEUE,
/**< Failed to queue next hop. */
NSS_DMA_STATS_FAIL_LINEAR_SZ, /**< Failed to get memory for linearization. */
NSS_DMA_STATS_FAIL_LINEAR_ALLOC,/**< Failed to allocate buffer for linearization. */
NSS_DMA_STATS_FAIL_LINEAR_NO_SG,/**< Skip linearization due to non-SG packet. */
NSS_DMA_STATS_FAIL_SPLIT_SZ, /**< Failed to spliting buffer into multiple buffers. */
NSS_DMA_STATS_FAIL_SPLIT_ALLOC, /**< Failed to allocate buffer for split. */
NSS_DMA_STATS_FAIL_SYNC_ALLOC, /**< Failed to allocate buffer for sending statistics. */
NSS_DMA_STATS_FAIL_CTX_ACTIVE, /**< Failed to queue as the node is not active. */
NSS_DMA_STATS_FAIL_HW_E0, /**< Failed to process in hardware, error code E0. */
NSS_DMA_STATS_FAIL_HW_E1, /**< Failed to process in hardware, error code E1. */
NSS_DMA_STATS_FAIL_HW_E2, /**< Failed to process in hardware, error code E2. */
NSS_DMA_STATS_FAIL_HW_E3, /**< Failed to process in hardware, error code E3. */
NSS_DMA_STATS_FAIL_HW_E4, /**< Failed to process in hardware, error code E4. */
NSS_DMA_STATS_FAIL_HW_E5, /**< Failed to process in hardware, error code E5. */
NSS_DMA_STATS_FAIL_HW_E6, /**< Failed to process in hardware, error code E6. */
NSS_DMA_STATS_FAIL_HW_E7, /**< Failed to process in hardware, error code E7. */
NSS_DMA_STATS_FAIL_HW_E8, /**< Failed to process in hardware, error code E8. */
NSS_DMA_STATS_FAIL_HW_E9, /**< Failed to process in hardware, error code E9. */
NSS_DMA_STATS_FAIL_HW_E10, /**< Failed to process in hardware, error code E10. */
NSS_DMA_STATS_FAIL_HW_E11, /**< Failed to process in hardware, error code E11. */
NSS_DMA_STATS_FAIL_HW_E12, /**< Failed to process in hardware, error code E12. */
NSS_DMA_STATS_FAIL_HW_E13, /**< Failed to process in hardware, error code E13. */
NSS_DMA_STATS_FAIL_HW_E14, /**< Failed to process in hardware, error code E14. */
NSS_DMA_STATS_FAIL_HW_E15, /**< Failed to process in hardware, error code E15. */
NSS_DMA_STATS_MAX, /**< Maximum message type. */
};
/**
* nss_dma_test_type
* DMA Test types.
@@ -64,6 +101,15 @@ enum nss_dma_test_type {
NSS_DMA_TEST_TYPE_MAX /**< Maximum test type. */
};
/**
* nss_dma_stats_notification
* DMA transmission statistics structure.
*/
struct nss_dma_stats_notification {
uint64_t stats_ctx[NSS_DMA_STATS_MAX]; /**< Context transmission statistics. */
uint32_t core_id; /**< Core ID. */
};
#ifdef __KERNEL__ /* only kernel will use. */
/*
* Maximum number of HW specific statistics
@@ -129,11 +175,6 @@ struct nss_dma_msg {
* nss_dma_register_handler
* Registers the DMA message handler.
*
* @datatypes
* nss_ctx_instance
*
* @param[in] nss_ctx Pointer to the NSS context.
*
* @return
* None.
*/
@@ -255,6 +296,34 @@ void nss_dma_init(void);
* Pointer to the NSS core context.
*/
extern struct nss_ctx_instance *nss_dma_get_context(void);
/**
* nss_dma_stats_unregister_notifier
* Deregisters a statistics notifier.
*
* @datatypes
* notifier_block
*
* @param[in] nb Notifier block.
*
* @return
* 0 on success or non-zero on failure.
*/
extern int nss_dma_stats_unregister_notifier(struct notifier_block *nb);
/**
* nss_dma_stats_register_notifier
* Registers a statistics notifier.
*
* @datatypes
* notifier_block
*
* @param[in] nb Notifier block.
*
* @return
* 0 on success or non-zero on failure.
*/
extern int nss_dma_stats_register_notifier(struct notifier_block *nb);
#endif /*__KERNEL__ */
/**

View File

@@ -1,6 +1,6 @@
/*
**************************************************************************
* Copyright (c) 2017-2020, The Linux Foundation. All rights reserved.
* Copyright (c) 2017-2021, The Linux Foundation. All rights reserved.
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all copies.
@@ -74,6 +74,85 @@ enum nss_dtls_cmn_error {
NSS_DTLS_CMN_ERROR_MAX,
};
/**
* nss_dtls_cmn_ctx_stats_types
* DTLS common context statistics types.
*/
enum nss_dtls_cmn_ctx_stats_types {
NSS_DTLS_CMN_STATS_RX_SINGLE_REC = NSS_STATS_NODE_MAX,
/**< Received single DTLS record datagrams. */
NSS_DTLS_CMN_STATS_RX_MULTI_REC, /**< Received multiple DTLS record datagrams. */
NSS_DTLS_CMN_STATS_FAIL_CRYPTO_RESOURCE,/**< Failure in crypto resource allocation. */
NSS_DTLS_CMN_STATS_FAIL_CRYPTO_ENQUEUE, /**< Failure due to full queue in crypto or hardware. */
NSS_DTLS_CMN_STATS_FAIL_HEADROOM, /**< Failure in headroom check. */
NSS_DTLS_CMN_STATS_FAIL_TAILROOM, /**< Failure in tailroom check. */
NSS_DTLS_CMN_STATS_FAIL_VER, /**< Failure in DTLS version check. */
NSS_DTLS_CMN_STATS_FAIL_EPOCH, /**< Failure in DTLS epoch check. */
NSS_DTLS_CMN_STATS_FAIL_DTLS_RECORD, /**< Failure in reading DTLS record. */
NSS_DTLS_CMN_STATS_FAIL_CAPWAP, /**< Failure in CAPWAP classification. */
NSS_DTLS_CMN_STATS_FAIL_REPLAY, /**< Failure in anti-replay check. */
NSS_DTLS_CMN_STATS_FAIL_REPLAY_DUP, /**< Failure in anti-replay; duplicate records. */
NSS_DTLS_CMN_STATS_FAIL_REPLAY_WIN, /**< Failure in anti-replay; packet outside the window. */
NSS_DTLS_CMN_STATS_FAIL_QUEUE, /**< Failure due to full queue in DTLS. */
NSS_DTLS_CMN_STATS_FAIL_QUEUE_NEXTHOP, /**< Failure due to full queue in next hop. */
NSS_DTLS_CMN_STATS_FAIL_PBUF_ALLOC, /**< Failure in pbuf allocation. */
NSS_DTLS_CMN_STATS_FAIL_PBUF_LINEAR, /**< Failure in pbuf linearization. */
NSS_DTLS_CMN_STATS_FAIL_PBUF_STATS, /**< Failure in pbuf allocation for statistics. */
NSS_DTLS_CMN_STATS_FAIL_PBUF_ALIGN, /**< Failure in pbuf alignment. */
NSS_DTLS_CMN_STATS_FAIL_CTX_ACTIVE, /**< Failure in enqueue due to inactive context. */
NSS_DTLS_CMN_STATS_FAIL_HWCTX_ACTIVE, /**< Failure in enqueue due to inactive hardware context. */
NSS_DTLS_CMN_STATS_FAIL_CIPHER, /**< Failure in decrypting the data. */
NSS_DTLS_CMN_STATS_FAIL_AUTH, /**< Failure in authenticating the data. */
NSS_DTLS_CMN_STATS_FAIL_SEQ_OVF, /**< Failure due to sequence number overflow. */
NSS_DTLS_CMN_STATS_FAIL_BLK_LEN, /**< Failure in decapsulation due to bad cipher length. */
NSS_DTLS_CMN_STATS_FAIL_HASH_LEN, /**< Failure in decapsulation due to bad hash length. */
NSS_DTLS_CMN_STATS_LEN_ERROR, /**< Length error. */
NSS_DTLS_CMN_STATS_TOKEN_ERROR, /**< Token error, unknown token command or instruction. */
NSS_DTLS_CMN_STATS_BYPASS_ERROR, /**< Token contains too much bypass data. */
NSS_DTLS_CMN_STATS_CONFIG_ERROR, /**< Invalid command, algorithm, or mode combination. */
NSS_DTLS_CMN_STATS_ALGO_ERROR, /**< Unsupported algorithm. */
NSS_DTLS_CMN_STATS_HASH_OVF_ERROR, /**< Hash input overflow. */
NSS_DTLS_CMN_STATS_TTL_ERROR, /**< TTL or HOP-Limit underflow. */
NSS_DTLS_CMN_STATS_CSUM_ERROR, /**< Checksum error. */
NSS_DTLS_CMN_STATS_TIMEOUT_ERROR, /**< Data timed out. */
NSS_DTLS_CMN_STATS_CLE_ERROR_0, /**< Classification failure 0. */
NSS_DTLS_CMN_STATS_CLE_ERROR_1, /**< Classification failure 1. */
NSS_DTLS_CMN_STATS_CLE_ERROR_2, /**< Classification failure 2. */
NSS_DTLS_CMN_STATS_CLE_ERROR_3, /**< Classification failure 3. */
NSS_DTLS_CMN_STATS_CLE_ERROR_4, /**< Classification failure 4. */
NSS_DTLS_CMN_STATS_CLE_ERROR_5, /**< Classification failure 5. */
NSS_DTLS_CMN_STATS_CLE_ERROR_6, /**< Classification failure 6. */
NSS_DTLS_CMN_STATS_CLE_ERROR_7, /**< Classification failure 7. */
NSS_DTLS_CMN_STATS_CLE_ERROR_8, /**< Classification failure 8. */
NSS_DTLS_CMN_STATS_CLE_ERROR_9, /**< Classification failure 9. */
NSS_DTLS_CMN_STATS_CLE_ERROR_10, /**< Classification failure 10. */
NSS_DTLS_CMN_STATS_CLE_ERROR_11, /**< Classification failure 11. */
NSS_DTLS_CMN_STATS_CLE_ERROR_12, /**< Classification failure 12. */
NSS_DTLS_CMN_STATS_CLE_ERROR_13, /**< Classification failure 13. */
NSS_DTLS_CMN_STATS_CLE_ERROR_14, /**< Classification failure 14. */
NSS_DTLS_CMN_STATS_CLE_ERROR_15, /**< Classification failure 15. */
NSS_DTLS_CMN_STATS_CLE_ERROR_16, /**< Classification failure 16. */
NSS_DTLS_CMN_STATS_CLE_ERROR_17, /**< Classification failure 17. */
NSS_DTLS_CMN_STATS_CLE_ERROR_18, /**< Classification failure 18. */
NSS_DTLS_CMN_STATS_CLE_ERROR_19, /**< Classification failure 19. */
NSS_DTLS_CMN_STATS_CLE_ERROR_20, /**< Classification failure 20. */
NSS_DTLS_CMN_STATS_CLE_ERROR_21, /**< Classification failure 21. */
NSS_DTLS_CMN_STATS_CLE_ERROR_22, /**< Classification failure 22. */
NSS_DTLS_CMN_STATS_CLE_ERROR_23, /**< Classification failure 23. */
NSS_DTLS_CMN_STATS_CLE_ERROR_24, /**< Classification failure 24. */
NSS_DTLS_CMN_STATS_CLE_ERROR_25, /**< Classification failure 25. */
NSS_DTLS_CMN_STATS_CLE_ERROR_26, /**< Classification failure 26. */
NSS_DTLS_CMN_STATS_CLE_ERROR_27, /**< Classification failure 27. */
NSS_DTLS_CMN_STATS_CLE_ERROR_28, /**< Classification failure 28. */
NSS_DTLS_CMN_STATS_CLE_ERROR_29, /**< Classification failure 29. */
NSS_DTLS_CMN_STATS_CLE_ERROR_30, /**< Classification failure 30. */
NSS_DTLS_CMN_STATS_CLE_ERROR_31, /**< Classification failure 31. */
NSS_DTLS_CMN_STATS_SEQ_LOW, /**< Lower 32 bits of current transmit sequence number. */
NSS_DTLS_CMN_STATS_SEQ_HIGH, /**< Upper 16 bits of current transmit sequence number. */
NSS_DTLS_CMN_STATS_EPOCH, /**< Current epoch value. */
NSS_DTLS_CMN_CTX_STATS_MAX, /**< Maximum message type. */
};
/**
* nss_dtls_cmn_node_stats
* DTLS node statistics.
@@ -183,6 +262,16 @@ struct nss_dtls_cmn_ctx_config_dtls {
uint8_t res1; /**< Reserved for alignment. */
};
/**
* nss_dtls_cmn_stats_notification
* DTLS common transmission statistics structure.
*/
struct nss_dtls_cmn_stats_notification {
uint64_t stats_ctx[NSS_DTLS_CMN_CTX_STATS_MAX]; /**< Context transmission statistics. */
uint32_t core_id; /**< Core ID. */
uint32_t if_num; /**< Interface number. */
};
/**
* nss_dtls_cmn_msg
* Data for sending and receiving DTLS messages.
@@ -280,6 +369,20 @@ extern nss_tx_status_t nss_dtls_cmn_tx_msg_sync(struct nss_ctx_instance *nss_ctx
enum nss_dtls_cmn_msg_type type, uint16_t len,
struct nss_dtls_cmn_msg *ndcm, enum nss_dtls_cmn_error *resp);
/**
* nss_dtls_cmn_unregister_if
* Deregisters a DTLS session interface from the NSS.
*
* @param[in] if_num NSS interface number.
*
* @return
* None.
*
* @dependencies
* The DTLS session interface must have been previously registered.
*/
extern void nss_dtls_cmn_unregister_if(uint32_t if_num);
/**
* nss_dtls_cmn_register_if
* Registers a DTLS session interface with the NSS for sending and receiving
@@ -309,22 +412,19 @@ extern struct nss_ctx_instance *nss_dtls_cmn_register_if(uint32_t if_num,
void *app_ctx);
/**
* nss_dtls_cmn_unregister_if
* Deregisters a DTLS session interface from the NSS.
* nss_dtls_cmn_notify_unregister
* Deregisters an event callback.
*
* @param[in] if_num NSS interface number.
* @param[in] ifnum NSS interface number.
*
* @return
* None.
*
* @dependencies
* The DTLS session interface must have been previously registered.
*/
extern void nss_dtls_cmn_unregister_if(uint32_t if_num);
extern void nss_dtls_cmn_notify_unregister(uint32_t ifnum);
/**
* nss_dtls_cmn_notify_register
* Register an event callback to handle notification from DTLS firmware package.
* Registers an event callback to handle notification from DTLS firmware package.
*
* @param[in] ifnum NSS interface number.
* @param[in] ev_cb Callback for DTLS tunnel message.
@@ -336,17 +436,6 @@ extern void nss_dtls_cmn_unregister_if(uint32_t if_num);
extern struct nss_ctx_instance *nss_dtls_cmn_notify_register(uint32_t ifnum, nss_dtls_cmn_msg_callback_t ev_cb,
void *app_data);
/**
* nss_dtls_cmn_notify_unregister
* Unregister an event callback.
*
* @param[in] ifnum NSS interface number.
*
* @return
* None.
*/
extern void nss_dtls_cmn_notify_unregister(uint32_t ifnum);
/**
* nss_dtls_cmn_msg_init
* Initializes a DTLS message.
@@ -387,6 +476,34 @@ extern struct nss_ctx_instance *nss_dtls_cmn_get_context(void);
*/
extern int32_t nss_dtls_cmn_get_ifnum(int32_t if_num);
/**
* nss_dtls_cmn_stats_unregister_notifier
* Deregisters a statistics notifier.
*
* @datatypes
* notifier_block
*
* @param[in] nb Notifier block.
*
* @return
* 0 on success or non-zero on failure.
*/
extern int nss_dtls_cmn_stats_unregister_notifier(struct notifier_block *nb);
/**
* nss_dtls_cmn_stats_register_notifier
* Registers a statistics notifier.
*
* @datatypes
* notifier_block
*
* @param[in] nb Notifier block.
*
* @return
* 0 on success or non-zero on failure.
*/
extern int nss_dtls_cmn_stats_register_notifier(struct notifier_block *nb);
/**
* @}
*/

View File

@@ -1,6 +1,6 @@
/*
**************************************************************************
* Copyright (c) 2014-2020, The Linux Foundation. All rights reserved.
* Copyright (c) 2014-2021, The Linux Foundation. All rights reserved.
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all copies.
@@ -40,10 +40,10 @@
enum nss_dynamic_interface_type {
NSS_DYNAMIC_INTERFACE_TYPE_NONE,
NSS_DYNAMIC_INTERFACE_TYPE_GRE_REDIR,
NSS_DYNAMIC_INTERFACE_TYPE_CAPWAP,
NSS_DYNAMIC_INTERFACE_TYPE_RESERVED_5,
NSS_DYNAMIC_INTERFACE_TYPE_TUNIPIP6_INNER,
NSS_DYNAMIC_INTERFACE_TYPE_TUNIPIP6_OUTER,
NSS_DYNAMIC_INTERFACE_TYPE_WIFI,
NSS_DYNAMIC_INTERFACE_TYPE_RESERVED,
NSS_DYNAMIC_INTERFACE_TYPE_VAP,
NSS_DYNAMIC_INTERFACE_TYPE_RESERVED_0,
NSS_DYNAMIC_INTERFACE_TYPE_PPPOE,
@@ -105,6 +105,11 @@ enum nss_dynamic_interface_type {
NSS_DYNAMIC_INTERFACE_TYPE_TLS_OUTER,
NSS_DYNAMIC_INTERFACE_TYPE_MIRROR,
NSS_DYNAMIC_INTERFACE_TYPE_WIFI_EXT_VDEV_WDS,
NSS_DYNAMIC_INTERFACE_TYPE_CAPWAP_HOST_INNER,
NSS_DYNAMIC_INTERFACE_TYPE_CAPWAP_OUTER,
NSS_DYNAMIC_INTERFACE_TYPE_WIFI_EXT_VDEV_VLAN,
NSS_DYNAMIC_INTERFACE_TYPE_WIFI_MESH_INNER,
NSS_DYNAMIC_INTERFACE_TYPE_WIFI_MESH_OUTER,
NSS_DYNAMIC_INTERFACE_TYPE_MAX
};

View File

@@ -1,6 +1,6 @@
/*
**************************************************************************
* Copyright (c) 2016-2020, The Linux Foundation. All rights reserved.
* Copyright (c) 2016-2021, The Linux Foundation. All rights reserved.
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all copies.
@@ -84,6 +84,7 @@ enum nss_edma_stats_rx_t {
NSS_EDMA_STATS_RX_DESC,
NSS_EDMA_STATS_RX_QOS_ERR,
NSS_EDMA_STATS_RX_SRC_PORT_INVALID,
NSS_EDMA_STATS_RX_SRC_IF_INVALID,
NSS_EDMA_STATS_RX_MAX
};
@@ -143,6 +144,7 @@ struct nss_edma_rx_ring_stats {
uint32_t desc_cnt; /**< Number of descriptors processed. */
uint32_t qos_err; /**< Number of QoS errors. */
uint32_t rx_src_port_invalid; /**< Number of source port invalid errors. */
uint32_t rx_src_if_invalid; /**< Number of source interface invalid errors. */
};
/**

View File

@@ -1,6 +1,6 @@
/*
**************************************************************************
* Copyright (c) 2017-2019, The Linux Foundation. All rights reserved.
****************************************************************************
* Copyright (c) 2017-2019, 2021, The Linux Foundation. All rights reserved.
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all copies.
@@ -11,7 +11,7 @@
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
* OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
**************************************************************************
****************************************************************************
*/
/**
@@ -119,47 +119,49 @@ enum nss_gre_ip_types {
};
/**
* GRE Base debug statistics
* nss_gre_base_types
* GRE base debug statistics.
*/
enum nss_gre_base_debug_types {
GRE_BASE_RX_PACKETS, /**< Rx packet count. */
GRE_BASE_RX_DROPPED, /**< Number of packet dropped at Rx. */
GRE_BASE_EXP_ETH_HDR_MISSING, /**< Ethernet header missing. */
GRE_BASE_EXP_ETH_TYPE_NON_IP, /**< Packet is not IPV4 or IPV6. */
GRE_BASE_EXP_IP_UNKNOWN_PROTOCOL, /**< Packet protocol is unknown. */
GRE_BASE_EXP_IP_HEADER_INCOMPLETE, /**< Bad IP header. */
GRE_BASE_EXP_IP_BAD_TOTAL_LENGTH, /**< IP total lenghth is invalid. */
GRE_BASE_EXP_IP_BAD_CHECKSUM, /**< IP checksum is bad. */
GRE_BASE_EXP_IP_DATAGRAM_INCOMPLETE, /**< Bad packet. */
GRE_BASE_EXP_IP_FRAGMENT, /**< IP packet is a fragment. */
GRE_BASE_EXP_IP_OPTIONS_INCOMPLETE, /**< IP option is invalid. */
GRE_BASE_EXP_IP_WITH_OPTIONS, /**< IP packet with options. */
GRE_BASE_EXP_IPV6_UNKNOWN_PROTOCOL, /**< Protocol is unknown. */
GRE_BASE_EXP_IPV6_HEADER_INCOMPLETE, /**< Incomplete ipv6 header. */
GRE_BASE_EXP_GRE_UNKNOWN_SESSION, /**< Unknown GRE session. */
GRE_BASE_EXP_GRE_NODE_INACTIVE, /**< GRE node is inactive. */
GRE_BASE_DEBUG_MAX, /**< GRE base debug max. */
enum nss_gre_base_types {
NSS_GRE_BASE_RX_PACKETS, /**< Receive packet count. */
NSS_GRE_BASE_RX_DROPPED, /**< Number of packet dropped at receive. */
NSS_GRE_BASE_EXP_ETH_HDR_MISSING, /**< Ethernet header missing. */
NSS_GRE_BASE_EXP_ETH_TYPE_NON_IP, /**< Packet is not IPV4 or IPV6. */
NSS_GRE_BASE_EXP_IP_UNKNOWN_PROTOCOL, /**< Packet protocol is unknown. */
NSS_GRE_BASE_EXP_IP_HEADER_INCOMPLETE, /**< Bad IP header. */
NSS_GRE_BASE_EXP_IP_BAD_TOTAL_LENGTH, /**< IP total length is invalid. */
NSS_GRE_BASE_EXP_IP_BAD_CHECKSUM, /**< IP checksum is bad. */
NSS_GRE_BASE_EXP_IP_DATAGRAM_INCOMPLETE,/**< Bad packet. */
NSS_GRE_BASE_EXP_IP_FRAGMENT, /**< IP packet is a fragment. */
NSS_GRE_BASE_EXP_IP_OPTIONS_INCOMPLETE, /**< IP option is invalid. */
NSS_GRE_BASE_EXP_IP_WITH_OPTIONS, /**< IP packet with options. */
NSS_GRE_BASE_EXP_IPV6_UNKNOWN_PROTOCOL, /**< Protocol is unknown. */
NSS_GRE_BASE_EXP_IPV6_HEADER_INCOMPLETE,/**< Incomplete ipv6 header. */
NSS_GRE_BASE_EXP_GRE_UNKNOWN_SESSION, /**< Unknown GRE session. */
NSS_GRE_BASE_EXP_GRE_NODE_INACTIVE, /**< GRE node is inactive. */
NSS_GRE_BASE_DEBUG_MAX, /**< GRE base debug maximum. */
};
/*
* GRE session Packet drop and exception events.
/**
* nss_gre_session_types
* GRE session packet drop and exception events.
*/
enum gre_session_debug_types {
GRE_SESSION_PBUF_ALLOC_FAIL, /**< Pbuf allocation failure. */
GRE_SESSION_DECAP_FORWARD_ENQUEUE_FAIL, /**< Rx forward enqueue failure. */
GRE_SESSION_ENCAP_FORWARD_ENQUEUE_FAIL, /**< Tx forward enqueue failure. */
GRE_SESSION_DECAP_TX_FORWARDED, /**< Number of packets forwarded after decap. */
GRE_SESSION_ENCAP_RX_RECEIVED, /**< Number of packets received for encap. */
GRE_SESSION_ENCAP_RX_DROPPED, /**< Packets dropped while enqueuing for encap. */
GRE_SESSION_ENCAP_RX_LINEAR_FAIL, /**< Packets dropped during encap linearization. */
GRE_SESSION_EXP_RX_KEY_ERROR, /**< Rx KEY error. */
GRE_SESSION_EXP_RX_SEQ_ERROR, /**< Rx Sequence number error. */
GRE_SESSION_EXP_RX_CS_ERROR, /**< Rx checksum error */
GRE_SESSION_EXP_RX_FLAG_MISMATCH, /**< Rx flag mismatch. */
GRE_SESSION_EXP_RX_MALFORMED, /**< Rx packet is malformed. */
GRE_SESSION_EXP_RX_INVALID_PROTOCOL, /**< Rx packet protocol is invalid. */
GRE_SESSION_EXP_RX_NO_HEADROOM, /**< Packet does not have enough headroom. */
GRE_SESSION_DEBUG_MAX, /**< Session debug max. */
enum nss_gre_session_types {
NSS_GRE_SESSION_PBUF_ALLOC_FAIL, /**< Pbuf allocation failure. */
NSS_GRE_SESSION_DECAP_FORWARD_ENQUEUE_FAIL, /**< Receive forward enqueue failure. */
NSS_GRE_SESSION_ENCAP_FORWARD_ENQUEUE_FAIL, /**< Transmit forward enqueue failure. */
NSS_GRE_SESSION_DECAP_TX_FORWARDED, /**< Number of packets forwarded after decapsulation. */
NSS_GRE_SESSION_ENCAP_RX_RECEIVED, /**< Number of packets received for encapsulation. */
NSS_GRE_SESSION_ENCAP_RX_DROPPED, /**< Packets dropped while enqueuing for encapsulation. */
NSS_GRE_SESSION_ENCAP_RX_LINEAR_FAIL, /**< Packets dropped during encapsulation linearization. */
NSS_GRE_SESSION_EXP_RX_KEY_ERROR, /**< Receive key error. */
NSS_GRE_SESSION_EXP_RX_SEQ_ERROR, /**< Receive Sequence number error. */
NSS_GRE_SESSION_EXP_RX_CS_ERROR, /**< Receive checksum error */
NSS_GRE_SESSION_EXP_RX_FLAG_MISMATCH, /**< Receive flag mismatch. */
NSS_GRE_SESSION_EXP_RX_MALFORMED, /**< Receive packet is malformed. */
NSS_GRE_SESSION_EXP_RX_INVALID_PROTOCOL, /**< Receive packet protocol is invalid. */
NSS_GRE_SESSION_EXP_RX_NO_HEADROOM, /**< Packet does not have enough headroom. */
NSS_GRE_SESSION_DEBUG_MAX, /**< Session debug maximum. */
};
/**
@@ -207,15 +209,34 @@ struct nss_gre_deconfig_msg {
* GRE session statistics message
*/
struct nss_gre_session_stats_msg {
struct nss_cmn_node_stats node_stats; /**< Common node statistics. */
uint32_t stats[GRE_SESSION_DEBUG_MAX]; /**< Session debug statistics. */
struct nss_cmn_node_stats node_stats; /**< Common node statistics. */
uint32_t stats[NSS_GRE_SESSION_DEBUG_MAX]; /**< Session debug statistics. */
};
/**
* GRE base statistics message
*/
struct nss_gre_base_stats_msg {
uint32_t stats[GRE_BASE_DEBUG_MAX]; /**< Base debug statistics. */
uint32_t stats[NSS_GRE_BASE_DEBUG_MAX]; /**< Base debug statistics. */
};
/**
* nss_gre_base_stats_notification
* GRE transmission statistics structure.
*/
struct nss_gre_base_stats_notification {
uint64_t stats_base_ctx[NSS_GRE_BASE_DEBUG_MAX]; /**< Base debug transmission statistics. */
uint32_t core_id; /**< Core ID. */
};
/**
* nss_gre_session_stats_notification
* GRE transmission statistics structure.
*/
struct nss_gre_session_stats_notification {
uint64_t stats_session_ctx[NSS_GRE_SESSION_DEBUG_MAX]; /**< Session debug transmission statistics. */
uint32_t core_id; /**< Core ID. */
uint32_t if_num; /**< Interface number. */
};
/**
@@ -438,6 +459,34 @@ extern void nss_gre_register_pkt_callback(nss_gre_pkt_callback_t cb);
*/
extern void nss_gre_unregister_pkt_callback(void);
/**
* nss_gre_stats_unregister_notifier
* Deregisters a statistics notifier.
*
* @datatypes
* notifier_block
*
* @param[in] nb Notifier block.
*
* @return
* 0 on success or non-zero on failure.
*/
extern int nss_gre_stats_unregister_notifier(struct notifier_block *nb);
/**
* nss_gre_stats_register_notifier
* Registers a statistics notifier.
*
* @datatypes
* notifier_block
*
* @param[in] nb Notifier block.
*
* @return
* 0 on success or non-zero on failure.
*/
extern int nss_gre_stats_register_notifier(struct notifier_block *nb);
/**
* @}
*/

View File

@@ -1,6 +1,6 @@
/*
**************************************************************************
* Copyright (c) 2014-2015, 2017-2020, The Linux Foundation. All rights reserved.
* Copyright (c) 2014-2015, 2017-2021, The Linux Foundation. All rights reserved.
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all copies.
@@ -92,6 +92,60 @@ enum nss_gre_redir_tunnel_types {
NSS_GRE_REDIR_TUNNEL_TYPE_MAX, /**< Maximum tunnel type. */
};
/**
* nss_gre_redir_stats_types
* GRE redirect statistics types.
*/
enum nss_gre_redir_stats_types {
NSS_GRE_REDIR_STATS_TX_DROPS = NSS_STATS_NODE_MAX,
/**< Dropped transmit packets. */
NSS_GRE_REDIR_STATS_SJACK_RX_PKTS, /**< SJACK receive packet counter. */
NSS_GRE_REDIR_STATS_SJACK_TX_PKTS, /**< SJACK transmit packet counter. */
NSS_GRE_REDIR_STATS_OFFLOAD_RX_PKTS_0, /**< Offload receive packet counter 0. */
NSS_GRE_REDIR_STATS_OFFLOAD_RX_PKTS_1, /**< Offload receive packet counter 1. */
NSS_GRE_REDIR_STATS_OFFLOAD_RX_PKTS_2, /**< Offload receive packet counter 2. */
NSS_GRE_REDIR_STATS_OFFLOAD_RX_PKTS_3, /**< Offload receive packet counter 3. */
NSS_GRE_REDIR_STATS_OFFLOAD_RX_PKTS_4, /**< Offload receive packet counter 4. */
NSS_GRE_REDIR_STATS_OFFLOAD_TX_PKTS_0, /**< Offload transmit packet counter 0. */
NSS_GRE_REDIR_STATS_OFFLOAD_TX_PKTS_1, /**< Offload transmit packet counter 1. */
NSS_GRE_REDIR_STATS_OFFLOAD_TX_PKTS_2, /**< Offload transmit packet counter 2. */
NSS_GRE_REDIR_STATS_OFFLOAD_TX_PKTS_3, /**< Offload transmit packet counter 3. */
NSS_GRE_REDIR_STATS_OFFLOAD_TX_PKTS_4, /**< Offload transmit packet counter 4. */
NSS_GRE_REDIR_STATS_EXCEPTION_US_RX_PKTS,
/**< Upstream exception receive packet counter. */
NSS_GRE_REDIR_STATS_EXCEPTION_US_TX_PKTS,
/**< Upstream exception transmit packet counter. */
NSS_GRE_REDIR_STATS_EXCEPTION_DS_RX_PKTS,
/**< Downstream exception receive packet counter. */
NSS_GRE_REDIR_STATS_EXCEPTION_DS_TX_PKTS,
/**< Downstream exception transmit packet counter. */
NSS_GRE_REDIR_STATS_ENCAP_SG_ALLOC_DROP,
/**< Encapsulation drop counters due to scatter gather buffer allocation failure. */
NSS_GRE_REDIR_STATS_DECAP_FAIL_DROP,
/**< Decapsulation drop counters due to invalid IP header. */
NSS_GRE_REDIR_STATS_DECAP_SPLIT_DROP,
/**< Decapsulation drop counters due to split flow processing. */
NSS_GRE_REDIR_STATS_SPLIT_SG_ALLOC_FAIL,
/**< Split processing fail counter due to scatter gather buffer allocation failure. */
NSS_GRE_REDIR_STATS_SPLIT_LINEAR_COPY_FAIL,
/**< Split processing fail counter due to linear copy fail. */
NSS_GRE_REDIR_STATS_SPLIT_NOT_ENOUGH_TAILROOM,
/**< Split processing fail counter due to insufficient tailroom. */
NSS_GRE_REDIR_STATS_EXCEPTION_DS_INVALID_DST_DROP,
/**< Downstream exception handling fail counter due to invalid destination. */
NSS_GRE_REDIR_STATS_DECAP_EAPOL_FRAMES,
/**< Decapsulation EAPoL frame counters. */
NSS_GRE_REDIR_STATS_EXCEPTION_DS_INV_APPID,
/**< Invalid application ID for the transmit completion packets on exception downstream node. */
NSS_GRE_REDIR_STATS_HEADROOM_UNAVAILABLE,
/**< Packet headroom unavailable to write metadata. */
NSS_GRE_REDIR_STATS_TX_COMPLETION_SUCCESS,
/**< Host enqueue success count for the transmit completion packets. */
NSS_GRE_REDIR_STATS_TX_COMPLETION_DROP,
/**< Host enqueue drop count for the transmit completion packets. */
NSS_GRE_REDIR_STATS_MAX /**< Maximum statistics type. */
};
/**
* nss_gre_redir_inner_configure_msg
* Message information for configuring GRE inner node.
@@ -246,35 +300,64 @@ struct nss_gre_redir_stats_sync_msg {
uint32_t tx_completion_drop; /**< Host enqueue drop count for the Tx completion packets. */
};
/**
* nss_gre_redir_tun_stats
* GRE redirect statistics to accumulate all the stats values.
*/
struct nss_gre_redir_tun_stats {
uint64_t rx_packets; /**< Number of packets received. */
uint64_t rx_bytes; /**< Number of bytes received. */
uint64_t tx_packets; /**< Number of packets transmitted. */
uint64_t tx_bytes; /**< Number of bytes transmitted. */
uint64_t rx_dropped[NSS_MAX_NUM_PRI];
/**< Packets dropped on receive due to queue full. */
uint64_t tx_dropped; /**< Dropped transmit packets. */
uint64_t sjack_rx_packets; /**< SJACK receive packet counter. */
uint64_t sjack_tx_packets; /**< SJACK transmit packet counter. */
uint64_t offl_rx_pkts[NSS_GRE_REDIR_MAX_RADIO]; /**< Offload receive packet counter per radio. */
uint64_t offl_tx_pkts[NSS_GRE_REDIR_MAX_RADIO]; /**< Offload transmit packet counter per radio. */
uint64_t exception_us_rx; /**< Upstream exception receive packet counter. */
uint64_t exception_us_tx; /**< Upstream exception transmit packet counter. */
uint64_t exception_ds_rx; /**< Downstream exception receive packet counter. */
uint64_t exception_ds_tx; /**< Downstream exception transmit packet counter. */
uint64_t encap_sg_alloc_drop;
/**< Encapsulation drop counters due to scatter gather buffer allocation failure. */
uint64_t decap_fail_drop; /**< Decapsulation drop counters due to invalid IP header. */
uint64_t decap_split_drop; /**< Decapsulation drop counters due to split flow processing. */
uint64_t split_sg_alloc_fail;
/**< Split processing fail counter due to scatter gather buffer allocation failure. */
uint64_t split_linear_copy_fail;
/**< Split processing fail counter due to linear copy fail. */
uint64_t split_not_enough_tailroom;
/**< Split processing fail counter due to insufficient tailroom. */
uint64_t exception_ds_invalid_dst_drop;
/**< Downstream exception handling fail counter due to invalid destination. */
uint64_t decap_eapol_frames; /**< Decapsulation EAPoL frame counters. */
uint64_t exception_ds_inv_appid;
/**< Invalid application ID for the transmit completion packets on exception downstream node. */
uint64_t headroom_unavail; /**< Packet headroom unavailable to write metadata. */
uint64_t tx_completion_success; /**< Host enqueue success count for the transmit completion packets. */
uint64_t tx_completion_drop; /**< Host enqueue drop count for the transmit completion packets. */
};
/**
* nss_gre_redir_tunnel_stats
* GRE redirect statistics as seen by the HLOS.
*/
struct nss_gre_redir_tunnel_stats {
struct net_device *dev; /**< Net device. */
struct nss_cmn_node_stats node_stats; /**< Common node statistics. */
uint64_t tx_dropped; /**< Dropped Tx packets. */
uint64_t sjack_rx_packets; /**< SJACK Rx packet counter. */
uint64_t sjack_tx_packets; /**< SJACK Tx packet counter. */
uint64_t offl_rx_pkts[NSS_GRE_REDIR_MAX_RADIO]; /**< Offload Rx packet counter per radio. */
uint64_t offl_tx_pkts[NSS_GRE_REDIR_MAX_RADIO]; /**< Offload Tx packet counter per radio. */
uint64_t exception_us_rx; /**< Upstream exception Rx packet counter. */
uint64_t exception_us_tx; /**< Upstream exception Tx packet counter. */
uint64_t exception_ds_rx; /**< Downstream exception Rx packet counter. */
uint64_t exception_ds_tx; /**< Downstream exception Tx packet counter. */
uint64_t encap_sg_alloc_drop; /**< Encapsulation drop counters due to scatter gather buffer allocation failure. */
uint64_t decap_fail_drop; /**< Decapsulation drop counters due to invalid IP header. */
uint64_t decap_split_drop; /**< Decapsulation drop counters due to split flow processing. */
uint64_t split_sg_alloc_fail; /**< Split processing fail counter due to scatter gather buffer allocation failure. */
uint64_t split_linear_copy_fail; /**< Split processing fail counter due to linear copy fail. */
uint64_t split_not_enough_tailroom; /**< Split processing fail counter due to insufficient tailroom. */
uint64_t exception_ds_invalid_dst_drop; /**< Downstream exception handling fail counter due to invalid destination. */
uint64_t decap_eapol_frames; /**< Decapsulation EAPoL frame counters. */
uint64_t exception_ds_inv_appid; /**< Invalid application ID for the Tx completion packets on exception downstream node. */
uint64_t headroom_unavail; /**< Packet headroom unavailable to write metadata. */
uint64_t tx_completion_success; /**< Host enqueue success count for the Tx completion packets. */
uint64_t tx_completion_drop; /**< Host enqueue drop count for the Tx completion packets. */
uint32_t ref_count; /**< Reference count for statistics. */
struct net_device *dev; /**< Net device. */
struct nss_gre_redir_tun_stats tstats; /**< Structure to accumulate all the statistics. */
uint32_t ref_count; /**< Reference count for statistics. */
};
/**
* nss_gre_redir_stats_notification
* GRE redirect transmission statistics structure.
*/
struct nss_gre_redir_stats_notification {
struct nss_gre_redir_tunnel_stats stats_ctx; /**< Context transmission statistics. */
uint32_t core_id; /**< Core ID. */
uint32_t if_num; /**< Interface number. */
};
/**
@@ -466,7 +549,7 @@ extern nss_tx_status_t nss_gre_redir_tx_buf_noreuse(struct nss_ctx_instance *nss
uint32_t if_num);
/**
* nss_gre_redir_get_stats
* nss_gre_redir_stats_get
* Gets GRE redirect tunnel statistics.
*
* @datatypes
@@ -478,7 +561,7 @@ extern nss_tx_status_t nss_gre_redir_tx_buf_noreuse(struct nss_ctx_instance *nss
* @return
* TRUE or FALSE.
*/
extern bool nss_gre_redir_get_stats(int index, struct nss_gre_redir_tunnel_stats *stats);
extern bool nss_gre_redir_stats_get(int index, struct nss_gre_redir_tunnel_stats *stats);
/**
* nss_gre_redir_alloc_and_register_node
@@ -594,6 +677,34 @@ extern struct dentry *nss_gre_redir_get_dentry(void);
*/
extern struct device *nss_gre_redir_get_device(void);
/**
* nss_gre_redir_stats_unregister_notifier
* Deregisters a statistics notifier.
*
* @datatypes
* notifier_block
*
* @param[in] nb Notifier block.
*
* @return
* 0 on success or non-zero on failure.
*/
extern int nss_gre_redir_stats_unregister_notifier(struct notifier_block *nb);
/**
* nss_gre_redir_stats_register_notifier
* Registers a statistics notifier.
*
* @datatypes
* notifier_block
*
* @param[in] nb Notifier block.
*
* @return
* 0 on success or non-zero on failure.
*/
extern int nss_gre_redir_stats_register_notifier(struct notifier_block *nb);
/**
* @}
*/

View File

@@ -1,6 +1,6 @@
/*
**************************************************************************
* Copyright (c) 2018, The Linux Foundation. All rights reserved.
* Copyright (c) 2018, 2021, The Linux Foundation. All rights reserved.
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all copies.
@@ -72,6 +72,39 @@ enum nss_gre_redir_lag_ds_message_types {
NSS_GRE_REDIR_LAG_DS_MAX_MSG_TYPES,
};
/**
* nss_gre_redir_lag_ds_stats_types
* GRE redirect LAG downstream statistics.
*/
enum nss_gre_redir_lag_ds_stats_types {
NSS_GRE_REDIR_LAG_DS_STATS_DST_INVALID = NSS_STATS_NODE_MAX,
/**< Packets that do not have a valid destination. */
NSS_GRE_REDIR_LAG_DS_STATS_EXCEPTION_PKT, /**< Packets that are exceptioned to host. */
NSS_GRE_REDIR_LAG_DS_STATS_MAX, /**< Maximum statistics type. */
};
/**
* nss_gre_redir_lag_us_stats_types
* GRE redirect LAG upstream statistics.
*/
enum nss_gre_redir_lag_us_stats_types {
NSS_GRE_REDIR_LAG_US_STATS_AMSDU_PKTS = NSS_STATS_NODE_MAX,
/**< Number of AMSDU packets seen. */
NSS_GRE_REDIR_LAG_US_STATS_AMSDU_PKTS_ENQUEUED, /**< Number of AMSDU packets enqueued. */
NSS_GRE_REDIR_LAG_US_STATS_AMSDU_PKTS_EXCEPTIONED,
/**< Number of AMSDU packets exceptioned. */
NSS_GRE_REDIR_LAG_US_STATS_EXCEPTIONED, /**< Number of exceptioned packets. */
NSS_GRE_REDIR_LAG_US_STATS_FREED, /**< Freed packets when equeue to NSS to host fails. */
NSS_GRE_REDIR_LAG_US_STATS_ADD_ATTEMPT, /**< Add hash attempts. */
NSS_GRE_REDIR_LAG_US_STATS_ADD_SUCCESS, /**< Add hash success. */
NSS_GRE_REDIR_LAG_US_STATS_ADD_FAIL_TABLE_FULL, /**< Add hash failed due to full table. */
NSS_GRE_REDIR_LAG_US_STATS_ADD_FAIL_EXISTS, /**< Add hash failed as entry already exists. */
NSS_GRE_REDIR_LAG_US_STATS_DEL_ATTEMPT, /**< Delete hash attempts. */
NSS_GRE_REDIR_LAG_US_STATS_DEL_SUCCESS, /**< Delete hash success. */
NSS_GRE_REDIR_LAG_US_STATS_DEL_FAIL_NOT_FOUND, /**< Delete hash failed as entry not found in hash table. */
NSS_GRE_REDIR_LAG_US_STATS_MAX, /**< Maximum statistics type. */
};
/**
* nss_gre_redir_lag_us_hash_mode
* GRE redirect LAG upstream hash modes.
@@ -253,6 +286,16 @@ struct nss_gre_redir_lag_us_tunnel_stats {
struct nss_gre_redir_lag_us_cmn_db_stats db_stats; /**< Common hash statistics. */
};
/**
* nss_gre_redir_lag_us_stats_notification
* GRE redirect LAG upstream transmission statistics structure.
*/
struct nss_gre_redir_lag_us_stats_notification {
struct nss_gre_redir_lag_us_tunnel_stats stats_ctx; /**< Context transmission statistics. */
uint32_t core_id; /**< Core ID. */
uint32_t if_num; /**< Interface number. */
};
/**
* nss_gre_redir_lag_ds_add_sta_msg
* Message to add station in LAG deployment.
@@ -320,15 +363,26 @@ struct nss_gre_redir_lag_ds_msg {
* Downstream statistics.
*/
struct nss_gre_redir_lag_ds_tun_stats {
uint64_t rx_packets; /**< Received packets. */
uint64_t rx_bytes; /**< Received bytes. */
uint64_t tx_packets; /**< Transmit packets. */
uint64_t tx_bytes; /**< Transmit bytes. */
uint64_t rx_dropped[NSS_MAX_NUM_PRI]; /**< Packets dropped on receive due to queue full. */
uint64_t dst_invalid; /**< Packets that do not have a valid destination. */
uint64_t exception_cnt; /**< Packets that are exceptioned to host. */
uint32_t ifnum; /**< NSS interface number. */
bool valid; /**< Valid flag. */
uint64_t rx_packets; /**< Received packets. */
uint64_t rx_bytes; /**< Received bytes. */
uint64_t tx_packets; /**< Transmit packets. */
uint64_t tx_bytes; /**< Transmit bytes. */
uint64_t rx_dropped[NSS_MAX_NUM_PRI];
/**< Packets dropped on receive due to queue full. */
uint64_t dst_invalid; /**< Packets that do not have a valid destination. */
uint64_t exception_cnt; /**< Packets that are exceptioned to host. */
uint32_t ifnum; /**< NSS interface number. */
bool valid; /**< Valid flag. */
};
/**
* nss_gre_redir_lag_ds_stats_notification
* GRE redirect LAG downstream transmission statistics structure.
*/
struct nss_gre_redir_lag_ds_stats_notification {
struct nss_gre_redir_lag_ds_tun_stats stats_ctx; /**< Context transmission statistics. */
uint32_t core_id; /**< Core ID. */
uint32_t if_num; /**< Interface number. */
};
/**
@@ -568,7 +622,7 @@ extern nss_tx_status_t nss_gre_redir_lag_us_tx_msg_sync(struct nss_ctx_instance
extern nss_tx_status_t nss_gre_redir_lag_ds_tx_msg_sync(struct nss_ctx_instance *nss_ctx, struct nss_gre_redir_lag_ds_msg *ngrm);
/**
* nss_gre_redir_lag_us_get_cmn_stats
* nss_gre_redir_lag_us_stats_get
* Fetches common node statistics for upstream GRE Redir LAG.
*
* @datatypes
@@ -580,10 +634,10 @@ extern nss_tx_status_t nss_gre_redir_lag_ds_tx_msg_sync(struct nss_ctx_instance
* @return
* True if successful, else false.
*/
extern bool nss_gre_redir_lag_us_get_cmn_stats(struct nss_gre_redir_lag_us_tunnel_stats *cmn_stats, uint32_t index);
extern bool nss_gre_redir_lag_us_stats_get(struct nss_gre_redir_lag_us_tunnel_stats *cmn_stats, uint32_t index);
/**
* nss_gre_redir_lag_ds_get_stats
* nss_gre_redir_lag_ds_stats_get
* Fetches common node statistics for downstream GRE Redir LAG.
*
* @datatypes
@@ -595,7 +649,7 @@ extern bool nss_gre_redir_lag_us_get_cmn_stats(struct nss_gre_redir_lag_us_tunne
* @return
* True if successful, else false.
*/
extern bool nss_gre_redir_lag_ds_get_cmn_stats(struct nss_gre_redir_lag_ds_tun_stats *cmn_stats, uint32_t index);
extern bool nss_gre_redir_lag_ds_stats_get(struct nss_gre_redir_lag_ds_tun_stats *cmn_stats, uint32_t index);
/**
* nss_gre_redir_lag_us_get_context
@@ -615,6 +669,62 @@ extern struct nss_ctx_instance *nss_gre_redir_lag_us_get_context(void);
*/
extern struct nss_ctx_instance *nss_gre_redir_lag_ds_get_context(void);
/**
* nss_gre_redir_lag_ds_stats_unregister_notifier
* Deregisters a statistics notifier.
*
* @datatypes
* notifier_block
*
* @param[in] nb Notifier block.
*
* @return
* 0 on success or non-zero on failure.
*/
extern int nss_gre_redir_lag_ds_stats_unregister_notifier(struct notifier_block *nb);
/**
* nss_gre_redir_lag_ds_stats_register_notifier
* Registers a statistics notifier.
*
* @datatypes
* notifier_block
*
* @param[in] nb Notifier block.
*
* @return
* 0 on success or non-zero on failure.
*/
extern int nss_gre_redir_lag_ds_stats_register_notifier(struct notifier_block *nb);
/**
* nss_gre_redir_lag_us_stats_unregister_notifier
* Deregisters a statistics notifier.
*
* @datatypes
* notifier_block
*
* @param[in] nb Notifier block.
*
* @return
* 0 on success or non-zero on failure.
*/
extern int nss_gre_redir_lag_us_stats_unregister_notifier(struct notifier_block *nb);
/**
* nss_gre_redir_lag_us_stats_register_notifier
* Registers a statistics notifier.
*
* @datatypes
* notifier_block
*
* @param[in] nb Notifier block.
*
* @return
* 0 on success or non-zero on failure.
*/
extern int nss_gre_redir_lag_us_stats_register_notifier(struct notifier_block *nb);
/**
* @}
*/

View File

@@ -1,6 +1,6 @@
/*
**************************************************************************
* Copyright (c) 2019, The Linux Foundation. All rights reserved.
* Copyright (c) 2019, 2021, The Linux Foundation. All rights reserved.
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all copies.
@@ -25,6 +25,8 @@
#define NSS_GRE_REDIR_MARK_HLOS_MAGIC 0xaade /**< Metadata magic set by HLOS. */
#define NSS_GRE_REDIR_MARK_NSS_MAGIC 0xaadf /**< Metadata magic set by NSS. */
extern struct nss_gre_redir_mark_stats gre_mark_stats;
/**
* nss_gre_redir_mark messages
* Message types for GRE redirect mark requests and responses.
@@ -46,6 +48,23 @@ enum nss_gre_redir_mark_error_types {
NSS_GRE_REDIR_MARK_ERROR_TYPE_MAX
};
/**
* nss_gre_redir_mark_stats_types
* GRE redirect mark statistics types.
*/
enum nss_gre_redir_mark_stats_types {
NSS_GRE_REDIR_MARK_STATS_HLOS_MAGIC_FAILED = NSS_STATS_NODE_MAX,
/**< HLOS magic fail count. */
NSS_GRE_REDIR_MARK_STATS_INV_DST_IF_DROPS, /**< Invalid transmit interface drop count. */
NSS_GRE_REDIR_MARK_STATS_DST_IF_ENQUEUE, /**< Next egress interface enqueue success count. */
NSS_GRE_REDIR_MARK_STATS_DST_IF_ENQUEUE_DROPS, /**< Next egress interface enqueue drop count. */
NSS_GRE_REDIR_MARK_STATS_INV_APPID, /**< Invalid application ID for the transmit completion packets. */
NSS_GRE_REDIR_MARK_STATS_HEADROOM_UNAVAILABLE, /**< Packet headroom unavailable to write metadata. */
NSS_GRE_REDIR_MARK_STATS_TX_COMPLETION_SUCCESS, /**< Transmit completion host enqueue success count. */
NSS_GRE_REDIR_MARK_STATS_TX_COMPLETION_DROPS, /**< Transmit completion host enqueue drop count. */
NSS_GRE_REDIR_MARK_STATS_MAX /**< Maximum statistics type. */
};
/**
* nss_gre_redir_mark_metadata
* HLOS to NSS per packet downstream metadata.
@@ -55,7 +74,7 @@ struct nss_gre_redir_mark_metadata {
uint8_t wifi_tid; /**< TID value. */
uint8_t app_id; /**< Application ID. */
uint16_t hw_hash_idx; /**< Hardware AST hash index value. */
uint32_t tx_status; /**< Tx status. */
uint32_t tx_status; /**< Transmit status. */
uint16_t offset; /**< Buffer offset from the metadata. */
uint16_t magic; /**< Metadata magic. */
};
@@ -67,21 +86,31 @@ struct nss_gre_redir_mark_metadata {
struct nss_gre_redir_mark_stats_sync_msg {
struct nss_cmn_node_stats node_stats; /**< Common node statistics. */
uint32_t hlos_magic_fail; /**< HLOS magic fail count. */
uint32_t invalid_dst_drop; /**< Invalid Tx interface drop count. */
uint32_t invalid_dst_drop; /**< Invalid transmit interface drop count. */
uint32_t dst_enqueue_success; /**< Next egress interface enqueue success count. */
uint32_t dst_enqueue_drop; /**< Next egress interface enqueue drop count. */
uint32_t inv_appid; /**< Invalid application ID for the Tx completion packets. */
uint32_t inv_appid; /**< Invalid application ID for the transmit completion packets. */
uint32_t headroom_unavail; /**< Packet headroom unavailable to write metadata. */
uint32_t tx_completion_success; /**< Tx completion host enqueue success count. */
uint32_t tx_completion_drop; /**< Tx completion host enqueue drop count. */
uint32_t tx_completion_success; /**< Transmit completion host enqueue success count. */
uint32_t tx_completion_drop; /**< Transmit completion host enqueue drop count. */
};
/**
* nss_gre_redir_mark_register_cb_msg
* Tx completion function register configuration message.
* Transmit completion function register configuration message.
*/
struct nss_gre_redir_mark_register_cb_msg {
uint32_t nss_if_num; /**< NSS Tx interface number on which callback needs to be registered. */
uint32_t nss_if_num; /**< NSS transmit interface number on which callback needs to be registered. */
};
/**
* nss_gre_redir_mark_stats_notification
* GRE redirect mark transmission statistics structure.
*/
struct nss_gre_redir_mark_stats_notification {
uint64_t stats_ctx[NSS_GRE_REDIR_MARK_STATS_MAX]; /**< Context transmission statistics. */
uint32_t core_id; /**< Core ID. */
uint32_t if_num; /**< Interface number. */
};
/**
@@ -211,7 +240,7 @@ extern nss_tx_status_t nss_gre_redir_mark_tx_msg(struct nss_ctx_instance *nss_ct
extern nss_tx_status_t nss_gre_redir_mark_tx_msg_sync(struct nss_ctx_instance *nss_ctx, struct nss_gre_redir_mark_msg *ngrm);
/**
* nss_gre_redir_mark_get_stats
* nss_gre_redir_mark_stats_get
* Gets GRE redirect mark statistics.
*
* @datatypes
@@ -223,7 +252,7 @@ extern nss_tx_status_t nss_gre_redir_mark_tx_msg_sync(struct nss_ctx_instance *n
* @return
* TRUE or FALSE.
*/
extern bool nss_gre_redir_mark_get_stats(void *stats);
extern bool nss_gre_redir_mark_stats_get(struct nss_gre_redir_mark_stats *stats);
/**
* nss_gre_redir_alloc_and_register_node
@@ -274,6 +303,34 @@ extern struct dentry *nss_gre_redir_mark_get_dentry(void);
*/
extern struct device *nss_gre_redir_mark_get_device(void);
/**
* nss_gre_redir_mark_stats_unregister_notifier
* Deregisters a statistics notifier.
*
* @datatypes
* notifier_block
*
* @param[in] nb Notifier block.
*
* @return
* 0 on success or non-zero on failure.
*/
extern int nss_gre_redir_mark_stats_unregister_notifier(struct notifier_block *nb);
/**
* nss_gre_redir_mark_stats_register_notifier
* Registers a statistics notifier.
*
* @datatypes
* notifier_block
*
* @param[in] nb Notifier block.
*
* @return
* 0 on success or non-zero on failure.
*/
extern int nss_gre_redir_mark_stats_register_notifier(struct notifier_block *nb);
/**
* @}
*/

View File

@@ -1,6 +1,6 @@
/*
**************************************************************************
* Copyright (c) 2016-2018,2020, The Linux Foundation. All rights reserved.
****************************************************************************
* Copyright (c) 2016-2018, 2020-2021, The Linux Foundation. All rights reserved.
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all copies.
@@ -11,7 +11,7 @@
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
* OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
**************************************************************************
****************************************************************************
*/
/**
@@ -97,6 +97,41 @@ enum nss_gre_tunnel_error_types {
NSS_GRE_TUNNEL_ERR_MAX,
};
/**
* nss_gre_tunnel_stats_type
* GRE tunnel session debug statistic counters.
*/
enum nss_gre_tunnel_stats_type {
NSS_GRE_TUNNEL_STATS_SESSION_RX_PKTS, /**< Number of packets received. */
NSS_GRE_TUNNEL_STATS_SESSION_TX_PKTS, /**< Number of packets transmitted. */
NSS_GRE_TUNNEL_STATS_SESSION_RX_QUEUE_0_DROPPED, /**< Dropped receive packets 0. */
NSS_GRE_TUNNEL_STATS_SESSION_RX_QUEUE_1_DROPPED, /**< Dropped receive packets 1. */
NSS_GRE_TUNNEL_STATS_SESSION_RX_QUEUE_2_DROPPED, /**< Dropped receive packets 2. */
NSS_GRE_TUNNEL_STATS_SESSION_RX_QUEUE_3_DROPPED, /**< Dropped receive packets 3. */
NSS_GRE_TUNNEL_STATS_SESSION_RX_MALFORMED, /**< Malformed packet was received. */
NSS_GRE_TUNNEL_STATS_SESSION_RX_INVALID_PROT, /**< Invalid protocol was received. */
NSS_GRE_TUNNEL_STATS_SESSION_DECAP_QUEUE_FULL, /**< Decapsulation queue is full. */
NSS_GRE_TUNNEL_STATS_SESSION_RX_SINGLE_REC_DGRAM, /**< Single fragment was received. */
NSS_GRE_TUNNEL_STATS_SESSION_RX_INVALID_REC_DGRAM, /**< Invalid fragment was received. */
NSS_GRE_TUNNEL_STATS_SESSION_BUFFER_ALLOC_FAIL, /**< Buffer memory allocation failed. */
NSS_GRE_TUNNEL_STATS_SESSION_BUFFER_COPY_FAIL, /**< Buffer memory copy failed. */
NSS_GRE_TUNNEL_STATS_SESSION_OUTFLOW_QUEUE_FULL, /**< Outflow queue is full. */
NSS_GRE_TUNNEL_STATS_SESSION_RX_DROPPED_HROOM, /**< Packets dropped because of insufficent headroom. */
NSS_GRE_TUNNEL_STATS_SESSION_RX_CBUFFER_ALLOC_FAIL, /**< Receive crypto buffer allocation failed. */
NSS_GRE_TUNNEL_STATS_SESSION_RX_CENQUEUE_FAIL, /**< Receive enqueue-to-crypto failed. */
NSS_GRE_TUNNEL_STATS_SESSION_RX_DECRYPT_DONE, /**< Receive decryption is complete. */
NSS_GRE_TUNNEL_STATS_SESSION_RX_FORWARD_ENQUEUE_FAIL, /**< Receive forward enqueue failed. */
NSS_GRE_TUNNEL_STATS_SESSION_TX_CBUFFER_ALLOC_FAIL, /**< Receive crypto buffer allocation failed. */
NSS_GRE_TUNNEL_STATS_SESSION_TX_CENQUEUE_FAIL, /**< Transmit enqueue-to-crypto failed. */
NSS_GRE_TUNNEL_STATS_SESSION_RX_DROPPED_TROOM, /**< Packets dropped because of insufficent tailroom. */
NSS_GRE_TUNNEL_STATS_SESSION_TX_FORWARD_ENQUEUE_FAIL, /**< Transmit forward enqueue failed. */
NSS_GRE_TUNNEL_STATS_SESSION_TX_CIPHER_DONE, /**< Transmit cipher is complete. */
NSS_GRE_TUNNEL_STATS_SESSION_CRYPTO_NOSUPP, /**< Error count for non-supported crypto packets. */
NSS_GRE_TUNNEL_STATS_SESSION_RX_DROPPED_MH_VERSION, /**< Receive drop: bad meta header. */
NSS_GRE_TUNNEL_STATS_SESSION_RX_UNALIGNED_PKT, /**< Counter for unaligned packets. */
NSS_GRE_TUNNEL_STATS_SESSION_MAX, /**< Maximum statistics type. */
};
/**
* nss_gre_tunnel_di_to_wlan_id
* Dynamic interface to WLAN ID message structure.
@@ -151,20 +186,20 @@ struct nss_gre_tunnel_stats {
uint32_t rx_dropped_hroom;
/**< Packets dropped because of insufficent headroom. */
uint32_t rx_cbuf_alloc_fail;
/**< Rx crypto buffer allocation failed. */
uint32_t rx_cenqueue_fail; /**< Rx enqueue-to-crypto failed. */
uint32_t rx_decrypt_done; /**< Rx decryption is complete. */
uint32_t rx_forward_enqueue_fail; /**< Rx forward enqueue failed. */
/**< Receive crypto buffer allocation failed. */
uint32_t rx_cenqueue_fail; /**< Receive enqueue-to-crypto failed. */
uint32_t rx_decrypt_done; /**< Receive decryption is complete. */
uint32_t rx_forward_enqueue_fail; /**< Receive forward enqueue failed. */
uint32_t tx_cbuf_alloc_fail;
/**< Rx crypto buffer allocation failed. */
uint32_t tx_cenqueue_fail; /**< Tx enqueue-to-crypto failed. */
/**< Receive crypto buffer allocation failed. */
uint32_t tx_cenqueue_fail; /**< Transmit enqueue-to-crypto failed. */
uint32_t rx_dropped_troom;
/**< Packets dropped because of insufficent tailroom. */
uint32_t tx_forward_enqueue_fail; /**< Tx forward enqueue failed. */
uint32_t tx_cipher_done; /**< Tx cipher is complete. */
uint32_t tx_forward_enqueue_fail; /**< Transmit forward enqueue failed. */
uint32_t tx_cipher_done; /**< Transmit cipher is complete. */
uint32_t crypto_nosupp;
/**< Error count for non-supported crypto packets. */
uint32_t rx_dropped_mh_ver; /**< Rx drop: bad meta header. */
uint32_t rx_dropped_mh_ver; /**< Receive drop: bad meta header. */
uint32_t rx_unaligned_pkt; /**< Counter for unaligned packets. */
#if defined(NSS_HAL_IPQ807x_SUPPORT)
uint32_t crypto_resp_error[NSS_CRYPTO_CMN_RESP_ERROR_MAX];
@@ -172,6 +207,17 @@ struct nss_gre_tunnel_stats {
#endif
};
/**
* nss_gre_tunnel_stats_notification
* GRE tunnel transmission statistics structure.
*/
struct nss_gre_tunnel_stats_notification {
uint64_t stats_ctx[NSS_GRE_TUNNEL_STATS_SESSION_MAX + NSS_CRYPTO_CMN_RESP_ERROR_MAX];
/**< Context transmission statistics. */
uint32_t core_id; /**< Core ID. */
uint32_t if_num; /**< Interface number. */
};
/**
* nss_gre_tunnel_msg
* Data for sending and receiving GRE tunnel messages.
@@ -347,6 +393,34 @@ extern nss_tx_status_t nss_gre_tunnel_inquiry(
struct nss_gre_tunnel_configure *inquiry_info,
nss_gre_tunnel_msg_callback_t cb, void *app_data);
/**
* nss_gre_tunnel_stats_unregister_notifier
* Deregisters a statistics notifier.
*
* @datatypes
* notifier_block
*
* @param[in] nb Notifier block.
*
* @return
* 0 on success or non-zero on failure.
*/
extern int nss_gre_tunnel_stats_unregister_notifier(struct notifier_block *nb);
/**
* nss_gre_tunnel_stats_register_notifier
* Registers a statistics notifier.
*
* @datatypes
* notifier_block
*
* @param[in] nb Notifier block.
*
* @return
* 0 on success or non-zero on failure.
*/
extern int nss_gre_tunnel_stats_register_notifier(struct notifier_block *nb);
/**
* @}
*/

View File

@@ -1,6 +1,6 @@
/*
**************************************************************************
* Copyright (c) 2014-2020, The Linux Foundation. All rights reserved.
* Copyright (c) 2014-2021, The Linux Foundation. All rights reserved.
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all copies.
@@ -53,6 +53,8 @@ enum nss_if_message_types {
NSS_IF_SET_IGS_NODE,
NSS_IF_CLEAR_IGS_NODE,
NSS_IF_RESET_NEXTHOP,
NSS_IF_PPE_PORT_CREATE,
NSS_IF_PPE_PORT_DESTROY,
NSS_IF_MAX_MSG_TYPES = 9999,
};
@@ -197,6 +199,14 @@ struct nss_if_igs_config {
int32_t igs_num; /**< Ingress shaper interface number. */
};
/**
* nss_if_ppe_port_create
* Message to create PPE port.
*/
struct nss_if_ppe_port_create {
int32_t ppe_port_num; /**< PPE port number returned by NSS. */
};
/**
* nss_if_msgs
* Information for physical NSS interface command messages.
@@ -230,6 +240,8 @@ union nss_if_msgs {
/**< Set nexthop of interface. */
struct nss_if_igs_config config_igs;
/**< Configure an ingress shaper interface. */
struct nss_if_ppe_port_create ppe_port_create;
/**< Create a PPE port. */
};
/**
@@ -371,6 +383,70 @@ nss_tx_status_t nss_if_set_nexthop(struct nss_ctx_instance *nss_ctx, uint32_t if
*/
nss_tx_status_t nss_if_reset_nexthop(struct nss_ctx_instance *nss_ctx, uint32_t if_num);
/**
* nss_if_change_mtu
* Change the MTU of the interface.
*
* @datatypes
* nss_ctx_instance
*
* @param[in] nss_ctx Pointer to the NSS context.
* @param[in] if_num NSS interface number.
* @param[in] mtu New MTU.
*
* @return
* Status of the transmit operation.
*/
nss_tx_status_t nss_if_change_mtu(struct nss_ctx_instance *nss_ctx, nss_if_num_t if_num, uint16_t mtu);
/**
* nss_if_change_mac_addr
* Change the MAC address of the interface.
*
* @datatypes
* nss_ctx_instance
*
* @param[in] nss_ctx Pointer to the NSS context.
* @param[in] if_num NSS interface number.
* @param[in] mac_addr New MAC address.
*
* @return
* Status of the transmit operation.
*/
nss_tx_status_t nss_if_change_mac_addr(struct nss_ctx_instance *nss_ctx, nss_if_num_t if_num, uint8_t *mac_addr);
/**
* nss_if_vsi_unassign
* Detach the VSI ID from the given interface.
*
* @datatypes
* nss_ctx_instance
*
* @param[in] nss_ctx Pointer to the NSS context.
* @param[in] if_num NSS interface number.
* @param[in] vsi VSI ID.
*
* @return
* Status of the transmit operation.
*/
nss_tx_status_t nss_if_vsi_unassign(struct nss_ctx_instance *nss_ctx, nss_if_num_t if_num, uint32_t vsi);
/**
* nss_if_vsi_assign
* Attach the VSI ID to the given interface.
*
* @datatypes
* nss_ctx_instance
*
* @param[in] nss_ctx Pointer to the NSS context.
* @param[in] if_num NSS interface number.
* @param[in] vsi VSI ID.
*
* @return
* Status of the transmit operation.
*/
nss_tx_status_t nss_if_vsi_assign(struct nss_ctx_instance *nss_ctx, nss_if_num_t if_num, uint32_t vsi);
/**
* @}
*/

View File

@@ -1,6 +1,6 @@
/*
**************************************************************************
* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all copies.
@@ -106,6 +106,37 @@ enum nss_ipsec_cmn_ctx_type {
NSS_IPSEC_CMN_CTX_TYPE_MAX
};
/**
* nss_ipsec_cmn_stats_types
* IPsec common statistics types.
*/
enum nss_ipsec_cmn_stats_types {
NSS_IPSEC_CMN_STATS_FAIL_HEADROOM = NSS_STATS_NODE_MAX,
/**< Failure in headroom check. */
NSS_IPSEC_CMN_STATS_FAIL_TAILROOM, /**< Failure in tailroom check. */
NSS_IPSEC_CMN_STATS_FAIL_REPLAY, /**< Failure in anti-replay check. */
NSS_IPSEC_CMN_STATS_FAIL_REPLAY_DUP, /**< Failure in anti-replay; duplicate records. */
NSS_IPSEC_CMN_STATS_FAIL_REPLAY_WIN, /**< Failure in anti-replay; packet outside the window. */
NSS_IPSEC_CMN_STATS_FAIL_PBUF_CRYPTO, /**< Failure in crypto pbuf allocation. */
NSS_IPSEC_CMN_STATS_FAIL_QUEUE, /**< Failure due to queue full in IPsec. */
NSS_IPSEC_CMN_STATS_FAIL_QUEUE_CRYPTO, /**< Failure due to queue full in crypto. */
NSS_IPSEC_CMN_STATS_FAIL_QUEUE_NEXTHOP, /**< Failure due to queue full in next hop. */
NSS_IPSEC_CMN_STATS_FAIL_PBUF_ALLOC, /**< Failure in pbuf allocation. */
NSS_IPSEC_CMN_STATS_FAIL_PBUF_LINEAR, /**< Failure in pbuf linearization. */
NSS_IPSEC_CMN_STATS_FAIL_PBUF_STATS, /**< Failure in pbuf allocation for statistics. */
NSS_IPSEC_CMN_STATS_FAIL_PBUF_ALIGN, /**< Failure in pbuf access due to non-word alignmnt */
NSS_IPSEC_CMN_STATS_FAIL_CIPHER, /**< Failure in decrypting the data. */
NSS_IPSEC_CMN_STATS_FAIL_AUTH, /**< Failure in authenticating the data. */
NSS_IPSEC_CMN_STATS_FAIL_SEQ_OVF, /**< Failure due to sequence number rollover. */
NSS_IPSEC_CMN_STATS_FAIL_BLK_LEN, /**< Failure in decapsulation due to bad cipher block length. */
NSS_IPSEC_CMN_STATS_FAIL_HASH_LEN, /**< Failure in decapsulation due to bad hash block length. */
NSS_IPSEC_CMN_STATS_FAIL_TRANSFORM, /**< Failure in transformation; general error. */
NSS_IPSEC_CMN_STATS_FAIL_CRYPTO, /**< Failure in crypto transformation. */
NSS_IPSEC_CMN_STATS_FAIL_CLE, /**< Failure in classification; general failure. */
NSS_IPSEC_CMN_STATS_IS_STOPPED, /**< Indicates if SA is stopped; for example: sequence overflow. */
NSS_IPSEC_CMN_STATS_MAX, /**< Maximum statistics type. */
};
/**
* nss_ipsec_cmn_flow_tuple
* IPsec tuple for creating flow entries.
@@ -336,6 +367,16 @@ struct nss_ipsec_cmn_mdata {
} data; /**< Metadata payload. */
};
/**
* nss_ipsec_cmn_stats_notification
* IPsec common transmission statistics structure.
*/
struct nss_ipsec_cmn_stats_notification {
uint64_t stats_ctx[NSS_IPSEC_CMN_STATS_MAX]; /**< Context transmission statistics. */
uint32_t core_id; /**< Core ID. */
uint32_t if_num; /**< Interface number. */
};
/**
* nss_ipsec_cmn_msg
* Message structure for NSS IPsec messages.
@@ -424,6 +465,23 @@ extern struct nss_ctx_instance *nss_ipsec_cmn_get_context(void);
*/
extern uint32_t nss_ipsec_cmn_get_ifnum_with_coreid(int32_t ifnum);
/**
* nss_ipsec_cmn_unregister_if
* Deregisters an IPSEC tunnel interface from the NSS.
*
* @param[in] if_num NSS interface number.
*
* @return
* None.
*
* @dependencies
* The tunnel interface must have been previously registered.
*
* @return
* True if successful, else false.
*/
extern bool nss_ipsec_cmn_unregister_if(uint32_t if_num);
/**
* nss_ipsec_cmn_register_if
* Registers the IPsec interface with the NSS for sending and
@@ -451,39 +509,6 @@ extern struct nss_ctx_instance *nss_ipsec_cmn_register_if(uint32_t if_num, struc
nss_ipsec_cmn_msg_callback_t cb_msg,
uint32_t features, enum nss_dynamic_interface_type type, void *app_data);
/**
* nss_ipsec_cmn_unregister_if
* Deregisters a IPSEC tunnel interface from the NSS.
*
* @param[in] if_num NSS interface number.
. *
* @return
* None.
*
* @dependencies
* The tunnel interface must have been previously registered.
*
* @return
* True if successful, else false.
*/
extern bool nss_ipsec_cmn_unregister_if(uint32_t if_num);
/**
* nss_ipsec_cmn_notify_register
* Register an event callback to handle notification from IPsec firmware package.
*
* @datatypes
* nss_ipsec_cmn_msg_callback_t \n
*
* @param[in] ifnum NSS interface number.
* @param[in] cb Callback for IPsec message.
* @param[in] app_data Pointer to the application context.
*
* @return
* Pointer to NSS core context.
*/
extern struct nss_ctx_instance *nss_ipsec_cmn_notify_register(uint32_t ifnum, nss_ipsec_cmn_msg_callback_t cb, void *app_data);
/**
* nss_ipsec_cmn_notify_unregister
* Deregisters the message notifier from the HLOS driver.
@@ -502,6 +527,22 @@ extern struct nss_ctx_instance *nss_ipsec_cmn_notify_register(uint32_t ifnum, ns
*/
extern void nss_ipsec_cmn_notify_unregister(struct nss_ctx_instance *ctx, uint32_t if_num);
/**
* nss_ipsec_cmn_notify_register
* Registers an event callback to handle notifications from the IPsec firmware package.
*
* @datatypes
* nss_ipsec_cmn_msg_callback_t \n
*
* @param[in] ifnum NSS interface number.
* @param[in] cb Callback for IPsec message.
* @param[in] app_data Pointer to the application context.
*
* @return
* Pointer to the NSS core context.
*/
extern struct nss_ctx_instance *nss_ipsec_cmn_notify_register(uint32_t ifnum, nss_ipsec_cmn_msg_callback_t cb, void *app_data);
/**
* nss_ipsec_cmn_msg_init
* Initializes an IPsec message.
@@ -615,6 +656,34 @@ extern bool nss_ipsec_cmn_ppe_port_config(struct nss_ctx_instance *ctx, struct n
*/
bool nss_ipsec_cmn_ppe_mtu_update(struct nss_ctx_instance *ctx, uint32_t if_num, uint16_t mtu, uint16_t mru);
/**
* nss_ipsec_cmn_stats_unregister_notifier
* Deregisters a statistics notifier.
*
* @datatypes
* notifier_block
*
* @param[in] nb Notifier block.
*
* @return
* 0 on success or non-zero on failure.
*/
extern int nss_ipsec_cmn_stats_unregister_notifier(struct notifier_block *nb);
/**
* nss_ipsec_cmn_stats_register_notifier
* Registers a statistics notifier.
*
* @datatypes
* notifier_block
*
* @param[in] nb Notifier block.
*
* @return
* 0 on success or non-zero on failure.
*/
extern int nss_ipsec_cmn_stats_register_notifier(struct notifier_block *nb);
/**
* @}
*/

View File

@@ -1,6 +1,6 @@
/*
**************************************************************************
* Copyright (c) 2014-2020, The Linux Foundation. All rights reserved.
* Copyright (c) 2014-2021, The Linux Foundation. All rights reserved.
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all copies.
@@ -31,6 +31,111 @@
* @{
*/
/*
* IPv4 connection flags (to be used with nss_ipv4_create::flags).
*/
#define NSS_IPV4_CREATE_FLAG_NO_SEQ_CHECK 0x01
/**< Rule for not checking sequence numbers. */
#define NSS_IPV4_CREATE_FLAG_BRIDGE_FLOW 0x02
/**< Rule that indicates pure bridge flow (no routing is involved). */
#define NSS_IPV4_CREATE_FLAG_ROUTED 0x04 /**< Rule for a routed connection. */
#define NSS_IPV4_CREATE_FLAG_DSCP_MARKING 0x08 /**< Rule for DSCP marking. */
#define NSS_IPV4_CREATE_FLAG_VLAN_MARKING 0x10 /**< Rule for VLAN marking. */
#define NSS_IPV4_CREATE_FLAG_QOS_VALID 0x20 /**< Rule for QoS is valid. */
/**
* nss_ipv4_create
* Information for an IPv4 flow or connection create rule.
*
* All fields must be passed in host-endian order.
*/
struct nss_ipv4_create {
int32_t src_interface_num;
/**< Source interface number (virtual or physical). */
int32_t dest_interface_num;
/**< Destination interface number (virtual or physical). */
int32_t protocol; /**< L4 protocol (e.g., TCP or UDP). */
uint32_t flags; /**< Flags (if any) associated with this rule. */
uint32_t from_mtu; /**< MTU of the incoming interface. */
uint32_t to_mtu; /**< MTU of the outgoing interface. */
uint32_t src_ip; /**< Source IP address. */
int32_t src_port; /**< Source L4 port (e.g., TCP or UDP port). */
uint32_t src_ip_xlate; /**< Translated source IP address (used with SNAT). */
int32_t src_port_xlate; /**< Translated source L4 port (used with SNAT). */
uint32_t dest_ip; /**< Destination IP address. */
int32_t dest_port; /**< Destination L4 port (e.g., TCP or UDP port). */
uint32_t dest_ip_xlate;
/**< Translated destination IP address (used with DNAT). */
int32_t dest_port_xlate;
/**< Translated destination L4 port (used with DNAT). */
uint8_t src_mac[ETH_ALEN];
/**< Source MAC address. */
uint8_t dest_mac[ETH_ALEN];
/**< Destination MAC address. */
uint8_t src_mac_xlate[ETH_ALEN];
/**< Translated source MAC address (post-routing). */
uint8_t dest_mac_xlate[ETH_ALEN];
/**< Translated destination MAC address (post-routing). */
uint8_t flow_window_scale; /**< Window scaling factor (TCP). */
uint32_t flow_max_window; /**< Maximum window size (TCP). */
uint32_t flow_end; /**< TCP window end. */
uint32_t flow_max_end; /**< TCP window maximum end. */
uint32_t flow_pppoe_if_exist;
/**< Flow direction: PPPoE interface exist flag. */
int32_t flow_pppoe_if_num;
/**< Flow direction: PPPoE interface number. */
uint16_t ingress_vlan_tag; /**< Ingress VLAN tag expected for this flow. */
uint8_t return_window_scale;
/**< Window scaling factor of the return direction (TCP). */
uint32_t return_max_window;
/**< Maximum window size of the return direction. */
uint32_t return_end;
/**< Flow end for the return direction. */
uint32_t return_max_end;
/**< Flow maximum end for the return direction. */
uint32_t return_pppoe_if_exist;
/**< Return direction: PPPoE interface existence flag. */
int32_t return_pppoe_if_num;
/**< Return direction: PPPoE interface number. */
uint16_t egress_vlan_tag; /**< Egress VLAN tag expected for this flow. */
uint8_t spo_needed; /**< Indicates whether SPO is required. */
uint32_t param_a0; /**< Custom parameter 0. */
uint32_t param_a1; /**< Custom parameter 1. */
uint32_t param_a2; /**< Custom parameter 2. */
uint32_t param_a3; /**< Custom parameter 3. */
uint32_t param_a4; /**< Custom parameter 4. */
uint32_t qos_tag; /**< Deprecated, will be removed soon. */
uint32_t flow_qos_tag; /**< QoS tag value for the flow direction. */
uint32_t return_qos_tag; /**< QoS tag value for the return direction. */
uint8_t dscp_itag; /**< DSCP marking tag. */
uint8_t dscp_imask; /**< DSCP marking input mask. */
uint8_t dscp_omask; /**< DSCP marking output mask. */
uint8_t dscp_oval; /**< DSCP marking output value. */
uint16_t vlan_itag; /**< VLAN marking tag. */
uint16_t vlan_imask; /**< VLAN marking input mask. */
uint16_t vlan_omask; /**< VLAN marking output mask. */
uint16_t vlan_oval; /**< VLAN marking output value. */
uint32_t in_vlan_tag[MAX_VLAN_DEPTH];
/**< Ingress VLAN tag expected for this flow. */
uint32_t out_vlan_tag[MAX_VLAN_DEPTH];
/**< Egress VLAN tag expected for this flow. */
uint8_t flow_dscp; /**< IP DSCP value for the flow direction. */
uint8_t return_dscp; /**< IP DSCP value for the return direction. */
};
/**
* nss_ipv4_destroy
* Information for an IPv4 flow or connection destroy rule.
*/
struct nss_ipv4_destroy {
int32_t protocol; /**< L4 protocol ID. */
uint32_t src_ip; /**< Source IP address. */
int32_t src_port; /**< Source L4 port (e.g., TCP or UDP port). */
uint32_t dest_ip; /**< Destination IP address. */
int32_t dest_port; /**< Destination L4 port (e.g., TCP or UDP port). */
};
/**
* nss_ipv4_message_types
* IPv4 bridge and routing rule message types.
@@ -111,6 +216,12 @@ enum nss_ipv4_stats_types {
/**< Number of IPv4 multicast connection destroy requests that missed the cache. */
NSS_IPV4_STATS_MC_CONNECTION_FLUSHES,
/**< Number of IPv4 multicast connection flushes. */
NSS_IPV4_STATS_CONNECTION_CREATE_INVALID_MIRROR_IFNUM,
/**< Number of IPv4 mirror connection requests with an invalid interface number. */
NSS_IPV4_STATS_CONNECTION_CREATE_INVALID_MIRROR_IFTYPE,
/**< Number of IPv4 mirror connection requests with an invalid interface type. */
NSS_IPV4_STATS_MIRROR_FAILURES,
/**< Number of IPv4 mirror failures. */
NSS_IPV4_STATS_MAX,
/**< Maximum message type. */
};
@@ -175,6 +286,7 @@ enum nss_ipv4_stats_types {
/**< Ingress shaping fields are valid. */
#define NSS_IPV4_RULE_CREATE_IDENTIFIER_VALID 0x1000
/**< Identifier is valid. */
#define NSS_IPV4_RULE_CREATE_MIRROR_VALID 0x2000 /**< Mirror fields are valid. */
/*
* Multicast command rule flags
@@ -237,6 +349,15 @@ enum nss_ipv4_stats_types {
#define NSS_IPV4_RETURN_IDENTIFIER_VALID 0x02
/**< Identifier for return direction is valid. */
/*
* Mirror valid flags (to be used with the valid field of nss_ipv4_mirror_rule structure)
*/
#define NSS_IPV4_MIRROR_FLOW_VALID 0x01
/**< Mirror interface number for the flow direction is valid. */
#define NSS_IPV4_MIRROR_RETURN_VALID 0x02
/**< Mirror interface number for the return direction is valid. */
/**
* nss_ipv4_5tuple
* Common 5-tuple information.
@@ -410,6 +531,16 @@ struct nss_ipv4_identifier_rule {
/**< Identifier for return direction. */
};
/**
* nss_ipv4_mirror_rule
* Mirror rule structure.
*/
struct nss_ipv4_mirror_rule {
uint32_t valid; /**< Mirror validity flags. */
nss_if_num_t flow_ifnum; /**< Flow mirror interface number. */
nss_if_num_t return_ifnum; /**< Return mirror interface number. */
};
/**
* nss_ipv4_error_response_types
* Error types for IPv4 messages.
@@ -478,6 +609,8 @@ struct nss_ipv4_rule_create_msg {
/**< Ingress shaping related accleration parameters. */
struct nss_ipv4_identifier_rule identifier;
/**< Rule for adding identifier. */
struct nss_ipv4_mirror_rule mirror_rule;
/**< Mirror rule parameter. */
};
/**
@@ -821,6 +954,16 @@ struct nss_ipv4_node_sync {
uint32_t ipv4_mc_connection_flushes;
/**< Number of multicast connection flushes. */
uint32_t ipv4_connection_create_invalid_mirror_ifnum;
/**< Number of create request failed with an invalid mirror interface number. */
uint32_t ipv4_connection_create_invalid_mirror_iftype;
/**< Number of create request failed with an invalid mirror interface type. */
uint32_t ipv4_mirror_failures;
/**< Mirror packet failed. */
uint32_t exception_events[NSS_IPV4_EXCEPTION_EVENT_MAX];
/**< Number of exception events. */
};

View File

@@ -1,6 +1,6 @@
/*
**************************************************************************
* Copyright (c) 2014-2020, The Linux Foundation. All rights reserved.
* Copyright (c) 2014-2021, The Linux Foundation. All rights reserved.
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all copies.
@@ -27,6 +27,125 @@
* @{
*/
/**
* Converts the format of an IPv6 address from Linux to NSS. @hideinitializer
*/
#define IN6_ADDR_TO_IPV6_ADDR(ipv6, in6) \
{ \
((uint32_t *)ipv6)[0] = in6.in6_u.u6_addr32[0]; \
((uint32_t *)ipv6)[1] = in6.in6_u.u6_addr32[1]; \
((uint32_t *)ipv6)[2] = in6.in6_u.u6_addr32[2]; \
((uint32_t *)ipv6)[3] = in6.in6_u.u6_addr32[3]; \
}
/**
* Converts the format of an IPv6 address from NSS to Linux. @hideinitializer
*/
#define IPV6_ADDR_TO_IN6_ADDR(in6, ipv6) \
{ \
in6.in6_u.u6_addr32[0] = ((uint32_t *)ipv6)[0]; \
in6.in6_u.u6_addr32[1] = ((uint32_t *)ipv6)[1]; \
in6.in6_u.u6_addr32[2] = ((uint32_t *)ipv6)[2]; \
in6.in6_u.u6_addr32[3] = ((uint32_t *)ipv6)[3]; \
}
/**
* Format of an IPv6 address (16 * 8 bits).
*/
#define IPV6_ADDR_OCTAL_FMT "%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x"
/**
* Prints an IPv6 address (16 * 8 bits).
*/
#define IPV6_ADDR_TO_OCTAL(ipv6) ((uint16_t *)ipv6)[0], ((uint16_t *)ipv6)[1], ((uint16_t *)ipv6)[2], ((uint16_t *)ipv6)[3], ((uint16_t *)ipv6)[4], ((uint16_t *)ipv6)[5], ((uint16_t *)ipv6)[6], ((uint16_t *)ipv6)[7]
/*
* IPv6 connection flags (to be used with nss_ipv6_create::flags.
*/
#define NSS_IPV6_CREATE_FLAG_NO_SEQ_CHECK 0x1
/**< Indicates that sequence numbers are not to be checked. */
#define NSS_IPV6_CREATE_FLAG_BRIDGE_FLOW 0x02
/**< Indicates that this is a pure bridge flow (no routing is involved). */
#define NSS_IPV6_CREATE_FLAG_ROUTED 0x04 /**< Rule is for a routed connection. */
#define NSS_IPV6_CREATE_FLAG_DSCP_MARKING 0x08 /**< Rule for DSCP marking. */
#define NSS_IPV6_CREATE_FLAG_VLAN_MARKING 0x10 /**< Rule for VLAN marking. */
#define NSS_IPV6_CREATE_FLAG_QOS_VALID 0x20 /**< Rule for Valid QoS. */
/**
* nss_ipv6_create
* Information for an IPv6 flow or connection create rule.
*
* All fields must be passed in host-endian order.
*/
struct nss_ipv6_create {
int32_t src_interface_num;
/**< Source interface number (virtual or physical). */
int32_t dest_interface_num;
/**< Destination interface number (virtual or physical). */
int32_t protocol; /**< L4 protocol (e.g., TCP or UDP). */
uint32_t flags; /**< Flags (if any) associated with this rule. */
uint32_t from_mtu; /**< MTU of the incoming interface. */
uint32_t to_mtu; /**< MTU of the outgoing interface. */
uint32_t src_ip[4]; /**< Source IP address. */
int32_t src_port; /**< Source L4 port (e.g., TCP or UDP port). */
uint32_t dest_ip[4]; /**< Destination IP address. */
int32_t dest_port; /**< Destination L4 port (e.g., TCP or UDP port). */
uint8_t src_mac[ETH_ALEN]; /**< Source MAC address. */
uint8_t dest_mac[ETH_ALEN]; /**< Destination MAC address. */
uint8_t flow_window_scale; /**< Window scaling factor (TCP). */
uint32_t flow_max_window; /**< Maximum window size (TCP). */
uint32_t flow_end; /**< TCP window end. */
uint32_t flow_max_end; /**< TCP window maximum end. */
uint32_t flow_pppoe_if_exist;
/**< Flow direction: PPPoE interface existence flag. */
int32_t flow_pppoe_if_num;
/**< Flow direction: PPPoE interface number. */
uint16_t ingress_vlan_tag;
/**< Ingress VLAN tag expected for this flow. */
uint8_t return_window_scale;
/**< Window scaling factor (TCP) for the return direction. */
uint32_t return_max_window;
/**< Maximum window size (TCP) for the return direction. */
uint32_t return_end;
/**< End for the return direction. */
uint32_t return_max_end;
/**< Maximum end for the return direction. */
uint32_t return_pppoe_if_exist;
/**< Return direction: PPPoE interface exist flag. */
int32_t return_pppoe_if_num;
/**< Return direction: PPPoE interface number. */
uint16_t egress_vlan_tag; /**< Egress VLAN tag expected for this flow. */
uint32_t qos_tag; /**< Deprecated; will be removed soon. */
uint32_t flow_qos_tag; /**< QoS tag value for flow direction. */
uint32_t return_qos_tag; /**< QoS tag value for the return direction. */
uint8_t dscp_itag; /**< DSCP marking tag. */
uint8_t dscp_imask; /**< DSCP marking input mask. */
uint8_t dscp_omask; /**< DSCP marking output mask. */
uint8_t dscp_oval; /**< DSCP marking output value. */
uint16_t vlan_itag; /**< VLAN marking tag. */
uint16_t vlan_imask; /**< VLAN marking input mask. */
uint16_t vlan_omask; /**< VLAN marking output mask. */
uint16_t vlan_oval; /**< VLAN marking output value. */
uint32_t in_vlan_tag[MAX_VLAN_DEPTH];
/**< Ingress VLAN tag expected for this flow. */
uint32_t out_vlan_tag[MAX_VLAN_DEPTH];
/**< Egress VLAN tag expected for this flow. */
uint8_t flow_dscp; /**< IP DSCP value for flow direction. */
uint8_t return_dscp; /**< IP DSCP value for the return direction. */
};
/**
* nss_ipv6_destroy
* Information for an IPv6 flow or connection destroy rule.
*/
struct nss_ipv6_destroy {
int32_t protocol; /**< L4 protocol (e.g., TCP or UDP). */
uint32_t src_ip[4]; /**< Source IP address. */
int32_t src_port; /**< Source L4 port (e.g., TCP or UDP port). */
uint32_t dest_ip[4]; /**< Destination IP address. */
int32_t dest_port; /**< Destination L4 port (e.g., TCP or UDP port). */
};
/**
* nss_ipv6_stats_types
* IPv6 node statistics.
@@ -76,6 +195,14 @@ enum nss_ipv6_stats_types {
/**< Number of IPv6 multicast connection destroy requests that missed the cache. */
NSS_IPV6_STATS_MC_CONNECTION_FLUSHES,
/**< Number of IPv6 multicast connection flushes. */
NSS_IPV6_STATS_CONNECTION_CREATE_INVALID_MIRROR_IFNUM,
/**< Number of IPv6 mirror connection requests with an invalid interface number. */
NSS_IPV6_STATS_CONNECTION_CREATE_INVALID_MIRROR_IFTYPE,
/**< Number of IPv6 mirror connection requests with an invalid interface type. */
NSS_IPV6_STATS_MIRROR_FAILURES,
/**< Number of IPv6 mirror failures. */
NSS_IPV6_STATS_MAX,
/**< Maximum message type. */
};
@@ -169,6 +296,7 @@ enum nss_ipv6_dscp_map_actions {
/**< Destination MAC address fields are valid. */
#define NSS_IPV6_RULE_CREATE_IGS_VALID 0x800 /**< Ingress shaping fields are valid. */
#define NSS_IPV6_RULE_CREATE_IDENTIFIER_VALID 0x1000 /**< Identifier is valid. */
#define NSS_IPV6_RULE_CREATE_MIRROR_VALID 0x2000 /**< Mirror fields are valid. */
/*
* Multicast command rule flags
@@ -229,6 +357,14 @@ enum nss_ipv6_dscp_map_actions {
#define NSS_IPV6_RETURN_IDENTIFIER_VALID 0x02
/**< Identifier for return direction is valid. */
/*
* Mirror valid flags (to be used with the valid field of nss_ipv6_mirror_rule structure)
*/
#define NSS_IPV6_MIRROR_FLOW_VALID 0x01
/**< Mirror interface number for the flow direction is valid. */
#define NSS_IPV6_MIRROR_RETURN_VALID 0x02
/**< Mirror interface number for the return direction is valid. */
/**
* nss_ipv6_exception_events
* Exception events from an IPv6 bridge or route handler.
@@ -460,6 +596,16 @@ struct nss_ipv6_identifier_rule {
/**< Identifier for return direction. */
};
/**
* nss_ipv6_mirror_rule
* Mirror rule structure.
*/
struct nss_ipv6_mirror_rule {
uint32_t valid; /**< Mirror validity flags. */
nss_if_num_t flow_ifnum; /**< Flow mirror interface number. */
nss_if_num_t return_ifnum; /**< Return mirror interface number. */
};
/**
* nss_ipv6_error_response_types
* Error types for IPv6 messages.
@@ -556,6 +702,8 @@ struct nss_ipv6_rule_create_msg {
/**< Ingress shaping related accleration parameters. */
struct nss_ipv6_identifier_rule identifier;
/**< Rule for adding identifier. */
struct nss_ipv6_mirror_rule mirror_rule;
/**< Mirror rule parameter. */
};
/**
@@ -801,6 +949,16 @@ struct nss_ipv6_node_sync {
uint32_t ipv6_mc_connection_flushes;
/**< Number of multicast connection flushes. */
uint32_t ipv6_connection_create_invalid_mirror_ifnum;
/**< Number of create request failed with an invalid mirror interface number. */
uint32_t ipv6_connection_create_invalid_mirror_iftype;
/**< Number of create request failed with an invalid mirror interface type. */
uint32_t ipv6_mirror_failures;
/**< Mirror packet failed. */
uint32_t exception_events[NSS_IPV6_EXCEPTION_EVENT_MAX];
/**< Number of exception events. */
};

View File

@@ -1,6 +1,6 @@
/*
**************************************************************************
* Copyright (c) 2016-2020, The Linux Foundation. All rights reserved.
* Copyright (c) 2016-2021, The Linux Foundation. All rights reserved.
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all copies.
@@ -36,6 +36,16 @@
*/
#define NSS_MAX_MAP_T_DYNAMIC_INTERFACES 4
#define NSS_MAPT_MDATA_FLAG_DF_BIT (1 << 0)
/*
* mapt meta data
*/
struct nss_map_t_mdata {
uint16_t flags;
uint16_t res[6];
};
/**
* nss_map_t_msg_types
* Message types for MAP-T requests and responses.

View File

@@ -1,6 +1,6 @@
/*
**************************************************************************
* Copyright (c) 2020, The Linux Foundation. All rights reserved.
* Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@@ -78,6 +78,20 @@ enum nss_mirror_error_type {
NSS_MIRROR_ERROR_TYPE_MAX, /**< Maximum message type. */
};
/**
* nss_mirror_stats
* Mirror interface debug statistics.
*/
enum nss_mirror_stats {
NSS_MIRROR_STATS_PKTS, /**< Number of packets exceptioned to host. */
NSS_MIRROR_STATS_BYTES, /**< Number of bytes exceptioned to host. */
NSS_MIRROR_STATS_TX_SEND_FAIL, /**< Transmit send failures. */
NSS_MIRROR_STATS_DEST_LOOKUP_FAIL, /**< Destination lookup failures. */
NSS_MIRROR_STATS_MEM_ALLOC_FAIL, /**< Memory allocation failures. */
NSS_MIRROR_STATS_COPY_FAIL, /**< Copy failures. */
NSS_MIRROR_STATS_MAX /**< Maximum statistics count. */
};
/**
* nss_mirror_configure_msg
* Mirror interface configuration information.
@@ -119,6 +133,16 @@ struct nss_mirror_stats_sync_msg {
struct nss_mirror_node_stats mirror_stats; /**< Debug statistics for mirror. */
};
/**
* nss_mirror_stats_notification
* Mirror transmission statistics structure.
*/
struct nss_mirror_stats_notification {
uint64_t stats_ctx[NSS_MIRROR_STATS_MAX]; /**< Context transmission statistics. */
uint32_t core_id; /**< Core ID. */
uint32_t if_num; /**< Interface number. */
};
/**
* nss_mirror_msg
* Data for sending and receiving mirror interface messages.
@@ -205,6 +229,17 @@ extern nss_tx_status_t nss_mirror_tx_msg(struct nss_ctx_instance *nss_ctx, struc
*/
extern nss_tx_status_t nss_mirror_tx_msg_sync(struct nss_ctx_instance *nss_ctx, struct nss_mirror_msg *msg);
/**
* nss_mirror_unregister_if
* Deregisters a mirror interface from the NSS.
*
* @param[in] if_num NSS interface number.
*
* @return
* None.
*/
extern void nss_mirror_unregister_if(uint32_t if_num);
/**
* nss_mirror_register_if
* Registers a mirror interface with the NSS for sending and receiving messages.
@@ -228,17 +263,6 @@ extern struct nss_ctx_instance *nss_mirror_register_if(uint32_t if_num,
nss_mirror_msg_callback_t event_callback,
struct net_device *netdev, uint32_t features);
/**
* nss_mirror_unregister_if
* Deregisters a mirror interface from the NSS.
*
* @param[in] if_num NSS interface number.
*
* @return
* None.
*/
extern void nss_mirror_unregister_if(uint32_t if_num);
/**
* nss_mirror_verify_if_num
* Verify whether the interface is an mirror interface or not.
@@ -259,6 +283,34 @@ extern bool nss_mirror_verify_if_num(uint32_t if_num);
*/
extern void nss_mirror_register_handler(void);
/**
* nss_mirror_stats_unregister_notifier
* Deregisters a statistics notifier.
*
* @datatypes
* notifier_block
*
* @param[in] nb Notifier block.
*
* @return
* 0 on success or non-zero on failure.
*/
extern int nss_mirror_stats_unregister_notifier(struct notifier_block *nb);
/**
* nss_mirror_stats_register_notifier
* Registers a statistics notifier.
*
* @datatypes
* notifier_block
*
* @param[in] nb Notifier block.
*
* @return
* 0 on success or non-zero on failure.
*/
extern int nss_mirror_stats_register_notifier(struct notifier_block *nb);
/**
* @}
*/

View File

@@ -1,6 +1,6 @@
/*
**************************************************************************
* Copyright (c) 2016-2018, 2020, The Linux Foundation. All rights reserved.
* Copyright (c) 2016-2018, 2020-2021, The Linux Foundation. All rights reserved.
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all copies.
@@ -22,6 +22,8 @@
#ifndef _NSS_PPE_H_
#define _NSS_PPE_H_
typedef int32_t nss_ppe_port_t;
/**
* @addtogroup nss_ppe_subsystem
* @{
@@ -56,6 +58,34 @@ enum nss_ppe_sc_type {
NSS_PPE_SC_MAX, /**< Maximum service code. */
};
/**
* nss_ppe_stats_unregister_notifier
* Deregisters a statistics notifier.
*
* @datatypes
* notifier_block
*
* @param[in] nb Notifier block.
*
* @return
* 0 on success or non-zero on failure.
*/
extern int nss_ppe_stats_unregister_notifier(struct notifier_block *nb);
/**
* nss_ppe_stats_register_notifier
* Registers a statistics notifier.
*
* @datatypes
* notifier_block
*
* @param[in] nb Notifier block.
*
* @return
* 0 on success or non-zero on failure.
*/
extern int nss_ppe_stats_register_notifier(struct notifier_block *nb);
/** @} */ /* end_addtogroup nss_ppe_subsystem */
#endif /* _NSS_PPE_H_ */

View File

@@ -0,0 +1,79 @@
/*
**************************************************************************
* Copyright (c) 2021, The Linux Foundation. All rights reserved.
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all copies.
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
* OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
**************************************************************************
*/
/**
* @file nss_ppe_vp.h
* NSS PPE Virtual Port definitions.
*/
#ifndef _NSS_PPE_VP_H_
#define _NSS_PPE_VP_H_
/**
* nss_if_ppe_vp_destroy
* Destroy the PPE VP for a given NSS interface number.
*
* @datatypes
* nss_ctx_instance
*
* @param[in] nss_ctx Pointer to the NSS context.
* @param[in] if_num NSS interface number.
*
* @return
* Status of the Tx operation.
*/
nss_tx_status_t nss_ppe_vp_destroy(struct nss_ctx_instance *nss_ctx, nss_if_num_t if_num);
/**
* nss_ppe_vp_create
* Create the PPE VP for a given NSS interface number.
*
* @datatypes
* nss_ctx_instance
*
* @param[in] nss_ctx Pointer to the NSS context.
* @param[in] if_num NSS interface number.
*
* @return
* Status of the Tx operation.
*/
nss_tx_status_t nss_ppe_vp_create(struct nss_ctx_instance *nss_ctx, nss_if_num_t if_num);
/**
* nss_ppe_vp_get_ppe_port_by_nssif
* Returns the PPE VP number for a given NSS interface number.
*
* @param[in] nss_ctx Pointer to the NSS context.
* @param[in] nss_if NSS interface number.
*
* @return
* Returns the PPE VP number corresponding to the NSS interface number.
*/
nss_ppe_port_t nss_ppe_vp_get_ppe_port_by_nssif(struct nss_ctx_instance *nss_ctx, nss_if_num_t nss_if);
/**
* nss_ppe_vp_get_context
* Return the NSS context of PPE VP.
*
* @datatypes
* nss_ctx_instance
*
* @return
* Pointer to the NSS core context.
*/
struct nss_ctx_instance *nss_ppe_vp_get_context(void);
#endif /* _NSS_PPE_VP_H_ */

View File

@@ -1,6 +1,6 @@
/*
**************************************************************************
* Copyright (c) 2019, The Linux Foundation. All rights reserved.
* Copyright (c) 2019, 2021, The Linux Foundation. All rights reserved.
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all copies.
@@ -27,10 +27,6 @@
* @{
*/
#define NSS_QVPN_INTERFACE_MAX_LONG BITS_TO_LONGS(NSS_MAX_NET_INTERFACES) /**< QVPN interface mapping bits. */
#define NSS_QVPN_STATS_MAX_LINES (NSS_STATS_NODE_MAX + 32) /**< Maxminum number of lines for QVPN statistics dump. */
#define NSS_QVPN_STATS_SIZE_PER_IF (NSS_STATS_MAX_STR_LENGTH * NSS_QVPN_STATS_MAX_LINES) /**< Total number of statistics per QVPN interface. */
#define NSS_QVPN_CMDS_MAX 10 /**< Maximum number of QVPN commands supported. */
#define NSS_QVPN_VPN_HDR_HEAD_SIZE_MAX 64 /**< Maximum size of QVPN header. */
#define NSS_QVPN_VPN_HDR_TAIL_SIZE_MAX 32 /**< Maximum size of QVPN tail. */
@@ -293,6 +289,16 @@ struct nss_qvpn_stats_sync_msg {
uint32_t exception_event[NSS_QVPN_EXCEPTION_EVENT_MAX]; /**< QVPN exception events. */
};
/**
* nss_qvpn_stats_notification
* QVPN transmission statistics structure.
*/
struct nss_qvpn_stats_notification {
uint64_t stats_ctx[NSS_STATS_NODE_MAX]; /**< Context transmission statistics. */
uint32_t core_id; /**< Core ID. */
uint32_t if_num; /**< Interface number. */
};
/**
* nss_qvpn_msg
* QVPN message structure for configuration and statistics.
@@ -419,6 +425,17 @@ typedef void (*nss_qvpn_callback_t)(struct net_device *netdev, struct sk_buff *s
*/
typedef void (*nss_qvpn_msg_callback_t)(void *app_data, struct nss_cmn_msg *msg);
/**
* nss_qvpn_unregister_if
* Deregisters the QVPN interface from the NSS.
*
* @param[in] if_num NSS interface number.
*
* @return
* None.
*/
void nss_qvpn_unregister_if(uint32_t if_num);
/**
* nss_qvpn_register_if
* Register to send/receive QVPN messages to NSS.
@@ -441,17 +458,6 @@ struct nss_ctx_instance *nss_qvpn_register_if(uint32_t if_num, nss_qvpn_callback
nss_qvpn_msg_callback_t qvpn_event_callback, struct net_device *netdev,
uint32_t features, void *app_ctx);
/**
* nss_qvpn_unregister_if
* Deregisters the QVPN interface from the NSS.
*
* @param[in] if_num NSS interface number.
*
* @return
* None.
*/
void nss_qvpn_unregister_if(uint32_t if_num);
/**
* nss_qvpn_ifnum_with_core_id
* Gets the QVPN interface number with the core ID.
@@ -481,6 +487,34 @@ void nss_qvpn_register_handler(void);
*/
unsigned long *nss_qvpn_ifmap_get(void);
/**
* nss_qvpn_stats_unregister_notifier
* Deregisters a statistics notifier.
*
* @datatypes
* notifier_block
*
* @param[in] nb Notifier block.
*
* @return
* 0 on success or non-zero on failure.
*/
extern int nss_qvpn_stats_unregister_notifier(struct notifier_block *nb);
/**
* nss_qvpn_stats_register_notifier
* Registers a statistics notifier.
*
* @datatypes
* notifier_block
*
* @param[in] nb Notifier block.
*
* @return
* 0 on success or non-zero on failure.
*/
extern int nss_qvpn_stats_register_notifier(struct notifier_block *nb);
/**
* @}
*/

View File

@@ -18,7 +18,7 @@
/*
* @file nss_rmnet_rx.h
* NSS Virtual interface message Structure and APIs
* NSS RMNET interface message Structure and APIs
*/
#ifndef __NSS_RMNET_RX_H
@@ -58,7 +58,7 @@ enum nss_rmnet_rx_msg_types {
/**
* nss_rmnet_rx_error_types
* Error types for the virtual interface.
* Error types for the RMNET interface.
*/
enum nss_rmnet_rx_error_types {
NSS_RMNET_RX_SUCCESS, /**< No error. */
@@ -125,19 +125,19 @@ struct nss_rmnet_rx_msg {
struct nss_cmn_msg cm; /**< Common message header. */
/**
* Payload of a virtual interface message.
* Payload of an RMNET interface message.
*/
union {
struct nss_rmnet_rx_config_msg if_config;
/**< Rule for creating a virtual interface. */
/**< Rule for creating an RMNET interface. */
struct nss_rmnet_rx_stats stats;
/**< Virtual interface statistics. */
/**< RMNET interface statistics. */
} msg; /**< Message payload. */
};
/**
* Callback to transmit interface data received from NSS
* to the transmit path of the virtual interface.
* to the transmit path of the RMNET interface.
*
* @datatypes
* net_device \n
@@ -183,8 +183,8 @@ struct nss_rmnet_rx_handle {
int32_t if_num_h2n; /**< Redirect interface number on host-to-NSS path. */
struct net_device *ndev; /**< Associated network device. */
struct nss_rmnet_rx_pvt *pvt; /**< Private data structure. */
uint64_t *stats_n2h; /**< Virtual interface statistics from NSS-to-host. */
uint64_t *stats_h2n; /**< Virtual interface statistics from host-to-NSS. */
uint64_t *stats_n2h; /**< RMNET interface statistics from NSS-to-host. */
uint64_t *stats_h2n; /**< RMNET interface statistics from host-to-NSS. */
atomic_t refcnt; /**< Reference count. */
nss_rmnet_rx_msg_callback_t cb; /**< Message callback. */
void *app_data; /**< Application data to be passed to the callback. */
@@ -192,12 +192,12 @@ struct nss_rmnet_rx_handle {
/**
* nss_rmnet_rx_destroy_sync
* Destroys the virtual interface synchronously.
* Destroys the RMNET interface synchronously.
*
* @datatypes
* nss_rmnet_rx_handle
*
* @param[in,out] handle Pointer to the virtual interface handle (provided during
* @param[in,out] handle Pointer to the RMNET interface handle (provided during
* dynamic interface allocation).
*
* @return
@@ -210,7 +210,7 @@ extern nss_tx_status_t nss_rmnet_rx_destroy_sync(struct nss_rmnet_rx_handle *han
/**
* nss_rmnet_rx_create_sync_nexthop
* Creates a virtual interface synchronously with specified nexthops.
* Creates an RMNET interface synchronously with specified nexthops.
*
* @datatypes
* net_device
@@ -220,19 +220,33 @@ extern nss_tx_status_t nss_rmnet_rx_destroy_sync(struct nss_rmnet_rx_handle *han
* @param[in] nexthop_h2n Nexthop interface number of host-to-NSS dynamic interface.
*
* @return
* Pointer to NSS virtual interface handle.
* Pointer to the NSS RMNET interface handle.
*/
extern struct nss_rmnet_rx_handle *nss_rmnet_rx_create_sync_nexthop(struct net_device *netdev, uint32_t nexthop_n2h, uint32_t nexthop_h2n);
/**
* nss_rmnet_rx_create
* Creates an RMNET interface synchronously with generic nexthops.
*
* @datatypes
* net_device
*
* @param[in] netdev Pointer to the associated network device.
*
* @return
* Pointer to the NSS RMNET interface handle.
*/
extern struct nss_rmnet_rx_handle *nss_rmnet_rx_create(struct net_device *netdev);
/**
* nss_rmnet_rx_tx_buf
* Forwards virtual interface packets to the NSS.
* Forwards RMNET interface packets to the NSS.
*
* @datatypes
* nss_rmnet_rx_handle \n
* sk_buff
*
* @param[in,out] handle Pointer to the virtual interface handle (provided during
* @param[in,out] handle Pointer to the RMNET interface handle (provided during
* registration).
* @param[in] skb Pointer to the data socket buffer.
*
@@ -244,14 +258,14 @@ extern nss_tx_status_t nss_rmnet_rx_tx_buf(struct nss_rmnet_rx_handle *handle,
/**
* nss_rmnet_rx_tx_msg
* Sends a message to the virtual interface.
* Sends a message to the RMNET interface.
*
* @datatypes
* nss_ctx_instance \n
* nss_rmnet_rx_msg
*
* @param[in] nss_ctx Pointer to the NSS context (provided during registration).
* @param[in] nvim Pointer to the virtual interface message.
* @param[in] nvim Pointer to the RMNET interface message.
*
* @return
* Command Tx status.
@@ -260,12 +274,12 @@ extern nss_tx_status_t nss_rmnet_rx_tx_msg(struct nss_ctx_instance *nss_ctx, str
/**
* nss_rmnet_rx_xmit_callback_unregister
* Deregisters the transmit callback from the virtual interface.
* Deregisters the transmit callback from the RMNET interface.
*
* @datatypes
* nss_rmnet_rx_handle
*
* @param[in,out] handle Pointer to the virtual interface handle.
* @param[in,out] handle Pointer to the RMNET interface handle.
*
* @return
* None.
@@ -274,15 +288,15 @@ extern void nss_rmnet_rx_xmit_callback_unregister(struct nss_rmnet_rx_handle *ha
/**
* nss_rmnet_rx_xmit_callback_register
* Registers a transmit callback to a virtual interface.
* Registers a transmit callback to an RMNET interface.
*
* @datatypes
* nss_rmnet_rx_handle \n
* nss_rmnet_rx_xmit_callback_t
*
* @param[in,out] handle Pointer to the virtual interface handle (provided during
* @param[in,out] handle Pointer to the RMNET interface handle (provided during
* dynamic interface allocation).
* @param[in] cb Callback handler for virtual data packets.
* @param[in] cb Callback handler for RMNET data packets.
*
* @return
* None.
@@ -292,12 +306,12 @@ extern void nss_rmnet_rx_xmit_callback_register(struct nss_rmnet_rx_handle *hand
/**
* nss_rmnet_rx_unregister
* Deregisters a virtual interface from the NSS driver.
* Deregisters an RMNET interface from the NSS driver.
*
* @datatypes
* nss_rmnet_rx_handle
*
* @param[in,out] handle Pointer to the virtual interface handle.
* @param[in,out] handle Pointer to the RMNET interface handle.
*
* @return
* None.
@@ -306,16 +320,16 @@ extern void nss_rmnet_rx_unregister(struct nss_rmnet_rx_handle *handle);
/**
* nss_rmnet_rx_register
* Registers a virtual Interface with NSS driver.
* Registers an RMNET Interface with NSS driver.
*
* @datatypes
* nss_rmnet_rx_handle \n
* nss_rmnet_rx_data_callback_t \n
* net_device
*
* @param[in,out] handle Pointer to the virtual interface handle (provided during
* @param[in,out] handle Pointer to the RMNET interface handle (provided during
* dynamic interface allocation).
* @param[in] data_callback Callback handler for virtual data packets.
* @param[in] data_callback Callback handler for RMNET data packets.
* @param[in] netdev Pointer to the associated network device.
*
* @return
@@ -349,22 +363,22 @@ extern int32_t nss_rmnet_rx_get_ifnum(struct net_device *dev);
/**
* nss_rmnet_rx_get_interface_num
* Returns the virtual interface number associated with the handle.
* Returns the RMNET interface number associated with the handle.
*
* @datatypes
* nss_rmnet_rx_handle
*
* @param[in] handle Pointer to the virtual interface handle (provided during
* @param[in] handle Pointer to the RMNET interface handle (provided during
dynamic interface allocation).
*
* @return
* Virtual interface number.
* RMNET interface number.
*/
extern int32_t nss_rmnet_rx_get_interface_num(struct nss_rmnet_rx_handle *handle);
/**
* nss_rmnet_rx_get_context
* Gets the virtual interface context.
* Gets the RMNET interface context.
*
* @return
* Pointer to the NSS core context.

View File

@@ -1,6 +1,6 @@
/*
**************************************************************************
* Copyright (c) 2020, The Linux Foundation. All rights reserved.
* Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@@ -68,6 +68,43 @@ enum nss_tls_error {
NSS_TLS_ERROR_MAX, /**< Maximum TLS error. */
};
/**
* nss_tls_stats_types
* TLS statistics types.
*/
enum nss_tls_stats_types {
NSS_TLS_STATS_SINGLE_REC = NSS_STATS_NODE_MAX,
/**< Number of transmit single record datagrams. */
NSS_TLS_STATS_MULTI_REC, /**< Number of multiple transmit record datagrams. */
NSS_TLS_STATS_TX_INVAL_REQS, /**< Number of transmit invalidations successfully requested. */
NSS_TLS_STATS_RX_CCS_REC, /**< Number of change cipher specification records received. */
NSS_TLS_STATS_FAIL_CCS, /**< Failure to switch to new crypto. */
NSS_TLS_STATS_ETH_NODE_DEACTIVE, /**< Ethernet node deactivated because no crypto was available. */
NSS_TLS_STATS_CRYPTO_ALLOC_SUCCESS, /**< Number of successful crypto allocations. */
NSS_TLS_STATS_CRYPTO_FREE_REQ, /**< Number of crypto-free requests. */
NSS_TLS_STATS_CRYPTO_FREE_SUCCESS, /**< Number of crypto-free successes. */
NSS_TLS_STATS_FAIL_CRYPTO_ALLOC, /**< Number of failed crypto allocations. */
NSS_TLS_STATS_FAIL_CRYPTO_LOOKUP, /**< Failure to find an active crypto session. */
NSS_TLS_STATS_FAIL_REQ_ALLOC, /**< Failure to allocate request memory pool. */
NSS_TLS_STATS_FAIL_PBUF_STATS, /**< Failure in pbuf allocation for statistics. */
NSS_TLS_STATS_FAIL_CTX_ACTIVE, /**< Failure in enqueue due to inactive context. */
NSS_TLS_STATS_HW_LEN_ERROR, /**< Length error. */
NSS_TLS_STATS_HW_TOKEN_ERROR, /**< Token error; unknown token command or instruction. */
NSS_TLS_STATS_HW_BYPASS_ERROR, /**< Token contains too much bypass data. */
NSS_TLS_STATS_HW_CRYPTO_ERROR, /**< Cryptographic block size error. */
NSS_TLS_STATS_HW_HASH_ERROR, /**< Hash block size error. */
NSS_TLS_STATS_HW_CONFIG_ERROR, /**< Invalid command, algorithm, or mode combination. */
NSS_TLS_STATS_HW_ALGO_ERROR, /**< Unsupported algorithm. */
NSS_TLS_STATS_HW_HASH_OVF_ERROR, /**< Hash input overflow. */
NSS_TLS_STATS_HW_AUTH_ERROR, /**< Hash input overflow. */
NSS_TLS_STATS_HW_PAD_VERIFY_ERROR, /**< Pad verification error. */
NSS_TLS_STATS_HW_TIMEOUT_ERROR, /**< Data timed out. */
NSS_TLS_STATS_NO_DESC_IN, /**< Ingress DMA descriptor not available. */
NSS_TLS_STATS_NO_DESC_OUT, /**< Egress DMA descriptor not available. */
NSS_TLS_STATS_NO_REQS, /**< Not enough requests available for records. */
NSS_TLS_STATS_MAX, /**< Maximum statistics type. */
};
/**
* nss_tls_hw_stats
* TLS HW statistics.
@@ -156,6 +193,16 @@ struct nss_tls_cipher_update {
uint8_t reserved; /**< Reserved for future use. */
};
/**
* nss_tls_stats_notification
* TLS transmission statistics structure.
*/
struct nss_tls_stats_notification {
uint64_t stats_ctx[NSS_TLS_STATS_MAX]; /**< Context transmission statistics. */
uint32_t core_id; /**< Core ID. */
uint32_t if_num; /**< Interface number. */
};
/**
* nss_tls_msg
* Data for sending and receiving TLS messages.
@@ -245,7 +292,7 @@ extern nss_tx_status_t nss_tls_tx_msg(struct nss_ctx_instance *nss_ctx, struct n
* @param[in] if_num NSS interface number.
* @param[in] type Type of message.
* @param[in] len Size of the payload.
* @param[in] nicm Pointer to the NSS IPsec message.
* @param[in] ntcm Pointer to the NSS IPsec message.
*
* @return
* Status of the Tx operation.
@@ -254,6 +301,20 @@ extern nss_tx_status_t nss_tls_tx_msg_sync(struct nss_ctx_instance *nss_ctx, uin
enum nss_tls_msg_type type, uint16_t len,
struct nss_tls_msg *ntcm);
/**
* nss_tls_unregister_if
* Deregisters a TLS session interface from the NSS.
*
* @param[in] if_num NSS interface number.
*
* @return
* None.
*
* @dependencies
* The TLS session interface must have been previously registered.
*/
extern void nss_tls_unregister_if(uint32_t if_num);
/**
* nss_tls_register_if
* Registers a TLS session interface with the NSS for sending and receiving
@@ -284,22 +345,19 @@ extern struct nss_ctx_instance *nss_tls_register_if(uint32_t if_num,
void *app_ctx);
/**
* nss_tls_unregister_if
* Deregisters a TLS session interface from the NSS.
* nss_tls_notify_unregister
* Deregisters an event callback.
*
* @param[in] if_num NSS interface number.
* @param[in] ifnum NSS interface number.
*
* @return
* None.
*
* @dependencies
* The TLS session interface must have been previously registered.
*/
extern void nss_tls_unregister_if(uint32_t if_num);
extern void nss_tls_notify_unregister(uint32_t ifnum);
/**
* nss_tls_notify_register
* Register an event callback to handle notification from TLS firmware package.
* Registers an event callback to handle notification from TLS firmware package.
*
* @datatypes
* nss_tls_msg_callback_t
@@ -313,17 +371,6 @@ extern void nss_tls_unregister_if(uint32_t if_num);
*/
extern struct nss_ctx_instance *nss_tls_notify_register(uint32_t ifnum, nss_tls_msg_callback_t ev_cb, void *app_data);
/**
* nss_tls_notify_unregister
* Unregister an event callback.
*
* @param[in] ifnum NSS interface number.
*
* @return
* None.
*/
extern void nss_tls_notify_unregister(uint32_t ifnum);
/**
* nss_tls_msg_init
* Initializes a TLS message sent asynchronously.
@@ -377,6 +424,44 @@ extern struct nss_ctx_instance *nss_tls_get_context(void);
* Pointer to the device.
*/
extern struct device *nss_tls_get_dev(struct nss_ctx_instance *nss_ctx);
/**
* nss_tls_ifmap_get
* Returns active TLS interfaces.
*
* @return
* Pointer to the interface map.
*/
unsigned long *nss_tls_ifmap_get(void);
/**
* nss_tls_stats_unregister_notifier
* Deregisters a statistics notifier.
*
* @datatypes
* notifier_block
*
* @param[in] nb Notifier block.
*
* @return
* 0 on success or non-zero on failure.
*/
extern int nss_tls_stats_unregister_notifier(struct notifier_block *nb);
/**
* nss_tls_stats_register_notifier
* Registers a statistics notifier.
*
* @datatypes
* notifier_block
*
* @param[in] nb Notifier block.
*
* @return
* 0 on success or non-zero on failure.
*/
extern int nss_tls_stats_register_notifier(struct notifier_block *nb);
/**
* @}
*/

View File

@@ -0,0 +1,284 @@
/*
**************************************************************************
* Copyright (c) 2021, The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
* OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
**************************************************************************
*/
/**
* @file nss_udp_st.h
* NSS Ethernet interface definitions.
*/
#ifndef __NSS_UDP_ST_H
#define __NSS_UDP_ST_H
/**
* @addtogroup nss_udp_st_subsystem
* @{
*/
#define NSS_UDP_ST_TX_CONN_MAX 16
#define NSS_UDP_ST_FLAG_IPV4 4 /**< L3 Protocol - IPv4. */
#define NSS_UDP_ST_FLAG_IPV6 6 /**< L3 Protocol - IPv6. */
/**
* nss_udp_st_message_types
* UDP speed test message types.
*/
enum nss_udp_st_message_types {
NSS_UDP_ST_START_MSG, /**< Start message. */
NSS_UDP_ST_STOP_MSG, /**< Stop message. */
NSS_UDP_ST_CFG_RULE_MSG, /**< Configure IPv4/IPv6 rule. */
NSS_UDP_ST_UNCFG_RULE_MSG, /**< Unconfigure IPv4/IPv6 rule. */
NSS_UDP_ST_STATS_SYNC_MSG, /**< Statistic syncronization. */
NSS_UDP_ST_TX_CREATE_MSG, /**< Create transmit node. */
NSS_UDP_ST_TX_DESTROY_MSG, /**< Destroy transmit node. */
NSS_UDP_ST_RESET_STATS_MSG, /**< Reset existing statistics. */
NSS_UDP_ST_MAX_MSG_TYPES, /**< Maximum message type. */
};
/**
* nss_udp_st_test_types
* Test types of the UDP speed test.
*/
enum nss_udp_st_test_types {
NSS_UDP_ST_TEST_RX, /**< Test type is receive. */
NSS_UDP_ST_TEST_TX, /**< Test type is transmit. */
NSS_UDP_ST_TEST_MAX /**< Maximum test type. */
};
/**
* nss_udp_st_error
* UDP speed test error types.
*/
enum nss_udp_st_error {
NSS_UDP_ST_ERROR_NONE, /**< No error. */
NSS_UDP_ST_ERROR_INCORRECT_RATE, /**< Incorrect Tx rate. */
NSS_UDP_ST_ERROR_INCORRECT_BUFFER_SIZE, /**< Incorrect buffer size. */
NSS_UDP_ST_ERROR_MEMORY_FAILURE, /**< Memory allocation failed. */
NSS_UDP_ST_ERROR_INCORRECT_STATE, /**< Trying to configure during incorrect state. */
NSS_UDP_ST_ERROR_INCORRECT_FLAGS, /**< Incorrect flag configuration. */
NSS_UDP_ST_ERROR_ENTRY_EXIST, /**< Given tunnel entry already exists. */
NSS_UDP_ST_ERROR_ENTRY_ADD_FAILED, /**< UDP ST Encap entry addition failed. */
NSS_UDP_ST_ERROR_ENTRY_NOT_EXIST, /**< Given tunnel entry does not exists. */
NSS_UDP_ST_ERROR_WRONG_START_MSG_TYPE, /**< Start message type error. */
NSS_UDP_ST_ERROR_WRONG_STOP_MSG_TYPE, /**< Stop message type error. */
NSS_UDP_ST_ERROR_TOO_MANY_USERS, /**< Too many users tried to be added. */
NSS_UDP_ST_ERROR_UNKNOWN_MSG_TYPE, /**< Unknown message type failure. */
NSS_UDP_ST_ERROR_PB_ALLOC, /**< Pbuf allocation failed. */
NSS_UDP_ST_ERROR_PB_SIZE, /**< Pbuf size is too small to fit buffer. */
NSS_UDP_ST_ERROR_DROP_QUEUE, /**< Packet dropped enqueue next node. */
UDP_ST_ERROR_TIMER_MISSED, /**< Timer call is missed. */
NSS_UDP_ST_ERROR_MAX, /**< Maximum error type. */
};
/**
* nss_udp_st_stats_time
* UDP speed test time statistics types.
*/
enum nss_udp_st_stats_time {
NSS_UDP_ST_STATS_TIME_START, /**< Start time of the test. */
NSS_UDP_ST_STATS_TIME_CURRENT, /**< Current time of the running test. */
NSS_UDP_ST_STATS_TIME_ELAPSED, /**< Elapsed time of the current test. */
NSS_UDP_ST_STATS_TIME_MAX /**< Maximum time statistics. */
};
/**
* Create TX node to start pushing rules.
*/
struct nss_udp_st_tx_create {
uint32_t rate; /**< Rate in Mbps. */
uint32_t buffer_size; /**< UDP buffer size. */
uint8_t dscp; /**< DSCP value. */
};
/**
* Destroy Tx node.
*/
struct nss_udp_st_tx_destroy {
uint32_t flag; /**< Tx destroy flag. */
};
/**
* NSS UDP speed test start structure.
*/
struct nss_udp_st_start {
uint32_t type; /**< Started test type (for example, receive or transmit). */
};
/**
* NSS UDP speed test stop structure.
*/
struct nss_udp_st_stop {
uint32_t type; /**< Stopped test type (for example, receive or transmit). */
};
/**
* NSS UDP speed test ip structure
*/
struct nss_udp_st_ip {
union {
uint32_t ipv4; /**< IPv4 address. */
uint32_t ipv6[4]; /**< IPv6 address. */
} ip;
};
/**
* NSS UDP speed test IPv4/IPv6 configuration structure.
*/
struct nss_udp_st_cfg {
struct nss_udp_st_ip src_ip; /**< Source IP address. */
int32_t src_port; /**< Source L4 port. */
struct nss_udp_st_ip dest_ip; /**< Destination IP address. */
int32_t dest_port; /**< Destination L4 port. */
uint32_t type; /**< Started test type (for example, receive or transmit). */
uint16_t ip_version; /**< IP version to indicate IPv4 or IPv6. */
};
/**
* NSS UDP speed test node statistics structure.
*/
struct nss_udp_st_node_stats {
struct nss_cmn_node_stats node_stats; /**< Common node statistics for the UDP speed test. */
uint32_t errors[NSS_UDP_ST_ERROR_MAX]; /**< Error statistics. */
};
/**
* NSS UDP speed test statistics structure.
*/
struct nss_udp_st_stats {
struct nss_udp_st_node_stats nstats; /**< Node statistics for the UDP speed test. */
uint32_t time_stats[NSS_UDP_ST_TEST_MAX][NSS_UDP_ST_STATS_TIME_MAX];
/**< Time statistics. */
};
/**
* NSS UDP speed test reset statistics structure.
*/
struct nss_udp_st_reset_stats {
uint32_t flag; /**< Reset statistics flag. */
};
/**
* Message structure of the UDP speed test commands.
*/
struct nss_udp_st_msg {
struct nss_cmn_msg cm; /**< Message header. */
union {
struct nss_udp_st_tx_create create; /**< Prepare transmit message. */
struct nss_udp_st_tx_destroy destroy; /**< Destroy transmit message. */
struct nss_udp_st_start start; /**< Start message. */
struct nss_udp_st_stop stop; /**< Stop message. */
struct nss_udp_st_cfg cfg; /**< IPv4/IPv6 configuration message. */
struct nss_udp_st_cfg uncfg; /**< IPv4/IPv6 unconfiguration message. */
struct nss_udp_st_stats stats; /**< Statistics synchronization message. */
struct nss_udp_st_reset_stats reset_stats;
/**< Reset statistics message. */
} msg;
};
/**
* Callback function for receiving UDP speed test messages.
*
* @datatypes
* nss_udp_st_msg
*
* @param[in] app_data Pointer to the application context of the message.
* @param[in] msg Pointer to the message data.
*/
typedef void (*nss_udp_st_msg_callback_t)(void *app_data, struct nss_udp_st_msg *msg);
/**
* nss_udp_st_register_handler
* Registers the UDP speed test message handler.
*
* @datatypes
* nss_ctx_instance
*
* @param[in] nss_ctx Pointer to the NSS context.
*
* @return
* None.
*/
extern void nss_udp_st_register_handler(struct nss_ctx_instance *nss_ctx);
/**
* nss_udp_st_tx
* Transmits a UDP speed test message to the NSS.
*
* @datatypes
* nss_ctx_instance \n
* nss_udp_st_msg
*
* @param[in] nss_ctx Pointer to the NSS context.
* @param[in] num Pointer to the message data.
*
* @return
* Status of the transmit operation.
*/
extern nss_tx_status_t nss_udp_st_tx(struct nss_ctx_instance *nss_ctx, struct nss_udp_st_msg *num);
/**
* nss_udp_st_tx_sync
* Transmits a synchronous UDP speed test message to the NSS.
*
* @datatypes
* nss_ctx_instance \n
* nss_udp_st_msg
*
* @param[in] nss_ctx Pointer to the NSS context.
* @param[in] num Pointer to the message data.
*
* @return
* Status of the transmit operation.
*/
extern nss_tx_status_t nss_udp_st_tx_sync(struct nss_ctx_instance *nss_ctx, struct nss_udp_st_msg *num);
/**
* nss_udp_st_msg_init
* Initializes UDP speed test messages.
*
* @datatypes
* nss_udp_st_msg \n
* nss_udp_st_msg_callback_t
*
* @param[in,out] num Pointer to the NSS interface message.
* @param[in] if_num NSS interface number.
* @param[in] type Type of message.
* @param[in] len Size of the payload.
* @param[in] cb Callback function for the message.
* @param[in] app_data Pointer to the application context of the message.
*
* @return
* None.
*/
extern void nss_udp_st_msg_init(struct nss_udp_st_msg *num, uint16_t if_num, uint32_t type, uint32_t len,
nss_udp_st_msg_callback_t cb, void *app_data);
/**
* nss_udp_st_get_mgr
* Gets the NSS context that is managing UDP speed sest processes.
*
* @return
* Pointer to the NSS core context.
*/
extern struct nss_ctx_instance *nss_udp_st_get_mgr(void);
/**
*@}
*/
#endif /* __NSS_UDP_ST_H */

View File

@@ -1,6 +1,6 @@
/*
**************************************************************************
* Copyright (c) 2019, The Linux Foundation. All rights reserved.
* Copyright (c) 2019, 2021 The Linux Foundation. All rights reserved.
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all copies.
@@ -111,6 +111,7 @@ struct nss_vxlan_stats_msg {
uint32_t except_vni_lookup_failed; /**< Virtual network ID look up failed. */
uint32_t dropped_malformed; /**< Packet is malformed. */
uint32_t dropped_next_node_queue_full; /**< Next node dropped the packet. */
uint32_t except_inner_hash; /**< Inner hash calculation failed. */
};
/**

View File

@@ -1,6 +1,6 @@
/*
**************************************************************************
* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved.
* Copyright (c) 2015-2018, 2021, The Linux Foundation. All rights reserved.
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all copies.
@@ -722,6 +722,10 @@ struct nss_wifi_peer_ol_stats {
uint32_t ppdu_retries; /**< Number of PPDU retries. */
uint32_t rssi_chains[NSS_WIFI_MAX_RSSI_CHAINS];
/**< Acknowledgment RSSI per chain. */
uint32_t rx_msdus; /**< Number of MSDUs received. */
uint32_t rx_bytes; /**< Number of bytes received. */
uint32_t rx_mpdus; /**< Number of MPDUs received. */
uint32_t rx_retries; /**< Number of MPDU retries. */
};
/**

View File

@@ -35,6 +35,7 @@ enum nss_wifi_ext_vdev_msg_types {
NSS_WIFI_EXT_VDEV_MSG_CONFIGURE_WDS,
NSS_WIFI_EXT_VDEV_SET_NEXT_HOP,
NSS_WIFI_EXT_VDEV_MSG_STATS_SYNC,
NSS_WIFI_EXT_VDEV_MSG_CONFIGURE_VLAN,
NSS_WIFI_EXT_VDEV_MSG_MAX
};
@@ -50,12 +51,16 @@ enum nss_wifi_ext_vdev_error_types {
NSS_WIFI_EXT_VDEV_ERROR_INV_PVAP_ID, /**< Invalid parent virtual device interface number. */
NSS_WIFI_EXT_VDEV_ERROR_RADIO_NOT_PRESENT, /**< Radio node is not present. */
NSS_WIFI_EXT_VDEV_ERROR_INV_IF, /**< Message sent on invalid interface number. */
NSS_WIFI_EXT_VDEV_ERROR_MAX, /**< Maxiumum error types. */
NSS_WIFI_EXT_VDEV_ERROR_INV_VLAN_ID, /**< Invalid VLAN ID. */
NSS_WIFI_EXT_VDEV_ERROR_INV_CMD, /**< Invalid command. */
NSS_WIFI_EXT_VDEV_ERROR_PEERID_ALREADY_CONFIGURED,
/**< Peer ID is already configured. */
NSS_WIFI_EXT_VDEV_ERROR_MAX /**< Maxiumum error types. */
};
/**
* nss_wifi_ext_vdev_wds_msg
* Extended WDS config message.
* Extended WDS configuration message.
*/
struct nss_wifi_ext_vdev_wds_msg {
uint16_t wds_peer_id; /**< WDS station peer ID. */
@@ -90,6 +95,14 @@ struct nss_wifi_ext_vdev_set_next_hop_msg {
uint32_t if_num; /**< Interface number. */
};
/**
* nss_wifi_ext_vdev_vlan_msg
* Extended VLAN configuration message.
*/
struct nss_wifi_ext_vdev_vlan_msg {
uint16_t vlan_id; /**< VLAN ID. */
};
/**
* nss_wifi_ext_vdev_msg
* Message structure to Send/Receive commands.
@@ -102,6 +115,7 @@ struct nss_wifi_ext_vdev_msg {
struct nss_wifi_ext_vdev_wds_msg wmsg; /**< WDS configure message. */
struct nss_wifi_ext_vdev_set_next_hop_msg wnhm; /**< Next hop set message. */
struct nss_wifi_ext_vdev_stats stats; /**< Statistics messasge. */
struct nss_wifi_ext_vdev_vlan_msg vmsg; /**< VLAN message. */
} msg;
};
@@ -126,7 +140,7 @@ typedef void (*nss_wifi_ext_vdev_data_callback_t)(struct net_device *netdev, str
* nss_wifi_ext_vdev_msg
*
* @param[in] app_data Pointer to the application context of the message.
* @param[in]wevm Pointer to the message data.
* @param[in] wevm Pointer to the message data.
*/
typedef void (*nss_wifi_ext_vdev_msg_callback_t)(void *app_data, struct nss_cmn_msg *ncm);
@@ -225,7 +239,7 @@ extern nss_tx_status_t nss_wifi_ext_vdev_tx_msg(struct nss_ctx_instance *nss_ctx
* nss_ctx_instance \n
* nss_wifi_ext_vdev_msg
*
* @param[in] nss_ctx NSS core context.
* @param[in] nss_ctx NSS core context.
* @param[in] nwevm Pointer to Wi-Fi extended virtual interface message data.
*
* @return
@@ -240,8 +254,8 @@ extern nss_tx_status_t nss_wifi_ext_vdev_tx_msg_sync(struct nss_ctx_instance *ns
* @datatypes
* nss_ctx_instance \n
*
* @param[in] nss_ctx NSS core context.
* @param[in] ifnum NSS interface number.
* @param[in] ctx NSS core context.
* @param[in] if_num NSS interface number.
* @param[in] next_hop Next hop interface number.
*/
extern nss_tx_status_t nss_wifi_ext_vdev_set_next_hop(struct nss_ctx_instance *ctx, int if_num, int next_hop);
@@ -267,8 +281,8 @@ extern struct nss_ctx_instance *nss_wifi_ext_vdev_get_ctx(void);
*
* @param[in] if_num NSS interface number.
* @param[in] cb_func_data Callback for the data.
* @param[in] cb_func_msg Callback for the message.
* @param[in] cb_func_event Callback for the event message.
* @param[in] cb_func_ext Callback for the message.
* @param[in] cb_func_msg Callback for the event message.
* @param[in] features Data socket buffer types supported by this interface.
* @param[in] netdev Pointer to the associated network device.
* @param[in] app_ctx Pointer to the application context.

View File

@@ -1,292 +0,0 @@
/*
**************************************************************************
* Copyright (c) 2015-2017, The Linux Foundation. All rights reserved.
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all copies.
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
* OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
**************************************************************************
*/
/**
* @file nss_wifi_if.h
* NSS Wi-Fi interface message Structure and APIs.
*/
#ifndef __NSS_WIFI_IF_H
#define __NSS_WIFI_IF_H
/**
* @addtogroup nss_wifi_subsystem
* @{
*/
/**
* nss_wifi_if_msg_types
* Message types for Wi-Fi interface requests and responses.
*/
enum nss_wifi_if_msg_types {
NSS_WIFI_IF_OPEN = NSS_IF_OPEN,
NSS_WIFI_IF_CLOSE = NSS_IF_CLOSE,
NSS_WIFI_IF_LINK_STATE_NOTIFY = NSS_IF_LINK_STATE_NOTIFY,
NSS_WIFI_IF_MTU_CHANGE = NSS_IF_MTU_CHANGE,
NSS_WIFI_IF_MAC_ADDR_SET = NSS_IF_MAC_ADDR_SET,
NSS_WIFI_IF_STATS_SYNC = NSS_IF_STATS,
NSS_WIFI_IF_ISHAPER_ASSIGN = NSS_IF_ISHAPER_ASSIGN,
NSS_WIFI_IF_BSHAPER_ASSIGN = NSS_IF_BSHAPER_ASSIGN,
NSS_WIFI_IF_ISHAPER_UNASSIGN = NSS_IF_ISHAPER_UNASSIGN,
NSS_WIFI_IF_BSHAPER_UNASSIGN = NSS_IF_BSHAPER_UNASSIGN,
NSS_WIFI_IF_ISHAPER_CONFIG = NSS_IF_ISHAPER_CONFIG,
NSS_WIFI_IF_BSHAPER_CONFIG = NSS_IF_BSHAPER_CONFIG,
NSS_WIFI_IF_VSI_ASSIGN = NSS_IF_VSI_ASSIGN,
NSS_WIFI_IF_VSI_UNASSIGN = NSS_IF_VSI_UNASSIGN,
NSS_WIFI_IF_TX_CREATE_MSG = NSS_IF_MAX_MSG_TYPES + 1,
NSS_WIFI_IF_TX_DESTROY_MSG,
NSS_WIFI_IF_STATS_SYNC_MSG,
NSS_WIFI_IF_MAX_MSG_TYPES
};
/**
* nss_wifi_if_error_types
* Error types for the Wi-Fi interface.
*/
enum nss_wifi_if_error_types {
NSS_WIFI_IF_SUCCESS,
NSS_WIFI_IF_CORE_FAILURE,
NSS_WIFI_IF_ALLOC_FAILURE,
NSS_WIFI_IF_DYNAMIC_IF_FAILURE,
NSS_WIFI_IF_MSG_TX_FAILURE,
NSS_WIFI_IF_REG_FAILURE,
NSS_WIFI_IF_CORE_NOT_INITIALIZED
};
/**
* nss_wifi_if_create_msg
* Payload for configuring the Wi-Fi interface.
*/
struct nss_wifi_if_create_msg {
uint32_t flags; /**< Interface flags. */
uint8_t mac_addr[ETH_ALEN]; /**< MAC address. */
};
/**
* nss_wifi_if_destroy_msg
* Payload for destroying the Wi-Fi interface.
*/
struct nss_wifi_if_destroy_msg {
int32_t reserved; /**< Placeholder. */
};
/**
* nss_wifi_if_stats
* Wi-Fi interface statistics received from the NSS.
*/
struct nss_wifi_if_stats {
struct nss_cmn_node_stats node_stats;
/**< Common statistics. */
uint32_t tx_enqueue_failed;
/**< Number of packets dropped when queuing to the next node in a network graph. */
uint32_t shaper_enqueue_failed;
/**< Number of packets dropped when queuing to the shaper node. */
};
/**
* nss_wifi_if_msg
* Data for sending and receiving Wi-Fi interface messages.
*/
struct nss_wifi_if_msg {
struct nss_cmn_msg cm; /**< Common message header. */
/**
* Payload of a Wi-Fi interface message.
*/
union {
union nss_if_msgs if_msgs;
/**< NSS interface messages. */
struct nss_wifi_if_create_msg create;
/**< Creates a Wi-Fi interface rule. */
struct nss_wifi_if_destroy_msg destroy;
/**< Destroys a Wi-Fi interface rule. */
struct nss_wifi_if_stats stats;
/**< Interface statistics. */
} msg; /**< Message payload. */
};
/**
* nss_wifi_if_pvt
* Private data information for the Wi-Fi interface.
*/
struct nss_wifi_if_pvt {
struct semaphore sem;
/**< Semaphore for a specified Wi-Fi interface number. */
struct completion complete;
/**< Waits for the NSS to process a message on the specified Wi-Fi interface. */
int response; /**< Response received on a Wi-Fi interface number. */
int sem_init_done;
/**< Indicates whether the semaphore is initialized. */
};
/**
* Callback function for receiving Wi-Fi data.
*
* @datatypes
* net_device \n
* sk_buff \n
* napi_struct
*
* @param[in] netdev Pointer to the associated network device.
* @param[in] skb Pointer to the data socket buffer.
* @param[in] napi Pointer to the NAPI structure.
*/
typedef void (*nss_wifi_if_data_callback_t)(struct net_device *netdev,
struct sk_buff *skb, struct napi_struct *napi);
/**
* Callback function for receiving Wi-Fi messages.
*
* @datatypes
* nss_cmn_msg
*
* @param[in] app_data Pointer to the application context of the message.
* @param[in] msg Pointer to the message data.
*/
typedef void (*nss_wifi_if_msg_callback_t)(void *app_data,
struct nss_cmn_msg *msg);
/**
* nss_wifi_if_handle
* Context for WLAN-to-NSS communication.
*/
struct nss_wifi_if_handle {
struct nss_ctx_instance *nss_ctx; /**< NSS context. */
int32_t if_num; /**< Interface number. */
struct nss_wifi_if_pvt *pvt; /**< Private data structure. */
struct nss_wifi_if_stats stats;
/**< Statistics corresponding to this handle. */
nss_wifi_if_msg_callback_t cb;
/**< Callback registered by other modules. */
void *app_data;
/**< Application context to be passed to that callback. */
};
/**
* nss_wifi_if_tx_msg
* Sends a message to the Wi-Fi interface.
*
* @datatypes
* nss_ctx_instance \n
* nss_wifi_if_msg
*
* @param[in] nss_ctx Pointer to the NSS context (provided during registration).
* @param[in] nwim Pointer to the Wi-Fi interface message.
*
* @return
* Status of the Tx operation.
*/
extern nss_tx_status_t nss_wifi_if_tx_msg(struct nss_ctx_instance *nss_ctx,
struct nss_wifi_if_msg *nwim);
/**
* nss_wifi_if_register
* Registers a Wi-Fi interface with the NSS driver.
*
* @datatypes
* nss_wifi_if_handle \n
* nss_wifi_if_data_callback_t \n
* net_device
*
* @param[in] handle Pointer to the Wi-Fi context (provided during Wi-Fi
* interface allocation).
* @param[in] rx_callback Callback handler for Wi-Fi data packets.
* @param[in] netdev Pointer to the associated network device.
*
* @return
* None.
*/
extern void nss_wifi_if_register(struct nss_wifi_if_handle *handle,
nss_wifi_if_data_callback_t rx_callback,
struct net_device *netdev);
/**
* nss_wifi_if_unregister
* Deregisters a Wi-Fi interface from the NSS driver.
*
* @datatypes
* nss_wifi_if_handle
*
* @param[in] handle Pointer to the Wi-Fi context.
*
* @return
* None.
*/
extern void nss_wifi_if_unregister(struct nss_wifi_if_handle *handle);
/**
* nss_wifi_if_create_sync
* Creates a Wi-Fi interface.
*
* @datatypes
* net_device
*
* @param[in] netdev Pointer to the associated network device.
*
* @return
* Pointer to the Wi-Fi handle.
*/
extern struct nss_wifi_if_handle *nss_wifi_if_create_sync(struct net_device *netdev);
/**
* nss_wifi_if_destroy_sync
* Destroys the Wi-Fi interface associated with the interface number.
*
* @datatypes
* nss_wifi_if_handle
*
* @param[in] handle Pointer to the Wi-Fi handle.
*
* @return
* Status of the Tx operation.
*/
extern nss_tx_status_t nss_wifi_if_destroy_sync(struct nss_wifi_if_handle *handle);
/**
* nss_wifi_if_tx_buf
* Sends a data packet or buffer to the NSS.
*
* @datatypes
* nss_wifi_if_handle \n
* sk_buff
*
* @param[in] handle Context associated with the interface.
* @param[in] skb Pointer to the data socket buffer.
*
* @return
* Status of the Tx operation.
*/
extern nss_tx_status_t nss_wifi_if_tx_buf(struct nss_wifi_if_handle *handle,
struct sk_buff *skb);
/**
* nss_wifi_if_copy_stats
* Copies Wi-Fi interface statistics for display.
*
* @param[in] if_num NSS interface number.
* @param[in] index Index in the statistics array.
* @param[out] line Pointer to the buffer into which the statistics are copied.
*
* @return
* Number of bytes copied.
*/
int32_t nss_wifi_if_copy_stats(int32_t if_num, int index, char *line);
/**
* @}
*/
#endif /* __NSS_WIFI_IF_H */

View File

@@ -43,6 +43,8 @@ enum nss_wifi_mac_db_msg_types {
NSS_WIFI_MAC_DB_UPDATE_ENTRY_MSG, /**< Wi-Fi MAC database update entry message. */
NSS_WIFI_MAC_DB_DEINIT_MSG, /**< Wi-Fi MAC database deinitialization message. */
NSS_WIFI_MAC_DB_GROUP_ENTRIES_ADD_MSG, /**< Wi-Fi MAC database group entries add message. */
NSS_WIFI_MAC_DB_ENTRY_ACTIVITY_MSG, /**< Wi-Fi MAC database entry activity message. */
NSS_WIFI_MAC_DB_CREATE_ENTRY_MSG, /**< Wi-Fi MAC database entry create message. */
NSS_WIFI_MAC_DB_MAX_MSG
};
@@ -69,9 +71,8 @@ enum nss_wifi_mac_db_if_opmode {
NSS_WIFI_MAC_DB_ENTRY_IF_OPMODE_MAX /**< Maximum entry database interface operation mode. */
};
/*
* nss_wifi_mac_db_err_types
* Wi-Fi MAC database erros.
/**
* Wi-Fi MAC database errors.
*/
enum nss_wifi_mac_db_err_types {
NSS_WIFI_MAC_DB_ERROR_NONE,
@@ -112,12 +113,42 @@ enum nss_wifi_mac_db_err_types {
/**< Wi-Fi MAC database error maximum. */
};
/**
* nss_wifi_mac_db_entry_create_msg
* Wi-Fi MAC database entry create message.
*/
struct nss_wifi_mac_db_entry_create_msg {
uint8_t mac_addr[ETH_ALEN]; /**< MAC address. */
uint16_t reserved; /**< Reserved bytes. */
int32_t nss_if; /**< NSS interface number. */
};
/**
* nss_wifi_mac_db_entry_activity_info
* Wi-Fi MAC database entry activity information.
*/
struct nss_wifi_mac_db_entry_activity_info {
uint8_t mac_addr[ETH_ALEN]; /**< MAC address. */
uint16_t reserved; /**< Reserved bytes. */
int32_t nss_if; /**< NSS interface number. */
};
/**
* nss_wifi_mac_db_entry_activity_info_msg
* Wi-Fi MAC database entry activity information message.
*/
struct nss_wifi_mac_db_entry_activity_info_msg {
uint32_t nentries; /**< Number of entries. */
struct nss_wifi_mac_db_entry_activity_info info[1];
/**< Wi-Fi MAC database entry activity information. */
};
/**
* nss_wifi_mac_db_entry_info_msg
* Wi-Fi MAC database entry information.
*/
struct nss_wifi_mac_db_entry_info_msg {
uint8_t mac_addr[6]; /**< MAC address. */
uint8_t mac_addr[ETH_ALEN]; /**< MAC address. */
uint16_t flag; /**< Flag information about NSS interface. */
int32_t nss_if; /**< NSS interface number. */
uint32_t iftype; /**< NSS interface type. */
@@ -151,6 +182,10 @@ struct nss_wifi_mac_db_msg {
/**< Wi-Fi MAC database information specific message. */
struct nss_wifi_mac_db_entry_group_info_msg nmfdbegimsg;
/**< Wi-Fi MAC database information specific message. */
struct nss_wifi_mac_db_entry_activity_info_msg nmfdbeact_imsg;
/**< Wi-Fi MAC database entry activity information message. */
struct nss_wifi_mac_db_entry_create_msg nmfdbecmsg;
/**< Wi-Fi MAC database entry create message. */
} msg; /**< Message payload. */
};

File diff suppressed because it is too large Load Diff

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