treewide: Option to build for all NSS firmware

The idea that "newer" NSS firmware = "better" is not always true.
Especially given that 11.4 is the only firmware known to work with mesh,
among other issues like WDS/rmnet_nss being broken on 12.5 releases.

Add option to allow building for all known and available NSS firmwares.
The following are now supported NSS firmwares:

1.) 11.4.0.5-5
2.) 12.1
3.) 12.2
4.) 12.5

Users should start with 11.4 as that seems to be the one with the most
enabled features. It is now also the default version.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
This commit is contained in:
Sean Khan 2024-07-30 14:16:45 -04:00
parent 9c1bd07946
commit 7a21a949cf
3 changed files with 241 additions and 15 deletions

View File

@ -11,7 +11,7 @@ PKG_NAME:=nss-firmware
PKG_SOURCE_DATE:=2024-07-22 PKG_SOURCE_DATE:=2024-07-22
PKG_SOURCE_VERSION:=8dceff47ef0ac967d01bf0dacd84d44842774af2 PKG_SOURCE_VERSION:=8dceff47ef0ac967d01bf0dacd84d44842774af2
PKG_MIRROR_HASH:=3334a63d0b2c7afe4f6d4e3c2ac86bc3e2a0d97df17f478eeec7d29936062edf PKG_MIRROR_HASH:=3334a63d0b2c7afe4f6d4e3c2ac86bc3e2a0d97df17f478eeec7d29936062edf
PKG_RELEASE:=1 PKG_RELEASE:=2
PKG_SOURCE_PROTO:=git PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/qosmio/qca-sdk-nss-fw.git PKG_SOURCE_URL:=https://github.com/qosmio/qca-sdk-nss-fw.git
@ -22,6 +22,8 @@ PKG_MAINTAINER:=Sean K <datapronix@protonmail.com>
PKG_CONFIG_DEPENDS:= \ PKG_CONFIG_DEPENDS:= \
CONFIG_NSS_FIRMWARE_VERSION_11_4 \ CONFIG_NSS_FIRMWARE_VERSION_11_4 \
CONFIG_NSS_FIRMWARE_VERSION_12_1 \
CONFIG_NSS_FIRMWARE_VERSION_12_2 \
CONFIG_NSS_FIRMWARE_VERSION_12_5 CONFIG_NSS_FIRMWARE_VERSION_12_5
include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/package.mk
@ -60,7 +62,6 @@ $(Package/nss-firmware-default)
NSS_SOC:=MP NSS_SOC:=MP
endef endef
define Package/nss-firmware-default/config define Package/nss-firmware-default/config
menu "NSS Firmware Version" menu "NSS Firmware Version"
@ -68,31 +69,51 @@ define Package/nss-firmware-default/config
choice choice
prompt "Version" prompt "Version"
default NSS_FIRMWARE_VERSION_12_5 default NSS_FIRMWARE_VERSION_11_4
config NSS_FIRMWARE_VERSION_12_5 config NSS_FIRMWARE_VERSION_12_5
bool "NSS Firmware 12.5 Release 210" bool "NSS Firmware 12.5 Release 210"
help help
This version does not work with NSS MESH This version does NOT work with NSS MESH (802.11s)
config NSS_FIRMWARE_VERSION_12_2
bool "NSS Firmware 12.2 Release 161"
help
This version does NOT work with NSS MESH (802.11s)
config NSS_FIRMWARE_VERSION_12_1
bool "NSS Firmware 12.1 Release 003"
help
This version does NOT work with NSS MESH (802.11s)
config NSS_FIRMWARE_VERSION_11_4 config NSS_FIRMWARE_VERSION_11_4
bool "NSS Firmware 11.4.0.5 Release 5" bool "NSS Firmware 11.4.0.5 Release 5"
help help
This version works with NSS MESH This version WORKS with NSS MESH (802.11s)
endchoice endchoice
endmenu endmenu
endef endef
ifneq ($(CONFIG_NSS_FIRMWARE_VERSION_11_4),) ifneq ($(CONFIG_NSS_FIRMWARE_VERSION_11_4),)
NSS_MAJOR:=11.4 NSS_MAJOR=11
NSS_MINOR:=11.4.0.5 NSS_MINOR=4
NSS_REL:=5 NSS_REL=5
VERSION_PATH=$(PKG_BUILD_DIR)/QCA_Networking_2021.SPF_$(NSS_MAJOR)/CS VERSION_PATH=$(PKG_BUILD_DIR)/QCA_Networking_2021.SPF_$(NSS_MAJOR).$(NSS_MINOR)/CS
else ifneq ($(CONFIG_NSS_FIRMWARE_VERSION_12_1),)
NSS_MAJOR=12
NSS_MINOR=1
NSS_REL=003
VERSION_PATH=$(PKG_BUILD_DIR)/QCA_Networking_2022.SPF_$(NSS_MAJOR).$(NSS_MINOR)/ED1
else ifneq ($(CONFIG_NSS_FIRMWARE_VERSION_12_2),)
NSS_MAJOR=12
NSS_MINOR=2
NSS_REL=161
VERSION_PATH=$(PKG_BUILD_DIR)/QCA_Networking_2022.SPF_$(NSS_MAJOR).$(NSS_MINOR)/ED1
else else
NSS_MAJOR:=12.5 NSS_MAJOR=12
NSS_MINOR:=12.5 NSS_MINOR=5
NSS_REL:=210 NSS_REL=210
VERSION_PATH=$(PKG_BUILD_DIR)/QCA_Networking_2024.SPF_$(NSS_MAJOR)/ED1 VERSION_PATH=$(PKG_BUILD_DIR)/QCA_Networking_2024.SPF_$(NSS_MAJOR).$(NSS_MINOR)/ED1
endif endif
define Build/Compile define Build/Compile
@ -101,7 +122,7 @@ endef
define Package/nss-firmware/install define Package/nss-firmware/install
$(INSTALL_DIR) $(PKG_BUILD_DIR)/$(IPQ_PLATFORM) $(INSTALL_DIR) $(PKG_BUILD_DIR)/$(IPQ_PLATFORM)
$(TAR) --strip-components=1 -C $(PKG_BUILD_DIR)/$(IPQ_PLATFORM) -xf \ $(TAR) --strip-components=1 -C $(PKG_BUILD_DIR)/$(IPQ_PLATFORM) -xf \
$(VERSION_PATH)/$(IPQ_PLATFORM).ATH.$(NSS_MAJOR)/BIN-NSS*.$(NSS_MINOR)-$(NSS_REL)*$(NSS_PROFILE).tar.bz2 $(VERSION_PATH)/$(IPQ_PLATFORM).ATH.$(NSS_MAJOR).$(NSS_MINOR)/BIN-NSS*.$(NSS_MAJOR).$(NSS_MINOR)*-$(NSS_REL)*$(NSS_PROFILE).tar.bz2
$(INSTALL_DIR) $(1)/lib/firmware/ $(INSTALL_DIR) $(1)/lib/firmware/
$(INSTALL_DATA) \ $(INSTALL_DATA) \
$(PKG_BUILD_DIR)/$(IPQ_PLATFORM)/retail_router0.bin \ $(PKG_BUILD_DIR)/$(IPQ_PLATFORM)/retail_router0.bin \

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=qca-nss-drv PKG_NAME:=qca-nss-drv
PKG_RELEASE:=11 PKG_RELEASE:=12
PKG_SOURCE_URL:=https://git.codelinaro.org/clo/qsdk/oss/lklm/nss-drv.git PKG_SOURCE_URL:=https://git.codelinaro.org/clo/qsdk/oss/lklm/nss-drv.git
PKG_SOURCE_PROTO:=git PKG_SOURCE_PROTO:=git
@ -140,6 +140,10 @@ else ifdef CONFIG_NSS_MEM_PROFILE_LOW
EXTRA_CFLAGS += -DNSS_MEM_PROFILE_LOW EXTRA_CFLAGS += -DNSS_MEM_PROFILE_LOW
endif endif
ifdef CONFIG_NSS_FIRMWARE_VERSION_12_5
EXTRA_CFLAGS += -DNSS_FIRMWARE_VERSION_12_5
endif
DRV_MAKE_OPTS:= DRV_MAKE_OPTS:=
ifndef CONFIG_NSS_DRV_BRIDGE_ENABLE ifndef CONFIG_NSS_DRV_BRIDGE_ENABLE

