Missing files
This commit is contained in:
@@ -1,14 +1,28 @@
|
||||
From 919ea304abf495a7142639e51555508fa1b23a30 Mon Sep 17 00:00:00 2001
|
||||
From: test <test@example.com>
|
||||
Date: Sat, 9 May 2026 16:59:28 +0000
|
||||
Subject: [PATCH 2/2] cdx: do not fail module init for absent optional offloads
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: builder <builder@localhost>
|
||||
Date: Sun, 10 May 2026 00:00:00 +0000
|
||||
Subject: [PATCH] cdx: keep optional offload init failures non-fatal
|
||||
|
||||
The CDX module currently treats several board-specific acceleration paths as
|
||||
mandatory. On boards without VWD/WiFi OH ports, fragmentation BMan pools, or
|
||||
DPA IPsec OH ports, module init either fails or can crash before returning an
|
||||
error.
|
||||
|
||||
Keep the CDX core loadable when those optional resources are absent:
|
||||
|
||||
- warn and continue when VWD/WiFi init fails;
|
||||
- skip the vendor fragmentation module on this platform, because it can
|
||||
dereference a missing BMan pool;
|
||||
- warn and continue when DPA IPsec init fails;
|
||||
- only initialize DPA IPsec follow-up buffer pools when IPsec init succeeds.
|
||||
---
|
||||
cdx/cdx_main.c | 47 +++++++++++++++++++++--------------------------
|
||||
1 file changed, 21 insertions(+), 26 deletions(-)
|
||||
|
||||
diff --git a/cdx/cdx_main.c b/cdx/cdx_main.c
|
||||
index ec763cb..641121b 100644
|
||||
--- a/cdx/cdx_main.c
|
||||
+++ b/cdx/cdx_main.c
|
||||
@@ -195,16 +195,17 @@ static int __init cdx_module_init(void)
|
||||
@@ -178,31 +178,36 @@ static int __init cdx_module_init(void)
|
||||
#ifdef CFG_WIFI_OFFLOAD
|
||||
rc = dpaa_vwd_init();
|
||||
if (rc != 0) {
|
||||
@@ -25,15 +39,48 @@ index ec763cb..641121b 100644
|
||||
- rc = -EIO;
|
||||
- goto exit;
|
||||
- }
|
||||
+
|
||||
+ /*
|
||||
+ * The vendor fragmentation path assumes its BMan pool/config exists and
|
||||
+ * can crash in bman_free_pool() when this board profile does not provide
|
||||
+ * it. Keep CDX usable without the optional fragmentation offload path.
|
||||
+ * The vendor fragmentation path is optional for this platform and can
|
||||
+ * dereference a missing BMan pool before returning an error. Do not let a
|
||||
+ * missing fragmentation pool prevent the CDX core from loading.
|
||||
+ */
|
||||
+ printk(KERN_WARNING "%s::skipping cdx_init_frag_module on this platform\n", __func__);
|
||||
+ printk(KERN_WARNING "%s::skipping cdx_init_frag_module on this platform\n",
|
||||
+ __func__);
|
||||
|
||||
#ifdef DPA_IPSEC_OFFLOAD
|
||||
if (cdx_dpa_ipsec_init()) {
|
||||
--
|
||||
2.47.3
|
||||
- if (cdx_dpa_ipsec_init()) {
|
||||
- printk("%s::dpa_ipsec start failed\n", __func__);
|
||||
- goto exit;
|
||||
- }
|
||||
-
|
||||
- if (cdx_init_scatter_gather_bpool()) {
|
||||
- printk("%s::cdx_init_scatter_gather_bpool failed\n",__func__);
|
||||
- rc = -ENOMEM;
|
||||
- goto exit;
|
||||
- }
|
||||
- if (cdx_init_skb_2bfreed_bpool()) {
|
||||
- printk("%s(%d) : cdx_init_skb_2bfreed_bpool failed\n", __func__,__LINE__);
|
||||
- rc = -ENOMEM;
|
||||
- goto exit;
|
||||
+ rc = cdx_dpa_ipsec_init();
|
||||
+ if (rc) {
|
||||
+ printk(KERN_WARNING "%s::dpa_ipsec start failed rc %d; continuing without DPA IPsec offload\n",
|
||||
+ __func__, rc);
|
||||
+ rc = 0;
|
||||
+ } else {
|
||||
+ if (cdx_init_scatter_gather_bpool()) {
|
||||
+ printk("%s::cdx_init_scatter_gather_bpool failed\n", __func__);
|
||||
+ rc = -ENOMEM;
|
||||
+ goto exit;
|
||||
+ }
|
||||
+ if (cdx_init_skb_2bfreed_bpool()) {
|
||||
+ printk("%s(%d) : cdx_init_skb_2bfreed_bpool failed\n", __func__, __LINE__);
|
||||
+ rc = -ENOMEM;
|
||||
+ goto exit;
|
||||
+ }
|
||||
}
|
||||
#endif
|
||||
|
||||
--
|
||||
2.45.0
|
||||
|
||||
Reference in New Issue
Block a user