mirror of
				https://github.com/Telecominfraproject/wlan-ap.git
				synced 2025-10-31 10:28:06 +00:00 
			
		
		
		
	Compare commits
	
		
			221 Commits
		
	
	
		
			v2.0.0-rc2
			...
			v2.4.0-rc2
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 769e8c5c0b | ||
|   | 04c3325710 | ||
|   | 7c1fd79ceb | ||
|   | 1e950be127 | ||
|   | 5fc7ac166a | ||
|   | 87be030169 | ||
|   | b0688f097b | ||
|   | ae77be4e5c | ||
|   | efac512c90 | ||
|   | bcde3ee6d7 | ||
|   | 7b0ef7f265 | ||
|   | 670f9fee14 | ||
|   | 4c7ee4bf6d | ||
|   | 90868338c7 | ||
|   | 7a20f558e1 | ||
|   | 9b8c1f8449 | ||
|   | 002880c3fa | ||
|   | 3de5c91e6c | ||
|   | 679e20af39 | ||
|   | 191081e46f | ||
|   | 8f7a66f1ac | ||
|   | c93b14ca7a | ||
|   | 16176a1cc3 | ||
|   | a4806f740d | ||
|   | 35740f321d | ||
|   | 74c148e905 | ||
|   | a77d881147 | ||
|   | 065539bbb3 | ||
|   | e2d90a7b06 | ||
|   | 8bb9816e2b | ||
|   | 9673329c07 | ||
|   | 2571ae5210 | ||
|   | 8caffe46b4 | ||
|   | 25641d5199 | ||
|   | 2b3cc2a5cf | ||
|   | 12cc29265c | ||
|   | 34a6f06bd9 | ||
|   | c343d5e629 | ||
|   | 501907eeda | ||
|   | ba406fe01b | ||
|   | d61d5cd35e | ||
|   | 68d544c9af | ||
|   | 5d86871253 | ||
|   | 460785cbe3 | ||
|   | 1cace058c5 | ||
|   | 5aaf734732 | ||
|   | 9d3768a68d | ||
|   | 975aae507b | ||
|   | cc0576886a | ||
|   | 9c36b155f6 | ||
|   | 28ac14ccc4 | ||
|   | e18e7fc8f6 | ||
|   | 04d78d3334 | ||
|   | a9fd11ed8a | ||
|   | 839f43c010 | ||
|   | f599a42618 | ||
|   | 8bc7bee3bc | ||
|   | 53004cc39c | ||
|   | 9a1c8cff9f | ||
|   | 2d0e2bccbf | ||
|   | 70c2c36e0f | ||
|   | 11ed0b089c | ||
|   | 29058df59b | ||
|   | e840bab8cc | ||
|   | e3e3c9ea72 | ||
|   | a3125e6ab2 | ||
|   | 63e8b90656 | ||
|   | 70f231d948 | ||
|   | 2983d9ca2b | ||
|   | 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 | ||
|   | f3b980081e | 
							
								
								
									
										17
									
								
								.github/workflows/build-dev.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										17
									
								
								.github/workflows/build-dev.yml
									
									
									
									
										vendored
									
									
								
							| @@ -2,7 +2,7 @@ name: Build OpenWrt/uCentral images | |||||||
|  |  | ||||||
| on: | on: | ||||||
|   push: |   push: | ||||||
|     branches: [ uCentral-* ] |     branches: [ main, next, staging-* ] | ||||||
|     tags: [ v* ] |     tags: [ v* ] | ||||||
|  |  | ||||||
| jobs: | jobs: | ||||||
| @@ -11,7 +11,7 @@ jobs: | |||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       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', 'indio_um-305ac', 'linksys_ea6350-v4', 'linksys_e8450-ubi', 'linksys_ea8300', 'tp-link_ec420-g1', 'tplink_ex227', 'tplink_ex228', 'tplink_ex447', 'wallys_dr40x9', 'wallys_dr6018', 'wallys_dr6018_v4' ] | ||||||
|  |  | ||||||
|     steps: |     steps: | ||||||
|     - uses: actions/checkout@v2 |     - 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/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" |         [ -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> | From: Felix Fietkau <nbd@nbd.name> | ||||||
| Date: Thu, 22 Oct 2020 10:29:34 +0200 | 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 |  modules/packages | ||||||
|  |  | ||||||
| This is needed for linux 5.10, where modules.builtin is generated from | 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(-) |  1 file changed, 3 insertions(+), 3 deletions(-) | ||||||
|  |  | ||||||
| diff --git a/include/kernel-defaults.mk b/include/kernel-defaults.mk | 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 | --- a/include/kernel-defaults.mk | ||||||
| +++ b/include/kernel-defaults.mk | +++ b/include/kernel-defaults.mk | ||||||
| @@ -113,7 +113,7 @@ endef | @@ -115,7 +115,7 @@ endef | ||||||
|   |   | ||||||
|  define Kernel/CompileModules/Default |  define Kernel/CompileModules/Default | ||||||
|  	rm -f $(LINUX_DIR)/vmlinux $(LINUX_DIR)/System.map |  	rm -f $(LINUX_DIR)/vmlinux $(LINUX_DIR)/System.map | ||||||
| @@ -25,7 +25,7 @@ index e5a0ba367b..b069c1e671 100644 | |||||||
|  endef |  endef | ||||||
|   |   | ||||||
|  OBJCOPY_STRIP = -R .reginfo -R .notes -R .note -R .comment -R .mdebug -R .note.gnu.build-id |  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 |  define Kernel/CompileImage/Default | ||||||
|  	rm -f $(TARGET_DIR)/init |  	rm -f $(TARGET_DIR)/init | ||||||
| @@ -34,7 +34,7 @@ index e5a0ba367b..b069c1e671 100644 | |||||||
|  	$(call Kernel/CopyImage) |  	$(call Kernel/CopyImage) | ||||||
|  endef |  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 |  	$(CP) $(GENERIC_PLATFORM_DIR)/other-files/init $(TARGET_DIR)/init | ||||||
|  	$(if $(SOURCE_DATE_EPOCH),touch -hcd "@$(SOURCE_DATE_EPOCH)" $(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* |  	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> | From: Felix Fietkau <nbd@nbd.name> | ||||||
| Date: Wed, 17 Feb 2021 13:49:14 +0100 | 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 | 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(-) |  1 file changed, 3 insertions(+), 3 deletions(-) | ||||||
|  |  | ||||||
| diff --git a/include/kernel-defaults.mk b/include/kernel-defaults.mk | 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 | --- a/include/kernel-defaults.mk | ||||||
| +++ b/include/kernel-defaults.mk | +++ b/include/kernel-defaults.mk | ||||||
| @@ -3,7 +3,7 @@ | @@ -3,7 +3,7 @@ | ||||||
| @@ -23,7 +23,7 @@ index b069c1e671..93eed54ae1 100644 | |||||||
|  	EXTRA_LDSFLAGS="-I$(KERNEL_BUILD_DIR) -include symtab.h" |  	EXTRA_LDSFLAGS="-I$(KERNEL_BUILD_DIR) -include symtab.h" | ||||||
|  endif |  endif | ||||||
|   |   | ||||||
| @@ -137,7 +137,7 @@ endef | @@ -139,7 +139,7 @@ endef | ||||||
|   |   | ||||||
|  define Kernel/CompileImage/Default |  define Kernel/CompileImage/Default | ||||||
|  	rm -f $(TARGET_DIR)/init |  	rm -f $(TARGET_DIR)/init | ||||||
| @@ -32,7 +32,7 @@ index b069c1e671..93eed54ae1 100644 | |||||||
|  	$(call Kernel/CopyImage) |  	$(call Kernel/CopyImage) | ||||||
|  endef |  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 |  	$(CP) $(GENERIC_PLATFORM_DIR)/other-files/init $(TARGET_DIR)/init | ||||||
|  	$(if $(SOURCE_DATE_EPOCH),touch -hcd "@$(SOURCE_DATE_EPOCH)" $(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* |  	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> | From: Felix Fietkau <nbd@nbd.name> | ||||||
| Date: Sat, 24 Oct 2020 21:14:16 +0200 | 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> | 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 |  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
 | 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
 | --- a/include/image-commands.mk
 | ||||||
| +++ b/include/image-commands.mk
 | +++ b/include/image-commands.mk
 | ||||||
| @@ -200,11 +200,12 @@ define Build/fit
 | @@ -200,11 +200,12 @@ define Build/fit
 | ||||||
| @@ -744,7 +744,7 @@ index b46fcebc08..e2bb1d0681 100644 | |||||||
|    AUTOLOAD:=$(call AutoProbe,$(notdir $(NFT_CORE-m))) |    AUTOLOAD:=$(call AutoProbe,$(notdir $(NFT_CORE-m))) | ||||||
|    KCONFIG:= \ |    KCONFIG:= \ | ||||||
| diff --git a/package/kernel/linux/modules/usb.mk b/package/kernel/linux/modules/usb.mk
 | 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
 | --- a/package/kernel/linux/modules/usb.mk
 | ||||||
| +++ b/package/kernel/linux/modules/usb.mk
 | +++ b/package/kernel/linux/modules/usb.mk
 | ||||||
| @@ -1387,7 +1387,7 @@ define KernelPackage/usb-net-cdc-ncm
 | @@ -1387,7 +1387,7 @@ define KernelPackage/usb-net-cdc-ncm
 | ||||||
| @@ -12418,10 +12418,10 @@ index 0000000000..4eb5607f17 | |||||||
| +# CONFIG_ZSMALLOC is not set
 | +# CONFIG_ZSMALLOC is not set
 | ||||||
| +# CONFIG_ZX_TDM 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
 | 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
 | --- a/target/linux/generic/config-5.4
 | ||||||
| +++ b/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_SPI_NOR_USE_4K_SECTORS_LIMIT=4096 | ||||||
|  CONFIG_MTD_SPLIT=y |  CONFIG_MTD_SPLIT=y | ||||||
|  # CONFIG_MTD_SPLIT_BCM_WFI_FW is not set |  # 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> | From: Felix Fietkau <nbd@nbd.name> | ||||||
| Date: Thu, 9 Apr 2020 09:53:24 +0200 | 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> | 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% | similarity index 67% | ||||||
| rename from target/linux/mediatek/mt7622/config-5.4 | rename from target/linux/mediatek/mt7622/config-5.4 | ||||||
| rename to target/linux/mediatek/mt7622/config-5.10 | 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
 | --- a/target/linux/mediatek/mt7622/config-5.4
 | ||||||
| +++ b/target/linux/mediatek/mt7622/config-5.10
 | +++ b/target/linux/mediatek/mt7622/config-5.10
 | ||||||
| @@ -1,59 +1,6 @@
 | @@ -1,59 +1,6 @@
 | ||||||
| @@ -102116,7 +102116,7 @@ index b873bdc40c..2d7f82ce23 100644 | |||||||
|  # CONFIG_FUJITSU_ERRATUM_010001 is not set |  # CONFIG_FUJITSU_ERRATUM_010001 is not set | ||||||
|  CONFIG_FW_LOADER_PAGED_BUF=y |  CONFIG_FW_LOADER_PAGED_BUF=y | ||||||
|  CONFIG_GENERIC_ALLOCATOR=y |  CONFIG_GENERIC_ALLOCATOR=y | ||||||
| @@ -267,102 +201,19 @@ CONFIG_GLOB=y
 | @@ -267,103 +201,20 @@ CONFIG_GLOB=y
 | ||||||
|  CONFIG_GPIOLIB=y |  CONFIG_GPIOLIB=y | ||||||
|  CONFIG_GRO_CELLS=y |  CONFIG_GRO_CELLS=y | ||||||
|  CONFIG_HANDLE_DOMAIN_IRQ=y |  CONFIG_HANDLE_DOMAIN_IRQ=y | ||||||
| @@ -102184,6 +102184,7 @@ index b873bdc40c..2d7f82ce23 100644 | |||||||
| -CONFIG_HAVE_UID16=y
 | -CONFIG_HAVE_UID16=y
 | ||||||
| -CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
 | -CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
 | ||||||
|  CONFIG_HOLES_IN_ZONE=y |  CONFIG_HOLES_IN_ZONE=y | ||||||
|  |  # CONFIG_HW_RANDOM_MTK is not set | ||||||
|  CONFIG_HZ=250 |  CONFIG_HZ=250 | ||||||
|  CONFIG_HZ_250=y |  CONFIG_HZ_250=y | ||||||
| -CONFIG_I2C=y
 | -CONFIG_I2C=y
 | ||||||
| @@ -102219,7 +102220,7 @@ index b873bdc40c..2d7f82ce23 100644 | |||||||
|  CONFIG_IO_URING=y |  CONFIG_IO_URING=y | ||||||
|  CONFIG_IRQCHIP=y |  CONFIG_IRQCHIP=y | ||||||
|  CONFIG_IRQ_DOMAIN=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_FORCED_THREADING=y | ||||||
|  CONFIG_IRQ_TIME_ACCOUNTING=y |  CONFIG_IRQ_TIME_ACCOUNTING=y | ||||||
|  CONFIG_IRQ_WORK=y |  CONFIG_IRQ_WORK=y | ||||||
| @@ -102231,7 +102232,7 @@ index b873bdc40c..2d7f82ce23 100644 | |||||||
|  CONFIG_LOCK_DEBUGGING_SUPPORT=y |  CONFIG_LOCK_DEBUGGING_SUPPORT=y | ||||||
|  CONFIG_LOCK_SPIN_ON_OWNER=y |  CONFIG_LOCK_SPIN_ON_OWNER=y | ||||||
|  CONFIG_LZO_COMPRESS=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_MAGIC_SYSRQ=y | ||||||
|  CONFIG_MDIO_BUS=y |  CONFIG_MDIO_BUS=y | ||||||
|  CONFIG_MDIO_DEVICE=y |  CONFIG_MDIO_DEVICE=y | ||||||
| @@ -102259,7 +102260,7 @@ index b873bdc40c..2d7f82ce23 100644 | |||||||
|  CONFIG_MTD_RAW_NAND=y |  CONFIG_MTD_RAW_NAND=y | ||||||
|  CONFIG_MTD_SPI_NAND=y |  CONFIG_MTD_SPI_NAND=y | ||||||
|  CONFIG_MTD_SPI_NOR=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_MT7530=y | ||||||
|  CONFIG_NET_DSA_TAG_MTK=y |  CONFIG_NET_DSA_TAG_MTK=y | ||||||
|  CONFIG_NET_FLOW_LIMIT=y |  CONFIG_NET_FLOW_LIMIT=y | ||||||
| @@ -102267,7 +102268,7 @@ index b873bdc40c..2d7f82ce23 100644 | |||||||
|  CONFIG_NET_MEDIATEK_SOC=y |  CONFIG_NET_MEDIATEK_SOC=y | ||||||
|  CONFIG_NET_SWITCHDEV=y |  CONFIG_NET_SWITCHDEV=y | ||||||
|  CONFIG_NET_VENDOR_MEDIATEK=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_PCI=y | ||||||
|  CONFIG_PCIEAER=y |  CONFIG_PCIEAER=y | ||||||
|  CONFIG_PCIEASPM=y |  CONFIG_PCIEASPM=y | ||||||
| @@ -102275,7 +102276,7 @@ index b873bdc40c..2d7f82ce23 100644 | |||||||
|  # CONFIG_PCIEASPM_DEFAULT is not set |  # CONFIG_PCIEASPM_DEFAULT is not set | ||||||
|  CONFIG_PCIEASPM_PERFORMANCE=y |  CONFIG_PCIEASPM_PERFORMANCE=y | ||||||
|  # CONFIG_PCIEASPM_POWERSAVE is not set |  # 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_DOMAINS_GENERIC=y | ||||||
|  CONFIG_PCI_MSI=y |  CONFIG_PCI_MSI=y | ||||||
|  CONFIG_PCI_MSI_IRQ_DOMAIN=y |  CONFIG_PCI_MSI_IRQ_DOMAIN=y | ||||||
| @@ -102283,7 +102284,7 @@ index b873bdc40c..2d7f82ce23 100644 | |||||||
|  CONFIG_PGTABLE_LEVELS=3 |  CONFIG_PGTABLE_LEVELS=3 | ||||||
|  CONFIG_PHYLIB=y |  CONFIG_PHYLIB=y | ||||||
|  CONFIG_PHYLINK=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_MT8516=y | ||||||
|  CONFIG_PINCTRL_MTK=y |  CONFIG_PINCTRL_MTK=y | ||||||
|  CONFIG_PINCTRL_MTK_MOORE=y |  CONFIG_PINCTRL_MTK_MOORE=y | ||||||
| @@ -102292,7 +102293,7 @@ index b873bdc40c..2d7f82ce23 100644 | |||||||
|  CONFIG_PM=y |  CONFIG_PM=y | ||||||
|  CONFIG_PM_CLK=y |  CONFIG_PM_CLK=y | ||||||
|  CONFIG_PM_GENERIC_DOMAINS=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_RESET_SYSCON=y | ||||||
|  CONFIG_POWER_SUPPLY=y |  CONFIG_POWER_SUPPLY=y | ||||||
|  CONFIG_PRINTK_TIME=y |  CONFIG_PRINTK_TIME=y | ||||||
| @@ -102313,7 +102314,7 @@ index b873bdc40c..2d7f82ce23 100644 | |||||||
|  CONFIG_PWM=y |  CONFIG_PWM=y | ||||||
|  CONFIG_PWM_MEDIATEK=y |  CONFIG_PWM_MEDIATEK=y | ||||||
|  # CONFIG_PWM_MTK_DISP is not set |  # 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_NEED_SEGCBLIST=y | ||||||
|  CONFIG_RCU_STALL_COMMON=y |  CONFIG_RCU_STALL_COMMON=y | ||||||
|  CONFIG_REALTEK_PHY=y |  CONFIG_REALTEK_PHY=y | ||||||
| @@ -102324,7 +102325,7 @@ index b873bdc40c..2d7f82ce23 100644 | |||||||
|  CONFIG_REGMAP=y |  CONFIG_REGMAP=y | ||||||
|  CONFIG_REGMAP_MMIO=y |  CONFIG_REGMAP_MMIO=y | ||||||
|  CONFIG_REGULATOR=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_EMULATION=y | ||||||
|  CONFIG_THERMAL_GOV_BANG_BANG=y |  CONFIG_THERMAL_GOV_BANG_BANG=y | ||||||
|  CONFIG_THERMAL_GOV_FAIR_SHARE=y |  CONFIG_THERMAL_GOV_FAIR_SHARE=y | ||||||
| @@ -102332,7 +102333,7 @@ index b873bdc40c..2d7f82ce23 100644 | |||||||
|  CONFIG_THERMAL_GOV_STEP_WISE=y |  CONFIG_THERMAL_GOV_STEP_WISE=y | ||||||
|  CONFIG_THERMAL_GOV_USER_SPACE=y |  CONFIG_THERMAL_GOV_USER_SPACE=y | ||||||
|  CONFIG_THERMAL_OF=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_PRETIMEOUT_GOV_SEL=m | ||||||
|  CONFIG_WATCHDOG_SYSFS=y |  CONFIG_WATCHDOG_SYSFS=y | ||||||
|  CONFIG_XPS=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> | From: John Crispin <john@phrozen.org> | ||||||
| Date: Sat, 20 Feb 2021 08:36:43 +0100 | 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 |  env variable | ||||||
|  |  | ||||||
| Check if firmware environment variable 'rootfs_data_max' exists and is | 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> | From: Daniel Golle <daniel@makrotopia.org> | ||||||
| Date: Sat, 30 Jan 2021 13:58:16 +0000 | 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. | 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 | 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> | From: Daniel Golle <daniel@makrotopia.org> | ||||||
| Date: Fri, 12 Feb 2021 03:09:39 +0000 | 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 | Add U-Boot environment configuration for the Linksys E8450 (UBI) to | ||||||
| allow access to the bootloader environment from OpenWrt via | 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> | Signed-off-by: Daniel Golle <daniel@makrotopia.org> | ||||||
| --- | --- | ||||||
|  package/boot/uboot-envtools/files/mediatek | 25 ++++++++++++++++++++++ |  package/boot/uboot-envtools/files/mediatek | 46 ++++++++++++++++++++++ | ||||||
|  1 file changed, 25 insertions(+) |  1 file changed, 46 insertions(+) | ||||||
|  create mode 100644 package/boot/uboot-envtools/files/mediatek |  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 | diff --git a/package/boot/uboot-envtools/files/mediatek b/package/boot/uboot-envtools/files/mediatek | ||||||
| new file mode 100644 | new file mode 100644 | ||||||
| index 0000000000..92a04ea73d | index 0000000000..495a837274 | ||||||
| --- /dev/null | --- /dev/null | ||||||
| +++ b/package/boot/uboot-envtools/files/mediatek | +++ b/package/boot/uboot-envtools/files/mediatek | ||||||
| @@ -0,0 +1,25 @@ | @@ -0,0 +1,46 @@ | ||||||
| +#!/bin/sh |  | ||||||
| +# | +# | ||||||
| +# Copyright (C) 2021 OpenWrt.org | +# Copyright (C) 2021 OpenWrt.org | ||||||
| +# | +# | ||||||
| @@ -34,10 +33,32 @@ index 0000000000..92a04ea73d | |||||||
| +board=$(board_name) | +board=$(board_name) | ||||||
| + | + | ||||||
| +case "$board" in | +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_0" "0x0" "0x1f000" "0x1f000" "1" | ||||||
| +	ubootenv_add_uci_config "/dev/ubi0_1" "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 | +esac | ||||||
| + | + | ||||||
| +config_load ubootenv | +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> | From: John Crispin <john@phrozen.org> | ||||||
| Date: Wed, 7 Apr 2021 10:46:26 +0200 | 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> | 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(+) |  1 file changed, 6 insertions(+) | ||||||
|  |  | ||||||
| diff --git a/include/kernel-version.mk b/include/kernel-version.mk | 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 | --- a/include/kernel-version.mk | ||||||
| +++ b/include/kernel-version.mk | +++ b/include/kernel-version.mk | ||||||
| @@ -6,9 +6,15 @@ ifdef CONFIG_TESTING_KERNEL | @@ -6,9 +6,15 @@ ifdef CONFIG_TESTING_KERNEL | ||||||
| @@ -18,12 +18,12 @@ index 52e5c11d75..547f57fa11 100644 | |||||||
|   |   | ||||||
| +LINUX_VERSION-4.4 = .60 | +LINUX_VERSION-4.4 = .60 | ||||||
| +LINUX_VERSION-4.14 = .193 | +LINUX_VERSION-4.14 = .193 | ||||||
|  LINUX_VERSION-5.4 = .111 |  LINUX_VERSION-5.4 = .142 | ||||||
| +LINUX_VERSION-5.10 = .27 | +LINUX_VERSION-5.10 = .27 | ||||||
|   |   | ||||||
| +LINUX_KERNEL_HASH-4.4.60 = 2cd8df6f1ac6a5329c5a286ec9b5956215977221a1b731597ed169fff74a9659 | +LINUX_KERNEL_HASH-4.4.60 = 2cd8df6f1ac6a5329c5a286ec9b5956215977221a1b731597ed169fff74a9659 | ||||||
| +LINUX_KERNEL_HASH-4.14.193 = 0b0fb41d4430e1a42738b341cbfd2f41951aa5cd02acabbd53f076119c8b9f03 | +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 | +LINUX_KERNEL_HASH-5.10.27 = d99dc9662951299c53a0a8d8c8d0a72a16ff861d20e927c0f9b14f63282d69d9 | ||||||
|   |   | ||||||
|  remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1)))) |  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> | From: John Crispin <john@phrozen.org> | ||||||
| Date: Sun, 9 May 2021 12:23:00 +0200 | Date: Sun, 9 May 2021 12:23:00 +0200 | ||||||
| Subject: [PATCH 42/43] backport: mkits.sh | Subject: [PATCH 11/27] backport: mkits.sh | ||||||
|  |  | ||||||
| 969083634481c3ab5fb80509f385ef10ab45b55f | 969083634481c3ab5fb80509f385ef10ab45b55f | ||||||
| e991c1b8a2385397fc1e657ed73878938997d951 | e991c1b8a2385397fc1e657ed73878938997d951 | ||||||
| @@ -17,10 +17,10 @@ Signed-off-by: John Crispin <john@phrozen.org> | |||||||
|  5 files changed, 95 insertions(+), 12 deletions(-) |  5 files changed, 95 insertions(+), 12 deletions(-) | ||||||
|  |  | ||||||
| diff --git a/include/image-commands.mk b/include/image-commands.mk | 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 | --- a/include/image-commands.mk | ||||||
| +++ b/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))) \ |  		$(if $(word 3,$(1)),-r $(IMAGE_ROOTFS) -f $(subst _,$(comma),$(DEVICE_NAME))) \ | ||||||
|  		-a $(KERNEL_LOADADDR) -e $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \ |  		-a $(KERNEL_LOADADDR) -e $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \ | ||||||
|  		$(if $(DEVICE_FDT_NUM),-n $(DEVICE_FDT_NUM)) \ |  		$(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 |  	PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage $(if $(word 3,$(1)),-E -B 0x1000 -p 0x1000) -f $@.its $@.new | ||||||
|  	@mv $@.new $@ |  	@mv $@.new $@ | ||||||
| diff --git a/include/image.mk b/include/image.mk | diff --git a/include/image.mk b/include/image.mk | ||||||
| index fc46012e87..7a48b789af 100644 | index b6e8ab3c84..7c2dcf0e8b 100644 | ||||||
| --- a/include/image.mk | --- a/include/image.mk | ||||||
| +++ b/include/image.mk | +++ b/include/image.mk | ||||||
| @@ -139,7 +139,7 @@ endef | @@ -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 bb797fc82f8ade2a1c0b7a68dd7c920eae2f531f Mon Sep 17 00:00:00 2001 | ||||||
|  | From: John Crispin <john@phrozen.org> | ||||||
|  | Date: Tue, 18 May 2021 10:46:43 +0200 | ||||||
|  | Subject: [PATCH 01/74] 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..3b01930d6c 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:=82d84fb97e725b0a18ceac639cae0c17d922754bb648ff58c62069d92798a6cd | ||||||
|  | +PKG_SOURCE_DATE:=2021-08-19 | ||||||
|  | +PKG_SOURCE_VERSION:=c86a894ec63d83ecf2c373bbf9dc8fba9713d942 | ||||||
|  |  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> | From: John Crispin <john@phrozen.org> | ||||||
| Date: Wed, 30 Jun 2021 14:21:23 +0200 | 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> | 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 |  | ||||||
|  |  | ||||||
							
								
								
									
										111
									
								
								backports/0017-netifd-update-to-latest-HEAD.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								backports/0017-netifd-update-to-latest-HEAD.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,111 @@ | |||||||
|  | From 1496ca5ceb941ba725311c6c0366193092035f32 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/60] netifd: update to latest HEAD | ||||||
|  |  | ||||||
|  | Signed-off-by: John Crispin <john@phrozen.org> | ||||||
|  | --- | ||||||
|  |  package/network/config/netifd/Makefile        |  8 ++-- | ||||||
|  |  .../config/netifd/patches/100-script.patch    | 21 +++++++++++ | ||||||
|  |  .../config/netifd/patches/hairpin.patch       | 37 +++++++++++++++++++ | ||||||
|  |  3 files changed, 61 insertions(+), 5 deletions(-) | ||||||
|  |  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/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 6e3370a4c785c2c245b77832960f1dbed2736192 Mon Sep 17 00:00:00 2001 | ||||||
| From: John Crispin <john@phrozen.org> | From: John Crispin <john@phrozen.org> | ||||||
| Date: Thu, 27 May 2021 13:25:19 +0200 | Date: Sat, 4 Sep 2021 05:48:27 +0200 | ||||||
| Subject: [PATCH 01/41] hostapd: upsate to latest HEAD | Subject: [PATCH 01/70] hostapd: update to latest HEAD | ||||||
| 
 | 
 | ||||||
