mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-10-29 17:42:41 +00:00
Compare commits
151 Commits
release/v2
...
release/v2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2283a64e57 | ||
|
|
1a3054218f | ||
|
|
7d26b55cb5 | ||
|
|
cd85723609 | ||
|
|
6d922da9b8 | ||
|
|
6b81555bb2 | ||
|
|
267157563e | ||
|
|
6505ca0a8f | ||
|
|
5cafdaea60 | ||
|
|
4a3d4f5609 | ||
|
|
3085dc78ef | ||
|
|
897ab17137 | ||
|
|
840319e24f | ||
|
|
00197d703e | ||
|
|
a290ad3764 | ||
|
|
972eea34eb | ||
|
|
851507921a | ||
|
|
b364ab3064 | ||
|
|
45143cc2c9 | ||
|
|
895e501b93 | ||
|
|
7d9594c3c8 | ||
|
|
485c689408 | ||
|
|
ec2e24e982 | ||
|
|
32f86e2d77 | ||
|
|
53e73b24de | ||
|
|
e57dad9009 | ||
|
|
01c3ce4fc7 | ||
|
|
6b3d2b8059 | ||
|
|
ba079bea9f | ||
|
|
f971f3a4d4 | ||
|
|
32524c19bd | ||
|
|
966353e747 | ||
|
|
37f30d95f8 | ||
|
|
e699bebac7 | ||
|
|
0e5ec91a12 | ||
|
|
3cad34e1b9 | ||
|
|
2c37a6983f | ||
|
|
330eead632 | ||
|
|
f1456f321a | ||
|
|
9152942d93 | ||
|
|
f202250a68 | ||
|
|
fad14af474 | ||
|
|
5a7bafede0 | ||
|
|
6738a933ab | ||
|
|
a46262aaaa | ||
|
|
2988180211 | ||
|
|
ec0d693d12 | ||
|
|
406dad6604 | ||
|
|
b31b236646 | ||
|
|
0c379ed26c | ||
|
|
647d5c8a33 | ||
|
|
7baf962bb8 | ||
|
|
09c23e4f4d | ||
|
|
5c82ff107e | ||
|
|
5d642d0325 | ||
|
|
a37ed25128 | ||
|
|
544e6ff3a3 | ||
|
|
ab2ff431ee | ||
|
|
fd884e709b | ||
|
|
a6140a494c | ||
|
|
d9b43c559a | ||
|
|
ebe982fad7 | ||
|
|
89ff811e94 | ||
|
|
7c030d452e | ||
|
|
24d64b4704 | ||
|
|
2279c1ab7e | ||
|
|
fc223fae06 | ||
|
|
640e676753 | ||
|
|
650adaf7ad | ||
|
|
f4129130dc | ||
|
|
8fcd427384 | ||
|
|
5f26f65e46 | ||
|
|
16b70f20e9 | ||
|
|
3912a0a362 | ||
|
|
46342a2621 | ||
|
|
a5a37a22ce | ||
|
|
14d3c44184 | ||
|
|
2c3becff4b | ||
|
|
cd6e94f201 | ||
|
|
017bfb6cd5 | ||
|
|
25e38d4ac4 | ||
|
|
5477419fd7 | ||
|
|
f520e4f5a9 | ||
|
|
a3813f4b5d | ||
|
|
839bee5a6d | ||
|
|
3fa8e33a45 | ||
|
|
8c52460881 | ||
|
|
0c9bc8a958 | ||
|
|
8cd26b4b50 | ||
|
|
8e511326d5 | ||
|
|
2d40fa3c55 | ||
|
|
f7f91aa5c0 | ||
|
|
f84eeb94f3 | ||
|
|
4a1f6009cf | ||
|
|
99432b9ccb | ||
|
|
9008c7b9db | ||
|
|
886b8cc103 | ||
|
|
6ad420b218 | ||
|
|
0c422f721c | ||
|
|
fdd199a9f3 | ||
|
|
8335267666 | ||
|
|
08a0ef6abc | ||
|
|
1e7efc68a8 | ||
|
|
a6256fb1f9 | ||
|
|
d0a0715628 | ||
|
|
e5630c6a57 | ||
|
|
6524e6ab7f | ||
|
|
2303a32b9c | ||
|
|
72d33747fe | ||
|
|
a0c32b4915 | ||
|
|
e97526a324 | ||
|
|
0bd137873c | ||
|
|
87bc028384 | ||
|
|
29a8edbf45 | ||
|
|
9d0b3d50c1 | ||
|
|
79e8e2e005 | ||
|
|
936ecf7b3e | ||
|
|
bc49ef6ad6 | ||
|
|
5d7770a7ad | ||
|
|
040b4455a6 | ||
|
|
3755107433 | ||
|
|
8b2b5a32d1 | ||
|
|
bed0dab28d | ||
|
|
2ac2d9c43f | ||
|
|
7ab801ef8d | ||
|
|
07a4a1af09 | ||
|
|
382fb8407a | ||
|
|
8d863239f5 | ||
|
|
3add17ebd9 | ||
|
|
82481e1694 | ||
|
|
ccc17c50a7 | ||
|
|
378d8b8942 | ||
|
|
78d03f7429 | ||
|
|
c27eb9af3e | ||
|
|
179d1b5770 | ||
|
|
cf8c89d9e1 | ||
|
|
cbfe1d792b | ||
|
|
bbd180ddeb | ||
|
|
a11eede233 | ||
|
|
0789a4db83 | ||
|
|
ec5396f9c0 | ||
|
|
53c2b41a58 | ||
|
|
9166177cad | ||
|
|
5de9d3fb6f | ||
|
|
7255a5adce | ||
|
|
75e79fe98f | ||
|
|
8f016e7f92 | ||
|
|
f28e626c11 | ||
|
|
7b049a4da2 | ||
|
|
c4a409d12d | ||
|
|
df6b7fea80 |
17
.github/workflows/build-dev.yml
vendored
17
.github/workflows/build-dev.yml
vendored
@@ -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 }}"}'
|
||||
|
||||
@@ -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*
|
||||
|
||||
@@ -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*
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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))))
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
|
||||
39
backports/0012-libubox-update-to-latest-HEAD.patch
Normal file
39
backports/0012-libubox-update-to-latest-HEAD.patch
Normal 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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
---
|
||||
242
backports/0014-kernel-add-bdpu-filter-support.patch
Normal file
242
backports/0014-kernel-add-bdpu-filter-support.patch
Normal 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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
41
backports/0016-iwinfo-update-to-latest-git-HEAD.patch
Normal file
41
backports/0016-iwinfo-update-to-latest-git-HEAD.patch
Normal 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
|
||||
|
||||
@@ -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
|
||||
|
||||
136
backports/0017-netifd-update-to-latest-HEAD.patch
Normal file
136
backports/0017-netifd-update-to-latest-HEAD.patch
Normal 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
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -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);
|
||||
170
backports/0020-procd-add-uxc-support.patch
Normal file
170
backports/0020-procd-add-uxc-support.patch
Normal 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
|
||||
|
||||
174
backports/0021-build-create-APK-files-parrallel-to-IPK.patch
Normal file
174
backports/0021-build-create-APK-files-parrallel-to-IPK.patch
Normal 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
|
||||
|
||||
69
backports/0022-fstools-update-to-git-HEAD.patch
Normal file
69
backports/0022-fstools-update-to-git-HEAD.patch
Normal 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
|
||||
|
||||
40
backports/0023-tools-libressl-update-to-3.3.3.patch
Normal file
40
backports/0023-tools-libressl-update-to-3.3.3.patch
Normal 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
|
||||
|
||||
1213
backports/0024-uvol-backport-package.patch
Normal file
1213
backports/0024-uvol-backport-package.patch
Normal file
File diff suppressed because it is too large
Load Diff
312
backports/0025-apk-backport-package.patch
Normal file
312
backports/0025-apk-backport-package.patch
Normal 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
|
||||
|
||||
104
backports/0026-lua-lzlib-backport-package.patch
Normal file
104
backports/0026-lua-lzlib-backport-package.patch
Normal 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
|
||||
|
||||
@@ -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
|
||||
|
||||
247
backports/0028-mt76-update-to-latest-HEAD.patch
Normal file
247
backports/0028-mt76-update-to-latest-HEAD.patch
Normal 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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
repo: https://github.com/openwrt/openwrt.git
|
||||
branch: openwrt-21.02
|
||||
revision: 6fd65c657351908302b37447675ee352ec927d93
|
||||
revision: 378769b5551714ccaa821b481bfeecbf362f351e
|
||||
output_dir: ./output
|
||||
|
||||
patch_folders:
|
||||
|
||||
@@ -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"
|
||||
|
||||
77
feeds/facebook/fbwifi/Makefile
Normal file
77
feeds/facebook/fbwifi/Makefile
Normal 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))
|
||||
22
feeds/facebook/fbwifi/README.md
Normal file
22
feeds/facebook/fbwifi/README.md
Normal 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
|
||||
|
||||
6
feeds/facebook/fbwifi/files/fbwifi/etc/config/fbwifi
Normal file
6
feeds/facebook/fbwifi/files/fbwifi/etc/config/fbwifi
Normal 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'
|
||||
@@ -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
|
||||
43
feeds/facebook/fbwifi/files/fbwifi/etc/init.d/fbwifi
Executable file
43
feeds/facebook/fbwifi/files/fbwifi/etc/init.d/fbwifi
Executable 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
|
||||
}
|
||||
156
feeds/facebook/fbwifi/files/fbwifi/usr/lib/lua/fbwifi.lua
Normal file
156
feeds/facebook/fbwifi/files/fbwifi/usr/lib/lua/fbwifi.lua
Normal 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
|
||||
58
feeds/facebook/fbwifi/files/fbwifi/usr/sbin/fbwifi
Executable file
58
feeds/facebook/fbwifi/files/fbwifi/usr/sbin/fbwifi
Executable 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
|
||||
8
feeds/facebook/fbwifi/files/fbwifi/usr/sbin/fbwifi_debug_dump
Executable file
8
feeds/facebook/fbwifi/files/fbwifi/usr/sbin/fbwifi_debug_dump
Executable 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
|
||||
39
feeds/facebook/fbwifi/files/fbwifi/usr/sbin/fbwifi_gateway_info_update
Executable file
39
feeds/facebook/fbwifi/files/fbwifi/usr/sbin/fbwifi_gateway_info_update
Executable 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
|
||||
111
feeds/facebook/fbwifi/files/fbwifi/usr/sbin/fbwifi_get_config
Executable file
111
feeds/facebook/fbwifi/files/fbwifi/usr/sbin/fbwifi_get_config
Executable 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')
|
||||
75
feeds/facebook/fbwifi/files/fbwifi/usr/sbin/fbwifi_validate_token_db
Executable file
75
feeds/facebook/fbwifi/files/fbwifi/usr/sbin/fbwifi_validate_token_db
Executable 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)
|
||||
@@ -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
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"request": [
|
||||
[ "if",
|
||||
[ "regex", "REQUEST_URI", "^/fbwifi" ],
|
||||
[ "rewrite", "/cgi-bin%REQUEST_URI%" ]
|
||||
]
|
||||
]
|
||||
}
|
||||
70
feeds/facebook/fbwifi/files/fbwifi/www/cgi-bin/fbwifi/v2.0/auth
Executable file
70
feeds/facebook/fbwifi/files/fbwifi/www/cgi-bin/fbwifi/v2.0/auth
Executable 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
|
||||
42
feeds/facebook/fbwifi/files/fbwifi/www/cgi-bin/fbwifi/v2.0/capport
Executable file
42
feeds/facebook/fbwifi/files/fbwifi/www/cgi-bin/fbwifi/v2.0/capport
Executable 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) )
|
||||
57
feeds/facebook/fbwifi/files/fbwifi/www/cgi-bin/fbwifi/v2.0/info
Executable file
57
feeds/facebook/fbwifi/files/fbwifi/www/cgi-bin/fbwifi/v2.0/info
Executable 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) )
|
||||
@@ -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
|
||||
|
||||
@@ -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%>
|
||||
42
feeds/ipq807x/kmod-sched-cake/Makefile
Normal file
42
feeds/ipq807x/kmod-sched-cake/Makefile
Normal 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))
|
||||
20
feeds/ipq807x/kmod-sched-cake/patches/100-compat.patch
Normal file
20
feeds/ipq807x/kmod-sched-cake/patches/100-compat.patch
Normal 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)
|
||||
{
|
||||
@@ -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))
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
524
feeds/ipq807x/qca-nss-drv/src/exports/nss_api_if.h
Normal file → Executable 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.
|
||||
|
||||
@@ -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. */
|
||||
|
||||
@@ -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);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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__ */
|
||||
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
@@ -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
|
||||
};
|
||||
|
||||
|
||||
@@ -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. */
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
@@ -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);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
@@ -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);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
@@ -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);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
@@ -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);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
@@ -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);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
@@ -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);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
@@ -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. */
|
||||
};
|
||||
|
||||
@@ -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. */
|
||||
};
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
@@ -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_ */
|
||||
|
||||
79
feeds/ipq807x/qca-nss-drv/src/exports/nss_ppe_vp.h
Normal file
79
feeds/ipq807x/qca-nss-drv/src/exports/nss_ppe_vp.h
Normal 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_ */
|
||||
@@ -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);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
284
feeds/ipq807x/qca-nss-drv/src/exports/nss_udp_st.h
Executable file
284
feeds/ipq807x/qca-nss-drv/src/exports/nss_udp_st.h
Executable 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 */
|
||||
@@ -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. */
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -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. */
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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 */
|
||||
@@ -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. */
|
||||
};
|
||||
|
||||
|
||||
1000
feeds/ipq807x/qca-nss-drv/src/exports/nss_wifi_mesh.h
Normal file
1000
feeds/ipq807x/qca-nss-drv/src/exports/nss_wifi_mesh.h
Normal file
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
Reference in New Issue
Block a user