aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet
diff options
context:
space:
mode:
authorMichal Swiatkowski <michal.swiatkowski@linux.intel.com>2025-08-12 06:23:35 +0200
committerTony Nguyen <anthony.l.nguyen@intel.com>2025-09-11 12:10:47 -0700
commitf3b3fc1ff0823b73f6f66b6340e6ebc4b00d2ed3 (patch)
tree803c601e128806c51d52c3aebe93f1120484ee70 /drivers/net/ethernet
parentice: reregister fwlog after driver reinit (diff)
downloadlinux-f3b3fc1ff0823b73f6f66b6340e6ebc4b00d2ed3.tar.gz
linux-f3b3fc1ff0823b73f6f66b6340e6ebc4b00d2ed3.zip
ice, libie: move fwlog code to libie
Move whole code from ice_fwlog.c/h to libie/fwlog.c/h. Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com> Signed-off-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com> Tested-by: Rinitha S <sx.rinitha@intel.com> (A Contingent worker at Intel) Reviewed-by: Simon Horman <horms@kernel.org> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Diffstat (limited to 'drivers/net/ethernet')
-rw-r--r--drivers/net/ethernet/intel/Kconfig1
-rw-r--r--drivers/net/ethernet/intel/ice/Makefile1
-rw-r--r--drivers/net/ethernet/intel/ice/ice_fwlog.h84
-rw-r--r--drivers/net/ethernet/intel/ice/ice_main.c1
-rw-r--r--drivers/net/ethernet/intel/ice/ice_type.h2
-rw-r--r--drivers/net/ethernet/intel/libie/Kconfig9
-rw-r--r--drivers/net/ethernet/intel/libie/Makefile4
-rw-r--r--drivers/net/ethernet/intel/libie/fwlog.c (renamed from drivers/net/ethernet/intel/ice/ice_fwlog.c)15
8 files changed, 28 insertions, 89 deletions
diff --git a/drivers/net/ethernet/intel/Kconfig b/drivers/net/ethernet/intel/Kconfig
index b05cc0d7a15d..09f0af386af1 100644
--- a/drivers/net/ethernet/intel/Kconfig
+++ b/drivers/net/ethernet/intel/Kconfig
@@ -297,6 +297,7 @@ config ICE
select DIMLIB
select LIBIE
select LIBIE_ADMINQ
+ select LIBIE_FWLOG
select NET_DEVLINK
select PACKING
select PLDMFW
diff --git a/drivers/net/ethernet/intel/ice/Makefile b/drivers/net/ethernet/intel/ice/Makefile
index eac45d7c0cf1..5b2c666496e7 100644
--- a/drivers/net/ethernet/intel/ice/Makefile
+++ b/drivers/net/ethernet/intel/ice/Makefile
@@ -42,7 +42,6 @@ ice-y := ice_main.o \
ice_ethtool.o \
ice_repr.o \
ice_tc_lib.o \
- ice_fwlog.o \
ice_debugfs.o \
ice_adapter.o
ice-$(CONFIG_PCI_IOV) += \
diff --git a/drivers/net/ethernet/intel/ice/ice_fwlog.h b/drivers/net/ethernet/intel/ice/ice_fwlog.h
deleted file mode 100644
index e534205a2d04..000000000000
--- a/drivers/net/ethernet/intel/ice/ice_fwlog.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/* Copyright (C) 2022, Intel Corporation. */
-
-#ifndef _LIBIE_FWLOG_H_
-#define _LIBIE_FWLOG_H_
-#include "ice_adminq_cmd.h"
-
-/* Only a single log level should be set and all log levels under the set value
- * are enabled, e.g. if log level is set to LIBIE_FW_LOG_LEVEL_VERBOSE, then all
- * other log levels are included (except LIBIE_FW_LOG_LEVEL_NONE)
- */
-enum libie_fwlog_level {
- LIBIE_FWLOG_LEVEL_NONE = 0,
- LIBIE_FWLOG_LEVEL_ERROR = 1,
- LIBIE_FWLOG_LEVEL_WARNING = 2,
- LIBIE_FWLOG_LEVEL_NORMAL = 3,
- LIBIE_FWLOG_LEVEL_VERBOSE = 4,
- LIBIE_FWLOG_LEVEL_INVALID, /* all values >= this entry are invalid */
-};
-
-struct libie_fwlog_module_entry {
- /* module ID for the corresponding firmware logging event */
- u16 module_id;
- /* verbosity level for the module_id */
- u8 log_level;
-};
-
-struct libie_fwlog_cfg {
- /* list of modules for configuring log level */
- struct libie_fwlog_module_entry module_entries[LIBIE_AQC_FW_LOG_ID_MAX];
- /* options used to configure firmware logging */
- u16 options;
-#define LIBIE_FWLOG_OPTION_ARQ_ENA BIT(0)
-#define LIBIE_FWLOG_OPTION_UART_ENA BIT(1)
- /* set before calling libie_fwlog_init() so the PF registers for
- * firmware logging on initialization
- */
-#define LIBIE_FWLOG_OPTION_REGISTER_ON_INIT BIT(2)
- /* set in the libie_aq_fwlog_get() response if the PF is registered for
- * FW logging events over ARQ
- */
-#define LIBIE_FWLOG_OPTION_IS_REGISTERED BIT(3)
-
- /* minimum number of log events sent per Admin Receive Queue event */
- u16 log_resolution;
-};
-
-struct libie_fwlog_data {
- u16 data_size;
- u8 *data;
-};
-
-struct libie_fwlog_ring {
- struct libie_fwlog_data *rings;
- u16 index;
- u16 size;
- u16 head;
- u16 tail;
-};
-
-#define LIBIE_FWLOG_RING_SIZE_INDEX_DFLT 3
-#define LIBIE_FWLOG_RING_SIZE_DFLT 256
-#define LIBIE_FWLOG_RING_SIZE_MAX 512
-
-struct libie_fwlog {
- struct libie_fwlog_cfg cfg;
- bool supported; /* does hardware support FW logging? */
- struct libie_fwlog_ring ring;
- struct dentry *debugfs;
- /* keep track of all the dentrys for FW log modules */
- struct dentry **debugfs_modules;
- struct_group_tagged(libie_fwlog_api, api,
- struct pci_dev *pdev;
- int (*send_cmd)(void *, struct libie_aq_desc *, void *, u16);
- void *priv;
- struct dentry *debugfs_root;
- );
-};
-
-int libie_fwlog_init(struct libie_fwlog *fwlog, struct libie_fwlog_api *api);
-void libie_fwlog_deinit(struct libie_fwlog *fwlog);
-void libie_fwlog_reregister(struct libie_fwlog *fwlog);
-void libie_get_fwlog_data(struct libie_fwlog *fwlog, u8 *buf, u16 len);
-#endif /* _LIBIE_FWLOG_H_ */
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index 44e184c6c416..f0d3aee24a93 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -39,6 +39,7 @@ static const char ice_copyright[] = "Copyright (c) 2018, Intel Corporation.";
MODULE_DESCRIPTION(DRV_SUMMARY);
MODULE_IMPORT_NS("LIBIE");
MODULE_IMPORT_NS("LIBIE_ADMINQ");
+MODULE_IMPORT_NS("LIBIE_FWLOG");
MODULE_LICENSE("GPL v2");
MODULE_FIRMWARE(ICE_DDP_PKG_FILE);
diff --git a/drivers/net/ethernet/intel/ice/ice_type.h b/drivers/net/ethernet/intel/ice/ice_type.h
index 14296bccc4c9..b0a1b67071c5 100644
--- a/drivers/net/ethernet/intel/ice/ice_type.h
+++ b/drivers/net/ethernet/intel/ice/ice_type.h
@@ -17,7 +17,7 @@
#include "ice_protocol_type.h"
#include "ice_sbq_cmd.h"
#include "ice_vlan_mode.h"
-#include "ice_fwlog.h"
+#include <linux/net/intel/libie/fwlog.h>
#include <linux/wait.h>
#include <net/dscp.h>
diff --git a/drivers/net/ethernet/intel/libie/Kconfig b/drivers/net/ethernet/intel/libie/Kconfig
index e6072758e3d8..70831c7e336e 100644
--- a/drivers/net/ethernet/intel/libie/Kconfig
+++ b/drivers/net/ethernet/intel/libie/Kconfig
@@ -14,3 +14,12 @@ config LIBIE_ADMINQ
help
Helper functions used by Intel Ethernet drivers for administration
queue command interface (aka adminq).
+
+config LIBIE_FWLOG
+ tristate
+ select LIBIE_ADMINQ
+ help
+ Library to support firmware logging on device that have support
+ for it. Firmware logging is using admin queue interface to communicate
+ with the device. Debugfs is a user interface used to config logging
+ and dump all collected logs.
diff --git a/drivers/net/ethernet/intel/libie/Makefile b/drivers/net/ethernet/intel/libie/Makefile
index e98f00b865d3..db57fc6780ea 100644
--- a/drivers/net/ethernet/intel/libie/Makefile
+++ b/drivers/net/ethernet/intel/libie/Makefile
@@ -8,3 +8,7 @@ libie-y := rx.o
obj-$(CONFIG_LIBIE_ADMINQ) += libie_adminq.o
libie_adminq-y := adminq.o
+
+obj-$(CONFIG_LIBIE_FWLOG) += libie_fwlog.o
+
+libie_fwlog-y := fwlog.o
diff --git a/drivers/net/ethernet/intel/ice/ice_fwlog.c b/drivers/net/ethernet/intel/libie/fwlog.c
index 8e7086191030..f39cc11cb7c5 100644
--- a/drivers/net/ethernet/intel/ice/ice_fwlog.c
+++ b/drivers/net/ethernet/intel/libie/fwlog.c
@@ -2,12 +2,14 @@
/* Copyright (c) 2022, Intel Corporation. */
#include <linux/debugfs.h>
+#include <linux/export.h>
#include <linux/fs.h>
+#include <linux/net/intel/libie/fwlog.h>
+#include <linux/pci.h>
#include <linux/random.h>
#include <linux/vmalloc.h>
-#include "ice.h"
-#include "ice_common.h"
-#include "ice_fwlog.h"
+
+#define DEFAULT_SYMBOL_NAMESPACE "LIBIE_FWLOG"
/* create a define that has an extra module that doesn't really exist. this
* is so we can add a module 'all' to easily enable/disable all the modules
@@ -1037,6 +1039,7 @@ int libie_fwlog_init(struct libie_fwlog *fwlog, struct libie_fwlog_api *api)
return 0;
}
+EXPORT_SYMBOL_GPL(libie_fwlog_init);
/**
* libie_fwlog_deinit - unroll FW logging configuration
@@ -1071,6 +1074,7 @@ void libie_fwlog_deinit(struct libie_fwlog *fwlog)
kfree(fwlog->ring.rings);
}
}
+EXPORT_SYMBOL_GPL(libie_fwlog_deinit);
/**
* libie_get_fwlog_data - copy the FW log data from ARQ event
@@ -1095,6 +1099,7 @@ void libie_get_fwlog_data(struct libie_fwlog *fwlog, u8 *buf, u16 len)
libie_fwlog_ring_increment(&fwlog->ring.head, fwlog->ring.size);
}
}
+EXPORT_SYMBOL_GPL(libie_get_fwlog_data);
void libie_fwlog_reregister(struct libie_fwlog *fwlog)
{
@@ -1104,3 +1109,7 @@ void libie_fwlog_reregister(struct libie_fwlog *fwlog)
if (libie_fwlog_register(fwlog))
fwlog->cfg.options &= ~LIBIE_FWLOG_OPTION_IS_REGISTERED;
}
+EXPORT_SYMBOL_GPL(libie_fwlog_reregister);
+
+MODULE_DESCRIPTION("Intel(R) Ethernet common library");
+MODULE_LICENSE("GPL");