| Signed-off-by: John Crispin <john@phrozen.org> | Signed-off-by: John Crispin <john@phrozen.org> | ||||||
| ---
 | ---
 | ||||||
|  package/network/services/hostapd/Makefile     |  15 +- |  package/network/services/hostapd/Makefile     |  15 +- | ||||||
|  .../hostapd/files/hostapd-basic.config        |   2 +- |  .../hostapd/files/hostapd-basic.config        |   2 +- | ||||||
|  .../hostapd/files/hostapd-full.config         |   4 +- |  .../hostapd/files/hostapd-full.config         |   4 +- | ||||||
|  .../network/services/hostapd/files/hostapd.sh | 156 ++++++++-- |  .../network/services/hostapd/files/hostapd.sh | 188 +++++++++--- | ||||||
|  ...-fix-frequency-setup-with-HE-enabled.patch | 196 ------------- |  ...-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 -------- |  ...-init-order-disable-pri-sec-channel-.patch | 126 -------- | ||||||
|  ...andle-HT40-and-mode-downgrade-in-AP-.patch | 102 ------- |  ...andle-HT40-and-mode-downgrade-in-AP-.patch | 102 ------- | ||||||
|  ...ix-frequency-config-for-non-p2p-vht-.patch |  63 ---- |  ...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/600-ubus_support.patch    | 166 ++++++++--- | ||||||
|  .../hostapd/patches/700-wifi-reload.patch     |  51 ++-- |  .../hostapd/patches/700-wifi-reload.patch     |  51 ++-- | ||||||
|  .../hostapd/patches/710-vlan_no_bridge.patch  |  41 +++ |  .../hostapd/patches/710-vlan_no_bridge.patch  |  41 +++ | ||||||
|  |  .../patches/711-wds_bridge_force.patch        |  26 ++ | ||||||
|  .../720-ACS-fix-channel-100-frequency.patch   |  30 ++ |  .../720-ACS-fix-channel-100-frequency.patch   |  30 ++ | ||||||
|  .../patches/720-iface_max_num_sta.patch       |  82 ++++++ |  .../patches/720-iface_max_num_sta.patch       |  82 ++++++ | ||||||
|  .../hostapd/patches/730-ft_iface.patch        |  38 +++ |  .../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 --- |  ...ate-if-no-available-channel-is-found.patch |  37 --- | ||||||
|  ...of-secondary-device-types-for-P2P-gr.patch |  33 --- |  ...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 + |  .../services/hostapd/src/src/ap/ubus.h        |  16 + | ||||||
|  .../hostapd/src/src/utils/build_features.h    |   2 - |  .../hostapd/src/src/utils/build_features.h    |   2 - | ||||||
|  67 files changed, 1302 insertions(+), 2330 deletions(-) |  68 files changed, 1343 insertions(+), 2347 deletions(-) | ||||||
|  delete mode 100644 package/network/services/hostapd/patches/001-HE-VHT-fix-frequency-setup-with-HE-enabled.patch |  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/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/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 |  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/110-wolfssl-compile-fix.patch | ||||||
|  delete mode 100644 package/network/services/hostapd/patches/120-reconfigure-wps-credentials.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/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-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/720-iface_max_num_sta.patch | ||||||
|  create mode 100644 package/network/services/hostapd/patches/730-ft_iface.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 |  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
 | 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
 | --- a/package/network/services/hostapd/Makefile
 | ||||||
| +++ b/package/network/services/hostapd/Makefile
 | +++ b/package/network/services/hostapd/Makefile
 | ||||||
| @@ -1,19 +1,17 @@
 | @@ -1,19 +1,17 @@
 | ||||||
| @@ -126,7 +128,7 @@ index bd2a7c96ad..fee6889b40 100644 | |||||||
|  include $(TOPDIR)/rules.mk |  include $(TOPDIR)/rules.mk | ||||||
|   |   | ||||||
|  PKG_NAME:=hostapd |  PKG_NAME:=hostapd | ||||||
| -PKG_RELEASE:=32
 | -PKG_RELEASE:=35
 | ||||||
| +PKG_RELEASE:=$(AUTORELEASE)
 | +PKG_RELEASE:=$(AUTORELEASE)
 | ||||||
|   |   | ||||||
|  PKG_SOURCE_URL:=http://w1.fi/hostap.git |  PKG_SOURCE_URL:=http://w1.fi/hostap.git | ||||||
| @@ -179,28 +181,39 @@ index df272e443a..61b6daf861 100644 | |||||||
|  # EAP-SAKE for the integrated EAP server |  # EAP-SAKE for the integrated EAP server | ||||||
|  #CONFIG_EAP_SAKE=y |  #CONFIG_EAP_SAKE=y | ||||||
| diff --git a/package/network/services/hostapd/files/hostapd.sh b/package/network/services/hostapd/files/hostapd.sh
 | diff --git a/package/network/services/hostapd/files/hostapd.sh b/package/network/services/hostapd/files/hostapd.sh
 | ||||||
| index 45a49b8faa..4591958b6f 100644
 | index aa72e09eba..fe6af98f4d 100644
 | ||||||
| --- a/package/network/services/hostapd/files/hostapd.sh
 | --- a/package/network/services/hostapd/files/hostapd.sh
 | ||||||
| +++ b/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) |  		eap192) | ||||||
|  			append wpa_key_mgmt "WPA-EAP-SUITE-B-192" |  			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" |  			[ "${ieee80211r:-0}" -gt 0 ] && append wpa_key_mgmt "FT-EAP" | ||||||
| +			[ "${ieee80211w:-0}" -gt 0 ] && append wpa_key_mgmt "WPA-EAP-SHA256"
 |  | ||||||
|  		;; |  		;; | ||||||
|  		eap-eap192) | -		eap-eap192)
 | ||||||
|  			append wpa_key_mgmt "WPA-EAP-SUITE-B-192" | -			append wpa_key_mgmt "WPA-EAP-SUITE-B-192"
 | ||||||
