Commit 6bbefe86 authored by David Howells's avatar David Howells Committed by Al Viro

hostap: Don't use create_proc_read_entry()

Don't use create_proc_read_entry() as that is deprecated, but rather use
proc_create_data() and seq_file instead.
Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
Acked-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
cc: Jouni Malinen <j@w1.fi>
cc: John W. Linville <linville@tuxdriver.com>
cc: Johannes Berg <johannes@sipsolutions.net>
cc: linux-wireless@vger.kernel.org
cc: netdev@vger.kernel.org
cc: devel@driverdev.osuosl.org
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 4c4df9b9
This diff is collapsed.
...@@ -174,20 +174,70 @@ static int prism2_pda_ok(u8 *buf) ...@@ -174,20 +174,70 @@ static int prism2_pda_ok(u8 *buf)
} }
static int prism2_download_aux_dump(struct net_device *dev, #define prism2_download_aux_dump_npages 65536
unsigned int addr, int len, u8 *buf)
{
int res;
prism2_enable_aux_port(dev, 1); struct prism2_download_aux_dump {
res = hfa384x_from_aux(dev, addr, len, buf); local_info_t *local;
prism2_enable_aux_port(dev, 0); u16 page[0x80];
if (res) };
return -1;
static int prism2_download_aux_dump_proc_show(struct seq_file *m, void *v)
{
struct prism2_download_aux_dump *ctx = m->private;
hfa384x_from_aux(ctx->local->dev, (unsigned long)v - 1, 0x80, ctx->page);
seq_write(m, ctx->page, 0x80);
return 0; return 0;
} }
static void *prism2_download_aux_dump_proc_start(struct seq_file *m, loff_t *_pos)
{
struct prism2_download_aux_dump *ctx = m->private;
prism2_enable_aux_port(ctx->local->dev, 1);
if (*_pos >= prism2_download_aux_dump_npages)
return NULL;
return (void *)((unsigned long)*_pos + 1);
}
static void *prism2_download_aux_dump_proc_next(struct seq_file *m, void *v, loff_t *_pos)
{
++*_pos;
if (*_pos >= prism2_download_aux_dump_npages)
return NULL;
return (void *)((unsigned long)*_pos + 1);
}
static void prism2_download_aux_dump_proc_stop(struct seq_file *m, void *v)
{
struct prism2_download_aux_dump *ctx = m->private;
prism2_enable_aux_port(ctx->local->dev, 0);
}
static const struct seq_operations prism2_download_aux_dump_proc_seqops = {
.start = prism2_download_aux_dump_proc_start,
.next = prism2_download_aux_dump_proc_next,
.stop = prism2_download_aux_dump_proc_stop,
.show = prism2_download_aux_dump_proc_show,
};
static int prism2_download_aux_dump_proc_open(struct inode *inode, struct file *file)
{
int ret = seq_open_private(file, &prism2_download_aux_dump_proc_seqops,
sizeof(struct prism2_download_aux_dump));
if (ret == 0) {
struct seq_file *m = file->private_data;
m->private = PDE_DATA(inode);
}
return ret;
}
static const struct file_operations prism2_download_aux_dump_proc_fops = {
.open = prism2_download_aux_dump_proc_open,
.read = seq_read,
.llseek = seq_lseek,
.release = seq_release_private,
};
static u8 * prism2_read_pda(struct net_device *dev) static u8 * prism2_read_pda(struct net_device *dev)
{ {
......
...@@ -38,6 +38,7 @@ ...@@ -38,6 +38,7 @@
#include <linux/netdevice.h> #include <linux/netdevice.h>
#include <linux/etherdevice.h> #include <linux/etherdevice.h>
#include <linux/proc_fs.h> #include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <linux/if_arp.h> #include <linux/if_arp.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/random.h> #include <linux/random.h>
...@@ -129,8 +130,7 @@ static void prism2_check_sta_fw_version(local_info_t *local); ...@@ -129,8 +130,7 @@ static void prism2_check_sta_fw_version(local_info_t *local);
#ifdef PRISM2_DOWNLOAD_SUPPORT #ifdef PRISM2_DOWNLOAD_SUPPORT
/* hostap_download.c */ /* hostap_download.c */
static int prism2_download_aux_dump(struct net_device *dev, static const struct file_operations prism2_download_aux_dump_proc_fops;
unsigned int addr, int len, u8 *buf);
static u8 * prism2_read_pda(struct net_device *dev); static u8 * prism2_read_pda(struct net_device *dev);
static int prism2_download(local_info_t *local, static int prism2_download(local_info_t *local,
struct prism2_download_param *param); struct prism2_download_param *param);
...@@ -2894,19 +2894,12 @@ static void hostap_tick_timer(unsigned long data) ...@@ -2894,19 +2894,12 @@ static void hostap_tick_timer(unsigned long data)
#ifndef PRISM2_NO_PROCFS_DEBUG #ifndef PRISM2_NO_PROCFS_DEBUG
static int prism2_registers_proc_read(char *page, char **start, off_t off, static int prism2_registers_proc_show(struct seq_file *m, void *v)
int count, int *eof, void *data)
{ {
char *p = page; local_info_t *local = m->private;
local_info_t *local = (local_info_t *) data;
if (off != 0) {
*eof = 1;
return 0;
}
#define SHOW_REG(n) \ #define SHOW_REG(n) \
p += sprintf(p, #n "=%04x\n", hfa384x_read_reg(local->dev, HFA384X_##n##_OFF)) seq_printf(m, #n "=%04x\n", hfa384x_read_reg(local->dev, HFA384X_##n##_OFF))
SHOW_REG(CMD); SHOW_REG(CMD);
SHOW_REG(PARAM0); SHOW_REG(PARAM0);
...@@ -2952,8 +2945,21 @@ p += sprintf(p, #n "=%04x\n", hfa384x_read_reg(local->dev, HFA384X_##n##_OFF)) ...@@ -2952,8 +2945,21 @@ p += sprintf(p, #n "=%04x\n", hfa384x_read_reg(local->dev, HFA384X_##n##_OFF))
SHOW_REG(PCI_M1_CTL); SHOW_REG(PCI_M1_CTL);
#endif /* PRISM2_PCI */ #endif /* PRISM2_PCI */
return (p - page); return 0;
} }
static int prism2_registers_proc_open(struct inode *inode, struct file *file)
{
return single_open(file, prism2_registers_proc_show, PDE_DATA(inode));
}
static const struct file_operations prism2_registers_proc_fops = {
.open = prism2_registers_proc_open,
.read = seq_read,
.llseek = seq_lseek,
.release = seq_release,
};
#endif /* PRISM2_NO_PROCFS_DEBUG */ #endif /* PRISM2_NO_PROCFS_DEBUG */
...@@ -3128,7 +3134,7 @@ prism2_init_local_data(struct prism2_helper_functions *funcs, int card_idx, ...@@ -3128,7 +3134,7 @@ prism2_init_local_data(struct prism2_helper_functions *funcs, int card_idx,
local->func->reset_port = prism2_reset_port; local->func->reset_port = prism2_reset_port;
local->func->schedule_reset = prism2_schedule_reset; local->func->schedule_reset = prism2_schedule_reset;
#ifdef PRISM2_DOWNLOAD_SUPPORT #ifdef PRISM2_DOWNLOAD_SUPPORT
local->func->read_aux = prism2_download_aux_dump; local->func->read_aux_fops = &prism2_download_aux_dump_proc_fops;
local->func->download = prism2_download; local->func->download = prism2_download;
#endif /* PRISM2_DOWNLOAD_SUPPORT */ #endif /* PRISM2_DOWNLOAD_SUPPORT */
local->func->tx = prism2_tx_80211; local->func->tx = prism2_tx_80211;
...@@ -3274,8 +3280,8 @@ static int hostap_hw_ready(struct net_device *dev) ...@@ -3274,8 +3280,8 @@ static int hostap_hw_ready(struct net_device *dev)
} }
hostap_init_proc(local); hostap_init_proc(local);
#ifndef PRISM2_NO_PROCFS_DEBUG #ifndef PRISM2_NO_PROCFS_DEBUG
create_proc_read_entry("registers", 0, local->proc, proc_create_data("registers", 0, local->proc,
prism2_registers_proc_read, local); &prism2_registers_proc_fops, local);
#endif /* PRISM2_NO_PROCFS_DEBUG */ #endif /* PRISM2_NO_PROCFS_DEBUG */
hostap_init_ap_proc(local); hostap_init_ap_proc(local);
return 0; return 0;
......
This diff is collapsed.
...@@ -596,8 +596,7 @@ struct prism2_helper_functions { ...@@ -596,8 +596,7 @@ struct prism2_helper_functions {
struct prism2_download_param *param); struct prism2_download_param *param);
int (*tx)(struct sk_buff *skb, struct net_device *dev); int (*tx)(struct sk_buff *skb, struct net_device *dev);
int (*set_tim)(struct net_device *dev, int aid, int set); int (*set_tim)(struct net_device *dev, int aid, int set);
int (*read_aux)(struct net_device *dev, unsigned addr, int len, const struct file_operations *read_aux_fops;
u8 *buf);
int need_tx_headroom; /* number of bytes of headroom needed before int need_tx_headroom; /* number of bytes of headroom needed before
* IEEE 802.11 header */ * IEEE 802.11 header */
......
...@@ -412,10 +412,11 @@ static int rtllib_ccmp_get_key(void *key, int len, u8 *seq, void *priv) ...@@ -412,10 +412,11 @@ static int rtllib_ccmp_get_key(void *key, int len, u8 *seq, void *priv)
} }
static char *rtllib_ccmp_print_stats(char *p, void *priv) static void rtllib_ccmp_print_stats(struct seq_file *m, void *priv)
{ {
struct rtllib_ccmp_data *ccmp = priv; struct rtllib_ccmp_data *ccmp = priv;
p += sprintf(p, "key[%d] alg=CCMP key_set=%d " seq_printf(m,
"key[%d] alg=CCMP key_set=%d "
"tx_pn=%pM rx_pn=%pM " "tx_pn=%pM rx_pn=%pM "
"format_errors=%d replays=%d decrypt_errors=%d\n", "format_errors=%d replays=%d decrypt_errors=%d\n",
ccmp->key_idx, ccmp->key_set, ccmp->key_idx, ccmp->key_set,
...@@ -423,8 +424,6 @@ static char *rtllib_ccmp_print_stats(char *p, void *priv) ...@@ -423,8 +424,6 @@ static char *rtllib_ccmp_print_stats(char *p, void *priv)
ccmp->dot11RSNAStatsCCMPFormatErrors, ccmp->dot11RSNAStatsCCMPFormatErrors,
ccmp->dot11RSNAStatsCCMPReplays, ccmp->dot11RSNAStatsCCMPReplays,
ccmp->dot11RSNAStatsCCMPDecryptErrors); ccmp->dot11RSNAStatsCCMPDecryptErrors);
return p;
} }
static struct lib80211_crypto_ops rtllib_crypt_ccmp = { static struct lib80211_crypto_ops rtllib_crypt_ccmp = {
......
...@@ -708,10 +708,11 @@ static int rtllib_tkip_get_key(void *key, int len, u8 *seq, void *priv) ...@@ -708,10 +708,11 @@ static int rtllib_tkip_get_key(void *key, int len, u8 *seq, void *priv)
} }
static char *rtllib_tkip_print_stats(char *p, void *priv) static void rtllib_tkip_print_stats(struct seq_file *m, void *priv)
{ {
struct rtllib_tkip_data *tkip = priv; struct rtllib_tkip_data *tkip = priv;
p += sprintf(p, "key[%d] alg=TKIP key_set=%d " seq_printf(m,
"key[%d] alg=TKIP key_set=%d "
"tx_pn=%02x%02x%02x%02x%02x%02x " "tx_pn=%02x%02x%02x%02x%02x%02x "
"rx_pn=%02x%02x%02x%02x%02x%02x " "rx_pn=%02x%02x%02x%02x%02x%02x "
"replays=%d icv_errors=%d local_mic_failures=%d\n", "replays=%d icv_errors=%d local_mic_failures=%d\n",
...@@ -731,7 +732,6 @@ static char *rtllib_tkip_print_stats(char *p, void *priv) ...@@ -731,7 +732,6 @@ static char *rtllib_tkip_print_stats(char *p, void *priv)
tkip->dot11RSNAStatsTKIPReplays, tkip->dot11RSNAStatsTKIPReplays,
tkip->dot11RSNAStatsTKIPICVErrors, tkip->dot11RSNAStatsTKIPICVErrors,
tkip->dot11RSNAStatsTKIPLocalMICFailures); tkip->dot11RSNAStatsTKIPLocalMICFailures);
return p;
} }
static struct lib80211_crypto_ops rtllib_crypt_tkip = { static struct lib80211_crypto_ops rtllib_crypt_tkip = {
......
...@@ -247,12 +247,10 @@ static int prism2_wep_get_key(void *key, int len, u8 *seq, void *priv) ...@@ -247,12 +247,10 @@ static int prism2_wep_get_key(void *key, int len, u8 *seq, void *priv)
} }
static char *prism2_wep_print_stats(char *p, void *priv) static void prism2_wep_print_stats(struct seq_file *m, void *priv)
{ {
struct prism2_wep_data *wep = priv; struct prism2_wep_data *wep = priv;
p += sprintf(p, "key[%d] alg=WEP len=%d\n", seq_printf(m, "key[%d] alg=WEP len=%d\n", wep->key_idx, wep->key_len);
wep->key_idx, wep->key_len);
return p;
} }
static struct lib80211_crypto_ops rtllib_crypt_wep = { static struct lib80211_crypto_ops rtllib_crypt_wep = {
......
...@@ -30,6 +30,8 @@ ...@@ -30,6 +30,8 @@
#include <linux/skbuff.h> #include <linux/skbuff.h>
#include <linux/ieee80211.h> #include <linux/ieee80211.h>
#include <linux/timer.h> #include <linux/timer.h>
#include <linux/seq_file.h>
/* print_ssid() is intended to be used in debug (and possibly error) /* print_ssid() is intended to be used in debug (and possibly error)
* messages. It should never be used for passing ssid to user space. */ * messages. It should never be used for passing ssid to user space. */
const char *print_ssid(char *buf, const char *ssid, u8 ssid_len); const char *print_ssid(char *buf, const char *ssid, u8 ssid_len);
...@@ -75,7 +77,7 @@ struct lib80211_crypto_ops { ...@@ -75,7 +77,7 @@ struct lib80211_crypto_ops {
/* procfs handler for printing out key information and possible /* procfs handler for printing out key information and possible
* statistics */ * statistics */
char *(*print_stats) (char *p, void *priv); void (*print_stats) (struct seq_file *m, void *priv);
/* Crypto specific flag get/set for configuration settings */ /* Crypto specific flag get/set for configuration settings */
unsigned long (*get_flags) (void *priv); unsigned long (*get_flags) (void *priv);
......
...@@ -430,11 +430,12 @@ static int lib80211_ccmp_get_key(void *key, int len, u8 * seq, void *priv) ...@@ -430,11 +430,12 @@ static int lib80211_ccmp_get_key(void *key, int len, u8 * seq, void *priv)
return CCMP_TK_LEN; return CCMP_TK_LEN;
} }
static char *lib80211_ccmp_print_stats(char *p, void *priv) static void lib80211_ccmp_print_stats(struct seq_file *m, void *priv)
{ {
struct lib80211_ccmp_data *ccmp = priv; struct lib80211_ccmp_data *ccmp = priv;
p += sprintf(p, "key[%d] alg=CCMP key_set=%d " seq_printf(m,
"key[%d] alg=CCMP key_set=%d "
"tx_pn=%02x%02x%02x%02x%02x%02x " "tx_pn=%02x%02x%02x%02x%02x%02x "
"rx_pn=%02x%02x%02x%02x%02x%02x " "rx_pn=%02x%02x%02x%02x%02x%02x "
"format_errors=%d replays=%d decrypt_errors=%d\n", "format_errors=%d replays=%d decrypt_errors=%d\n",
...@@ -446,8 +447,6 @@ static char *lib80211_ccmp_print_stats(char *p, void *priv) ...@@ -446,8 +447,6 @@ static char *lib80211_ccmp_print_stats(char *p, void *priv)
ccmp->dot11RSNAStatsCCMPFormatErrors, ccmp->dot11RSNAStatsCCMPFormatErrors,
ccmp->dot11RSNAStatsCCMPReplays, ccmp->dot11RSNAStatsCCMPReplays,
ccmp->dot11RSNAStatsCCMPDecryptErrors); ccmp->dot11RSNAStatsCCMPDecryptErrors);
return p;
} }
static struct lib80211_crypto_ops lib80211_crypt_ccmp = { static struct lib80211_crypto_ops lib80211_crypt_ccmp = {
......
...@@ -703,10 +703,11 @@ static int lib80211_tkip_get_key(void *key, int len, u8 * seq, void *priv) ...@@ -703,10 +703,11 @@ static int lib80211_tkip_get_key(void *key, int len, u8 * seq, void *priv)
return TKIP_KEY_LEN; return TKIP_KEY_LEN;
} }
static char *lib80211_tkip_print_stats(char *p, void *priv) static void lib80211_tkip_print_stats(struct seq_file *m, void *priv)
{ {
struct lib80211_tkip_data *tkip = priv; struct lib80211_tkip_data *tkip = priv;
p += sprintf(p, "key[%d] alg=TKIP key_set=%d " seq_printf(m,
"key[%d] alg=TKIP key_set=%d "
"tx_pn=%02x%02x%02x%02x%02x%02x " "tx_pn=%02x%02x%02x%02x%02x%02x "
"rx_pn=%02x%02x%02x%02x%02x%02x " "rx_pn=%02x%02x%02x%02x%02x%02x "
"replays=%d icv_errors=%d local_mic_failures=%d\n", "replays=%d icv_errors=%d local_mic_failures=%d\n",
...@@ -726,7 +727,6 @@ static char *lib80211_tkip_print_stats(char *p, void *priv) ...@@ -726,7 +727,6 @@ static char *lib80211_tkip_print_stats(char *p, void *priv)
tkip->dot11RSNAStatsTKIPReplays, tkip->dot11RSNAStatsTKIPReplays,
tkip->dot11RSNAStatsTKIPICVErrors, tkip->dot11RSNAStatsTKIPICVErrors,
tkip->dot11RSNAStatsTKIPLocalMICFailures); tkip->dot11RSNAStatsTKIPLocalMICFailures);
return p;
} }
static struct lib80211_crypto_ops lib80211_crypt_tkip = { static struct lib80211_crypto_ops lib80211_crypt_tkip = {
......
...@@ -253,11 +253,10 @@ static int lib80211_wep_get_key(void *key, int len, u8 * seq, void *priv) ...@@ -253,11 +253,10 @@ static int lib80211_wep_get_key(void *key, int len, u8 * seq, void *priv)
return wep->key_len; return wep->key_len;
} }
static char *lib80211_wep_print_stats(char *p, void *priv) static void lib80211_wep_print_stats(struct seq_file *m, void *priv)
{ {
struct lib80211_wep_data *wep = priv; struct lib80211_wep_data *wep = priv;
p += sprintf(p, "key[%d] alg=WEP len=%d\n", wep->key_idx, wep->key_len); seq_printf(m, "key[%d] alg=WEP len=%d\n", wep->key_idx, wep->key_len);
return p;
} }
static struct lib80211_crypto_ops lib80211_crypt_wep = { static struct lib80211_crypto_ops lib80211_crypt_wep = {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment