Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F176990522
D60977.1793705098.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Authored By
Unknown
Size
3 KB
Referenced Files
None
Subscribers
None
D60977.1793705098.diff
View Options
Index: sys/dev/bnxt/bnxt_en/bnxt.h
===================================================================
--- sys/dev/bnxt/bnxt_en/bnxt.h
+++ sys/dev/bnxt/bnxt_en/bnxt.h
@@ -1254,6 +1254,10 @@
struct bnxt_logger;
+#define BNXT_HWRM_VER_CODE_EXT(maj, mnr, upd, rsv) \
+ (((uint32_t)(maj) << 24) | ((uint32_t)(mnr) << 16) | \
+ ((uint32_t)(upd) << 8) | (uint32_t)(rsv))
+
struct bnxt_softc {
device_t dev;
if_ctx_t ctx;
@@ -1327,6 +1331,7 @@
uint16_t hwrm_max_req_len;
uint16_t hwrm_max_ext_req_len;
uint32_t hwrm_spec_code;
+ uint32_t hwrm_spec_code_ext;
#define BNXT_MAX_QUEUE 8
uint8_t max_tc;
@@ -1597,6 +1602,7 @@
struct sysctl_ctx_list mpc_cmp_time_stats;
struct sysctl_oid *mpc_cmp_time_stats_oid;
uint32_t max_ktls_entries;
+ bool disable_hw_ktls;
#define BNXT_CAGR_CQCOAL_OFFSET 0xc00
#define BNXT_CAGR_NQAGG_MAXTIMER 0x5930000
Index: sys/dev/bnxt/bnxt_en/bnxt_hwrm.c
===================================================================
--- sys/dev/bnxt/bnxt_en/bnxt_hwrm.c
+++ sys/dev/bnxt/bnxt_en/bnxt_hwrm.c
@@ -973,6 +973,9 @@
softc->hwrm_spec_code = resp->hwrm_intf_maj_8b << 16 |
resp->hwrm_intf_min_8b << 8 |
resp->hwrm_intf_upd_8b;
+ softc->hwrm_spec_code_ext = BNXT_HWRM_VER_CODE_EXT(
+ resp->hwrm_intf_maj_8b, resp->hwrm_intf_min_8b,
+ resp->hwrm_intf_upd_8b, resp->hwrm_intf_rsvd_8b);
if (resp->hwrm_intf_maj_8b < 1) {
device_printf(softc->dev, "HWRM interface %d.%d.%d is older "
"than 1.0.0.\n", resp->hwrm_intf_maj_8b,
Index: sys/dev/bnxt/bnxt_en/bnxt_ktls.h
===================================================================
--- sys/dev/bnxt/bnxt_en/bnxt_ktls.h
+++ sys/dev/bnxt/bnxt_en/bnxt_ktls.h
@@ -39,6 +39,8 @@
#include "bnxt.h"
#include "bnxt_mpc.h"
+#define BNXT_MIN_KTLS_HWRM_VERSION BNXT_HWRM_VER_CODE_EXT(1, 10, 3, 99)
+
#define BNXT_TX_CRYPTO_KEY_TYPE HWRM_FUNC_KEY_CTX_ALLOC_INPUT_KEY_CTX_TYPE_TX
#define BNXT_RX_CRYPTO_KEY_TYPE HWRM_FUNC_KEY_CTX_ALLOC_INPUT_KEY_CTX_TYPE_RX
Index: sys/dev/bnxt/bnxt_en/bnxt_ktls.c
===================================================================
--- sys/dev/bnxt/bnxt_en/bnxt_ktls.c
+++ sys/dev/bnxt/bnxt_en/bnxt_ktls.c
@@ -305,6 +305,20 @@
if (BNXT_VF(softc))
return;
+ if (softc->disable_hw_ktls) {
+ if (bootverbose)
+ device_printf(softc->dev,
+ "HW kTLS disabled by tunable\n");
+ return;
+ }
+
+ if (softc->hwrm_spec_code_ext < BNXT_MIN_KTLS_HWRM_VERSION) {
+ if (bootverbose)
+ device_printf(softc->dev,
+ "HWRM version is too low for HW kTLS\n");
+ return;
+ }
+
if (!ktls) {
bool partition_mode = false;
struct bnxt_kctx* kctx;
Index: sys/dev/bnxt/bnxt_en/bnxt_sysctl.c
===================================================================
--- sys/dev/bnxt/bnxt_en/bnxt_sysctl.c
+++ sys/dev/bnxt/bnxt_en/bnxt_sysctl.c
@@ -2736,6 +2736,12 @@
if (!oid)
return ENOMEM;
+ oid = SYSCTL_ADD_BOOL(ctx, children, OID_AUTO, "disable_hw_ktls",
+ CTLFLAG_RDTUN, &softc->disable_hw_ktls, 0,
+ "Disable hardware kTLS offload on this device");
+ if (!oid)
+ return (ENOMEM);
+
return 0;
}
Index: sys/dev/bnxt/bnxt_en/if_bnxt.c
===================================================================
--- sys/dev/bnxt/bnxt_en/if_bnxt.c
+++ sys/dev/bnxt/bnxt_en/if_bnxt.c
@@ -2949,7 +2949,8 @@
if (BNXT_CHIP_P7(softc)) {
rc = bnxt_ktls_sysctls(softc);
if (rc) {
- device_printf(softc->dev, "attach: max_ktls_entries sysctl creation failed\n");
+ device_printf(softc->dev,
+ "attach: kTLS sysctl creation failed\n");
goto failed;
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Nov 3, 11:24 AM (1 h, 49 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
41365707
Default Alt Text
D60977.1793705098.diff (3 KB)
Attached To
Mode
D60977: if_bnxt: skip HW kTLS on old firmware and add a tunable to disable it
Attached
Detach File
Event Timeline