Page MenuHomeFreeBSD

D60977.1793705098.diff
No OneTemporary

Authored By
Unknown
Size
3 KB
Referenced Files
None
Subscribers
None

D60977.1793705098.diff

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

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)

Event Timeline