|
@@ -26,6 +26,7 @@
|
|
|
*/
|
|
|
|
|
|
#ifdef WLAN_OPEN_SOURCE
|
|
|
+#include "osif_sync.h"
|
|
|
#include <wlan_hdd_includes.h>
|
|
|
#include <wlan_hdd_debugfs.h>
|
|
|
#include <wlan_osif_request_manager.h>
|
|
@@ -84,18 +85,18 @@ bool hdd_wait_for_debugfs_threads_completion(void)
|
|
|
|
|
|
/**
|
|
|
* __wcnss_wowpattern_write() - wow_pattern debugfs handler
|
|
|
- * @file: debugfs file handle
|
|
|
+ * @net_dev: net_device context used to register the debugfs file
|
|
|
* @buf: text being written to the debugfs
|
|
|
* @count: size of @buf
|
|
|
* @ppos: (unused) offset into the virtual file system
|
|
|
*
|
|
|
* Return: number of bytes processed
|
|
|
*/
|
|
|
-static ssize_t __wcnss_wowpattern_write(struct file *file,
|
|
|
- const char __user *buf, size_t count,
|
|
|
- loff_t *ppos)
|
|
|
+static ssize_t __wcnss_wowpattern_write(struct net_device *net_dev,
|
|
|
+ const char __user *buf, size_t count,
|
|
|
+ loff_t *ppos)
|
|
|
{
|
|
|
- struct hdd_adapter *adapter = (struct hdd_adapter *) file->private_data;
|
|
|
+ struct hdd_adapter *adapter = WLAN_HDD_GET_PRIV_PTR(net_dev);
|
|
|
struct hdd_context *hdd_ctx;
|
|
|
char cmd[MAX_USER_COMMAND_SIZE_WOWL_PATTERN + 1];
|
|
|
char *sptr, *token;
|
|
@@ -107,7 +108,7 @@ static ssize_t __wcnss_wowpattern_write(struct file *file,
|
|
|
|
|
|
hdd_enter();
|
|
|
|
|
|
- if ((NULL == adapter) || (WLAN_HDD_ADAPTER_MAGIC != adapter->magic)) {
|
|
|
+ if (adapter->magic != WLAN_HDD_ADAPTER_MAGIC) {
|
|
|
hdd_err("Invalid adapter or adapter has invalid magic");
|
|
|
return -EINVAL;
|
|
|
}
|
|
@@ -192,29 +193,35 @@ static ssize_t wcnss_wowpattern_write(struct file *file,
|
|
|
const char __user *buf,
|
|
|
size_t count, loff_t *ppos)
|
|
|
{
|
|
|
- ssize_t ret;
|
|
|
+ struct net_device *net_dev = file_inode(file)->i_private;
|
|
|
+ struct osif_vdev_sync *vdev_sync;
|
|
|
+ ssize_t err_size;
|
|
|
|
|
|
- cds_ssr_protect(__func__);
|
|
|
- ret = __wcnss_wowpattern_write(file, buf, count, ppos);
|
|
|
- cds_ssr_unprotect(__func__);
|
|
|
+ err_size = osif_vdev_sync_op_start(net_dev, &vdev_sync);
|
|
|
+ if (err_size)
|
|
|
+ return err_size;
|
|
|
|
|
|
- return ret;
|
|
|
+ err_size = __wcnss_wowpattern_write(net_dev, buf, count, ppos);
|
|
|
+
|
|
|
+ osif_vdev_sync_op_stop(vdev_sync);
|
|
|
+
|
|
|
+ return err_size;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* wcnss_patterngen_write() - pattern_gen debugfs handler
|
|
|
- * @file: debugfs file handle
|
|
|
+ * @net_dev: net_device context used to register the debugfs file
|
|
|
* @buf: text being written to the debugfs
|
|
|
* @count: size of @buf
|
|
|
* @ppos: (unused) offset into the virtual file system
|
|
|
*
|
|
|
* Return: number of bytes processed
|
|
|
*/
|
|
|
-static ssize_t __wcnss_patterngen_write(struct file *file,
|
|
|
- const char __user *buf, size_t count,
|
|
|
- loff_t *ppos)
|
|
|
+static ssize_t __wcnss_patterngen_write(struct net_device *net_dev,
|
|
|
+ const char __user *buf, size_t count,
|
|
|
+ loff_t *ppos)
|
|
|
{
|
|
|
- struct hdd_adapter *adapter;
|
|
|
+ struct hdd_adapter *adapter = WLAN_HDD_GET_PRIV_PTR(net_dev);
|
|
|
struct hdd_context *hdd_ctx;
|
|
|
tSirAddPeriodicTxPtrn *addPeriodicTxPtrnParams;
|
|
|
tSirDelPeriodicTxPtrn *delPeriodicTxPtrnParams;
|
|
@@ -230,8 +237,7 @@ static ssize_t __wcnss_patterngen_write(struct file *file,
|
|
|
|
|
|
hdd_enter();
|
|
|
|
|
|
- adapter = (struct hdd_adapter *)file->private_data;
|
|
|
- if ((NULL == adapter) || (WLAN_HDD_ADAPTER_MAGIC != adapter->magic)) {
|
|
|
+ if (adapter->magic != WLAN_HDD_ADAPTER_MAGIC) {
|
|
|
hdd_err("Invalid adapter or adapter has invalid magic");
|
|
|
return -EINVAL;
|
|
|
}
|
|
@@ -410,45 +416,46 @@ static ssize_t wcnss_patterngen_write(struct file *file,
|
|
|
const char __user *buf,
|
|
|
size_t count, loff_t *ppos)
|
|
|
{
|
|
|
- ssize_t ret;
|
|
|
+ struct net_device *net_dev = file_inode(file)->i_private;
|
|
|
+ struct osif_vdev_sync *vdev_sync;
|
|
|
+ ssize_t err_size;
|
|
|
+
|
|
|
+ err_size = osif_vdev_sync_op_start(net_dev, &vdev_sync);
|
|
|
+ if (err_size)
|
|
|
+ return err_size;
|
|
|
+
|
|
|
+ err_size = __wcnss_patterngen_write(net_dev, buf, count, ppos);
|
|
|
|
|
|
- cds_ssr_protect(__func__);
|
|
|
- ret = __wcnss_patterngen_write(file, buf, count, ppos);
|
|
|
- cds_ssr_unprotect(__func__);
|
|
|
+ osif_vdev_sync_op_stop(vdev_sync);
|
|
|
|
|
|
- return ret;
|
|
|
+ return err_size;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* __wcnss_debugfs_open() - Generic debugfs open() handler
|
|
|
- * @inode: inode of the debugfs file
|
|
|
- * @file: file handle of the debugfs file
|
|
|
+ * @net_dev: net_device context used to register the debugfs file
|
|
|
*
|
|
|
- * Return: 0
|
|
|
+ * Return: Errno
|
|
|
*/
|
|
|
-static int __wcnss_debugfs_open(struct inode *inode, struct file *file)
|
|
|
+static int __wcnss_debugfs_open(struct net_device *net_dev)
|
|
|
{
|
|
|
- struct hdd_adapter *adapter;
|
|
|
+ struct hdd_adapter *adapter = WLAN_HDD_GET_PRIV_PTR(net_dev);
|
|
|
struct hdd_context *hdd_ctx;
|
|
|
- int ret;
|
|
|
+ int errno;
|
|
|
|
|
|
hdd_enter();
|
|
|
|
|
|
- if (inode->i_private)
|
|
|
- file->private_data = inode->i_private;
|
|
|
-
|
|
|
- adapter = (struct hdd_adapter *)file->private_data;
|
|
|
- if ((NULL == adapter) || (WLAN_HDD_ADAPTER_MAGIC != adapter->magic)) {
|
|
|
+ if (adapter->magic != WLAN_HDD_ADAPTER_MAGIC) {
|
|
|
hdd_err("Invalid adapter or adapter has invalid magic");
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
|
|
|
hdd_ctx = WLAN_HDD_GET_CTX(adapter);
|
|
|
- ret = wlan_hdd_validate_context(hdd_ctx);
|
|
|
- if (0 != ret)
|
|
|
- return ret;
|
|
|
+ errno = wlan_hdd_validate_context(hdd_ctx);
|
|
|
+
|
|
|
hdd_exit();
|
|
|
- return 0;
|
|
|
+
|
|
|
+ return errno;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -460,13 +467,19 @@ static int __wcnss_debugfs_open(struct inode *inode, struct file *file)
|
|
|
*/
|
|
|
static int wcnss_debugfs_open(struct inode *inode, struct file *file)
|
|
|
{
|
|
|
- int ret;
|
|
|
+ struct net_device *net_dev = inode->i_private;
|
|
|
+ struct osif_vdev_sync *vdev_sync;
|
|
|
+ int errno;
|
|
|
+
|
|
|
+ errno = osif_vdev_sync_op_start(net_dev, &vdev_sync);
|
|
|
+ if (errno)
|
|
|
+ return errno;
|
|
|
+
|
|
|
+ errno = __wcnss_debugfs_open(net_dev);
|
|
|
|
|
|
- cds_ssr_protect(__func__);
|
|
|
- ret = __wcnss_debugfs_open(inode, file);
|
|
|
- cds_ssr_unprotect(__func__);
|
|
|
+ osif_vdev_sync_op_stop(vdev_sync);
|
|
|
|
|
|
- return ret;
|
|
|
+ return errno;
|
|
|
}
|
|
|
|
|
|
static const struct file_operations fops_wowpattern = {
|
|
@@ -497,24 +510,24 @@ static const struct file_operations fops_patterngen = {
|
|
|
*/
|
|
|
QDF_STATUS hdd_debugfs_init(struct hdd_adapter *adapter)
|
|
|
{
|
|
|
- struct net_device *dev = adapter->dev;
|
|
|
+ struct net_device *net_dev = adapter->dev;
|
|
|
|
|
|
- adapter->debugfs_phy = debugfs_create_dir(dev->name, 0);
|
|
|
+ adapter->debugfs_phy = debugfs_create_dir(net_dev->name, 0);
|
|
|
|
|
|
if (NULL == adapter->debugfs_phy)
|
|
|
return QDF_STATUS_E_FAILURE;
|
|
|
|
|
|
if (NULL == debugfs_create_file("wow_pattern", 00400 | 00200,
|
|
|
- adapter->debugfs_phy, adapter,
|
|
|
+ adapter->debugfs_phy, net_dev,
|
|
|
&fops_wowpattern))
|
|
|
return QDF_STATUS_E_FAILURE;
|
|
|
|
|
|
if (NULL == debugfs_create_file("pattern_gen", 00400 | 00200,
|
|
|
- adapter->debugfs_phy, adapter,
|
|
|
+ adapter->debugfs_phy, net_dev,
|
|
|
&fops_patterngen))
|
|
|
return QDF_STATUS_E_FAILURE;
|
|
|
|
|
|
- if (0 != wlan_hdd_create_ll_stats_file(adapter))
|
|
|
+ if (wlan_hdd_create_ll_stats_file(adapter))
|
|
|
return QDF_STATUS_E_FAILURE;
|
|
|
|
|
|
return QDF_STATUS_SUCCESS;
|