提交 4cd3c4ec 编写于 作者: J Johannes Berg

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: NJohannes Berg <johannes.berg@intel.com>
上级 e03ad6ea
...@@ -133,7 +133,15 @@ static ssize_t ieee80211_if_fmt_##name( \ ...@@ -133,7 +133,15 @@ static ssize_t ieee80211_if_fmt_##name( \
jiffies_to_msecs(sdata->field)); \ 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, \ static ssize_t ieee80211_if_read_##name(struct file *file, \
char __user *userbuf, \ char __user *userbuf, \
size_t count, loff_t *ppos) \ size_t count, loff_t *ppos) \
...@@ -141,28 +149,34 @@ static ssize_t ieee80211_if_read_##name(struct file *file, \ ...@@ -141,28 +149,34 @@ static ssize_t ieee80211_if_read_##name(struct file *file, \
return ieee80211_if_read(file->private_data, \ return ieee80211_if_read(file->private_data, \
userbuf, count, ppos, \ userbuf, count, ppos, \
ieee80211_if_fmt_##name); \ 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, \ static ssize_t ieee80211_if_write_##name(struct file *file, \
const char __user *userbuf, \ const char __user *userbuf, \
size_t count, loff_t *ppos) \ size_t count, loff_t *ppos) \
{ \ { \
return ieee80211_if_write(file->private_data, userbuf, count, \ return ieee80211_if_write(file->private_data, userbuf, count, \
ppos, ieee80211_if_parse_##name); \ 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) \ #define IEEE80211_IF_FILE(name, field, format) \
IEEE80211_IF_FMT_##format(name, field) \ IEEE80211_IF_FMT_##format(name, field) \
__IEEE80211_IF_FILE(name, NULL) IEEE80211_IF_FILE_R(name)
/* common attributes */ /* common attributes */
IEEE80211_IF_FILE(drop_unencrypted, drop_unencrypted, DEC); IEEE80211_IF_FILE(drop_unencrypted, drop_unencrypted, DEC);
...@@ -199,7 +213,7 @@ ieee80211_if_fmt_hw_queues(const struct ieee80211_sub_if_data *sdata, ...@@ -199,7 +213,7 @@ ieee80211_if_fmt_hw_queues(const struct ieee80211_sub_if_data *sdata,
return len; return len;
} }
__IEEE80211_IF_FILE(hw_queues, NULL); IEEE80211_IF_FILE_R(hw_queues);
/* STA attributes */ /* STA attributes */
IEEE80211_IF_FILE(bssid, u.mgd.bssid, MAC); 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, ...@@ -275,14 +289,7 @@ static ssize_t ieee80211_if_parse_smps(struct ieee80211_sub_if_data *sdata,
return -EINVAL; return -EINVAL;
} }
IEEE80211_IF_FILE_RW(smps);
__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;
}
static ssize_t ieee80211_if_parse_tkip_mic_test( static ssize_t ieee80211_if_parse_tkip_mic_test(
struct ieee80211_sub_if_data *sdata, const char *buf, int buflen) struct ieee80211_sub_if_data *sdata, const char *buf, int buflen)
...@@ -349,8 +356,7 @@ static ssize_t ieee80211_if_parse_tkip_mic_test( ...@@ -349,8 +356,7 @@ static ssize_t ieee80211_if_parse_tkip_mic_test(
return buflen; return buflen;
} }
IEEE80211_IF_FILE_W(tkip_mic_test);
__IEEE80211_IF_FILE_W(tkip_mic_test);
static ssize_t ieee80211_if_fmt_uapsd_queues( static ssize_t ieee80211_if_fmt_uapsd_queues(
const struct ieee80211_sub_if_data *sdata, char *buf, int buflen) const struct ieee80211_sub_if_data *sdata, char *buf, int buflen)
...@@ -378,7 +384,7 @@ static ssize_t ieee80211_if_parse_uapsd_queues( ...@@ -378,7 +384,7 @@ static ssize_t ieee80211_if_parse_uapsd_queues(
return buflen; return buflen;
} }
__IEEE80211_IF_FILE_W(uapsd_queues); IEEE80211_IF_FILE_RW(uapsd_queues);
static ssize_t ieee80211_if_fmt_uapsd_max_sp_len( static ssize_t ieee80211_if_fmt_uapsd_max_sp_len(
const struct ieee80211_sub_if_data *sdata, char *buf, int buflen) 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( ...@@ -406,7 +412,7 @@ static ssize_t ieee80211_if_parse_uapsd_max_sp_len(
return buflen; return buflen;
} }
__IEEE80211_IF_FILE_W(uapsd_max_sp_len); IEEE80211_IF_FILE_RW(uapsd_max_sp_len);
/* AP attributes */ /* AP attributes */
IEEE80211_IF_FILE(num_mcast_sta, u.ap.num_mcast_sta, ATOMIC); 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( ...@@ -419,7 +425,7 @@ static ssize_t ieee80211_if_fmt_num_buffered_multicast(
return scnprintf(buf, buflen, "%u\n", return scnprintf(buf, buflen, "%u\n",
skb_queue_len(&sdata->u.ap.ps.bc_buf)); 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 */ /* IBSS attributes */
static ssize_t ieee80211_if_fmt_tsf( static ssize_t ieee80211_if_fmt_tsf(
...@@ -470,7 +476,7 @@ static ssize_t ieee80211_if_parse_tsf( ...@@ -470,7 +476,7 @@ static ssize_t ieee80211_if_parse_tsf(
return buflen; return buflen;
} }
__IEEE80211_IF_FILE_W(tsf); IEEE80211_IF_FILE_RW(tsf);
/* WDS attributes */ /* WDS attributes */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册