| @@ -91,14 +92,19 @@ hostapd_add_log_config() {
 | +		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() { |  hostapd_common_add_device_config() { | ||||||
|  	config_add_array basic_rate |  	config_add_array basic_rate | ||||||
|  	config_add_array supported_rates |  	config_add_array supported_rates | ||||||
| +	config_add_string beacon_rate
 | +	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 country_ie doth | ||||||
|  	config_add_boolean spectrum_mgmt_required | @@ -99,6 +104,10 @@ hostapd_common_add_device_config() {
 | ||||||
|  	config_add_int local_pwr_constraint |  | ||||||
|  	config_add_string require_mode |  	config_add_string require_mode | ||||||
|  	config_add_boolean legacy_rates |  	config_add_boolean legacy_rates | ||||||
|  	config_add_int cell_density |  	config_add_int cell_density | ||||||
| @@ -211,27 +224,17 @@ index 45a49b8faa..4591958b6f 100644 | |||||||
|   |   | ||||||
|  	config_add_string acs_chan_bias |  	config_add_string acs_chan_bias | ||||||
|  	config_add_array hostapd_options |  	config_add_array hostapd_options | ||||||
| @@ -114,8 +120,9 @@ hostapd_prepare_device_config() {
 | @@ -115,7 +124,8 @@ hostapd_prepare_device_config() {
 | ||||||
|   |  | ||||||
|  	local base_cfg= |  	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
 | -		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 \
 | +		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
 | +		rts_threshold beacon_rate rssi_reject_assoc_rssi rssi_ignore_probe_request maxassoc
 | ||||||
|   |   | ||||||
|  	hostapd_set_log_options base_cfg |  	hostapd_set_log_options base_cfg | ||||||
|   |   | ||||||
| @@ -128,6 +135,7 @@ hostapd_prepare_device_config() {
 | @@ -207,11 +217,16 @@ 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() {
 |  | ||||||
|  		hostapd_add_rate brlist "$br" |  		hostapd_add_rate brlist "$br" | ||||||
|  	done |  	done | ||||||
|   |   | ||||||
| @@ -248,16 +251,7 @@ index 45a49b8faa..4591958b6f 100644 | |||||||
|   |   | ||||||
|  	json_get_values opts hostapd_options |  	json_get_values opts hostapd_options | ||||||
|  	for val in $opts; do |  	for val in $opts; do | ||||||
| @@ -251,6 +264,8 @@ hostapd_common_add_bss_config() {
 | @@ -269,7 +284,7 @@ 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() {
 |  | ||||||
|  	config_add_array domain_match domain_match2 domain_suffix_match domain_suffix_match2 |  	config_add_array domain_match domain_match2 domain_suffix_match domain_suffix_match2 | ||||||
|  	config_add_string ieee80211w_mgmt_cipher |  	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_tagged_interface vlan_bridge | ||||||
|  	config_add_string vlan_file |  	config_add_string vlan_file | ||||||
|   |   | ||||||
| @@ -281,9 +296,10 @@ hostapd_common_add_bss_config() {
 | @@ -287,6 +302,7 @@ hostapd_common_add_bss_config() {
 | ||||||
|  	config_add_string wps_device_type wps_device_name wps_manufacturer wps_pin |  	config_add_boolean wnm_sleep_mode wnm_sleep_mode_no_keys bss_transition | ||||||
|  	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
 |  | ||||||
|  	config_add_int time_advertisement |  	config_add_int time_advertisement | ||||||
|  	config_add_string time_zone |  	config_add_string time_zone | ||||||
| +	config_add_string vendor_elements
 | +	config_add_string vendor_elements
 | ||||||
|   |   | ||||||
|  	config_add_boolean ieee80211k rrm_neighbor_report rrm_beacon_report |  	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_array supported_rates | ||||||
|   |   | ||||||
|  	config_add_boolean sae_require_mfp |  	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' |  	config_add_string 'owe_transition_bssid:macaddr' 'owe_transition_ssid:string' | ||||||
|   |   | ||||||
| @@ -316,7 +333,7 @@ hostapd_common_add_bss_config() {
 | @@ -319,23 +336,35 @@ hostapd_common_add_bss_config() {
 | ||||||
|  	config_add_int iw_ipaddr_type_availability iw_gas_address3 |  	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_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 |  	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_boolean hs20 disable_dgaf osen | ||||||
|  	config_add_int anqp_domain_id |  	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_array hs20_conn_capab | ||||||
|  	config_add_string osu_ssid hs20_wan_metrics hs20_operating_class hs20_t_c_filename hs20_t_c_timestamp |  	config_add_string osu_ssid hs20_wan_metrics hs20_operating_class hs20_t_c_filename hs20_t_c_timestamp | ||||||
|   |   | ||||||
| @@ -316,10 +310,12 @@ index 45a49b8faa..4591958b6f 100644 | |||||||
| +
 | +
 | ||||||
| +	config_add_int eap_server
 | +	config_add_int eap_server
 | ||||||
| +	config_add_string eap_user_file ca_cert server_cert private_key private_key_passwd server_id
 | +	config_add_string eap_user_file ca_cert server_cert private_key private_key_passwd server_id
 | ||||||
|  | +	
 | ||||||
|  | +	config_add_boolean ratelimit
 | ||||||
|  } |  } | ||||||
|   |   | ||||||
|  hostapd_set_vlan_file() { |  hostapd_set_vlan_file() { | ||||||
| @@ -384,7 +411,7 @@ append_iw_anqp_3gpp_cell_net() {
 | @@ -387,7 +416,7 @@ append_iw_anqp_3gpp_cell_net() {
 | ||||||
|  	if [ -z "$iw_anqp_3gpp_cell_net_conf" ]; then |  	if [ -z "$iw_anqp_3gpp_cell_net_conf" ]; then | ||||||
|  		iw_anqp_3gpp_cell_net_conf="$1" |  		iw_anqp_3gpp_cell_net_conf="$1" | ||||||
|  	else |  	else | ||||||
| @@ -328,7 +324,7 @@ index 45a49b8faa..4591958b6f 100644 | |||||||
|  	fi |  	fi | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -396,10 +423,22 @@ append_iw_nai_realm() {
 | @@ -399,10 +428,22 @@ append_iw_nai_realm() {
 | ||||||
|  	[ -n "$1" ] && append bss_conf "nai_realm=$1" "$N" |  	[ -n "$1" ] && append bss_conf "nai_realm=$1" "$N" | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -351,7 +347,7 @@ index 45a49b8faa..4591958b6f 100644 | |||||||
|  append_osu_provider_service_desc() { |  append_osu_provider_service_desc() { | ||||||
|  	append bss_conf "osu_service_desc=$1" "$N" |  	append bss_conf "osu_service_desc=$1" "$N" | ||||||
|  } |  } | ||||||
| @@ -447,6 +486,7 @@ append_osu_provider() {
 | @@ -450,6 +491,7 @@ append_osu_provider() {
 | ||||||
|  	append bss_conf "osu_method_list=$osu_method_list" "$N" |  	append bss_conf "osu_method_list=$osu_method_list" "$N" | ||||||
|   |   | ||||||
|  	config_list_foreach "$1" osu_service_desc append_osu_provider_service_desc |  	config_list_foreach "$1" osu_service_desc append_osu_provider_service_desc | ||||||
| @@ -359,7 +355,7 @@ index 45a49b8faa..4591958b6f 100644 | |||||||
|  	config_list_foreach "$1" osu_icon append_osu_icon |  	config_list_foreach "$1" osu_icon append_osu_icon | ||||||
|   |   | ||||||
|  	append bss_conf "$N" |  	append bss_conf "$N" | ||||||
| @@ -456,6 +496,14 @@ append_hs20_conn_capab() {
 | @@ -459,6 +501,14 @@ append_hs20_conn_capab() {
 | ||||||
|  	[ -n "$1" ] && append bss_conf "hs20_conn_capab=$1" "$N" |  	[ -n "$1" ] && append bss_conf "hs20_conn_capab=$1" "$N" | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -374,7 +370,7 @@ index 45a49b8faa..4591958b6f 100644 | |||||||
|  append_airtime_sta_weight() { |  append_airtime_sta_weight() { | ||||||
|  	[ -n "$1" ] && append bss_conf "airtime_sta_weight=$1" "$N" |  	[ -n "$1" ] && append bss_conf "airtime_sta_weight=$1" "$N" | ||||||
|  } |  } | ||||||
| @@ -479,10 +527,12 @@ hostapd_set_bss_options() {
 | @@ -482,10 +532,12 @@ hostapd_set_bss_options() {
 | ||||||
|  		macfilter ssid utf8_ssid wmm uapsd hidden short_preamble rsn_preauth \ |  		macfilter ssid utf8_ssid wmm uapsd hidden short_preamble rsn_preauth \ | ||||||
|  		iapp_interface eapol_version dynamic_vlan ieee80211w nasid \ |  		iapp_interface eapol_version dynamic_vlan ieee80211w nasid \ | ||||||
|  		acct_server acct_secret acct_port acct_interval \ |  		acct_server acct_secret acct_port acct_interval \ | ||||||
| @@ -389,7 +385,7 @@ index 45a49b8faa..4591958b6f 100644 | |||||||
|   |   | ||||||
|  	set_default isolate 0 |  	set_default isolate 0 | ||||||
|  	set_default maxassoc 0 |  	set_default maxassoc 0 | ||||||
| @@ -503,6 +553,7 @@ hostapd_set_bss_options() {
 | @@ -506,6 +558,7 @@ hostapd_set_bss_options() {
 | ||||||
|  	set_default multi_ap 0 |  	set_default multi_ap 0 | ||||||
|  	set_default airtime_bss_weight 0 |  	set_default airtime_bss_weight 0 | ||||||
|  	set_default airtime_bss_limit 0 |  	set_default airtime_bss_limit 0 | ||||||
| @@ -397,7 +393,7 @@ index 45a49b8faa..4591958b6f 100644 | |||||||
|   |   | ||||||
|  	append bss_conf "ctrl_interface=/var/run/hostapd" |  	append bss_conf "ctrl_interface=/var/run/hostapd" | ||||||
|  	if [ "$isolate" -gt 0 ]; then |  	if [ "$isolate" -gt 0 ]; then | ||||||
| @@ -529,6 +580,7 @@ hostapd_set_bss_options() {
 | @@ -532,6 +585,7 @@ hostapd_set_bss_options() {
 | ||||||
|  	append bss_conf "uapsd_advertisement_enabled=$uapsd" "$N" |  	append bss_conf "uapsd_advertisement_enabled=$uapsd" "$N" | ||||||
|  	append bss_conf "utf8_ssid=$utf8_ssid" "$N" |  	append bss_conf "utf8_ssid=$utf8_ssid" "$N" | ||||||
|  	append bss_conf "multi_ap=$multi_ap" "$N" |  	append bss_conf "multi_ap=$multi_ap" "$N" | ||||||
| @@ -405,7 +401,7 @@ index 45a49b8faa..4591958b6f 100644 | |||||||
|   |   | ||||||
|  	[ "$tdls_prohibit" -gt 0 ] && append bss_conf "tdls_prohibit=$tdls_prohibit" "$N" |  	[ "$tdls_prohibit" -gt 0 ] && append bss_conf "tdls_prohibit=$tdls_prohibit" "$N" | ||||||
|   |   | ||||||
| @@ -547,6 +599,7 @@ hostapd_set_bss_options() {
 | @@ -550,19 +604,21 @@ hostapd_set_bss_options() {
 | ||||||
|  			append bss_conf "acct_server_shared_secret=$acct_secret" "$N" |  			append bss_conf "acct_server_shared_secret=$acct_secret" "$N" | ||||||
|  		[ -n "$acct_interval" ] && \ |  		[ -n "$acct_interval" ] && \ | ||||||
|  			append bss_conf "radius_acct_interim_interval=$acct_interval" "$N" |  			append bss_conf "radius_acct_interim_interval=$acct_interval" "$N" | ||||||
| @@ -413,7 +409,15 @@ index 45a49b8faa..4591958b6f 100644 | |||||||
|  	} |  	} | ||||||
|   |   | ||||||
|  	case "$auth_type" in |  	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 |  	esac | ||||||
|  	[ -n "$sae_require_mfp" ] && append bss_conf "sae_require_mfp=$sae_require_mfp" "$N" |  	[ -n "$sae_require_mfp" ] && append bss_conf "sae_require_mfp=$sae_require_mfp" "$N" | ||||||
| @@ -421,7 +425,13 @@ index 45a49b8faa..4591958b6f 100644 | |||||||
|   |   | ||||||
|  	local vlan_possible="" |  	local vlan_possible="" | ||||||
|   |   | ||||||
| @@ -601,7 +655,7 @@ hostapd_set_bss_options() {
 | @@ -599,12 +655,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 \ |  				auth_server auth_secret auth_port \ | ||||||
|  				dae_client dae_secret dae_port \ |  				dae_client dae_secret dae_port \ | ||||||
|  				ownip radius_client_addr \ |  				ownip radius_client_addr \ | ||||||
| @@ -430,7 +440,7 @@ index 45a49b8faa..4591958b6f 100644 | |||||||
|   |   | ||||||
|  			# radius can provide VLAN ID for clients |  			# radius can provide VLAN ID for clients | ||||||
|  			vlan_possible=1 |  			vlan_possible=1 | ||||||
| @@ -613,18 +667,22 @@ hostapd_set_bss_options() {
 | @@ -616,18 +672,22 @@ hostapd_set_bss_options() {
 | ||||||
|   |   | ||||||
|  			set_default auth_port 1812 |  			set_default auth_port 1812 | ||||||
|  			set_default dae_port 3799 |  			set_default dae_port 3799 | ||||||
| @@ -457,34 +467,17 @@ index 45a49b8faa..4591958b6f 100644 | |||||||
|   |   | ||||||
|  			[ -n "$ownip" ] && append bss_conf "own_ip_addr=$ownip" "$N" |  			[ -n "$ownip" ] && append bss_conf "own_ip_addr=$ownip" "$N" | ||||||
|  			[ -n "$radius_client_addr" ] && append bss_conf "radius_client_addr=$radius_client_addr" "$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 +759,8 @@ hostapd_set_bss_options() {
 | ||||||
|  |  	} | ||||||
|   |   | ||||||
|  	append bss_conf "ssid=$ssid" "$N" |  	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 "$network_ifname" ] && append bss_conf "snoop_iface=$network_ifname" "$N"
 | ||||||
|  	[ -n "$iapp_interface" ] && { |  	[ -n "$iapp_interface" ] && { | ||||||
|  		local ifname |  		local ifname | ||||||
|  		network_get_device ifname "$iapp_interface" || ifname="$iapp_interface" |  		network_get_device ifname "$iapp_interface" || ifname="$iapp_interface" | ||||||
|  		append bss_conf "iapp_interface=$ifname" "$N" | @@ -740,7 +801,7 @@ hostapd_set_bss_options() {
 | ||||||
|  	} |  | ||||||
|   |  | ||||||
| -	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() {
 |  | ||||||
|  			append bss_conf "ftm_responder=1" "$N" |  			append bss_conf "ftm_responder=1" "$N" | ||||||
|  			[ "$stationary_ap" -eq "1" ] && append bss_conf "stationary_ap=1" "$N" |  			[ "$stationary_ap" -eq "1" ] && append bss_conf "stationary_ap=1" "$N" | ||||||
|  			[ -n "$lci" ] && append bss_conf "lci=$lci" "$N" |  			[ -n "$lci" ] && append bss_conf "lci=$lci" "$N" | ||||||
| @@ -493,7 +486,7 @@ index 45a49b8faa..4591958b6f 100644 | |||||||
|  		} |  		} | ||||||
|  	fi |  	fi | ||||||
|   |   | ||||||
| @@ -757,6 +820,7 @@ hostapd_set_bss_options() {
 | @@ -764,6 +825,7 @@ hostapd_set_bss_options() {
 | ||||||
|  				;; |  				;; | ||||||
|  			esac |  			esac | ||||||
|   |   | ||||||
| @@ -501,7 +494,7 @@ index 45a49b8faa..4591958b6f 100644 | |||||||
|  			append bss_conf "mobility_domain=$mobility_domain" "$N" |  			append bss_conf "mobility_domain=$mobility_domain" "$N" | ||||||
|  			append bss_conf "ft_psk_generate_local=$ft_psk_generate_local" "$N" |  			append bss_conf "ft_psk_generate_local=$ft_psk_generate_local" "$N" | ||||||
|  			append bss_conf "ft_over_ds=$ft_over_ds" "$N" |  			append bss_conf "ft_over_ds=$ft_over_ds" "$N" | ||||||
| @@ -771,6 +835,13 @@ hostapd_set_bss_options() {
 | @@ -778,6 +840,13 @@ hostapd_set_bss_options() {
 | ||||||
|  				set_default r0_key_lifetime 10000 |  				set_default r0_key_lifetime 10000 | ||||||
|  				set_default pmk_r1_push 0 |  				set_default pmk_r1_push 0 | ||||||
|   |   | ||||||
| @@ -515,7 +508,25 @@ index 45a49b8faa..4591958b6f 100644 | |||||||
|  				[ -n "$r1_key_holder" ] && append bss_conf "r1_key_holder=$r1_key_holder" "$N" |  				[ -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 "r0_key_lifetime=$r0_key_lifetime" "$N" | ||||||
|  				append bss_conf "pmk_r1_push=$pmk_r1_push" "$N" |  				append bss_conf "pmk_r1_push=$pmk_r1_push" "$N" | ||||||
| @@ -856,13 +927,17 @@ hostapd_set_bss_options() {
 | @@ -822,7 +891,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 +941,17 @@ hostapd_set_bss_options() {
 | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
|  	[ -n "$vlan_possible" -a -n "$dynamic_vlan" ] && { |  	[ -n "$vlan_possible" -a -n "$dynamic_vlan" ] && { | ||||||
| @@ -535,7 +546,7 @@ index 45a49b8faa..4591958b6f 100644 | |||||||
|  		[ -n "$vlan_tagged_interface" ] && \ |  		[ -n "$vlan_tagged_interface" ] && \ | ||||||
|  			append bss_conf "vlan_tagged_interface=$vlan_tagged_interface" "$N" |  			append bss_conf "vlan_tagged_interface=$vlan_tagged_interface" "$N" | ||||||
|  		[ -n "$vlan_file" ] && { |  		[ -n "$vlan_file" ] && { | ||||||
| @@ -875,6 +950,7 @@ hostapd_set_bss_options() {
 | @@ -882,6 +964,7 @@ hostapd_set_bss_options() {
 | ||||||
|  	json_get_vars iw_hessid iw_venue_group iw_venue_type iw_network_auth_type |  	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_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 |  	json_get_vars iw_anqp_elem iw_qos_map_set iw_ipaddr_type_availability iw_gas_address3 | ||||||
| @@ -543,7 +554,12 @@ index 45a49b8faa..4591958b6f 100644 | |||||||
|   |   | ||||||
|  	set_default iw_enabled 0 |  	set_default iw_enabled 0 | ||||||
|  	if [ "$iw_enabled" = "1" ]; then |  	if [ "$iw_enabled" = "1" ]; then | ||||||
| @@ -903,6 +979,8 @@ hostapd_set_bss_options() {
 | @@ -905,11 +988,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_roaming_consortium iw_roaming_consortium | ||||||
|  		json_for_each_item append_iw_anqp_elem iw_anqp_elem |  		json_for_each_item append_iw_anqp_elem iw_anqp_elem | ||||||
|  		json_for_each_item append_iw_nai_realm iw_nai_realm |  		json_for_each_item append_iw_nai_realm iw_nai_realm | ||||||
| @@ -552,21 +568,40 @@ index 45a49b8faa..4591958b6f 100644 | |||||||
|   |   | ||||||
|  		iw_domain_name_conf= |  		iw_domain_name_conf= | ||||||
|  		json_for_each_item append_iw_domain_name iw_domain_name |  		json_for_each_item append_iw_domain_name iw_domain_name | ||||||
| @@ -917,9 +995,11 @@ hostapd_set_bss_options() {
 | @@ -922,13 +1006,22 @@ hostapd_set_bss_options() {
 | ||||||
|  |  			append bss_conf "anqp_3gpp_cell_net=$iw_anqp_3gpp_cell_net_conf" "$N" | ||||||
|  |  	fi | ||||||
|   |   | ||||||
|  | +	set_default iw_qos_map_set 0,0,2,16,1,1,255,255,18,22,24,38,40,40,44,46,48,56
 | ||||||
|  | +	case "$iw_qos_map_set" in
 | ||||||
|  | +		*,*);;
 | ||||||
|  | +		*) iw_qos_map_set="";;
 | ||||||
|  | +	esac
 | ||||||
|  | +	[ -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 \ |  	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
 | ||||||
| +		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 \ |  	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
 | ||||||
| +		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 0 | ||||||
|  | +	set_default hs20_release  1
 | ||||||
|  	set_default disable_dgaf $hs20 |  	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 +1029,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 +1039,31 @@ hostapd_set_bss_options() {
 | ||||||
|  		[ -n "$hs20_operating_class" ] && append bss_conf "hs20_operating_class=$hs20_operating_class" "$N" |  		[ -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_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" |  		[ -n "$hs20_t_c_timestamp" ] && append bss_conf "hs20_t_c_timestamp=$hs20_t_c_timestamp" "$N" | ||||||
| @@ -599,7 +634,15 @@ index 45a49b8faa..4591958b6f 100644 | |||||||
|   |   | ||||||
|  	set_default per_sta_vif 0 |  	set_default per_sta_vif 0 | ||||||
|  	if [ "$per_sta_vif" -gt 0 ]; then |  	if [ "$per_sta_vif" -gt 0 ]; then | ||||||
| @@ -1079,9 +1174,9 @@ wpa_supplicant_set_fixed_freq() {
 | @@ -1079,16 +1188,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";; |  		VHT*) append network_data "vht=1" "$N$T";; | ||||||
|  	esac |  	esac | ||||||
|  	case "$htmode" in |  	case "$htmode" in | ||||||
| @@ -612,7 +655,7 @@ index 45a49b8faa..4591958b6f 100644 | |||||||
|  		*) append network_data "disable_vht=1" "$N$T";; |  		*) append network_data "disable_vht=1" "$N$T";; | ||||||
|  	esac |  	esac | ||||||
|  } |  } | ||||||
| @@ -1099,7 +1194,8 @@ wpa_supplicant_add_network() {
 | @@ -1106,19 +1215,21 @@ wpa_supplicant_add_network() {
 | ||||||
|  		ssid bssid key \ |  		ssid bssid key \ | ||||||
|  		basic_rate mcast_rate \ |  		basic_rate mcast_rate \ | ||||||
|  		ieee80211w ieee80211r \ |  		ieee80211w ieee80211r \ | ||||||
| @@ -621,8 +664,15 @@ index 45a49b8faa..4591958b6f 100644 | |||||||
| +		default_disabled
 | +		default_disabled
 | ||||||
|   |   | ||||||
|  	case "$auth_type" in |  	case "$auth_type" in | ||||||
|  		sae|owe|eap192|eap-eap192) | -		sae|owe|eap192|eap-eap192)
 | ||||||
| @@ -1112,6 +1208,7 @@ wpa_supplicant_add_network() {
 | +		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 ieee80211r 0 | ||||||
|  	set_default multi_ap 0 |  	set_default multi_ap 0 | ||||||
| @@ -630,7 +680,7 @@ index 45a49b8faa..4591958b6f 100644 | |||||||
|   |   | ||||||
|  	local key_mgmt='NONE' |  	local key_mgmt='NONE' | ||||||
|  	local network_data= |  	local network_data= | ||||||
| @@ -1143,7 +1240,10 @@ wpa_supplicant_add_network() {
 | @@ -1150,7 +1261,10 @@ wpa_supplicant_add_network() {
 | ||||||
|  		scan_ssid="" |  		scan_ssid="" | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
| @@ -642,6 +692,15 @@ index 45a49b8faa..4591958b6f 100644 | |||||||
|   |   | ||||||
|  	case "$auth_type" in |  	case "$auth_type" in | ||||||
|  		none) ;; |  		none) ;; | ||||||
|  | @@ -1186,7 +1300,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
 | 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 | deleted file mode 100644 | ||||||
| index 37c17c50af..0000000000
 | index 37c17c50af..0000000000
 | ||||||
| @@ -844,55 +903,51 @@ index 37c17c50af..0000000000 | |||||||
| - 
 | - 
 | ||||||
| - 	if (ssid->mesh_basic_rates == NULL) {
 | - 	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
 | 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
 | ||||||
| new file mode 100644 | similarity index 76% | ||||||
| index 0000000000..84fc1c9351
 | rename from package/network/services/hostapd/patches/802-wolfssl-init-RNG-with-ECC-key.patch | ||||||
| --- /dev/null
 | 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
 | +++ b/package/network/services/hostapd/patches/001-wolfssl-init-RNG-with-ECC-key.patch
 | ||||||
| @@ -0,0 +1,43 @@
 | @@ -14,11 +14,9 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
 | ||||||
| +From 21ce83b4ae2b9563175fdb4fc4312096cc399cf8 Mon Sep 17 00:00:00 2001
 |   src/crypto/crypto_wolfssl.c | 4 ++++ | ||||||
| +From: David Bauer <mail@david-bauer.net>
 |   1 file changed, 4 insertions(+) | ||||||
| +Date: Wed, 5 May 2021 00:44:34 +0200
 |   | ||||||
| +Subject: [PATCH] wolfssl: add RNG to EC key
 | -diff --git a/src/crypto/crypto_wolfssl.c b/src/crypto/crypto_wolfssl.c
 | ||||||
| +
 | -index 2e4bf8962..ed2528159 100644
 | ||||||
| +Since upstream commit 6467de5a8840 ("Randomize z ordinates in
 |  --- a/src/crypto/crypto_wolfssl.c | ||||||
| +scalar mult when timing resistant") WolfSSL requires a RNG for
 |  +++ b/src/crypto/crypto_wolfssl.c | ||||||
| +the EC key when built hardened which is the default.
 | -@@ -1303,6 +1303,7 @@ int ecc_projective_add_point(ecc_point *P, ecc_point *Q, ecc_point *R,
 | ||||||
| +
 |  | ||||||
| +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
 |  | ||||||
| +@@ -1303,6 +1303,7 @@ int ecc_projective_add_point(ecc_point *
 | +@@ -1303,6 +1303,7 @@ int ecc_projective_add_point(ecc_point *
 | ||||||
| + 
 |    | ||||||
| + struct crypto_ec {
 |   struct crypto_ec { | ||||||
| + 	ecc_key key;
 |   	ecc_key key; | ||||||
| ++	WC_RNG rng;
 | @@ -26,7 +24,7 @@ index 2e4bf8962..ed2528159 100644
 | ||||||
| + 	mp_int a;
 |   	mp_int a; | ||||||
| + 	mp_int prime;
 |   	mp_int prime; | ||||||
| + 	mp_int order;
 |   	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
 | +@@ -1357,6 +1358,8 @@ struct crypto_ec * crypto_ec_init(int gr
 | ||||||
| + 		return NULL;
 |   		return NULL; | ||||||
| + 
 |    | ||||||
| + 	if (wc_ecc_init(&e->key) != 0 ||
 |   	if (wc_ecc_init(&e->key) != 0 || | ||||||
| ++	    wc_InitRng(&e->rng) != 0 ||
 | @@ -35,7 +33,7 @@ index 2e4bf8962..ed2528159 100644
 | ||||||
| ++	    wc_ecc_set_rng(&e->key, &e->rng) != 0 ||
 |   	    wc_ecc_set_curve(&e->key, 0, curve_id) != 0 || | ||||||
| + 	    wc_ecc_set_curve(&e->key, 0, curve_id) != 0 ||
 |   	    mp_init(&e->a) != MP_OKAY || | ||||||
| + 	    mp_init(&e->a) != MP_OKAY ||
 |   	    mp_init(&e->prime) != 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*
 | +@@ -1388,6 +1391,7 @@ void crypto_ec_deinit(struct crypto_ec*
 | ||||||
| + 	mp_clear(&e->order);
 |   	mp_clear(&e->order); | ||||||
| + 	mp_clear(&e->prime);
 |   	mp_clear(&e->prime); | ||||||
| + 	mp_clear(&e->a);
 |   	mp_clear(&e->a); | ||||||
| ++	wc_FreeRng(&e->rng);
 | @@ -43,6 +41,3 @@ index 2e4bf8962..ed2528159 100644
 | ||||||
| + 	wc_ecc_free(&e->key);
 |   	wc_ecc_free(&e->key); | ||||||
| + 	os_free(e);
 |   	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
 | 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 | deleted file mode 100644 | ||||||
| index c7101b1dbc..0000000000
 | index c7101b1dbc..0000000000
 | ||||||
| @@ -5147,6 +5202,38 @@ index 0000000000..73db32e54a | |||||||
| + 	} else if (os_strcmp(buf, "per_sta_vif") == 0) {
 | + 	} else if (os_strcmp(buf, "per_sta_vif") == 0) {
 | ||||||
| + 		bss->ssid.per_sta_vif = atoi(pos);
 | + 		bss->ssid.per_sta_vif = atoi(pos);
 | ||||||
| + 	} else if (os_strcmp(buf, "vlan_file") == 0) {
 | + 	} 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
 | 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 | new file mode 100644 | ||||||
| index 0000000000..3ef19e5298
 | index 0000000000..3ef19e5298
 | ||||||
| @@ -5317,12 +5404,14 @@ index 0000000000..793e8e0194 | |||||||
| + 		if (!hapd->l2) {
 | + 		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
 | 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 | new file mode 100644 | ||||||
| index 0000000000..722d1e713a
 | index 0000000000..6e60cde844
 | ||||||
| --- /dev/null
 | --- /dev/null
 | ||||||
| +++ b/package/network/services/hostapd/patches/740-snoop_iface.patch
 | +++ b/package/network/services/hostapd/patches/740-snoop_iface.patch
 | ||||||
| @@ -0,0 +1,37 @@
 | @@ -0,0 +1,72 @@
 | ||||||
| +--- a/src/ap/ap_config.h
 | +Index: hostapd-2021-05-22-b102f19b/src/ap/ap_config.h
 | ||||||
| ++++ b/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 {
 | +@@ -278,6 +278,7 @@ struct hostapd_bss_config {
 | ||||||
| + 	char iface[IFNAMSIZ + 1];
 | + 	char iface[IFNAMSIZ + 1];
 | ||||||
| + 	char bridge[IFNAMSIZ + 1];
 | + 	char bridge[IFNAMSIZ + 1];
 | ||||||
| @@ -5331,9 +5420,40 @@ index 0000000000..722d1e713a | |||||||
| + 	char vlan_bridge[IFNAMSIZ + 1];
 | + 	char vlan_bridge[IFNAMSIZ + 1];
 | ||||||
| + 	char wds_bridge[IFNAMSIZ + 1];
 | + 	char wds_bridge[IFNAMSIZ + 1];
 | ||||||
| + 
 | + 
 | ||||||
| +--- a/src/ap/x_snoop.c
 | +Index: hostapd-2021-05-22-b102f19b/src/ap/x_snoop.c
 | ||||||
| ++++ b/src/ap/x_snoop.c
 | +===================================================================
 | ||||||
| +@@ -71,8 +71,12 @@ x_snoop_get_l2_packet(struct hostapd_dat
 | +--- 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 hostapd_bss_config *conf = hapd->conf;
 | ||||||
| + 	struct l2_packet_data *l2;
 | + 	struct l2_packet_data *l2;
 | ||||||
| @@ -5347,12 +5467,14 @@ index 0000000000..722d1e713a | |||||||
| + 	if (l2 == NULL) {
 | + 	if (l2 == NULL) {
 | ||||||
| + 		wpa_printf(MSG_DEBUG,
 | + 		wpa_printf(MSG_DEBUG,
 | ||||||
| + 			   "x_snoop: Failed to initialize L2 packet processing %s",
 | + 			   "x_snoop: Failed to initialize L2 packet processing %s",
 | ||||||
| +--- a/hostapd/config_file.c
 | +Index: hostapd-2021-05-22-b102f19b/hostapd/config_file.c
 | ||||||
| ++++ b/hostapd/config_file.c
 | +===================================================================
 | ||||||
| +@@ -2357,6 +2357,8 @@ static int hostapd_config_fill(struct ho
 | +--- hostapd-2021-05-22-b102f19b.orig/hostapd/config_file.c
 | ||||||
| + 			   sizeof(conf->bss[0]->iface));
 | ++++ hostapd-2021-05-22-b102f19b/hostapd/config_file.c
 | ||||||
| + 	} else if (os_strcmp(buf, "bridge") == 0) {
 | +@@ -2359,6 +2359,8 @@ static int hostapd_config_fill(struct ho
 | ||||||
| + 		os_strlcpy(bss->bridge, pos, sizeof(bss->bridge));
 | + 		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) {
 | ++	} else if (os_strcmp(buf, "snoop_iface") == 0) {
 | ||||||
| ++		os_strlcpy(bss->snoop_iface, pos, sizeof(bss->snoop_iface));
 | ++		os_strlcpy(bss->snoop_iface, pos, sizeof(bss->snoop_iface));
 | ||||||
| + 	} else if (os_strcmp(buf, "vlan_bridge") == 0) {
 | + 	} else if (os_strcmp(buf, "vlan_bridge") == 0) {
 | ||||||
| @@ -5441,7 +5563,7 @@ index 944f7d71c9..0000000000 | |||||||
| - 		  dev->info.wps_sec_dev_type_list_len);
 | - 		  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
 | 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
 | --- a/package/network/services/hostapd/src/src/ap/ubus.c
 | ||||||
| +++ b/package/network/services/hostapd/src/src/ap/ubus.c
 | +++ b/package/network/services/hostapd/src/src/ap/ubus.c
 | ||||||
| @@ -21,6 +21,7 @@
 | @@ -21,6 +21,7 @@
 | ||||||
| @@ -5733,7 +5855,7 @@ index d03b848f94..07c366508c 100644 | |||||||
|  static const struct ubus_method daemon_methods[] = { |  static const struct ubus_method daemon_methods[] = { | ||||||
|  	UBUS_METHOD("config_add", hostapd_config_add, config_add_policy), |  	UBUS_METHOD("config_add", hostapd_config_add, config_add_policy), | ||||||
|  	UBUS_METHOD("config_remove", hostapd_config_remove, config_remove_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); |  	ubus_notify(ctx, &hapd->ubus.obj, "beacon-report", b.head, -1); | ||||||
|  } |  } | ||||||
| @@ -5744,9 +5866,6 @@ index d03b848f94..07c366508c 100644 | |||||||
| +	struct hostapd_data *hapd;
 | +	struct hostapd_data *hapd;
 | ||||||
| +	int i;
 | +	int i;
 | ||||||
| +
 | +
 | ||||||
| +	if (!hapd->ubus.obj.has_subscribers)
 |  | ||||||
| +		return;
 |  | ||||||
| +
 |  | ||||||
| +	blob_buf_init(&b, 0);
 | +	blob_buf_init(&b, 0);
 | ||||||
| +	blobmsg_add_u16(&b, "frequency", frequency);
 | +	blobmsg_add_u16(&b, "frequency", frequency);
 | ||||||
| +	blobmsg_add_u16(&b, "width", chan_width);
 | +	blobmsg_add_u16(&b, "width", chan_width);
 | ||||||
							
								
								
									
										179
									
								
								backports/0020-procd-add-uxc-support.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										179
									
								
								backports/0020-procd-add-uxc-support.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,179 @@ | |||||||
|  | From 006abf1773051ad355b52d70095f63f44a496b13 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: John Crispin <john@phrozen.org> | ||||||
|  | Date: Sun, 25 Jul 2021 13:32:37 +0200 | ||||||
|  | Subject: [PATCH 02/70] procd: add uxc support | ||||||
|  |  | ||||||
|  | Signed-off-by: John Crispin <john@phrozen.org> | ||||||
|  | --- | ||||||
|  |  package/system/procd/Makefile       | 15 +++--- | ||||||
|  |  package/system/procd/files/procd.sh | 79 +++++++++++++++++++++++++++++ | ||||||
|  |  package/system/procd/files/uxc.init |  4 ++ | ||||||
|  |  3 files changed, 90 insertions(+), 8 deletions(-) | ||||||
|  |  | ||||||
|  | diff --git a/package/system/procd/Makefile b/package/system/procd/Makefile | ||||||
|  | index 30d5adf427..b831f86639 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_MIRROR_HASH:=0d51642d82d7bb4150355a6986e54504dce171c6fcb7eeff312d20a5d106bad8 | ||||||
|  | +PKG_SOURCE_DATE:=2021-11-04 | ||||||
|  | +PKG_SOURCE_VERSION:=0ee8e734a7f67220cf4a3412b60ff674b5fb20dd | ||||||
|  |  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)" | ||||||
|  | @@ -68,7 +68,7 @@ define Package/procd-ujail | ||||||
|  |    SECTION:=base | ||||||
|  |    CATEGORY:=Base system | ||||||
|  |    DEPENDS:=@KERNEL_NAMESPACES +@KERNEL_UTS_NS +@KERNEL_IPC_NS +@KERNEL_PID_NS \ | ||||||
|  | -	  +libubox +libubus +libblobmsg-json | ||||||
|  | +	  +libubox +libubus +libuci +libblobmsg-json | ||||||
|  |    TITLE:=OpenWrt process jail helper | ||||||
|  |  endef | ||||||
|  |   | ||||||
|  | @@ -82,15 +82,14 @@ endef | ||||||
|  |  define Package/procd-seccomp | ||||||
|  |    SECTION:=base | ||||||
|  |    CATEGORY:=Base system | ||||||
|  | -  DEPENDS:=@(arm||armeb||mips||mipsel||i386||powerpc||x86_64) @!TARGET_uml \ | ||||||
|  | -	  @KERNEL_SECCOMP +libubox +libblobmsg-json | ||||||
|  | +  DEPENDS:=@SECCOMP +libubox +libblobmsg-json | ||||||
|  |    TITLE:=OpenWrt process seccomp helper + utrace | ||||||
|  |  endef | ||||||
|  |   | ||||||
|  |  define Package/uxc | ||||||
|  |    SECTION:=base | ||||||
|  |    CATEGORY:=Base system | ||||||
|  | -  DEPENDS:=+procd-ujail +libubus +libubox +libblobmsg-json | ||||||
|  | +  DEPENDS:=+procd-ujail +libubus +libubox +libblobmsg-json +blockd +PACKAGE_uxc: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,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 | ||||||
|  |  | ||||||
							
								
								
									
										35
									
								
								backports/0031-ubus-update-to-the-latest-version.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								backports/0031-ubus-update-to-the-latest-version.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | |||||||
|  | From d4e24006e05474b6dbe582f7c56a505cc0c45e81 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Felix Fietkau <nbd@nbd.name> | ||||||
|  | Date: Mon, 1 Nov 2021 11:59:41 +0100 | ||||||
|  | Subject: [PATCH] ubus: update to the latest version | ||||||
|  |  | ||||||
|  | b743a331421d ubusd: log ACL init errors | ||||||
|  | 2099bb3ad997 libubus: use list_empty/list_first_entry in ubus_process_pending_msg | ||||||
|  | ef038488edc3 libubus: process pending messages in data handler if stack depth is 0 | ||||||
|  | a72457b61df0 libubus: increase stack depth for processing obj msgs | ||||||
|  |  | ||||||
|  | Signed-off-by: Felix Fietkau <nbd@nbd.name> | ||||||
|  | --- | ||||||
|  |  package/system/ubus/Makefile | 6 +++--- | ||||||
|  |  1 file changed, 3 insertions(+), 3 deletions(-) | ||||||
|  |  | ||||||
|  | diff --git a/package/system/ubus/Makefile b/package/system/ubus/Makefile | ||||||
|  | index 8a3fd1de7b..d5f86b6850 100644 | ||||||
|  | --- a/package/system/ubus/Makefile | ||||||
|  | +++ b/package/system/ubus/Makefile | ||||||
|  | @@ -5,9 +5,9 @@ PKG_RELEASE:=2 | ||||||
|  |   | ||||||
|  |  PKG_SOURCE_PROTO:=git | ||||||
|  |  PKG_SOURCE_URL=$(PROJECT_GIT)/project/ubus.git | ||||||
|  | -PKG_SOURCE_DATE:=2021-06-30 | ||||||
|  | -PKG_SOURCE_VERSION:=4fc532c8a55ba8217ad67d7fd47c5eb9a8aba044 | ||||||
|  | -PKG_MIRROR_HASH:=a5c8205f2e2b2f1f9ad687592e66a6e2bf8900dc54cfe3ceefe6c297d18971a8 | ||||||
|  | +PKG_SOURCE_DATE:=2021-08-09 | ||||||
|  | +PKG_SOURCE_VERSION:=a72457b61df045d3c499a6211362b751710590d7 | ||||||
|  | +PKG_MIRROR_HASH:=ac617577bcb2ff3dbc3039ad67200afcce910840223a2de15977d3224e6557fd | ||||||
|  |  PKG_ABI_VERSION:=$(call abi_version_str,$(PKG_SOURCE_DATE)) | ||||||
|  |  CMAKE_INSTALL:=1 | ||||||
|  |   | ||||||
|  | --  | ||||||
|  | 2.25.1 | ||||||
|  |  | ||||||
							
								
								
									
										34
									
								
								backports/0032-rpcd-bump-to-git-HEAD.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								backports/0032-rpcd-bump-to-git-HEAD.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | |||||||
|  | From 49ceb8a8d7009e5c81599c68b8aacc16d17d2e62 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Stijn Tintel <stijn@linux-ipv6.be> | ||||||
|  | Date: Tue, 9 Nov 2021 17:20:41 +0100 | ||||||
|  | Subject: [PATCH] rpcd: bump to git HEAD | ||||||
|  |  | ||||||
|  |  20bf958 session: use uloop_timeout_remaining64 | ||||||
|  |  d11ffe9 session: use blobmsg_get_u64 for RPC_DUMP_EXPIRES | ||||||
|  |  | ||||||
|  | Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be> | ||||||
|  | --- | ||||||
|  |  package/system/rpcd/Makefile | 6 +++--- | ||||||
|  |  1 file changed, 3 insertions(+), 3 deletions(-) | ||||||
|  |  | ||||||
|  | diff --git a/package/system/rpcd/Makefile b/package/system/rpcd/Makefile | ||||||
|  | index 0896a7dada..af788dcfaa 100644 | ||||||
|  | --- a/package/system/rpcd/Makefile | ||||||
|  | +++ b/package/system/rpcd/Makefile | ||||||
|  | @@ -12,10 +12,10 @@ PKG_RELEASE:=1 | ||||||
|  |   | ||||||
|  |  PKG_SOURCE_PROTO:=git | ||||||
|  |  PKG_SOURCE_URL=$(PROJECT_GIT)/project/rpcd.git | ||||||
|  | -PKG_SOURCE_DATE:=2021-03-11 | ||||||
|  | -PKG_SOURCE_VERSION:=ccb75178cf6a726896729c6904bd623636aa0b29 | ||||||
|  | +PKG_MIRROR_HASH:=98071b4a1ce983a0e738d7e4a2f6e52b7f6db19f99510ddef430093314134ca4 | ||||||
|  | +PKG_SOURCE_DATE:=2021-11-04 | ||||||
|  | +PKG_SOURCE_VERSION:=d11ffe9383ae0ec34836421926364b24c1d891ca | ||||||
|  |  PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io> | ||||||
|  | -PKG_MIRROR_HASH:=87b1839275c209f9767057d6da5272cae973a064767fa28f380a37fb65e2e643 | ||||||
|  |   | ||||||
|  |  PKG_LICENSE:=ISC | ||||||
|  |  PKG_LICENSE_FILES:= | ||||||
|  | --  | ||||||
|  | 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 |  | ||||||
|  |  | ||||||
| @@ -0,0 +1,221 @@ | |||||||
|  | From 3937223beab0c3e4284fd916c0c3b6548c287e03 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Felix Fietkau <nbd@nbd.name> | ||||||
|  | Date: Tue, 26 Oct 2021 20:41:22 +0200 | ||||||
|  | Subject: [PATCH 050/102] 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                                | 65 ++++++++++++ | ||||||
|  |  package/kernel/bpf-headers/Makefile           | 99 +++++++++++++++++++ | ||||||
|  |  .../src/include/generated/bounds.h            | 14 +++ | ||||||
|  |  3 files changed, 178 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..3dc65c7685 | ||||||
|  | --- /dev/null | ||||||
|  | +++ b/include/bpf.mk | ||||||
|  | @@ -0,0 +1,65 @@ | ||||||
|  | +ifneq ($(CONFIG_BPF_TOOLCHAIN_HOST),) | ||||||
|  | +  BPF_TOOLCHAIN_HOST_PATH:=$(call qstrip,$(CONFIG_BPF_TOOLCHAIN_HOST_PATH)) | ||||||
|  | +  ifneq ($(BPF_TOOLCHAIN_HOST_PATH),) | ||||||
|  | +    BPF_PATH:=$(BPF_TOOLCHAIN_HOST_PATH)/bin:$(PATH) | ||||||
|  | +  else | ||||||
|  | +    BPF_PATH:=$(BPF_PATH) | ||||||
|  | +  endif | ||||||
|  | +  CLANG:=$(firstword $(shell PATH='$(BPF_PATH)' which clang clang-13 clang-12 clang-11)) | ||||||
|  | +  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..5f5b89370d | ||||||
|  | --- /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 = $(PKG_BUILD_DIR)/scripts/bpf_helpers_doc.py | ||||||
|  | + | ||||||
|  | +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 | ||||||
|  |  | ||||||
							
								
								
									
										29
									
								
								backports/0051-bpf-headers-unset-PKG_CONFIG_PATH.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								backports/0051-bpf-headers-unset-PKG_CONFIG_PATH.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,29 @@ | |||||||
|  | From 32243b2148fd0dacd0630affaea59345c64df79a Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Felix Fietkau <nbd@nbd.name> | ||||||
|  | Date: Tue, 2 Nov 2021 10:36:14 +0100 | ||||||
|  | Subject: [PATCH 051/102] bpf-headers: unset PKG_CONFIG_PATH | ||||||
|  |  | ||||||
|  | This fixes an issue where the kernel would pick up an incompatible target | ||||||
|  | libyaml for building host tools | ||||||
|  |  | ||||||
|  | Signed-off-by: Felix Fietkau <nbd@nbd.name> | ||||||
|  | --- | ||||||
|  |  package/kernel/bpf-headers/Makefile | 2 ++ | ||||||
|  |  1 file changed, 2 insertions(+) | ||||||
|  |  | ||||||
|  | diff --git a/package/kernel/bpf-headers/Makefile b/package/kernel/bpf-headers/Makefile | ||||||
|  | index 5f5b89370d..df24bfa13f 100644 | ||||||
|  | --- a/package/kernel/bpf-headers/Makefile | ||||||
|  | +++ b/package/kernel/bpf-headers/Makefile | ||||||
|  | @@ -41,6 +41,8 @@ define Package/bpf-headers | ||||||
|  |    HIDDEN:=1 | ||||||
|  |  endef | ||||||
|  |   | ||||||
|  | +PKG_CONFIG_PATH:= | ||||||
|  | + | ||||||
|  |  export HOST_EXTRACFLAGS=-I$(STAGING_DIR_HOST)/include | ||||||
|  |   | ||||||
|  |  KERNEL_MAKE := \ | ||||||
|  | --  | ||||||
|  | 2.25.1 | ||||||
|  |  | ||||||
| @@ -0,0 +1,99 @@ | |||||||
|  | From 1eb36bc2be4b54e4e4e4ceffc01be78d996205f0 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Felix Fietkau <nbd@nbd.name> | ||||||
|  | Date: Sun, 17 Oct 2021 17:50:53 +0200 | ||||||
|  | Subject: [PATCH 052/102] tools/llvm-bpf: add llvm+clang build suitable for | ||||||
|  |  compiling code to eBPF | ||||||
|  |  | ||||||
|  | Preparation for building packages that ship eBPF code | ||||||
|  |  | ||||||
|  | Signed-off-by: Felix Fietkau <nbd@nbd.name> | ||||||
|  | --- | ||||||
|  |  toolchain/Config.in     |  7 +++++++ | ||||||
|  |  tools/Makefile          |  2 ++ | ||||||
|  |  tools/llvm-bpf/Makefile | 36 ++++++++++++++++++++++++++++++++++++ | ||||||
|  |  3 files changed, 45 insertions(+) | ||||||
|  |  create mode 100644 tools/llvm-bpf/Makefile | ||||||
|  |  | ||||||
|  | diff --git a/toolchain/Config.in b/toolchain/Config.in | ||||||
|  | index 6dda9af92d..9062d6f65e 100644 | ||||||
|  | --- a/toolchain/Config.in | ||||||
|  | +++ b/toolchain/Config.in | ||||||
|  | @@ -37,6 +37,13 @@ menuconfig TARGET_OPTIONS | ||||||
|  |   | ||||||
|  |  		  Most people will answer N. | ||||||
|  |   | ||||||
|  | +config BUILD_LLVM_BPF | ||||||
|  | +	bool "Build LLVM toolchain for eBPF" if DEVEL | ||||||
|  | +	help | ||||||
|  | +	  If enabled, a LLVM toolchain for building eBPF binaries will be built. | ||||||
|  | +	  If this is not enabled, eBPF packages can only be built if the host | ||||||
|  | +	  has a suitable toolchain | ||||||
|  | + | ||||||
|  |   | ||||||
|  |  menuconfig EXTERNAL_TOOLCHAIN | ||||||
|  |  	bool | ||||||
|  | diff --git a/tools/Makefile b/tools/Makefile | ||||||
|  | index a2665dbc9a..83147014c6 100644 | ||||||
|  | --- a/tools/Makefile | ||||||
|  | +++ b/tools/Makefile | ||||||
|  | @@ -35,6 +35,7 @@ tools-$(CONFIG_TARGET_mxs) += elftosb sdimage | ||||||
|  |  tools-$(CONFIG_TARGET_tegra) += cbootimage cbootimage-configs | ||||||
|  |  tools-$(CONFIG_USES_MINOR) += kernel2minor | ||||||
|  |  tools-$(CONFIG_USE_SPARSE) += sparse | ||||||
|  | +tools-$(CONFIG_BUILD_LLVM_BPF) += llvm-bpf | ||||||
|  |   | ||||||
|  |  # builddir dependencies | ||||||
|  |  $(curdir)/autoconf/compile := $(curdir)/m4/compile | ||||||
|  | @@ -57,6 +58,7 @@ $(curdir)/libelf/compile := $(curdir)/libtool/compile | ||||||
|  |  $(curdir)/libressl/compile := $(curdir)/pkgconf/compile | ||||||
|  |  $(curdir)/libtool/compile := $(curdir)/m4/compile $(curdir)/autoconf/compile $(curdir)/automake/compile $(curdir)/missing-macros/compile | ||||||
|  |  $(curdir)/lzma-old/compile := $(curdir)/zlib/compile | ||||||
|  | +$(curdir)/llvm-bpf/compile := $(curdir)/cmake/compile | ||||||
|  |  $(curdir)/make-ext4fs/compile := $(curdir)/zlib/compile | ||||||
|  |  $(curdir)/missing-macros/compile := $(curdir)/autoconf/compile | ||||||
|  |  $(curdir)/mkimage/compile += $(curdir)/libressl/compile | ||||||
|  | diff --git a/tools/llvm-bpf/Makefile b/tools/llvm-bpf/Makefile | ||||||
|  | new file mode 100644 | ||||||
|  | index 0000000000..a5ba2a4cb7 | ||||||
|  | --- /dev/null | ||||||
|  | +++ b/tools/llvm-bpf/Makefile | ||||||
|  | @@ -0,0 +1,36 @@ | ||||||
|  | +# | ||||||
|  | +# Copyright (C) 2006-2016 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:=llvm-project | ||||||
|  | +PKG_VERSION:=13.0.0 | ||||||
|  | +PKG_RELEASE:=1 | ||||||
|  | + | ||||||
|  | +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).src.tar.xz | ||||||
|  | +PKG_SOURCE_URL:=https://github.com/llvm/llvm-project/releases/download/llvmorg-$(PKG_VERSION) | ||||||
|  | +PKG_HASH:=6075ad30f1ac0e15f07c1bf062c1e1268c241d674f11bd32cdf0e040c71f2bf3 | ||||||
|  | + | ||||||
|  | +HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/$(PKG_NAME)-$(PKG_VERSION).src | ||||||
|  | + | ||||||
|  | +HOST_BUILD_PARALLEL:=1 | ||||||
|  | + | ||||||
|  | +CMAKE_BINARY_SUBDIR := build | ||||||
|  | +CMAKE_SOURCE_SUBDIR := llvm | ||||||
|  | + | ||||||
|  | +include $(INCLUDE_DIR)/host-build.mk | ||||||
|  | +include $(INCLUDE_DIR)/cmake.mk | ||||||
|  | + | ||||||
|  | +CMAKE_HOST_OPTIONS += \ | ||||||
|  | +	-DLLVM_ENABLE_BINDINGS=OFF \ | ||||||
|  | +	-DLLVM_INCLUDE_DOCS=OFF \ | ||||||
|  | +	-DLLVM_INCLUDE_EXAMPLES=OFF \ | ||||||
|  | +	-DLLVM_INCLUDE_TESTS=OFF \ | ||||||
|  | +	-DLLVM_ENABLE_PROJECTS="clang;lld" \ | ||||||
|  | +	-DLLVM_TARGETS_TO_BUILD=BPF \ | ||||||
|  | +	-DCLANG_BUILD_EXAMPLES=OFF | ||||||
|  | + | ||||||
|  | +$(eval $(call HostBuild)) | ||||||
|  | --  | ||||||
|  | 2.25.1 | ||||||
|  |  | ||||||
| @@ -0,0 +1,40 @@ | |||||||
|  | From 103a743e7ca4a2e98969d0f60d8aeb6cc7641f67 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Felix Fietkau <nbd@nbd.name> | ||||||
|  | Date: Tue, 2 Nov 2021 19:38:12 +0100 | ||||||
|  | Subject: [PATCH 053/102] llvm-bpf: move to staging_dir/host/llvm-bpf | ||||||
|  |  | ||||||
|  | This makes it easier to package it up for the download server | ||||||
|  |  | ||||||
|  | Signed-off-by: Felix Fietkau <nbd@nbd.name> | ||||||
|  | --- | ||||||
|  |  tools/llvm-bpf/Makefile | 8 +++++++- | ||||||
|  |  1 file changed, 7 insertions(+), 1 deletion(-) | ||||||
|  |  | ||||||
|  | diff --git a/tools/llvm-bpf/Makefile b/tools/llvm-bpf/Makefile | ||||||
|  | index a5ba2a4cb7..ae279d26d2 100644 | ||||||
|  | --- a/tools/llvm-bpf/Makefile | ||||||
|  | +++ b/tools/llvm-bpf/Makefile | ||||||
|  | @@ -24,6 +24,8 @@ CMAKE_SOURCE_SUBDIR := llvm | ||||||
|  |  include $(INCLUDE_DIR)/host-build.mk | ||||||
|  |  include $(INCLUDE_DIR)/cmake.mk | ||||||
|  |   | ||||||
|  | +CMAKE_HOST_INSTALL_PREFIX = $(STAGING_DIR_HOST)/llvm-bpf | ||||||
|  | + | ||||||
|  |  CMAKE_HOST_OPTIONS += \ | ||||||
|  |  	-DLLVM_ENABLE_BINDINGS=OFF \ | ||||||
|  |  	-DLLVM_INCLUDE_DOCS=OFF \ | ||||||
|  | @@ -31,6 +33,10 @@ CMAKE_HOST_OPTIONS += \ | ||||||
|  |  	-DLLVM_INCLUDE_TESTS=OFF \ | ||||||
|  |  	-DLLVM_ENABLE_PROJECTS="clang;lld" \ | ||||||
|  |  	-DLLVM_TARGETS_TO_BUILD=BPF \ | ||||||
|  | -	-DCLANG_BUILD_EXAMPLES=OFF | ||||||
|  | +	-DCLANG_BUILD_EXAMPLES=OFF \ | ||||||
|  | +	-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON \ | ||||||
|  | +	-DLLVM_LINK_LLVM_DYLIB=ON \ | ||||||
|  | +	-DLLVM_TOOLCHAIN_TOOLS="llvm-objcopy;llvm-objdump;llvm-readelf;llvm-strip;llvm-ar;llvm-as;llvm-dis;llvm-link;llvm-nm;llvm-ranlib;llc;opt" \ | ||||||
|  | +	-DCMAKE_SKIP_RPATH=OFF | ||||||
|  |   | ||||||
|  |  $(eval $(call HostBuild)) | ||||||
|  | --  | ||||||
|  | 2.25.1 | ||||||
|  |  | ||||||
| @@ -0,0 +1,103 @@ | |||||||
|  | From a368d456ba1e9198fd8f473b7e82c0e066e4eb82 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Felix Fietkau <nbd@nbd.name> | ||||||
|  | Date: Mon, 1 Nov 2021 18:40:03 +0100 | ||||||
|  | Subject: [PATCH 054/102] build: fix bpf toolchain dependency for qosify | ||||||
|  |  | ||||||
|  | Add hidden symbols to fix defaults with CONFIG_DEVEL unset | ||||||
|  |  | ||||||
|  | Signed-off-by: Felix Fietkau <nbd@nbd.name> | ||||||
|  | --- | ||||||
|  |  include/bpf.mk      |  2 ++ | ||||||
|  |  toolchain/Config.in | 45 +++++++++++++++++++++++++++++++++++++++++++++ | ||||||
|  |  tools/Makefile      |  2 +- | ||||||
|  |  3 files changed, 48 insertions(+), 1 deletion(-) | ||||||
|  |  | ||||||
|  | diff --git a/include/bpf.mk b/include/bpf.mk | ||||||
|  | index 3dc65c7685..5211ec4434 100644 | ||||||
|  | --- a/include/bpf.mk | ||||||
|  | +++ b/include/bpf.mk | ||||||
|  | @@ -1,3 +1,5 @@ | ||||||
|  | +BPF_DEPENDS := @HAS_BPF_TOOLCHAIN | ||||||
|  | + | ||||||
|  |  ifneq ($(CONFIG_BPF_TOOLCHAIN_HOST),) | ||||||
|  |    BPF_TOOLCHAIN_HOST_PATH:=$(call qstrip,$(CONFIG_BPF_TOOLCHAIN_HOST_PATH)) | ||||||
|  |    ifneq ($(BPF_TOOLCHAIN_HOST_PATH),) | ||||||
|  | diff --git a/toolchain/Config.in b/toolchain/Config.in | ||||||
|  | index 9062d6f65e..997cff59e4 100644 | ||||||
|  | --- a/toolchain/Config.in | ||||||
|  | +++ b/toolchain/Config.in | ||||||
|  | @@ -44,6 +44,32 @@ config BUILD_LLVM_BPF | ||||||
|  |  	  If this is not enabled, eBPF packages can only be built if the host | ||||||
|  |  	  has a suitable toolchain | ||||||
|  |   | ||||||
|  | +	choice BPF_TOOLCHAIN | ||||||
|  | +		prompt "BPF toolchain" if DEVEL | ||||||
|  | +		default BPF_TOOLCHAIN_NONE | ||||||
|  | + | ||||||
|  | +		config BPF_TOOLCHAIN_NONE | ||||||
|  | +			bool "None" | ||||||
|  | + | ||||||
|  | +		config BPF_TOOLCHAIN_HOST | ||||||
|  | +			select USE_LLVM_HOST | ||||||
|  | +			bool "Use host LLVM toolchain" | ||||||
|  | + | ||||||
|  | +		config BPF_TOOLCHAIN_BUILD_LLVM | ||||||
|  | +			select USE_LLVM_BUILD | ||||||
|  | +			bool "Build LLVM toolchain for eBPF" | ||||||
|  | +			help | ||||||
|  | +			  If enabled, a LLVM toolchain for building eBPF binaries will be built. | ||||||
|  | +			  If this is not enabled, eBPF packages can only be built if the host | ||||||
|  | +			  has a suitable toolchain | ||||||
|  | +	endchoice | ||||||
|  | + | ||||||
|  | +	config BPF_TOOLCHAIN_HOST_PATH | ||||||
|  | +		string | ||||||
|  | +		depends on BPF_TOOLCHAIN_HOST | ||||||
|  | +		prompt "Host LLVM toolchain path (prefix)" if DEVEL | ||||||
|  | +		default "/usr/local/opt/llvm" if HOST_OS_MACOS | ||||||
|  | +		default "" | ||||||
|  |   | ||||||
|  |  menuconfig EXTERNAL_TOOLCHAIN | ||||||
|  |  	bool | ||||||
|  | @@ -266,6 +292,25 @@ config GDB | ||||||
|  |  	help | ||||||
|  |  	  Enable if you want to build the gdb. | ||||||
|  |   | ||||||
|  | +config GDB_PYTHON | ||||||
|  | +	bool | ||||||
|  | +	depends on GDB | ||||||
|  | +	prompt "Build gdb with python binding" | ||||||
|  | +	 | ||||||
|  | +	help | ||||||
|  | +	  Enable the python bindings for GDB to allow using python in the gdb shell. | ||||||
|  | + | ||||||
|  | +config HAS_BPF_TOOLCHAIN | ||||||
|  | +	bool | ||||||
|  | + | ||||||
|  | +config USE_LLVM_HOST | ||||||
|  | +	select HAS_BPF_TOOLCHAIN | ||||||
|  | +	bool | ||||||
|  | + | ||||||
|  | +config USE_LLVM_BUILD | ||||||
|  | +	select HAS_BPF_TOOLCHAIN | ||||||
|  | +	bool | ||||||
|  | + | ||||||
|  |  config USE_GLIBC | ||||||
|  |  	default y if !TOOLCHAINOPTS && !EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN && (arc) | ||||||
|  |  	bool | ||||||
|  | diff --git a/tools/Makefile b/tools/Makefile | ||||||
|  | index 83147014c6..ae3cc5dfd6 100644 | ||||||
|  | --- a/tools/Makefile | ||||||
|  | +++ b/tools/Makefile | ||||||
|  | @@ -35,7 +35,7 @@ tools-$(CONFIG_TARGET_mxs) += elftosb sdimage | ||||||
|  |  tools-$(CONFIG_TARGET_tegra) += cbootimage cbootimage-configs | ||||||
|  |  tools-$(CONFIG_USES_MINOR) += kernel2minor | ||||||
|  |  tools-$(CONFIG_USE_SPARSE) += sparse | ||||||
|  | -tools-$(CONFIG_BUILD_LLVM_BPF) += llvm-bpf | ||||||
|  | +tools-$(CONFIG_USE_LLVM_BUILD) += llvm-bpf | ||||||
|  |   | ||||||
|  |  # builddir dependencies | ||||||
|  |  $(curdir)/autoconf/compile := $(curdir)/m4/compile | ||||||
|  | --  | ||||||
|  | 2.25.1 | ||||||
|  |  | ||||||
							
								
								
									
										26
									
								
								backports/0055-include-bpf.mk-fix-typo.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								backports/0055-include-bpf.mk-fix-typo.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | |||||||
|  | From 2ae5b19a52da190ea342ec4210523407837c58ea Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Felix Fietkau <nbd@nbd.name> | ||||||
|  | Date: Tue, 2 Nov 2021 09:56:10 +0100 | ||||||
|  | Subject: [PATCH 055/102] include/bpf.mk: fix typo | ||||||
|  |  | ||||||
|  | Signed-off-by: Felix Fietkau <nbd@nbd.name> | ||||||
|  | --- | ||||||
|  |  include/bpf.mk | 2 +- | ||||||
|  |  1 file changed, 1 insertion(+), 1 deletion(-) | ||||||
|  |  | ||||||
|  | diff --git a/include/bpf.mk b/include/bpf.mk | ||||||
|  | index 5211ec4434..6223648c5d 100644 | ||||||
|  | --- a/include/bpf.mk | ||||||
|  | +++ b/include/bpf.mk | ||||||
|  | @@ -5,7 +5,7 @@ ifneq ($(CONFIG_BPF_TOOLCHAIN_HOST),) | ||||||
|  |    ifneq ($(BPF_TOOLCHAIN_HOST_PATH),) | ||||||
|  |      BPF_PATH:=$(BPF_TOOLCHAIN_HOST_PATH)/bin:$(PATH) | ||||||
|  |    else | ||||||
|  | -    BPF_PATH:=$(BPF_PATH) | ||||||
|  | +    BPF_PATH:=$(PATH) | ||||||
|  |    endif | ||||||
|  |    CLANG:=$(firstword $(shell PATH='$(BPF_PATH)' which clang clang-13 clang-12 clang-11)) | ||||||
|  |    LLVM_VER:=$(subst clang,,$(notdir $(CLANG))) | ||||||
|  | --  | ||||||
|  | 2.25.1 | ||||||
|  |  | ||||||
| @@ -0,0 +1,39 @@ | |||||||
|  | From aff796bf3e60d7f09e5ca500cbf59221211dd218 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Felix Fietkau <nbd@nbd.name> | ||||||
|  | Date: Tue, 2 Nov 2021 10:39:35 +0100 | ||||||
|  | Subject: [PATCH 056/102] include/bpf.mk: fix compile for big-endian targets | ||||||
|  |  | ||||||
|  | llvm-opt and llc need endian flags in the target as well | ||||||
|  |  | ||||||
|  | Signed-off-by: Felix Fietkau <nbd@nbd.name> | ||||||
|  | --- | ||||||
|  |  include/bpf.mk | 5 +++-- | ||||||
|  |  1 file changed, 3 insertions(+), 2 deletions(-) | ||||||
|  |  | ||||||
|  | diff --git a/include/bpf.mk b/include/bpf.mk | ||||||
|  | index 6223648c5d..9636ad5165 100644 | ||||||
|  | --- a/include/bpf.mk | ||||||
|  | +++ b/include/bpf.mk | ||||||
|  | @@ -22,6 +22,7 @@ LLVM_STRIP:=$(LLVM_PATH)/llvm-strip$(LLVM_VER) | ||||||
|  |   | ||||||
|  |  BPF_KARCH:=mips | ||||||
|  |  BPF_ARCH:=mips$(if $(CONFIG_BIG_ENDIAN),,el) | ||||||
|  | +BPF_TARGET:=bpf$(if $(CONFIG_BIG_ENDIAN),eb,el) | ||||||
|  |   | ||||||
|  |  BPF_HEADERS_DIR:=$(STAGING_DIR)/bpf-headers | ||||||
|  |   | ||||||
|  | @@ -59,9 +60,9 @@ BPF_CFLAGS := \ | ||||||
|  |  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_OPT) -O2 -mtriple=$(BPF_TARGET) < $(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_LLC) -march=$(BPF_TARGET) -filetype=obj -o $(patsubst %.c,%.o,$(1)) < $(patsubst %.c,%.S,$(1)) | ||||||
|  |  	$(LLVM_STRIP) --strip-debug $(patsubst %.c,%.o,$(1)) | ||||||
|  |  endef | ||||||
|  |   | ||||||
|  | --  | ||||||
|  | 2.25.1 | ||||||
|  |  | ||||||
							
								
								
									
										34
									
								
								backports/0057-include-bpf.mk-add-LD_LIBRARY_PATH.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								backports/0057-include-bpf.mk-add-LD_LIBRARY_PATH.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | |||||||
|  | From d05fae42794c5fe76509935b1e8f900e1d17d9f0 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: John Crispin <john@phrozen.org> | ||||||
|  | Date: Fri, 5 Nov 2021 10:46:00 +0100 | ||||||
|  | Subject: [PATCH] include/bpf.mk: add LD_LIBRARY_PATH | ||||||
|  |  | ||||||
|  | Signed-off-by: John Crispin <john@phrozen.org> | ||||||
|  | --- | ||||||
|  |  include/bpf.mk | 5 +++++ | ||||||
|  |  1 file changed, 5 insertions(+) | ||||||
|  |  | ||||||
|  | diff --git a/include/bpf.mk b/include/bpf.mk | ||||||
|  | index 9636ad5165..2f797625b6 100644 | ||||||
|  | --- a/include/bpf.mk | ||||||
|  | +++ b/include/bpf.mk | ||||||
|  | @@ -58,11 +58,16 @@ BPF_CFLAGS := \ | ||||||
|  |  	-O2 -emit-llvm -Xclang -disable-llvm-passes | ||||||
|  |   | ||||||
|  |  define CompileBPF | ||||||
|  | +	LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):$(STAGING_DIR_HOST)/lib \ | ||||||
|  |  	$(CLANG) -g -target $(BPF_ARCH)-linux-gnu $(BPF_CFLAGS) $(2) \ | ||||||
|  |  		-c $(1) -o $(patsubst %.c,%.bc,$(1)) | ||||||
|  | +	LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):$(STAGING_DIR_HOST)/lib \ | ||||||
|  |  	$(LLVM_OPT) -O2 -mtriple=$(BPF_TARGET) < $(patsubst %.c,%.bc,$(1)) > $(patsubst %.c,%.opt,$(1)) | ||||||
|  | +	LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):$(STAGING_DIR_HOST)/lib \ | ||||||
|  |  	$(LLVM_DIS) < $(patsubst %.c,%.opt,$(1)) > $(patsubst %.c,%.S,$(1)) | ||||||
|  | +	LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):$(STAGING_DIR_HOST)/lib \ | ||||||
|  |  	$(LLVM_LLC) -march=$(BPF_TARGET) -filetype=obj -o $(patsubst %.c,%.o,$(1)) < $(patsubst %.c,%.S,$(1)) | ||||||
|  | +	LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):$(STAGING_DIR_HOST)/lib \ | ||||||
|  |  	$(LLVM_STRIP) --strip-debug $(patsubst %.c,%.o,$(1)) | ||||||
|  |  endef | ||||||
|  |   | ||||||
|  | --  | ||||||
|  | 2.25.1 | ||||||
|  |  | ||||||
| @@ -1,6 +1,6 @@ | |||||||
| repo:  https://github.com/openwrt/openwrt.git | repo:  https://github.com/openwrt/openwrt.git | ||||||
| branch: openwrt-21.02 | branch: openwrt-21.02 | ||||||
| revision: 6fd65c657351908302b37447675ee352ec927d93 | revision: 378769b5551714ccaa821b481bfeecbf362f351e | ||||||
| output_dir: ./output | output_dir: ./output | ||||||
|  |  | ||||||
| patch_folders: | patch_folders: | ||||||
|   | |||||||
| @@ -3,9 +3,10 @@ FROM ubuntu:20.04 | |||||||
| RUN apt-get update \ | RUN apt-get update \ | ||||||
|     && DEBIAN_FRONTEND="noninteractive" apt-get -y install tzdata \ |     && DEBIAN_FRONTEND="noninteractive" apt-get -y install tzdata \ | ||||||
|     && apt-get install -y \ |     && 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 \ |             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 \ | ||||||
|  |             clang-12 \ | ||||||
|     && apt-get clean |     && apt-get clean | ||||||
| RUN git config --global user.email "you@example.com" | RUN git config --global user.email "you@example.com" | ||||||
| RUN git config --global user.name "Your Name" | 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_BRANCH:=master | ||||||
| PKG_RELEASE:=2 | PKG_RELEASE:=2 | ||||||
| PKG_SOURCE_URL:=https://source.codeaurora.org/quic/qsdk/oss/lklm/nss-clients/ | 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:=$(PKG_NAME)-$(PKG_VERSION).tar.gz | ||||||
| PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) | PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) | ||||||
| @@ -18,23 +18,12 @@ MAKE_OPTS:= | |||||||
| include $(INCLUDE_DIR)/package.mk | include $(INCLUDE_DIR)/package.mk | ||||||
|  |  | ||||||
| # Keep default as ipq806x for branches that does not have subtarget framework | # Keep default as ipq806x for branches that does not have subtarget framework | ||||||
| ifeq ($(CONFIG_TARGET_ipq),y) |  | ||||||
| subtarget:=$(SUBTARGET) | subtarget:=$(SUBTARGET) | ||||||
| else |  | ||||||
| subtarget:=$(CONFIG_TARGET_BOARD) |  | ||||||
| endif |  | ||||||
|  |  | ||||||
| ifneq (, $(findstring $(subtarget), "ipq807x" "ipq807x_ipq807x" "ipq60xx" "ipq807x_ipq60xx")) |  | ||||||
| # DTLS Manager v2.0 for Hawkeye/Cypress | # DTLS Manager v2.0 for Hawkeye/Cypress | ||||||
|   DTLSMGR_DIR:=v2.0 |   DTLSMGR_DIR:=v2.0 | ||||||
| # IPsec Manager v2.0 for Hawkeye/Cypress | # IPsec Manager v2.0 for Hawkeye/Cypress | ||||||
|   IPSECMGR_DIR:=v2.0 |   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 | define KernelPackage/qca-nss-drv-tun6rd | ||||||
|   SECTION:=kernel |   SECTION:=kernel | ||||||
| @@ -437,6 +426,20 @@ define Build/InstallDev/qca-nss-clients | |||||||
| 	$(CP) $(PKG_BUILD_DIR)/exports/* $(1)/usr/include/qca-nss-clients/ | 	$(CP) $(PKG_BUILD_DIR)/exports/* $(1)/usr/include/qca-nss-clients/ | ||||||
| endef | 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 | define Build/InstallDev | ||||||
| 	$(call Build/InstallDev/qca-nss-clients,$(1)) | 	$(call Build/InstallDev/qca-nss-clients,$(1)) | ||||||
| endef | endef | ||||||
| @@ -585,6 +588,10 @@ ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-mirror),) | |||||||
| MAKE_OPTS+=mirror=y | MAKE_OPTS+=mirror=y | ||||||
| endif | endif | ||||||
|  |  | ||||||
|  | ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-wifi-meshmgr),) | ||||||
|  | MAKE_OPTS+=wifi-meshmgr=y | ||||||
|  | endif | ||||||
|  |  | ||||||
| define Build/Compile | define Build/Compile | ||||||
| 	$(MAKE) -C "$(LINUX_DIR)" $(strip $(MAKE_OPTS)) \ | 	$(MAKE) -C "$(LINUX_DIR)" $(strip $(MAKE_OPTS)) \ | ||||||
| 		CROSS_COMPILE="$(TARGET_CROSS)" \ | 		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-match)) | ||||||
| #$(eval $(call KernelPackage,qca-nss-drv-tlsmgr)) | #$(eval $(call KernelPackage,qca-nss-drv-tlsmgr)) | ||||||
| $(eval $(call KernelPackage,qca-nss-drv-mirror)) | $(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 | endif | ||||||
|  |  | ||||||
| ccflags-y += $(NSS_DP_INCLUDE) | ccflags-y += $(NSS_DP_INCLUDE) | ||||||
| ccflags-y += -Werror | ccflags-y += -Wall -Werror | ||||||
|  |  | ||||||
| ifeq ($(SoC),$(filter $(SoC),ipq807x ipq807x_64 ipq60xx ipq60xx_64)) | ifeq ($(SoC),$(filter $(SoC),ipq807x ipq807x_64 ipq60xx ipq60xx_64)) | ||||||
| ccflags-y += -DNSS_DP_PPE_SUPPORT | ccflags-y += -DNSS_DP_PPE_SUPPORT | ||||||
| @@ -43,7 +43,7 @@ endif | |||||||
|  |  | ||||||
| ifeq ($(SoC),$(filter $(SoC),ipq807x ipq807x_64)) | ifeq ($(SoC),$(filter $(SoC),ipq807x ipq807x_64)) | ||||||
| qca-nss-dp-objs += hal/arch/ipq807x/nss_ipq807x.o | 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 | endif | ||||||
|  |  | ||||||
| ifeq ($(SoC),$(filter $(SoC),ipq50xx ipq50xx_64)) | 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 TZ is not enabled, we can write to the register directly. | ||||||
| 	 */ | 	 */ | ||||||
| 	if (qcom_scm_is_available()) { | 	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), | 		err = qcom_scm_tcsr_reg_write((tcsr_base + TCSR_GMAC_AXI_CACHE_OVERRIDE_OFFSET), | ||||||
| 						TCSR_GMAC_AXI_CACHE_OVERRIDE_VALUE); | 						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) { | 		if (err) { | ||||||
| 			pr_err("%s: SCM TCSR write error: %d\n", __func__, 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 |  * Permission to use, copy, modify, and/or distribute this software for any | ||||||
|  * purpose with or without fee is hereby granted, provided that the above |  * 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); | 	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() |  * nss_dp_edma_if_open() | ||||||
|  *	Do slow path data plane 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; | 		return NSS_DP_SUCCESS; | ||||||
|  |  | ||||||
| 	napi_enable(&edma_hw.napi); | 	napi_enable(&edma_hw.napi); | ||||||
|  |  | ||||||
|  | 	/* | ||||||
|  | 	 * Enable the interrupt masks. | ||||||
|  | 	 */ | ||||||
|  | 	edma_enable_interrupts(); | ||||||
|  |  | ||||||
| 	return NSS_DP_SUCCESS; | 	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) | 	if (--edma_hw.active != 0) | ||||||
| 		return NSS_DP_SUCCESS; | 		return NSS_DP_SUCCESS; | ||||||
|  |  | ||||||
|  | 	/* | ||||||
|  | 	 * Disable the interrupt masks. | ||||||
|  | 	 */ | ||||||
|  | 	edma_disable_interrupts(); | ||||||
|  |  | ||||||
| 	/* | 	/* | ||||||
| 	 * Disable NAPI | 	 * Disable NAPI | ||||||
| 	 */ | 	 */ | ||||||
| @@ -311,9 +392,6 @@ static int edma_if_deinit(struct nss_dp_data_plane_ctx *dpc) | |||||||
|  */ |  */ | ||||||
| static int edma_irq_init(void) | 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; | 	int err; | ||||||
| 	uint32_t entry_num, i; | 	uint32_t entry_num, i; | ||||||
|  |  | ||||||
| @@ -433,28 +511,6 @@ static int edma_irq_init(void) | |||||||
| 		goto misc_intr_req_fail; | 		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; | 	return 0; | ||||||
|  |  | ||||||
| misc_intr_req_fail: | 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 |  * Permission to use, copy, modify, and/or distribute this software for | ||||||
|  * any purpose with or without fee is hereby granted, provided that the |  * any purpose with or without fee is hereby granted, provided that the | ||||||
| @@ -30,7 +30,7 @@ | |||||||
| #define EDMA_NAPI_WORK			100 | #define EDMA_NAPI_WORK			100 | ||||||
| #define EDMA_START_GMACS		NSS_DP_START_IFNUM | #define EDMA_START_GMACS		NSS_DP_START_IFNUM | ||||||
| #define EDMA_MAX_GMACS			NSS_DP_HAL_MAX_PORTS | #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) | #if defined(NSS_DP_IPQ60XX) | ||||||
| #define EDMA_MAX_TXCMPL_RINGS		24	/* Max TxCmpl rings */ | #define EDMA_MAX_TXCMPL_RINGS		24	/* Max TxCmpl rings */ | ||||||
| #else | #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 |  * Permission to use, copy, modify, and/or distribute this software for any | ||||||
|  * purpose with or without fee is hereby granted, provided that the above |  * 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 nss_dp_dev *dp_dev = netdev_priv(netdev); | ||||||
| 	struct edma_txdesc_desc *txdesc = NULL; | 	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; | 	uint16_t hw_next_to_use, hw_next_to_clean, chk_idx; | ||||||
| 	uint32_t data; | 	uint32_t data; | ||||||
| 	uint32_t store_index = 0; | 	uint32_t store_index = 0; | ||||||
| @@ -560,6 +560,28 @@ enum edma_tx edma_ring_xmit(struct edma_hw *ehw, | |||||||
| 		return EDMA_TX_DESC; | 		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 | 	 * 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 |  * Permission to use, copy, modify, and/or distribute this software for | ||||||
|  * any purpose with or without fee is hereby granted, provided that the |  * 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 switchdev_trans *trans) | ||||||
| { | { | ||||||
| 	struct nss_dp_dev *dp_priv = (struct nss_dp_dev *)netdev_priv(dev); | 	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)) | 	if (switchdev_trans_ph_prepare(trans)) | ||||||
| 		return 0; | 		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); | 		netdev_dbg(dev, "set brport_flags %lu\n", attr->u.brport_flags); | ||||||
| 		return 0; | 		return 0; | ||||||
| 	case SWITCHDEV_ATTR_ID_PORT_STP_STATE: | 	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: | 	default: | ||||||
| 		return -EOPNOTSUPP; | 		return -EOPNOTSUPP; | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -46,7 +46,7 @@ ifneq (, $(findstring $(subtarget), "ipq807x" "ipq807x_64" "ipq60xx" "ipq60xx_64 | |||||||
| endif | endif | ||||||
| endef | 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 | # Keeping default as ipq806x for branches that does not have subtarget framework | ||||||
| subtarget:=$(SUBTARGET) | subtarget:=$(SUBTARGET) | ||||||
|   | |||||||
| @@ -8,8 +8,6 @@ obj-m += qca-nss-drv.o | |||||||
| # List the files that belong to the driver in alphabetical order. | # List the files that belong to the driver in alphabetical order. | ||||||
| # | # | ||||||
| qca-nss-drv-objs := \ | qca-nss-drv-objs := \ | ||||||
| 			nss_bridge.o \ |  | ||||||
| 			nss_bridge_log.o \ |  | ||||||
| 			nss_cmn.o \ | 			nss_cmn.o \ | ||||||
| 			nss_core.o \ | 			nss_core.o \ | ||||||
| 			nss_coredump.o \ | 			nss_coredump.o \ | ||||||
| @@ -29,16 +27,6 @@ qca-nss-drv-objs := \ | |||||||
| 			nss_ipv4_stats.o \ | 			nss_ipv4_stats.o \ | ||||||
| 			nss_ipv4_strings.o \ | 			nss_ipv4_strings.o \ | ||||||
| 			nss_ipv4_log.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_log.o \ | ||||||
| 			nss_lso_rx.o \ | 			nss_lso_rx.o \ | ||||||
| 			nss_lso_rx_stats.o \ | 			nss_lso_rx_stats.o \ | ||||||
| @@ -70,21 +58,48 @@ qca-nss-drv-objs := \ | |||||||
| 			nss_wifi_log.o \ | 			nss_wifi_log.o \ | ||||||
| 			nss_wifi_stats.o \ | 			nss_wifi_stats.o \ | ||||||
| 			nss_wifi_vdev.o \ | 			nss_wifi_vdev.o \ | ||||||
| 			nss_wifi_if.o \ |  | ||||||
| 			nss_wifi_if_stats.o \ |  | ||||||
| 			nss_wifili.o \ | 			nss_wifili.o \ | ||||||
| 			nss_wifili_log.o \ | 			nss_wifili_log.o \ | ||||||
| 			nss_wifili_stats.o \ | 			nss_wifili_stats.o \ | ||||||
| 			nss_wifili_strings.o \ | 			nss_wifili_strings.o \ | ||||||
| 			nss_wifi_mac_db.o \ | 			nss_wifi_mac_db.o | ||||||
| 			nss_wifi_ext_vdev.o \ |  | ||||||
| 			nss_wifi_ext_vdev_stats.o \ |  | ||||||
| 			nss_wifi_ext_vdev_log.o |  | ||||||
|  |  | ||||||
| # Base NSS data plane/HAL support | # Base NSS data plane/HAL support | ||||||
| qca-nss-drv-objs += nss_data_plane/nss_data_plane_common.o | qca-nss-drv-objs += nss_data_plane/nss_data_plane_common.o | ||||||
| qca-nss-drv-objs += nss_hal/nss_hal.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" | ifneq "$(NSS_DRV_L2TP_ENABLE)" "n" | ||||||
| ccflags-y += -DNSS_DRV_L2TP_ENABLE | ccflags-y += -DNSS_DRV_L2TP_ENABLE | ||||||
| qca-nss-drv-objs += \ | qca-nss-drv-objs += \ | ||||||
| @@ -109,6 +124,22 @@ qca-nss-drv-objs += \ | |||||||
| 			 nss_pvxlan_stats.o | 			 nss_pvxlan_stats.o | ||||||
| endif | 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" | ifneq "$(NSS_DRV_TSTAMP_ENABLE)" "n" | ||||||
| ccflags-y += -DNSS_DRV_TSTAMP_ENABLE | ccflags-y += -DNSS_DRV_TSTAMP_ENABLE | ||||||
| qca-nss-drv-objs += \ | qca-nss-drv-objs += \ | ||||||
| @@ -121,7 +152,8 @@ ccflags-y += -DNSS_DRV_GRE_ENABLE | |||||||
| qca-nss-drv-objs += \ | qca-nss-drv-objs += \ | ||||||
| 			 nss_gre.o \ | 			 nss_gre.o \ | ||||||
| 			 nss_gre_log.o \ | 			 nss_gre_log.o \ | ||||||
| 			 nss_gre_stats.o | 			 nss_gre_stats.o \ | ||||||
|  | 			 nss_gre_strings.o | ||||||
| endif | endif | ||||||
|  |  | ||||||
| ifneq "$(NSS_DRV_GRE_REDIR_ENABLE)" "n" | 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.o \ | ||||||
| 			 nss_gre_redir_lag_ds_log.o \ | 			 nss_gre_redir_lag_ds_log.o \ | ||||||
| 			 nss_gre_redir_lag_ds_stats.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.o \ | ||||||
| 			 nss_gre_redir_lag_us_log.o \ | 			 nss_gre_redir_lag_us_log.o \ | ||||||
| 			 nss_gre_redir_lag_us_stats.o \ | 			 nss_gre_redir_lag_us_stats.o \ | ||||||
|  | 			 nss_gre_redir_lag_us_strings.o \ | ||||||
| 			 nss_gre_redir_stats.o \ | 			 nss_gre_redir_stats.o \ | ||||||
|  | 			 nss_gre_redir_strings.o \ | ||||||
| 			 nss_gre_redir_mark.o \ | 			 nss_gre_redir_mark.o \ | ||||||
| 			 nss_gre_redir_mark_log.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 | endif | ||||||
|  |  | ||||||
| ifneq "$(NSS_DRV_GRE_TUNNEL_ENABLE)" "n" | ifneq "$(NSS_DRV_GRE_TUNNEL_ENABLE)" "n" | ||||||
| @@ -146,7 +182,8 @@ ccflags-y += -DNSS_DRV_GRE_TUNNEL_ENABLE | |||||||
| qca-nss-drv-objs += \ | qca-nss-drv-objs += \ | ||||||
| 			 nss_gre_tunnel.o \ | 			 nss_gre_tunnel.o \ | ||||||
| 			 nss_gre_tunnel_log.o \ | 			 nss_gre_tunnel_log.o \ | ||||||
| 			 nss_gre_tunnel_stats.o | 			 nss_gre_tunnel_stats.o \ | ||||||
|  | 			 nss_gre_tunnel_strings.o | ||||||
| endif | endif | ||||||
|  |  | ||||||
| ifneq "$(NSS_DRV_CAPWAP_ENABLE)" "n" | ifneq "$(NSS_DRV_CAPWAP_ENABLE)" "n" | ||||||
| @@ -255,7 +292,8 @@ ccflags-y += -DNSS_DRV_CLMAP_ENABLE | |||||||
| qca-nss-drv-objs += \ | qca-nss-drv-objs += \ | ||||||
| 			 nss_clmap.o \ | 			 nss_clmap.o \ | ||||||
| 			 nss_clmap_log.o \ | 			 nss_clmap_log.o \ | ||||||
| 			 nss_clmap_stats.o | 			 nss_clmap_stats.o \ | ||||||
|  | 			 nss_clmap_strings.o | ||||||
| endif | endif | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -272,7 +310,8 @@ ccflags-y += -DNSS_DRV_MATCH_ENABLE | |||||||
| qca-nss-drv-objs += \ | qca-nss-drv-objs += \ | ||||||
| 			nss_match.o \ | 			nss_match.o \ | ||||||
| 			nss_match_log.o \ | 			nss_match_log.o \ | ||||||
| 			nss_match_stats.o | 			nss_match_stats.o \ | ||||||
|  | 			nss_match_strings.o | ||||||
| endif | endif | ||||||
|  |  | ||||||
| ifneq "$(NSS_DRV_MIRROR_ENABLE)" "n" | ifneq "$(NSS_DRV_MIRROR_ENABLE)" "n" | ||||||
| @@ -280,7 +319,17 @@ ccflags-y += -DNSS_DRV_MIRROR_ENABLE | |||||||
| qca-nss-drv-objs += \ | qca-nss-drv-objs += \ | ||||||
| 			nss_mirror.o \ | 			nss_mirror.o \ | ||||||
| 			nss_mirror_log.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 | endif | ||||||
|  |  | ||||||
| ifeq ($(SoC),$(filter $(SoC),ipq806x)) | 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.o \ | ||||||
| 					nss_ppe_log.o \ | 					nss_ppe_log.o \ | ||||||
| 					nss_ppe_stats.o \ | 					nss_ppe_stats.o \ | ||||||
|  | 					nss_ppe_strings.o \ | ||||||
| 					nss_ppe_vp.o \ | 					nss_ppe_vp.o \ | ||||||
| 					nss_ppe_vp_log.o \ | 					nss_ppe_vp_log.o \ | ||||||
| 					nss_ppe_vp_stats.o | 					nss_ppe_vp_stats.o | ||||||
| @@ -341,7 +391,9 @@ ifneq "$(NSS_DRV_IPSEC_ENABLE)" "n" | |||||||
| ccflags-y += -DNSS_DRV_IPSEC_ENABLE | ccflags-y += -DNSS_DRV_IPSEC_ENABLE | ||||||
| qca-nss-drv-objs += \ | qca-nss-drv-objs += \ | ||||||
| 		    nss_ipsec_cmn_log.o \ | 		    nss_ipsec_cmn_log.o \ | ||||||
| 		    nss_ipsec_cmn.o | 		    nss_ipsec_cmn.o \ | ||||||
|  | 		    nss_ipsec_cmn_stats.o \ | ||||||
|  | 		    nss_ipsec_cmn_strings.o | ||||||
| endif | endif | ||||||
|  |  | ||||||
| ifneq "$(NSS_DRV_CRYPTO_ENABLE)" "n" | ifneq "$(NSS_DRV_CRYPTO_ENABLE)" "n" | ||||||
| @@ -351,6 +403,8 @@ ccflags-y += -DNSS_DRV_DMA_ENABLE | |||||||
| qca-nss-drv-objs += \ | qca-nss-drv-objs += \ | ||||||
| 		    nss_crypto_cmn.o \ | 		    nss_crypto_cmn.o \ | ||||||
| 		    nss_crypto_cmn_log.o \ | 		    nss_crypto_cmn_log.o \ | ||||||
|  | 		    nss_crypto_cmn_stats.o \ | ||||||
|  | 		    nss_crypto_cmn_strings.o \ | ||||||
| 		    nss_dma.o \ | 		    nss_dma.o \ | ||||||
| 		    nss_dma_log.o \ | 		    nss_dma_log.o \ | ||||||
| 		    nss_dma_stats.o \ | 		    nss_dma_stats.o \ | ||||||
| @@ -361,21 +415,26 @@ ifneq "$(NSS_DRV_DTLS_ENABLE)" "n" | |||||||
| ccflags-y += -DNSS_DRV_DTLS_ENABLE | ccflags-y += -DNSS_DRV_DTLS_ENABLE | ||||||
| qca-nss-drv-objs += \ | qca-nss-drv-objs += \ | ||||||
| 		    nss_dtls_cmn.o \ | 		    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 | endif | ||||||
|  |  | ||||||
| ifneq "$(NSS_DRV_QVPN_ENABLE)" "n" | ifneq "$(NSS_DRV_QVPN_ENABLE)" "n" | ||||||
| ccflags-y += -DNSS_DRV_QVPN_ENABLE | ccflags-y += -DNSS_DRV_QVPN_ENABLE | ||||||
| qca-nss-drv-objs += \ | qca-nss-drv-objs += \ | ||||||
|              nss_qvpn.o \ | 	     nss_qvpn.o \ | ||||||
|              nss_qvpn_stats.o \ | 	     nss_qvpn_log.o \ | ||||||
|              nss_qvpn_log.o | 	     nss_qvpn_stats.o \ | ||||||
|  | 	     nss_qvpn_strings.o | ||||||
| endif | endif | ||||||
| ifneq "$(NSS_DRV_TLS_ENABLE)" "n" | ifneq "$(NSS_DRV_TLS_ENABLE)" "n" | ||||||
| ccflags-y += -DNSS_DRV_TLS_ENABLE | ccflags-y += -DNSS_DRV_TLS_ENABLE | ||||||
| qca-nss-drv-objs += \ | qca-nss-drv-objs += \ | ||||||
| 		     nss_tls.o \ | 		     nss_tls.o \ | ||||||
| 		     nss_tls_log.o | 		     nss_tls_log.o \ | ||||||
|  | 		     nss_tls_stats.o \ | ||||||
|  | 		     nss_tls_strings.o | ||||||
| endif | endif | ||||||
| endif | endif | ||||||
|  |  | ||||||
| @@ -411,21 +470,27 @@ ifneq "$(NSS_DRV_IPSEC_ENABLE)" "n" | |||||||
| ccflags-y += -DNSS_DRV_IPSEC_ENABLE | ccflags-y += -DNSS_DRV_IPSEC_ENABLE | ||||||
| qca-nss-drv-objs += \ | qca-nss-drv-objs += \ | ||||||
| 		    nss_ipsec_cmn_log.o \ | 		    nss_ipsec_cmn_log.o \ | ||||||
| 		    nss_ipsec_cmn.o | 		    nss_ipsec_cmn.o \ | ||||||
|  | 		    nss_ipsec_cmn_stats.o \ | ||||||
|  | 		    nss_ipsec_cmn_strings.o | ||||||
| endif | endif | ||||||
|  |  | ||||||
| ifneq "$(NSS_DRV_CRYPTO_ENABLE)" "n" | ifneq "$(NSS_DRV_CRYPTO_ENABLE)" "n" | ||||||
| ccflags-y += -DNSS_DRV_CRYPTO_ENABLE | ccflags-y += -DNSS_DRV_CRYPTO_ENABLE | ||||||
| qca-nss-drv-objs += \ | qca-nss-drv-objs += \ | ||||||
| 		    nss_crypto_cmn.o \ | 		    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 | endif | ||||||
|  |  | ||||||
| ifneq "$(NSS_DRV_DTLS_ENABLE)" "n" | ifneq "$(NSS_DRV_DTLS_ENABLE)" "n" | ||||||
| ccflags-y += -DNSS_DRV_DTLS_ENABLE | ccflags-y += -DNSS_DRV_DTLS_ENABLE | ||||||
| qca-nss-drv-objs += \ | qca-nss-drv-objs += \ | ||||||
| 		    nss_dtls_cmn.o \ | 		    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 | endif | ||||||
| ccflags-y += -I$(obj)/nss_hal/ipq50xx -DNSS_HAL_IPQ50XX_SUPPORT -DNSS_MULTI_H2N_DATA_RING_SUPPORT | ccflags-y += -I$(obj)/nss_hal/ipq50xx -DNSS_HAL_IPQ50XX_SUPPORT -DNSS_MULTI_H2N_DATA_RING_SUPPORT | ||||||
| endif | 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_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 += -I$(obj)/nss_data_plane/hal/include | ||||||
| ccflags-y += -DNSS_PM_DEBUG_LEVEL=0 -DNSS_SKB_REUSE_SUPPORT=1 | 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))) | 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 |  * Permission to use, copy, modify, and/or distribute this software for | ||||||
|  * any purpose with or without fee is hereby granted, provided that the |  * any purpose with or without fee is hereby granted, provided that the | ||||||
|  * above copyright notice and this permission notice appear in all copies. |  * above copyright notice and this permission notice appear in all copies. | ||||||
| @@ -65,7 +65,6 @@ | |||||||
| #include "nss_wifi_vdev.h" | #include "nss_wifi_vdev.h" | ||||||
| #include "nss_n2h.h" | #include "nss_n2h.h" | ||||||
| #include "nss_rps.h" | #include "nss_rps.h" | ||||||
| #include "nss_wifi_if.h" |  | ||||||
| #include "nss_portid.h" | #include "nss_portid.h" | ||||||
| #include "nss_oam.h" | #include "nss_oam.h" | ||||||
| #include "nss_dtls.h" | #include "nss_dtls.h" | ||||||
| @@ -100,6 +99,10 @@ | |||||||
| #include "nss_lso_rx.h" | #include "nss_lso_rx.h" | ||||||
| #include "nss_wifi_mac_db_if.h" | #include "nss_wifi_mac_db_if.h" | ||||||
| #include "nss_wifi_ext_vdev_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 | ||||||
|  |  | ||||||
| #endif /*__KERNEL__ */ | #endif /*__KERNEL__ */ | ||||||
| @@ -120,7 +123,7 @@ | |||||||
| #define NSS_MAX_PHYSICAL_INTERFACES 8	/**< Maximum number of physical interfaces. */ | #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_VIRTUAL_INTERFACES 16	/**< Maximum number of virtual interfaces. */ | ||||||
| #define NSS_MAX_TUNNEL_INTERFACES 4	/**< Maximum number of tunnel 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. */ | #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) | #define NSS_DMA_INTERFACE (NSS_SPECIAL_IF_START + 66) | ||||||
| 		/**< Special interface number for the DMA interface. */ | 		/**< Special interface number for the DMA interface. */ | ||||||
| #define NSS_WIFI_EXT_VDEV_INTERFACE (NSS_SPECIAL_IF_START + 67) | #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. */ | #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 |  * 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); | 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 |  * nss_get_state | ||||||
|  *	Gets the NSS state. |  *	Gets the NSS state. | ||||||
|   | |||||||
| @@ -139,8 +139,8 @@ struct nss_capwap_stats_msg { | |||||||
|  |  | ||||||
| 	uint32_t rx_frag_timeout_drops; | 	uint32_t rx_frag_timeout_drops; | ||||||
| 			/**< Packets dropped because of a reassembly timeout. */ | 			/**< Packets dropped because of a reassembly timeout. */ | ||||||
| 	uint32_t rx_queue_full_drops; | 	uint32_t rx_n2h_drops; | ||||||
| 			/**< Packets dropped because the queue is full. */ | 			/**< Packets dropped because of error in packet processing. */ | ||||||
| 	uint32_t rx_n2h_queue_full_drops; | 	uint32_t rx_n2h_queue_full_drops; | ||||||
| 			/**< Packets dropped because the NSS-to-host queue is full. */ | 			/**< Packets dropped because the NSS-to-host queue is full. */ | ||||||
| 	uint32_t rx_csum_drops; | 	uint32_t rx_csum_drops; | ||||||
| @@ -297,6 +297,14 @@ struct nss_capwap_flow_rule_msg { | |||||||
| 	uint32_t flow_id;		/**< Flow identification. */ | 	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 |  * nss_capwap_msg | ||||||
|  *	Data for sending and receiving CAPWAP messages. |  *	Data for sending and receiving CAPWAP messages. | ||||||
| @@ -322,6 +330,8 @@ struct nss_capwap_msg { | |||||||
| 				/**< Flow rule add message. */ | 				/**< Flow rule add message. */ | ||||||
| 		struct nss_capwap_flow_rule_msg flow_rule_del; | 		struct nss_capwap_flow_rule_msg flow_rule_del; | ||||||
| 				/**< Flow rule delete message. */ | 				/**< Flow rule delete message. */ | ||||||
|  | 		struct nss_capwap_enable_tunnel_msg enable_tunnel; | ||||||
|  | 				/**< Enable tunnel message. */ | ||||||
| 	} msg;			/**< Message payload. */ | 	} msg;			/**< Message payload. */ | ||||||
| }; | }; | ||||||
|  |  | ||||||
| @@ -358,8 +368,8 @@ struct nss_capwap_tunnel_stats { | |||||||
|  |  | ||||||
| 	uint64_t rx_frag_timeout_drops; | 	uint64_t rx_frag_timeout_drops; | ||||||
| 			/**< Packets dropped because of a reassembly timeout. */ | 			/**< Packets dropped because of a reassembly timeout. */ | ||||||
| 	uint64_t rx_queue_full_drops; | 	uint64_t rx_n2h_drops; | ||||||
| 			/**< Packets dropped because the queue is full. */ | 			/**< Packets dropped because of error in processing the packet. */ | ||||||
| 	uint64_t rx_n2h_queue_full_drops; | 	uint64_t rx_n2h_queue_full_drops; | ||||||
| 			/**< Packets dropped because the NSS-to-host queue is full. */ | 			/**< Packets dropped because the NSS-to-host queue is full. */ | ||||||
| 	uint64_t rx_csum_drops; | 	uint64_t rx_csum_drops; | ||||||
| @@ -374,6 +384,7 @@ struct nss_capwap_tunnel_stats { | |||||||
| 	/* | 	/* | ||||||
| 	 * Tx/encap 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_segments;		/**< Number of segments or fragments. */ | ||||||
| 	uint64_t tx_queue_full_drops; | 	uint64_t tx_queue_full_drops; | ||||||
| 			/**< Packets dropped because the queue is full. */ | 			/**< 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 |  * Permission to use, copy, modify, and/or distribute this software for | ||||||
|  * any purpose with or without fee is hereby granted, provided that the |  * any purpose with or without fee is hereby granted, provided that the | ||||||
|  * above copyright notice and this permission notice appear in all copies. |  * 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_MAX,			/**< Maximum error type. */ | ||||||
| } nss_clmap_error_t; | } 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 |  * nss_clmap_stats_msg | ||||||
|  *	Per-interface statistics messages from the NSS firmware. |  *	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. */ | 	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 |  * nss_clmap_msg | ||||||
|  *	Data for sending and receiving client map messages. |  *	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, | 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_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 |  * Permission to use, copy, modify, and/or distribute this software for | ||||||
|  * any purpose with or without fee is hereby granted, provided that the |  * any purpose with or without fee is hereby granted, provided that the | ||||||
|  * above copyright notice and this permission notice appear in all copies. |  * 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 |  * @struct nss_ctx_instance | ||||||
|  *	Forward declaration for structure that contains instance data for each |  *	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 |  * Permission to use, copy, modify, and/or distribute this software for | ||||||
|  * any purpose with or without fee is hereby granted, provided that the |  * 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_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 |  * nss_dma_test_type | ||||||
|  *	DMA Test types. |  *	DMA Test types. | ||||||
| @@ -64,6 +101,15 @@ enum nss_dma_test_type { | |||||||
| 	NSS_DMA_TEST_TYPE_MAX			/**< Maximum 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. */ | #ifdef __KERNEL__ /* only kernel will use. */ | ||||||
| /* | /* | ||||||
|  * Maximum number of HW specific statistics |  * Maximum number of HW specific statistics | ||||||
| @@ -129,11 +175,6 @@ struct nss_dma_msg { | |||||||
|  * nss_dma_register_handler |  * nss_dma_register_handler | ||||||
|  *	Registers the DMA message handler. |  *	Registers the DMA message handler. | ||||||
|  * |  * | ||||||
|  * @datatypes |  | ||||||
|  * nss_ctx_instance |  | ||||||
|  * |  | ||||||
|  * @param[in] nss_ctx  Pointer to the NSS context. |  | ||||||
|  * |  | ||||||
|  * @return |  * @return | ||||||
|  * None. |  * None. | ||||||
|  */ |  */ | ||||||
| @@ -255,6 +296,34 @@ void nss_dma_init(void); | |||||||
|  * Pointer to the NSS core context. |  * Pointer to the NSS core context. | ||||||
|  */ |  */ | ||||||
| extern struct nss_ctx_instance *nss_dma_get_context(void); | 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__ */ | #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 |  * Permission to use, copy, modify, and/or distribute this software for | ||||||
|  * any purpose with or without fee is hereby granted, provided that the |  * any purpose with or without fee is hereby granted, provided that the | ||||||
|  * above copyright notice and this permission notice appear in all copies. |  * 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_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 |  * nss_dtls_cmn_node_stats | ||||||
|  * 	DTLS node statistics. |  * 	DTLS node statistics. | ||||||
| @@ -183,6 +262,16 @@ struct nss_dtls_cmn_ctx_config_dtls { | |||||||
| 	uint8_t res1;		/**< Reserved for alignment. */ | 	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 |  * nss_dtls_cmn_msg | ||||||
|  *	Data for sending and receiving DTLS messages. |  *	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, | 						enum nss_dtls_cmn_msg_type type, uint16_t len, | ||||||
| 						struct nss_dtls_cmn_msg *ndcm, enum nss_dtls_cmn_error *resp); | 						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 |  * nss_dtls_cmn_register_if | ||||||
|  *	Registers a DTLS session interface with the NSS for sending and receiving |  *	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); | 							 void *app_ctx); | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * nss_dtls_cmn_unregister_if |  * nss_dtls_cmn_notify_unregister | ||||||
|  *	Deregisters a DTLS session interface from the NSS. |  *	Deregisters an event callback. | ||||||
|  * |  * | ||||||
|  * @param[in] if_num  NSS interface number. |  * @param[in] ifnum  NSS interface number. | ||||||
|  * |  * | ||||||
|  * @return |  * @return | ||||||
|  * None. |  * 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 |  * 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] ifnum     NSS interface number. | ||||||
|  * @param[in] ev_cb     Callback for DTLS tunnel message. |  * @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, | extern struct nss_ctx_instance *nss_dtls_cmn_notify_register(uint32_t ifnum, nss_dtls_cmn_msg_callback_t ev_cb, | ||||||
| 							     void *app_data); | 							     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 |  * nss_dtls_cmn_msg_init | ||||||
|  *	Initializes a DTLS message. |  *	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); | 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 |  * Permission to use, copy, modify, and/or distribute this software for | ||||||
|  * any purpose with or without fee is hereby granted, provided that the |  * any purpose with or without fee is hereby granted, provided that the | ||||||
|  * above copyright notice and this permission notice appear in all copies. |  * above copyright notice and this permission notice appear in all copies. | ||||||
| @@ -40,10 +40,10 @@ | |||||||
| enum nss_dynamic_interface_type { | enum nss_dynamic_interface_type { | ||||||
| 	NSS_DYNAMIC_INTERFACE_TYPE_NONE, | 	NSS_DYNAMIC_INTERFACE_TYPE_NONE, | ||||||
| 	NSS_DYNAMIC_INTERFACE_TYPE_GRE_REDIR, | 	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_INNER, | ||||||
| 	NSS_DYNAMIC_INTERFACE_TYPE_TUNIPIP6_OUTER, | 	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_VAP, | ||||||
| 	NSS_DYNAMIC_INTERFACE_TYPE_RESERVED_0, | 	NSS_DYNAMIC_INTERFACE_TYPE_RESERVED_0, | ||||||
| 	NSS_DYNAMIC_INTERFACE_TYPE_PPPOE, | 	NSS_DYNAMIC_INTERFACE_TYPE_PPPOE, | ||||||
| @@ -105,6 +105,11 @@ enum nss_dynamic_interface_type { | |||||||
| 	NSS_DYNAMIC_INTERFACE_TYPE_TLS_OUTER, | 	NSS_DYNAMIC_INTERFACE_TYPE_TLS_OUTER, | ||||||
| 	NSS_DYNAMIC_INTERFACE_TYPE_MIRROR, | 	NSS_DYNAMIC_INTERFACE_TYPE_MIRROR, | ||||||
| 	NSS_DYNAMIC_INTERFACE_TYPE_WIFI_EXT_VDEV_WDS, | 	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 | 	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 |  * Permission to use, copy, modify, and/or distribute this software for | ||||||
|  * any purpose with or without fee is hereby granted, provided that the |  * any purpose with or without fee is hereby granted, provided that the | ||||||
|  * above copyright notice and this permission notice appear in all copies. |  * 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_DESC, | ||||||
| 	NSS_EDMA_STATS_RX_QOS_ERR, | 	NSS_EDMA_STATS_RX_QOS_ERR, | ||||||
| 	NSS_EDMA_STATS_RX_SRC_PORT_INVALID, | 	NSS_EDMA_STATS_RX_SRC_PORT_INVALID, | ||||||
|  | 	NSS_EDMA_STATS_RX_SRC_IF_INVALID, | ||||||
| 	NSS_EDMA_STATS_RX_MAX | 	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 desc_cnt;		/**< Number of descriptors processed. */ | ||||||
| 	uint32_t qos_err;		/**< Number of QoS errors. */ | 	uint32_t qos_err;		/**< Number of QoS errors. */ | ||||||
| 	uint32_t rx_src_port_invalid;	/**< Number of source port invalid 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 |  * Permission to use, copy, modify, and/or distribute this software for | ||||||
|  * any purpose with or without fee is hereby granted, provided that the |  * any purpose with or without fee is hereby granted, provided that the | ||||||
|  * above copyright notice and this permission notice appear in all copies. |  * 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 |  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||||||
|  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT |  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT | ||||||
|  * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |  * 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 { | enum nss_gre_base_types { | ||||||
| 	GRE_BASE_RX_PACKETS,			/**< Rx packet count. */ | 	NSS_GRE_BASE_RX_PACKETS,		/**< Receive packet count. */ | ||||||
| 	GRE_BASE_RX_DROPPED,			/**< Number of packet dropped at Rx. */ | 	NSS_GRE_BASE_RX_DROPPED,		/**< Number of packet dropped at receive. */ | ||||||
| 	GRE_BASE_EXP_ETH_HDR_MISSING,		/**< Ethernet header missing. */ | 	NSS_GRE_BASE_EXP_ETH_HDR_MISSING,	/**< Ethernet header missing. */ | ||||||
| 	GRE_BASE_EXP_ETH_TYPE_NON_IP,		/**< Packet is not IPV4 or IPV6. */ | 	NSS_GRE_BASE_EXP_ETH_TYPE_NON_IP,	/**< Packet is not IPV4 or IPV6. */ | ||||||
| 	GRE_BASE_EXP_IP_UNKNOWN_PROTOCOL,	/**< Packet protocol is unknown. */ | 	NSS_GRE_BASE_EXP_IP_UNKNOWN_PROTOCOL,	/**< Packet protocol is unknown. */ | ||||||
| 	GRE_BASE_EXP_IP_HEADER_INCOMPLETE,	/**< Bad IP header. */ | 	NSS_GRE_BASE_EXP_IP_HEADER_INCOMPLETE,	/**< Bad IP header. */ | ||||||
| 	GRE_BASE_EXP_IP_BAD_TOTAL_LENGTH,	/**< IP total lenghth is invalid. */ | 	NSS_GRE_BASE_EXP_IP_BAD_TOTAL_LENGTH,	/**< IP total length is invalid. */ | ||||||
| 	GRE_BASE_EXP_IP_BAD_CHECKSUM,		/**< IP checksum is bad. */ | 	NSS_GRE_BASE_EXP_IP_BAD_CHECKSUM,	/**< IP checksum is bad. */ | ||||||
| 	GRE_BASE_EXP_IP_DATAGRAM_INCOMPLETE,	/**< Bad packet. */ | 	NSS_GRE_BASE_EXP_IP_DATAGRAM_INCOMPLETE,/**< Bad packet. */ | ||||||
| 	GRE_BASE_EXP_IP_FRAGMENT,		/**< IP packet is a fragment. */ | 	NSS_GRE_BASE_EXP_IP_FRAGMENT,		/**< IP packet is a fragment. */ | ||||||
| 	GRE_BASE_EXP_IP_OPTIONS_INCOMPLETE,	/**< IP option is invalid. */ | 	NSS_GRE_BASE_EXP_IP_OPTIONS_INCOMPLETE,	/**< IP option is invalid. */ | ||||||
| 	GRE_BASE_EXP_IP_WITH_OPTIONS,		/**< IP packet with options. */ | 	NSS_GRE_BASE_EXP_IP_WITH_OPTIONS,	/**< IP packet with options. */ | ||||||
| 	GRE_BASE_EXP_IPV6_UNKNOWN_PROTOCOL,	/**< Protocol is unknown. */ | 	NSS_GRE_BASE_EXP_IPV6_UNKNOWN_PROTOCOL,	/**< Protocol is unknown. */ | ||||||
| 	GRE_BASE_EXP_IPV6_HEADER_INCOMPLETE,	/**< Incomplete ipv6 header. */ | 	NSS_GRE_BASE_EXP_IPV6_HEADER_INCOMPLETE,/**< Incomplete ipv6 header. */ | ||||||
| 	GRE_BASE_EXP_GRE_UNKNOWN_SESSION,	/**< Unknown GRE session. */ | 	NSS_GRE_BASE_EXP_GRE_UNKNOWN_SESSION,	/**< Unknown GRE session. */ | ||||||
| 	GRE_BASE_EXP_GRE_NODE_INACTIVE,		/**< GRE node is inactive. */ | 	NSS_GRE_BASE_EXP_GRE_NODE_INACTIVE,	/**< GRE node is inactive. */ | ||||||
| 	GRE_BASE_DEBUG_MAX,			/**< GRE base debug max. */ | 	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 { | enum nss_gre_session_types { | ||||||
| 	GRE_SESSION_PBUF_ALLOC_FAIL,		/**< Pbuf allocation failure. */ | 	NSS_GRE_SESSION_PBUF_ALLOC_FAIL,		/**< Pbuf allocation failure. */ | ||||||
| 	GRE_SESSION_DECAP_FORWARD_ENQUEUE_FAIL,	/**< Rx forward enqueue failure. */ | 	NSS_GRE_SESSION_DECAP_FORWARD_ENQUEUE_FAIL,	/**< Receive forward enqueue failure. */ | ||||||
| 	GRE_SESSION_ENCAP_FORWARD_ENQUEUE_FAIL,	/**< Tx forward enqueue failure. */ | 	NSS_GRE_SESSION_ENCAP_FORWARD_ENQUEUE_FAIL,	/**< Transmit forward enqueue failure. */ | ||||||
| 	GRE_SESSION_DECAP_TX_FORWARDED,		/**< Number of packets forwarded after decap. */ | 	NSS_GRE_SESSION_DECAP_TX_FORWARDED,		/**< Number of packets forwarded after decapsulation. */ | ||||||
| 	GRE_SESSION_ENCAP_RX_RECEIVED,		/**< Number of packets received for encap. */ | 	NSS_GRE_SESSION_ENCAP_RX_RECEIVED,		/**< Number of packets received for encapsulation. */ | ||||||
| 	GRE_SESSION_ENCAP_RX_DROPPED,		/**< Packets dropped while enqueuing for encap. */ | 	NSS_GRE_SESSION_ENCAP_RX_DROPPED,		/**< Packets dropped while enqueuing for encapsulation. */ | ||||||
| 	GRE_SESSION_ENCAP_RX_LINEAR_FAIL,	/**< Packets dropped during encap linearization. */ | 	NSS_GRE_SESSION_ENCAP_RX_LINEAR_FAIL,		/**< Packets dropped during encapsulation linearization. */ | ||||||
| 	GRE_SESSION_EXP_RX_KEY_ERROR,		/**< Rx KEY error. */ | 	NSS_GRE_SESSION_EXP_RX_KEY_ERROR,		/**< Receive key error. */ | ||||||
| 	GRE_SESSION_EXP_RX_SEQ_ERROR,		/**< Rx Sequence number error. */ | 	NSS_GRE_SESSION_EXP_RX_SEQ_ERROR,		/**< Receive Sequence number error. */ | ||||||
| 	GRE_SESSION_EXP_RX_CS_ERROR,		/**< Rx checksum error */ | 	NSS_GRE_SESSION_EXP_RX_CS_ERROR,		/**< Receive checksum error */ | ||||||
| 	GRE_SESSION_EXP_RX_FLAG_MISMATCH,	/**< Rx flag mismatch. */ | 	NSS_GRE_SESSION_EXP_RX_FLAG_MISMATCH,		/**< Receive flag mismatch. */ | ||||||
| 	GRE_SESSION_EXP_RX_MALFORMED,		/**< Rx packet is malformed. */ | 	NSS_GRE_SESSION_EXP_RX_MALFORMED,		/**< Receive packet is malformed. */ | ||||||
| 	GRE_SESSION_EXP_RX_INVALID_PROTOCOL,	/**< Rx packet protocol is invalid. */ | 	NSS_GRE_SESSION_EXP_RX_INVALID_PROTOCOL,	/**< Receive packet protocol is invalid. */ | ||||||
| 	GRE_SESSION_EXP_RX_NO_HEADROOM,		/**< Packet does not have enough headroom. */ | 	NSS_GRE_SESSION_EXP_RX_NO_HEADROOM,		/**< Packet does not have enough headroom. */ | ||||||
| 	GRE_SESSION_DEBUG_MAX,			/**< Session debug max. */ | 	NSS_GRE_SESSION_DEBUG_MAX,			/**< Session debug maximum. */ | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /** | /** | ||||||
| @@ -207,15 +209,34 @@ struct nss_gre_deconfig_msg { | |||||||
|  * GRE session statistics message |  * GRE session statistics message | ||||||
|  */ |  */ | ||||||
| struct nss_gre_session_stats_msg { | struct nss_gre_session_stats_msg { | ||||||
| 	struct nss_cmn_node_stats node_stats;	/**< Common node statistics. */ | 	struct nss_cmn_node_stats node_stats;		/**< Common node statistics. */ | ||||||
| 	uint32_t stats[GRE_SESSION_DEBUG_MAX];	/**< Session debug statistics. */ | 	uint32_t stats[NSS_GRE_SESSION_DEBUG_MAX];	/**< Session debug statistics. */ | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * GRE base statistics message |  * GRE base statistics message | ||||||
|  */ |  */ | ||||||
| struct nss_gre_base_stats_msg { | 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); | 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 |  * Permission to use, copy, modify, and/or distribute this software for | ||||||
|  * any purpose with or without fee is hereby granted, provided that the |  * any purpose with or without fee is hereby granted, provided that the | ||||||
|  * above copyright notice and this permission notice appear in all copies. |  * 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_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 |  * nss_gre_redir_inner_configure_msg | ||||||
|  *	Message information for configuring GRE inner node. |  *	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. */ | 	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 |  * nss_gre_redir_tunnel_stats | ||||||
|  *	GRE redirect statistics as seen by the HLOS. |  *	GRE redirect statistics as seen by the HLOS. | ||||||
|  */ |  */ | ||||||
| struct nss_gre_redir_tunnel_stats { | struct nss_gre_redir_tunnel_stats { | ||||||
| 	struct net_device *dev;				/**< Net device. */ | 	struct net_device *dev;			/**< Net device. */ | ||||||
| 	struct nss_cmn_node_stats node_stats;		/**< Common node statistics. */ | 	struct nss_gre_redir_tun_stats tstats;	/**< Structure to accumulate all the statistics. */ | ||||||
| 	uint64_t tx_dropped;				/**< Dropped Tx packets. */ | 	uint32_t ref_count;			/**< Reference count for statistics. */ | ||||||
| 	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. */ |  * nss_gre_redir_stats_notification | ||||||
| 	uint64_t exception_us_rx;			/**< Upstream exception Rx packet counter. */ |  *	GRE redirect transmission statistics structure. | ||||||
| 	uint64_t exception_us_tx;			/**< Upstream exception Tx packet counter. */ |  */ | ||||||
| 	uint64_t exception_ds_rx;			/**< Downstream exception Rx packet counter. */ | struct nss_gre_redir_stats_notification { | ||||||
| 	uint64_t exception_ds_tx;			/**< Downstream exception Tx packet counter. */ | 	struct nss_gre_redir_tunnel_stats stats_ctx;	/**< Context transmission statistics. */ | ||||||
| 	uint64_t encap_sg_alloc_drop;			/**< Encapsulation drop counters due to scatter gather buffer allocation failure. */ | 	uint32_t core_id;				/**< Core ID. */ | ||||||
| 	uint64_t decap_fail_drop;			/**< Decapsulation drop counters due to invalid IP header. */ | 	uint32_t if_num;				/**< Interface number. */ | ||||||
| 	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. */ |  | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /** | /** | ||||||
| @@ -466,7 +549,7 @@ extern nss_tx_status_t nss_gre_redir_tx_buf_noreuse(struct nss_ctx_instance *nss | |||||||
| 			uint32_t if_num); | 			uint32_t if_num); | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * nss_gre_redir_get_stats |  * nss_gre_redir_stats_get | ||||||
|  *	Gets GRE redirect tunnel statistics. |  *	Gets GRE redirect tunnel statistics. | ||||||
|  * |  * | ||||||
|  * @datatypes |  * @datatypes | ||||||
| @@ -478,7 +561,7 @@ extern nss_tx_status_t nss_gre_redir_tx_buf_noreuse(struct nss_ctx_instance *nss | |||||||
|  * @return |  * @return | ||||||
|  * TRUE or FALSE. |  * 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 |  * 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); | 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 |  * Permission to use, copy, modify, and/or distribute this software for | ||||||
|  * any purpose with or without fee is hereby granted, provided that the |  * any purpose with or without fee is hereby granted, provided that the | ||||||
|  * above copyright notice and this permission notice appear in all copies. |  * 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_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 |  * nss_gre_redir_lag_us_hash_mode | ||||||
|  *	GRE redirect LAG upstream hash modes. |  *	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. */ | 	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 |  * nss_gre_redir_lag_ds_add_sta_msg | ||||||
|  *	Message to add station in LAG deployment. |  *	Message to add station in LAG deployment. | ||||||
| @@ -320,15 +363,26 @@ struct nss_gre_redir_lag_ds_msg { | |||||||
|  *	Downstream statistics. |  *	Downstream statistics. | ||||||
|  */ |  */ | ||||||
| struct nss_gre_redir_lag_ds_tun_stats { | struct nss_gre_redir_lag_ds_tun_stats { | ||||||
| 	uint64_t rx_packets;					/**< Received packets. */ | 	uint64_t rx_packets;		/**< Received packets. */ | ||||||
| 	uint64_t rx_bytes;					/**< Received bytes. */ | 	uint64_t rx_bytes;		/**< Received bytes. */ | ||||||
| 	uint64_t tx_packets;					/**< Transmit packets. */ | 	uint64_t tx_packets;		/**< Transmit packets. */ | ||||||
| 	uint64_t tx_bytes;					/**< Transmit bytes. */ | 	uint64_t tx_bytes;		/**< Transmit bytes. */ | ||||||
| 	uint64_t rx_dropped[NSS_MAX_NUM_PRI];			/**< Packets dropped on receive due to queue full. */ | 	uint64_t rx_dropped[NSS_MAX_NUM_PRI]; | ||||||
| 	uint64_t dst_invalid;					/**< Packets that do not have a valid destination. */ | 					/**< Packets dropped on receive due to queue full. */ | ||||||
| 	uint64_t exception_cnt;					/**< Packets that are exceptioned to host. */ | 	uint64_t dst_invalid;		/**< Packets that do not have a valid destination. */ | ||||||
| 	uint32_t ifnum;						/**< NSS interface number. */ | 	uint64_t exception_cnt;		/**< Packets that are exceptioned to host. */ | ||||||
| 	bool valid;						/**< Valid flag. */ | 	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); | 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. |  *	Fetches common node statistics for upstream GRE Redir LAG. | ||||||
|  * |  * | ||||||
|  * @datatypes |  * @datatypes | ||||||
| @@ -580,10 +634,10 @@ extern nss_tx_status_t nss_gre_redir_lag_ds_tx_msg_sync(struct nss_ctx_instance | |||||||
|  * @return |  * @return | ||||||
|  * True if successful, else false. |  * 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. |  *	Fetches common node statistics for downstream GRE Redir LAG. | ||||||
|  * |  * | ||||||
|  * @datatypes |  * @datatypes | ||||||
| @@ -595,7 +649,7 @@ extern bool nss_gre_redir_lag_us_get_cmn_stats(struct nss_gre_redir_lag_us_tunne | |||||||
|  * @return |  * @return | ||||||
|  * True if successful, else false. |  * 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 |  * 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); | 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 |  * Permission to use, copy, modify, and/or distribute this software for | ||||||
|  * any purpose with or without fee is hereby granted, provided that the |  * any purpose with or without fee is hereby granted, provided that the | ||||||
|  * above copyright notice and this permission notice appear in all copies. |  * 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_HLOS_MAGIC 0xaade	/**< Metadata magic set by HLOS. */ | ||||||
| #define NSS_GRE_REDIR_MARK_NSS_MAGIC 0xaadf	/**< Metadata magic set by NSS. */ | #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 |  * nss_gre_redir_mark messages | ||||||
|  *	Message types for GRE redirect mark requests and responses. |  *	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_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 |  * nss_gre_redir_mark_metadata | ||||||
|  *	HLOS to NSS per packet downstream 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 wifi_tid;		/**< TID value. */ | ||||||
| 	uint8_t app_id;			/**< Application ID. */ | 	uint8_t app_id;			/**< Application ID. */ | ||||||
| 	uint16_t hw_hash_idx;		/**< Hardware AST hash index value. */ | 	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 offset;		/**< Buffer offset from the metadata. */ | ||||||
| 	uint16_t magic;			/**< Metadata magic. */ | 	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_gre_redir_mark_stats_sync_msg { | ||||||
| 	struct nss_cmn_node_stats node_stats;	/**< Common node statistics. */ | 	struct nss_cmn_node_stats node_stats;	/**< Common node statistics. */ | ||||||
| 	uint32_t hlos_magic_fail;               /**< HLOS magic fail count. */ | 	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_success;		/**< Next egress interface enqueue success count. */ | ||||||
| 	uint32_t dst_enqueue_drop;		/**< Next egress interface enqueue drop 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 headroom_unavail;		/**< Packet headroom unavailable to write metadata. */ | ||||||
| 	uint32_t tx_completion_success;		/**< Tx completion host enqueue success count. */ | 	uint32_t tx_completion_success;		/**< Transmit completion host enqueue success count. */ | ||||||
| 	uint32_t tx_completion_drop;		/**< Tx completion host enqueue drop count. */ | 	uint32_t tx_completion_drop;		/**< Transmit completion host enqueue drop count. */ | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * nss_gre_redir_mark_register_cb_msg |  * 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 { | 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); | 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. |  *      Gets GRE redirect mark statistics. | ||||||
|  * |  * | ||||||
|  * @datatypes |  * @datatypes | ||||||
| @@ -223,7 +252,7 @@ extern nss_tx_status_t nss_gre_redir_mark_tx_msg_sync(struct nss_ctx_instance *n | |||||||
|  * @return |  * @return | ||||||
|  * TRUE or FALSE. |  * 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 |  * 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); | 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 |  * Permission to use, copy, modify, and/or distribute this software for | ||||||
|  * any purpose with or without fee is hereby granted, provided that the |  * any purpose with or without fee is hereby granted, provided that the | ||||||
|  * above copyright notice and this permission notice appear in all copies. |  * 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 |  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||||||
|  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT |  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT | ||||||
|  * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |  * 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_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 |  * nss_gre_tunnel_di_to_wlan_id | ||||||
|  *	Dynamic interface to WLAN ID message structure. |  *	Dynamic interface to WLAN ID message structure. | ||||||
| @@ -151,20 +186,20 @@ struct nss_gre_tunnel_stats { | |||||||
| 	uint32_t rx_dropped_hroom; | 	uint32_t rx_dropped_hroom; | ||||||
| 				/**< Packets dropped because of insufficent headroom. */ | 				/**< Packets dropped because of insufficent headroom. */ | ||||||
| 	uint32_t rx_cbuf_alloc_fail; | 	uint32_t rx_cbuf_alloc_fail; | ||||||
| 				/**< Rx crypto buffer allocation failed. */ | 				/**< Receive crypto buffer allocation failed. */ | ||||||
| 	uint32_t rx_cenqueue_fail;		/**< Rx enqueue-to-crypto failed. */ | 	uint32_t rx_cenqueue_fail;		/**< Receive enqueue-to-crypto failed. */ | ||||||
| 	uint32_t rx_decrypt_done;		/**< Rx decryption is complete. */ | 	uint32_t rx_decrypt_done;		/**< Receive decryption is complete. */ | ||||||
| 	uint32_t rx_forward_enqueue_fail;	/**< Rx forward enqueue failed. */ | 	uint32_t rx_forward_enqueue_fail;	/**< Receive forward enqueue failed. */ | ||||||
| 	uint32_t tx_cbuf_alloc_fail; | 	uint32_t tx_cbuf_alloc_fail; | ||||||
| 				/**< Rx crypto buffer allocation failed. */ | 				/**< Receive crypto buffer allocation failed. */ | ||||||
| 	uint32_t tx_cenqueue_fail;		/**< Tx enqueue-to-crypto failed. */ | 	uint32_t tx_cenqueue_fail;		/**< Transmit enqueue-to-crypto failed. */ | ||||||
| 	uint32_t rx_dropped_troom; | 	uint32_t rx_dropped_troom; | ||||||
| 				/**< Packets dropped because of insufficent tailroom. */ | 				/**< Packets dropped because of insufficent tailroom. */ | ||||||
| 	uint32_t tx_forward_enqueue_fail;	/**< Tx forward enqueue failed. */ | 	uint32_t tx_forward_enqueue_fail;	/**< Transmit forward enqueue failed. */ | ||||||
| 	uint32_t tx_cipher_done;		/**< Tx cipher is complete. */ | 	uint32_t tx_cipher_done;		/**< Transmit cipher is complete. */ | ||||||
| 	uint32_t crypto_nosupp; | 	uint32_t crypto_nosupp; | ||||||
| 				/**< Error count for non-supported crypto packets. */ | 				/**< 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. */ | 	uint32_t rx_unaligned_pkt;		/**< Counter for unaligned packets. */ | ||||||
| #if defined(NSS_HAL_IPQ807x_SUPPORT) | #if defined(NSS_HAL_IPQ807x_SUPPORT) | ||||||
| 	uint32_t crypto_resp_error[NSS_CRYPTO_CMN_RESP_ERROR_MAX]; | 	uint32_t crypto_resp_error[NSS_CRYPTO_CMN_RESP_ERROR_MAX]; | ||||||
| @@ -172,6 +207,17 @@ struct nss_gre_tunnel_stats { | |||||||
| #endif | #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 |  * nss_gre_tunnel_msg | ||||||
|  *	Data for sending and receiving GRE tunnel messages. |  *	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, | 		struct nss_gre_tunnel_configure *inquiry_info, | ||||||
| 		nss_gre_tunnel_msg_callback_t cb, void *app_data); | 		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 |  * Permission to use, copy, modify, and/or distribute this software for | ||||||
|  * any purpose with or without fee is hereby granted, provided that the |  * any purpose with or without fee is hereby granted, provided that the | ||||||
|  * above copyright notice and this permission notice appear in all copies. |  * 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_SET_IGS_NODE, | ||||||
| 	NSS_IF_CLEAR_IGS_NODE, | 	NSS_IF_CLEAR_IGS_NODE, | ||||||
| 	NSS_IF_RESET_NEXTHOP, | 	NSS_IF_RESET_NEXTHOP, | ||||||
|  | 	NSS_IF_PPE_PORT_CREATE, | ||||||
|  | 	NSS_IF_PPE_PORT_DESTROY, | ||||||
| 	NSS_IF_MAX_MSG_TYPES = 9999, | 	NSS_IF_MAX_MSG_TYPES = 9999, | ||||||
| }; | }; | ||||||
|  |  | ||||||
| @@ -197,6 +199,14 @@ struct nss_if_igs_config { | |||||||
| 	int32_t igs_num;	/**< Ingress shaper interface number. */ | 	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 |  * nss_if_msgs | ||||||
|  *	Information for physical NSS interface command messages. |  *	Information for physical NSS interface command messages. | ||||||
| @@ -230,6 +240,8 @@ union nss_if_msgs { | |||||||
| 			/**< Set nexthop of interface. */ | 			/**< Set nexthop of interface. */ | ||||||
| 	struct nss_if_igs_config config_igs; | 	struct nss_if_igs_config config_igs; | ||||||
| 			/**< Configure an ingress shaper interface. */ | 			/**< 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_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 |  * Permission to use, copy, modify, and/or distribute this software for | ||||||
|  * any purpose with or without fee is hereby granted, provided that the |  * any purpose with or without fee is hereby granted, provided that the | ||||||
|  * above copyright notice and this permission notice appear in all copies. |  * 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_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 |  * nss_ipsec_cmn_flow_tuple | ||||||
|  *	IPsec tuple for creating flow entries. |  *	IPsec tuple for creating flow entries. | ||||||
| @@ -336,6 +367,16 @@ struct nss_ipsec_cmn_mdata { | |||||||
| 	} data;						/**< Metadata payload. */ | 	} 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 |  * nss_ipsec_cmn_msg | ||||||
|  *	Message structure for NSS IPsec messages. |  *	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); | 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 |  * nss_ipsec_cmn_register_if | ||||||
|  *	Registers the IPsec interface with the NSS for sending and |  *	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, | 						nss_ipsec_cmn_msg_callback_t cb_msg, | ||||||
| 						uint32_t features, enum nss_dynamic_interface_type type, void *app_data); | 						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 |  * nss_ipsec_cmn_notify_unregister | ||||||
|  *	Deregisters the message notifier from the HLOS driver. |  *	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); | 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 |  * nss_ipsec_cmn_msg_init | ||||||
|  *	Initializes an IPsec message. |  *	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); | 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 |  * Permission to use, copy, modify, and/or distribute this software for | ||||||
|  * any purpose with or without fee is hereby granted, provided that the |  * any purpose with or without fee is hereby granted, provided that the | ||||||
|  * above copyright notice and this permission notice appear in all copies. |  * 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 |  * nss_ipv4_message_types | ||||||
|  *	IPv4 bridge and routing rule 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. */ | 		/**< Number of IPv4 multicast connection destroy requests that missed the cache. */ | ||||||
| 	NSS_IPV4_STATS_MC_CONNECTION_FLUSHES, | 	NSS_IPV4_STATS_MC_CONNECTION_FLUSHES, | ||||||
| 		/**< Number of IPv4 multicast 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, | 	NSS_IPV4_STATS_MAX, | ||||||
| 		/**< Maximum message type. */ | 		/**< Maximum message type. */ | ||||||
| }; | }; | ||||||
| @@ -175,6 +286,7 @@ enum nss_ipv4_stats_types { | |||||||
| 		/**< Ingress shaping fields are valid. */ | 		/**< Ingress shaping fields are valid. */ | ||||||
| #define NSS_IPV4_RULE_CREATE_IDENTIFIER_VALID 0x1000 | #define NSS_IPV4_RULE_CREATE_IDENTIFIER_VALID 0x1000 | ||||||
| 		/**< Identifier is valid. */ | 		/**< Identifier is valid. */ | ||||||
|  | #define NSS_IPV4_RULE_CREATE_MIRROR_VALID 0x2000	/**< Mirror fields are valid. */ | ||||||
|  |  | ||||||
| /* | /* | ||||||
|  * Multicast command rule flags |  * Multicast command rule flags | ||||||
| @@ -237,6 +349,15 @@ enum nss_ipv4_stats_types { | |||||||
| #define NSS_IPV4_RETURN_IDENTIFIER_VALID 0x02 | #define NSS_IPV4_RETURN_IDENTIFIER_VALID 0x02 | ||||||
| 		/**< Identifier for return direction is valid. */ | 		/**< 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 |  * nss_ipv4_5tuple | ||||||
|  *	Common 5-tuple information. |  *	Common 5-tuple information. | ||||||
| @@ -410,6 +531,16 @@ struct nss_ipv4_identifier_rule { | |||||||
| 		/**< Identifier for return direction. */ | 		/**< 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 |  * nss_ipv4_error_response_types | ||||||
|  *	Error types for IPv4 messages. |  *	Error types for IPv4 messages. | ||||||
| @@ -478,6 +609,8 @@ struct nss_ipv4_rule_create_msg { | |||||||
| 			/**< Ingress shaping related accleration parameters. */ | 			/**< Ingress shaping related accleration parameters. */ | ||||||
| 	struct nss_ipv4_identifier_rule identifier; | 	struct nss_ipv4_identifier_rule identifier; | ||||||
| 			/**< Rule for adding 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; | 	uint32_t ipv4_mc_connection_flushes; | ||||||
| 			/**< Number of multicast 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]; | 	uint32_t exception_events[NSS_IPV4_EXCEPTION_EVENT_MAX]; | ||||||
| 			/**< Number of exception events. */ | 			/**< 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 |  * Permission to use, copy, modify, and/or distribute this software for | ||||||
|  * any purpose with or without fee is hereby granted, provided that the |  * any purpose with or without fee is hereby granted, provided that the | ||||||
|  * above copyright notice and this permission notice appear in all copies. |  * 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 |  * nss_ipv6_stats_types | ||||||
|  *	IPv6 node statistics. |  *	IPv6 node statistics. | ||||||
| @@ -76,6 +195,14 @@ enum nss_ipv6_stats_types { | |||||||
| 					/**< Number of IPv6 multicast connection destroy requests that missed the cache. */ | 					/**< Number of IPv6 multicast connection destroy requests that missed the cache. */ | ||||||
| 	NSS_IPV6_STATS_MC_CONNECTION_FLUSHES, | 	NSS_IPV6_STATS_MC_CONNECTION_FLUSHES, | ||||||
| 					/**< Number of IPv6 multicast 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, | 	NSS_IPV6_STATS_MAX, | ||||||
| 					/**< Maximum message type. */ | 					/**< Maximum message type. */ | ||||||
| }; | }; | ||||||
| @@ -169,6 +296,7 @@ enum nss_ipv6_dscp_map_actions { | |||||||
| 		/**< Destination MAC address fields are valid. */ | 		/**< Destination MAC address fields are valid. */ | ||||||
| #define NSS_IPV6_RULE_CREATE_IGS_VALID 0x800	/**< Ingress shaping 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_IDENTIFIER_VALID 0x1000	/**< Identifier is valid. */ | ||||||
|  | #define NSS_IPV6_RULE_CREATE_MIRROR_VALID 0x2000	/**< Mirror fields are valid. */ | ||||||
|  |  | ||||||
| /* | /* | ||||||
|  * Multicast command rule flags |  * Multicast command rule flags | ||||||
| @@ -229,6 +357,14 @@ enum nss_ipv6_dscp_map_actions { | |||||||
| #define NSS_IPV6_RETURN_IDENTIFIER_VALID 0x02 | #define NSS_IPV6_RETURN_IDENTIFIER_VALID 0x02 | ||||||
| 		/**< Identifier for return direction is valid. */ | 		/**< 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 |  * nss_ipv6_exception_events | ||||||
|  *	Exception events from an IPv6 bridge or route handler. |  *	Exception events from an IPv6 bridge or route handler. | ||||||
| @@ -460,6 +596,16 @@ struct nss_ipv6_identifier_rule { | |||||||
| 		/**< Identifier for return direction. */ | 		/**< 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 |  * nss_ipv6_error_response_types | ||||||
|  *	Error types for IPv6 messages. |  *	Error types for IPv6 messages. | ||||||
| @@ -556,6 +702,8 @@ struct nss_ipv6_rule_create_msg { | |||||||
| 			/**< Ingress shaping related accleration parameters. */ | 			/**< Ingress shaping related accleration parameters. */ | ||||||
| 	struct nss_ipv6_identifier_rule identifier; | 	struct nss_ipv6_identifier_rule identifier; | ||||||
| 			/**< Rule for adding 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; | 	uint32_t ipv6_mc_connection_flushes; | ||||||
| 			/**< Number of multicast 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]; | 	uint32_t exception_events[NSS_IPV6_EXCEPTION_EVENT_MAX]; | ||||||
| 			/**< Number of exception events. */ | 			/**< 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 |  * Permission to use, copy, modify, and/or distribute this software for | ||||||
|  * any purpose with or without fee is hereby granted, provided that the |  * any purpose with or without fee is hereby granted, provided that the | ||||||
|  * above copyright notice and this permission notice appear in all copies. |  * 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_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 |  * nss_map_t_msg_types | ||||||
|  *	Message types for MAP-T requests and responses. |  *	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 |  * Permission to use, copy, modify, and/or distribute this software for | ||||||
|  * any purpose with or without fee is hereby granted, provided that the |  * 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_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 |  * nss_mirror_configure_msg | ||||||
|  *	Mirror interface configuration information. |  *	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. */ | 	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 |  * nss_mirror_msg | ||||||
|  *	Data for sending and receiving mirror interface messages. |  *	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); | 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 |  * nss_mirror_register_if | ||||||
|  *	Registers a mirror interface with the NSS for sending and receiving messages. |  *	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, | 		nss_mirror_msg_callback_t event_callback, | ||||||
| 		struct net_device *netdev, uint32_t features); | 		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 |  * nss_mirror_verify_if_num | ||||||
|  *	Verify whether the interface is an mirror interface or not. |  *	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); | 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 |  * Permission to use, copy, modify, and/or distribute this software for | ||||||
|  * any purpose with or without fee is hereby granted, provided that the |  * any purpose with or without fee is hereby granted, provided that the | ||||||
|  * above copyright notice and this permission notice appear in all copies. |  * above copyright notice and this permission notice appear in all copies. | ||||||
| @@ -22,6 +22,8 @@ | |||||||
| #ifndef _NSS_PPE_H_ | #ifndef _NSS_PPE_H_ | ||||||
| #define _NSS_PPE_H_ | #define _NSS_PPE_H_ | ||||||
|  |  | ||||||
|  | typedef int32_t nss_ppe_port_t; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * @addtogroup nss_ppe_subsystem |  * @addtogroup nss_ppe_subsystem | ||||||
|  * @{ |  * @{ | ||||||
| @@ -56,6 +58,34 @@ enum nss_ppe_sc_type { | |||||||
| 	NSS_PPE_SC_MAX,			/**< Maximum service code. */ | 	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 */ | /** @} */ /* end_addtogroup nss_ppe_subsystem */ | ||||||
|  |  | ||||||
| #endif /* _NSS_PPE_H_ */ | #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 |  * Permission to use, copy, modify, and/or distribute this software for | ||||||
|  * any purpose with or without fee is hereby granted, provided that the |  * any purpose with or without fee is hereby granted, provided that the | ||||||
|  * above copyright notice and this permission notice appear in all copies. |  * 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_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_HEAD_SIZE_MAX 64	/**< Maximum size of QVPN header. */ | ||||||
| #define NSS_QVPN_VPN_HDR_TAIL_SIZE_MAX 32	/**< Maximum size of QVPN tail. */ | #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. */ | 	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 |  * nss_qvpn_msg | ||||||
|  *	QVPN message structure for configuration and statistics. |  *	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); | 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 |  * nss_qvpn_register_if | ||||||
|  *	Register to send/receive QVPN messages to NSS. |  *	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, | 			nss_qvpn_msg_callback_t qvpn_event_callback, struct net_device *netdev, | ||||||
| 			uint32_t features, void *app_ctx); | 			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 |  * nss_qvpn_ifnum_with_core_id | ||||||
|  *	Gets the QVPN interface number with the 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); | 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); | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * @} |  * @} | ||||||
|  */ |  */ | ||||||
|   | |||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user