mac80211: clean up netdev debugfs macros a bit
Clean up the file macros a bit and use that to remove the unnecessary format function for the tkip MIC test file that really is write-only. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
e03ad6eade
commit
4cd3c4ecfc
|
@ -133,7 +133,15 @@ static ssize_t ieee80211_if_fmt_##name( \
|
|||
jiffies_to_msecs(sdata->field)); \
|
||||
}
|
||||
|
||||
#define __IEEE80211_IF_FILE(name, _write) \
|
||||
#define _IEEE80211_IF_FILE_OPS(name, _read, _write) \
|
||||
static const struct file_operations name##_ops = { \
|
||||
.read = (_read), \
|
||||
.write = (_write), \
|
||||
.open = simple_open, \
|
||||
.llseek = generic_file_llseek, \
|
||||
}
|
||||
|
||||
#define _IEEE80211_IF_FILE_R_FN(name) \
|
||||
static ssize_t ieee80211_if_read_##name(struct file *file, \
|
||||
char __user *userbuf, \
|
||||
size_t count, loff_t *ppos) \
|
||||
|
@ -141,28 +149,34 @@ static ssize_t ieee80211_if_read_##name(struct file *file, \
|
|||
return ieee80211_if_read(file->private_data, \
|
||||
userbuf, count, ppos, \
|
||||
ieee80211_if_fmt_##name); \
|
||||
} \
|
||||
static const struct file_operations name##_ops = { \
|
||||
.read = ieee80211_if_read_##name, \
|
||||
.write = (_write), \
|
||||
.open = simple_open, \
|
||||
.llseek = generic_file_llseek, \
|
||||
}
|
||||
|
||||
#define __IEEE80211_IF_FILE_W(name) \
|
||||
#define _IEEE80211_IF_FILE_W_FN(name) \
|
||||
static ssize_t ieee80211_if_write_##name(struct file *file, \
|
||||
const char __user *userbuf, \
|
||||
size_t count, loff_t *ppos) \
|
||||
{ \
|
||||
return ieee80211_if_write(file->private_data, userbuf, count, \
|
||||
ppos, ieee80211_if_parse_##name); \
|
||||
} \
|
||||
__IEEE80211_IF_FILE(name, ieee80211_if_write_##name)
|
||||
}
|
||||
|
||||
#define IEEE80211_IF_FILE_R(name) \
|
||||
_IEEE80211_IF_FILE_R_FN(name) \
|
||||
_IEEE80211_IF_FILE_OPS(name, ieee80211_if_read_##name, NULL)
|
||||
|
||||
#define IEEE80211_IF_FILE_W(name) \
|
||||
_IEEE80211_IF_FILE_W_FN(name) \
|
||||
_IEEE80211_IF_FILE_OPS(name, NULL, ieee80211_if_write_##name)
|
||||
|
||||
#define IEEE80211_IF_FILE_RW(name) \
|
||||
_IEEE80211_IF_FILE_R_FN(name) \
|
||||
_IEEE80211_IF_FILE_W_FN(name) \
|
||||
_IEEE80211_IF_FILE_OPS(name, ieee80211_if_read_##name, \
|
||||
ieee80211_if_write_##name)
|
||||
|
||||
#define IEEE80211_IF_FILE(name, field, format) \
|
||||
IEEE80211_IF_FMT_##format(name, field) \
|
||||
__IEEE80211_IF_FILE(name, NULL)
|
||||
IEEE80211_IF_FMT_##format(name, field) \
|
||||
IEEE80211_IF_FILE_R(name)
|
||||
|
||||
/* common attributes */
|
||||
IEEE80211_IF_FILE(drop_unencrypted, drop_unencrypted, DEC);
|
||||
|
@ -199,7 +213,7 @@ ieee80211_if_fmt_hw_queues(const struct ieee80211_sub_if_data *sdata,
|
|||
|
||||
return len;
|
||||
}
|
||||
__IEEE80211_IF_FILE(hw_queues, NULL);
|
||||
IEEE80211_IF_FILE_R(hw_queues);
|
||||
|
||||
/* STA attributes */
|
||||
IEEE80211_IF_FILE(bssid, u.mgd.bssid, MAC);
|
||||
|
@ -275,14 +289,7 @@ static ssize_t ieee80211_if_parse_smps(struct ieee80211_sub_if_data *sdata,
|
|||
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
__IEEE80211_IF_FILE_W(smps);
|
||||
|
||||
static ssize_t ieee80211_if_fmt_tkip_mic_test(
|
||||
const struct ieee80211_sub_if_data *sdata, char *buf, int buflen)
|
||||
{
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
IEEE80211_IF_FILE_RW(smps);
|
||||
|
||||
static ssize_t ieee80211_if_parse_tkip_mic_test(
|
||||
struct ieee80211_sub_if_data *sdata, const char *buf, int buflen)
|
||||
|
@ -349,8 +356,7 @@ static ssize_t ieee80211_if_parse_tkip_mic_test(
|
|||
|
||||
return buflen;
|
||||
}
|
||||
|
||||
__IEEE80211_IF_FILE_W(tkip_mic_test);
|
||||
IEEE80211_IF_FILE_W(tkip_mic_test);
|
||||
|
||||
static ssize_t ieee80211_if_fmt_uapsd_queues(
|
||||
const struct ieee80211_sub_if_data *sdata, char *buf, int buflen)
|
||||
|
@ -378,7 +384,7 @@ static ssize_t ieee80211_if_parse_uapsd_queues(
|
|||
|
||||
return buflen;
|
||||
}
|
||||
__IEEE80211_IF_FILE_W(uapsd_queues);
|
||||
IEEE80211_IF_FILE_RW(uapsd_queues);
|
||||
|
||||
static ssize_t ieee80211_if_fmt_uapsd_max_sp_len(
|
||||
const struct ieee80211_sub_if_data *sdata, char *buf, int buflen)
|
||||
|
@ -406,7 +412,7 @@ static ssize_t ieee80211_if_parse_uapsd_max_sp_len(
|
|||
|
||||
return buflen;
|
||||
}
|
||||
__IEEE80211_IF_FILE_W(uapsd_max_sp_len);
|
||||
IEEE80211_IF_FILE_RW(uapsd_max_sp_len);
|
||||
|
||||
/* AP attributes */
|
||||
IEEE80211_IF_FILE(num_mcast_sta, u.ap.num_mcast_sta, ATOMIC);
|
||||
|
@ -419,7 +425,7 @@ static ssize_t ieee80211_if_fmt_num_buffered_multicast(
|
|||
return scnprintf(buf, buflen, "%u\n",
|
||||
skb_queue_len(&sdata->u.ap.ps.bc_buf));
|
||||
}
|
||||
__IEEE80211_IF_FILE(num_buffered_multicast, NULL);
|
||||
IEEE80211_IF_FILE_R(num_buffered_multicast);
|
||||
|
||||
/* IBSS attributes */
|
||||
static ssize_t ieee80211_if_fmt_tsf(
|
||||
|
@ -470,7 +476,7 @@ static ssize_t ieee80211_if_parse_tsf(
|
|||
|
||||
return buflen;
|
||||
}
|
||||
__IEEE80211_IF_FILE_W(tsf);
|
||||
IEEE80211_IF_FILE_RW(tsf);
|
||||
|
||||
|
||||
/* WDS attributes */
|
||||
|
|
Loading…
Reference in New Issue