View File

@ -0,0 +1,201 @@
--- a/exports/nss_capwap.h
+++ b/exports/nss_capwap.h
@@ -284,6 +284,7 @@ struct nss_capwap_dtls_msg {
uint32_t reserved; /**< Reserved field for future use. */
};
+#ifdef NSS_FIRMWARE_VERSION_12_5
/**
* nss_capwap_flow_attr
* Inner Flow attributes.
@@ -293,6 +294,7 @@ struct nss_capwap_flow_attr {
uint32_t flow_id; /**< Flow Identification. */
uint32_t scs_sdwf_id; /**< SCS or SDWF Identification. */
};
+#endif
/**
* nss_capwap_flow_rule_msg
@@ -312,7 +314,11 @@ struct nss_capwap_flow_rule_msg {
/*
* Flow attributes.
*/
+#ifdef NSS_FIRMWARE_VERSION_12_5
struct nss_capwap_flow_attr flow_attr;
+#else
+ uint32_t flow_id; /**< Flow identification. */
+#endif
};
/**
--- a/exports/nss_ipv4.h
+++ b/exports/nss_ipv4.h
@@ -290,7 +290,9 @@ enum nss_ipv4_stats_types {
#define NSS_IPV4_RULE_CREATE_IDENTIFIER_VALID 0x1000
/**< Identifier is valid. */
#define NSS_IPV4_RULE_CREATE_MIRROR_VALID 0x2000 /**< Mirror fields are valid. */
+#ifdef NSS_FIRMWARE_VERSION_12_5
#define NSS_IPV4_RULE_CREATE_RAWIP_VALID 0x4000 /**< RAW IP fields are valid. */
+#endif
/*
* Multicast command rule flags
--- a/exports/nss_pvxlan.h
+++ b/exports/nss_pvxlan.h
@@ -63,8 +63,10 @@ typedef enum nss_pvxlan_msg_type {
NSS_PVXLAN_MSG_TYPE_TUNNEL_DISABLE, /**< Disable the tunnel. */
NSS_PVXLAN_MSG_TYPE_MAC_ADD, /**< Add MAC rule to the database. */
NSS_PVXLAN_MSG_TYPE_MAC_DEL, /**< Remove MAC rule from the database. */
+#ifdef NSS_FIRMWARE_VERSION_12_5
NSS_PVXLAN_MSG_TYPE_CONFIG_VP, /**< VP configuration. */
NSS_PVXLAN_MSG_TYPE_UNCONFIG_VP, /**< VP unconfiguration. */
+#endif
NSS_PVXLAN_MSG_TYPE_MAX, /**< Maximum message type. */
} nss_pvxlan_msg_type_t;
@@ -97,10 +99,12 @@ typedef enum nss_pvxlan_error_response_t
/**< MAC entry allocation failed. */
PVXLAN_ERROR_MSG_MAC_ENTRY_DELETE_FAILED,
/**< MAC entry deletion failed. */
+#ifdef NSS_FIRMWARE_VERSION_12_5
PVXLAN_ERROR_MSG_CONFIG_VP_FAILED,
/**< VP configuration failed. */
PVXLAN_ERROR_MSG_UNCONFIG_VP_FAILED,
/**< VP unconfiguration failed. */
+#endif
NSS_PVXLAN_ERROR_MAX, /**< Maximum error type. */
} nss_pvxlan_error_response_t;
@@ -181,6 +185,7 @@ struct nss_pvxlan_mac_msg {
uint16_t policy_id; /**< Policy ID. */
};
+#ifdef NSS_FIRMWARE_VERSION_12_5
/**
* nss_pvxlan_vp_msg
* VP configuration message.
@@ -192,6 +197,7 @@ struct nss_pvxlan_vp_msg {
int16_t vp_num; /**< VP number. */
bool ppe_to_host; /**< Enable/disable PPE to host mode. */
};
+#endif
/**
* nss_pvxlan_msg
@@ -216,8 +222,10 @@ struct nss_pvxlan_msg {
/**< MAC rule add message. */
struct nss_pvxlan_mac_msg mac_del;
/**< MAC rule delete message. */
+#ifdef NSS_FIRMWARE_VERSION_12_5
struct nss_pvxlan_vp_msg vp_config;
/**< VP configuration message. */
+#endif
} msg; /**< Message payload. */
};
--- a/exports/nss_wifili_if.h
+++ b/exports/nss_wifili_if.h
@@ -1496,8 +1496,10 @@ struct nss_wifili_rx_ctrl_stats {
uint32_t bcast_rcv_bytes; /**< Total number of broadcast bytes received. */
uint32_t defrag_mcast_drop; /**< Total number of defrag multicast dropped packets. */
uint32_t mcast_3addr_drop; /**< Total number of 3 address multicast dropped packets. */
+#ifdef NSS_FIRMWARE_VERSION_12_5
uint32_t ucast_rcv_cnt; /**< Total number of unicast packets received. */
uint32_t ucast_rcv_bytes; /**< Total number of unicast bytes received. */
+#endif
};
/**
@@ -1509,8 +1511,10 @@ struct nss_wifili_retry_ctrl_stats {
uint32_t tx_retry_count; /**< Transmit retry count. */
uint32_t tx_multiple_retry_count; /**< Transmit multiple retry count. */
uint32_t rx_retry_count; /**< Receive retry count. */
+#ifdef NSS_FIRMWARE_VERSION_12_5
uint32_t tx_mpdu_retry_count; /**< Per mpdu retry count. */
uint32_t tx_mpdu_total_retry_count; /**< Total mpdu retry count. */
+#endif
};
/**
--- a/nss_pvxlan_log.c
+++ b/nss_pvxlan_log.c
@@ -36,7 +36,9 @@ static int8_t *nss_pvxlan_log_message_ty
"PVxLAN Disable Tunnel",
"PVxLAN Add MAC rule",
"PVxLAN Delete MAC rule",
+#ifdef NSS_FIRMWARE_VERSION_12_5
"PVxLAN Config VP"
+#endif
};
/*
@@ -54,7 +56,9 @@ static int8_t *nss_pvxlan_log_error_resp
"PVXLAN MAC Table Full",
"PVXLAN MAC Exists",
"PVXLAN MAC Does Not Exist",
+#ifdef NSS_FIRMWARE_VERSION_12_5
"PVXLAN Config VP failed"
+#endif
};
/*
@@ -158,6 +162,7 @@ static void nss_pvxlan_log_mac_del_msg(s
nss_pvxlan_log_mac_msg(npvcm);
}
+#ifdef NSS_FIRMWARE_VERSION_12_5
/*
* nss_pvxlan_log_unconfig_vp_msg()
* Log NSS PVXLAN unconfig VP message.
@@ -181,6 +186,7 @@ static void nss_pvxlan_log_config_vp_msg
vpm->vp_num,
vpm->ppe_to_host ? "enabled" : "disabled");
}
+#endif
/*
* nss_pvxlan_log_verbose()
@@ -213,6 +219,7 @@ static void nss_pvxlan_log_verbose(struc
nss_pvxlan_log_mac_del_msg(npvm);
break;
+#ifdef NSS_FIRMWARE_VERSION_12_5
case NSS_PVXLAN_MSG_TYPE_CONFIG_VP:
nss_pvxlan_log_config_vp_msg(npvm);
break;
@@ -220,6 +227,7 @@ static void nss_pvxlan_log_verbose(struc
case NSS_PVXLAN_MSG_TYPE_UNCONFIG_VP:
nss_pvxlan_log_unconfig_vp_msg(npvm);
break;
+#endif
case NSS_PVXLAN_MSG_TYPE_SYNC_STATS:
break;
--- a/nss_capwap_log.c
+++ b/nss_capwap_log.c
@@ -166,7 +166,11 @@ static void nss_capwap_flow_rule_msg(str
"CAPWAP Destination Port: %d\n"
"CAPWAP Source IP: %x %x %x %x\n"
"CAPWAP Destination IP: %x %x %x %x"
+#ifdef NSS_FIRMWARE_VERSION_12_5
"CAPWAP Flow type:%d Flow ID: %d SCS_SDWF ID: %d",
+#else
+ "CAPWAP Flow ID: %d",
+#endif
ncfrm,
ncfrm->ip_version, ncfrm->protocol,
ncfrm->src_port, ncfrm->dst_port,
@@ -174,9 +178,13 @@ static void nss_capwap_flow_rule_msg(str
ncfrm->src_ip[2], ncfrm->src_ip[3],
ncfrm->dst_ip[0], ncfrm->dst_ip[1],
ncfrm->dst_ip[2], ncfrm->dst_ip[3],
+#ifdef NSS_FIRMWARE_VERSION_12_5
ncfrm->flow_attr.type,
ncfrm->flow_attr.flow_id,
ncfrm->flow_attr.scs_sdwf_id);
+#else
+ ncfrm->flow_id);
+#endif
}
/*