Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 44ac91ea authored by Felix Fietkau's avatar Felix Fietkau Committed by John W. Linville
Browse files

minstrel: simplify and fix debugfs code



This patch cleans up the debugfs read function for the statistics by
using simple_read_from_buffer instead of its own semi-broken hack.
Also removes a useless member of the minstrel debugfs info struct.

Signed-off-by: default avatarFelix Fietkau <nbd@openwrt.org>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 8127fbdc
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -80,6 +80,11 @@ struct minstrel_priv {
	unsigned int lookaround_rate_mrr;
};

struct minstrel_debugfs_info {
	size_t len;
	char buf[];
};

void minstrel_add_sta_debugfs(void *priv, void *priv_sta, struct dentry *dir);
void minstrel_remove_sta_debugfs(void *priv, void *priv_sta);

+6 −29
Original line number Diff line number Diff line
@@ -52,21 +52,15 @@
#include <net/mac80211.h>
#include "rc80211_minstrel.h"

struct minstrel_stats_info {
	struct minstrel_sta_info *mi;
	char buf[4096];
	size_t len;
};

static int
minstrel_stats_open(struct inode *inode, struct file *file)
{
	struct minstrel_sta_info *mi = inode->i_private;
	struct minstrel_stats_info *ms;
	struct minstrel_debugfs_info *ms;
	unsigned int i, tp, prob, eprob;
	char *p;

	ms = kmalloc(sizeof(*ms), GFP_KERNEL);
	ms = kmalloc(sizeof(*ms) + 4096, GFP_KERNEL);
	if (!ms)
		return -ENOMEM;

@@ -107,35 +101,18 @@ minstrel_stats_open(struct inode *inode, struct file *file)
}

static ssize_t
minstrel_stats_read(struct file *file, char __user *buf, size_t len, loff_t *o)
minstrel_stats_read(struct file *file, char __user *buf, size_t len, loff_t *ppos)
{
	struct minstrel_stats_info *ms;
	char *src;
	struct minstrel_debugfs_info *ms;

	ms = file->private_data;
	src = ms->buf;

	len = min(len, ms->len);
	if (len <= *o)
		return 0;

	src += *o;
	len -= *o;
	*o += len;

	if (copy_to_user(buf, src, len))
		return -EFAULT;

	return len;
	return simple_read_from_buffer(buf, len, ppos, ms->buf, ms->len);
}

static int
minstrel_stats_release(struct inode *inode, struct file *file)
{
	struct minstrel_stats_info *ms = file->private_data;

	kfree(ms);

	kfree(file->private_data);
	return 0;
}