summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPagadala Yesu Anjaneyulu <pagadala.yesu.anjaneyulu@intel.com>2025-03-13 00:22:25 +0200
committerJohannes Berg <johannes.berg@intel.com>2025-03-18 09:51:24 +0100
commit4b8130a722eb3634a8cde1e8cb1b113e488df5ac (patch)
tree222e78b0fd37b427bd67b9cfa663de298790d354
parentd4c6ca39d6661c7877c3012db7ac1e4714732a71 (diff)
wifi: iwlwifi: mld: Add support for WIPHY_DEBUGFS_READ_FILE_OPS_MLD macro
Introduced the WIPHY_DEBUGFS_READ_FILE_OPS_MLD macro to enable reading data from the driver while holding the wiphy lock. This will enable read operations with wiphy locked. Signed-off-by: Pagadala Yesu Anjaneyulu <pagadala.yesu.anjaneyulu@intel.com> Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com> Link: https://patch.msgid.link/20250313002008.b0ddb6b0a144.I1fab63f2c6f52fea61cc5d7b27775aed58adfd8d@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mld/debugfs.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/mld/debugfs.h b/drivers/net/wireless/intel/iwlwifi/mld/debugfs.h
index 13d97184a31f..900aaed90775 100644
--- a/drivers/net/wireless/intel/iwlwifi/mld/debugfs.h
+++ b/drivers/net/wireless/intel/iwlwifi/mld/debugfs.h
@@ -121,6 +121,16 @@ static ssize_t __iwl_dbgfs_##name##_write(struct file *file, \
.llseek = generic_file_llseek, \
}
+#define WIPHY_DEBUGFS_READ_HANDLER_WRAPPER_MLD(name) \
+static ssize_t iwl_dbgfs_##name##_read_handler(struct wiphy *wiphy, \
+ struct file *file, char *buf, \
+ size_t count, void *data) \
+{ \
+ struct ieee80211_hw *hw = wiphy_to_ieee80211_hw(wiphy); \
+ struct iwl_mld *mld = IWL_MAC80211_GET_MLD(hw); \
+ return iwl_dbgfs_##name##_read(mld, buf, count); \
+}
+
#define WIPHY_DEBUGFS_WRITE_HANDLER_WRAPPER_MLD(name) \
static ssize_t iwl_dbgfs_##name##_write_handler(struct wiphy *wiphy, \
struct file *file, char *buf, \
@@ -147,6 +157,40 @@ static ssize_t __iwl_dbgfs_##name##_write(struct file *file, \
NULL); \
}
+#define WIPHY_DEBUGFS_READ_WRAPPER_MLD(name) \
+WIPHY_DEBUGFS_READ_HANDLER_WRAPPER_MLD(name) \
+static ssize_t __iwl_dbgfs_##name##_read(struct file *file, \
+ char __user *user_buf, \
+ size_t count, loff_t *ppos) \
+{ \
+ struct dbgfs_##name##_data *data = file->private_data; \
+ struct iwl_mld *mld = data->arg; \
+ \
+ if (!data->read_done) { \
+ data->read_done = true; \
+ data->rlen = wiphy_locked_debugfs_read(mld->wiphy, \
+ file, data->buf, sizeof(data->buf), \
+ user_buf, count, ppos, \
+ iwl_dbgfs_##name##_read_handler, NULL); \
+ return data->rlen; \
+ } \
+ \
+ if (data->rlen < 0) \
+ return data->rlen; \
+ return simple_read_from_buffer(user_buf, count, ppos, \
+ data->buf, data->rlen); \
+}
+
+#define WIPHY_DEBUGFS_READ_FILE_OPS_MLD(name, bufsz) \
+ MLD_DEBUGFS_OPEN_WRAPPER(name, bufsz, struct iwl_mld) \
+ WIPHY_DEBUGFS_READ_WRAPPER_MLD(name) \
+ static const struct file_operations iwl_dbgfs_##name##_ops = { \
+ .read = __iwl_dbgfs_##name##_read, \
+ .open = _iwl_dbgfs_##name##_open, \
+ .llseek = generic_file_llseek, \
+ .release = _iwl_dbgfs_release, \
+ }
+
#define WIPHY_DEBUGFS_WRITE_FILE_OPS_MLD(name, bufsz) \
MLD_DEBUGFS_OPEN_WRAPPER(name, bufsz, struct iwl_mld) \
WIPHY_DEBUGFS_WRITE_WRAPPER_MLD(name) \