Commit ac66b628 authored by Luca Ceresoli's avatar Luca Ceresoli Committed by Greg Kroah-Hartman

staging: rtl8188eu: remove rtw_proc_{init,remove}_one

rtw_proc_init_one() and rtw_proc_remove_one() are two very long
functions that are supposed to create a bunch of proc entries to
access debugging features of the driver.

But both of them are under #if 0 since their first commit three years
ago (5adef66a), replaced by two empty
functions.

Should they be moved out of #if 0 thay would not even compile, as they
used functions that have been removed years ago
(create_proc_read_entry()) and they use variables that are not defined
(e.g. rtw_proc_cnt).

rtw_proc_init_one() mentions several other functions that are not
mentioned anywhere else in the kernel tree. Thus, after the present
patch, all of those other functions can be cleanly removed as well, as
they will be not mentioned anymore, not even in disabled code.

Subsequent commits remove those other functions.

Should anybody want to implement (in a proper way) the mentioned
debugging features, they can still fetch this code from the git
history.
Signed-off-by: default avatarLuca Ceresoli <luca@lucaceresoli.net>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Kyle Kuffermann <kyle.kuffermann@gmail.com>
Cc: Binoy Jayan <binoy.jayan@linaro.org>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: "Rémy Oudompheng" <remyoudompheng@gmail.com>
Cc: Ivan Safonov <insafonov@gmail.com>
Cc: Jakub Sitnicki <jsitnicki@gmail.com>
Cc: Alexey Khoroshilov <khoroshilov@ispras.ru>
Cc: Bhaktipriya Shridhar <bhaktipriya96@gmail.com>
Cc: Bhumika Goyal <bhumirks@gmail.com>
Cc: devel@driverdev.osuosl.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 181c6c67
......@@ -34,7 +34,6 @@ int rtw_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
int rtw_init_netdev_name(struct net_device *pnetdev, const char *ifname);
struct net_device *rtw_init_netdev(struct adapter *padapter);
u16 rtw_recv_select_queue(struct sk_buff *skb);
void rtw_proc_remove_one(struct net_device *dev);
int pm_netdev_open(struct net_device *pnetdev, u8 bnormal);
void rtw_ips_dev_unload(struct adapter *padapter);
......
......@@ -149,352 +149,6 @@ MODULE_PARM_DESC(monitor_enable, "Enable monitor inferface (default: false)");
static int netdev_open(struct net_device *pnetdev);
static int netdev_close(struct net_device *pnetdev);
/* dummy routines */
void rtw_proc_remove_one(struct net_device *dev)
{
}
static void rtw_proc_init_one(struct net_device *dev)
{
}
#if 0 /* TODO: Convert these to /sys */
static void rtw_proc_init_one(struct net_device *dev)
{
struct proc_dir_entry *dir_dev = NULL;
struct proc_dir_entry *entry = NULL;
struct adapter *padapter = rtw_netdev_priv(dev);
u8 rf_type;
if (rtw_proc == NULL) {
memcpy(rtw_proc_name, DRV_NAME, sizeof(DRV_NAME));
rtw_proc = create_proc_entry(rtw_proc_name, S_IFDIR,
init_net.proc_net);
if (rtw_proc == NULL) {
DBG_88E(KERN_ERR "Unable to create rtw_proc directory\n");
return;
}
entry = create_proc_read_entry("ver_info", S_IFREG | S_IRUGO,
rtw_proc, proc_get_drv_version,
dev);
if (!entry) {
pr_info("Unable to create_proc_read_entry!\n");
return;
}
}
if (padapter->dir_dev == NULL) {
padapter->dir_dev = create_proc_entry(dev->name,
S_IFDIR | S_IRUGO | S_IXUGO,
rtw_proc);
dir_dev = padapter->dir_dev;
if (dir_dev == NULL) {
if (rtw_proc_cnt == 0 && rtw_proc) {
remove_proc_entry(rtw_proc_name, init_net.proc_net);
rtw_proc = NULL;
}
pr_info("Unable to create dir_dev directory\n");
return;
}
} else {
return;
}
rtw_proc_cnt++;
entry = create_proc_read_entry("write_reg", S_IFREG | S_IRUGO,
dir_dev, proc_get_write_reg, dev);
if (!entry) {
pr_info("Unable to create_proc_read_entry!\n");
return;
}
entry->write_proc = proc_set_write_reg;
entry = create_proc_read_entry("read_reg", S_IFREG | S_IRUGO,
dir_dev, proc_get_read_reg, dev);
if (!entry) {
pr_info("Unable to create_proc_read_entry!\n");
return;
}
entry->write_proc = proc_set_read_reg;
entry = create_proc_read_entry("fwstate", S_IFREG | S_IRUGO,
dir_dev, proc_get_fwstate, dev);
if (!entry) {
pr_info("Unable to create_proc_read_entry!\n");
return;
}
entry = create_proc_read_entry("sec_info", S_IFREG | S_IRUGO,
dir_dev, proc_get_sec_info, dev);
if (!entry) {
pr_info("Unable to create_proc_read_entry!\n");
return;
}
entry = create_proc_read_entry("mlmext_state", S_IFREG | S_IRUGO,
dir_dev, proc_get_mlmext_state, dev);
if (!entry) {
pr_info("Unable to create_proc_read_entry!\n");
return;
}
entry = create_proc_read_entry("qos_option", S_IFREG | S_IRUGO,
dir_dev, proc_get_qos_option, dev);
if (!entry) {
pr_info("Unable to create_proc_read_entry!\n");
return;
}
entry = create_proc_read_entry("ht_option", S_IFREG | S_IRUGO,
dir_dev, proc_get_ht_option, dev);
if (!entry) {
pr_info("Unable to create_proc_read_entry!\n");
return;
}
entry = create_proc_read_entry("rf_info", S_IFREG | S_IRUGO,
dir_dev, proc_get_rf_info, dev);
if (!entry) {
pr_info("Unable to create_proc_read_entry!\n");
return;
}
entry = create_proc_read_entry("ap_info", S_IFREG | S_IRUGO,
dir_dev, proc_get_ap_info, dev);
if (!entry) {
pr_info("Unable to create_proc_read_entry!\n");
return;
}
entry = create_proc_read_entry("adapter_state", S_IFREG | S_IRUGO,
dir_dev, proc_getstruct adapter_state, dev);
if (!entry) {
pr_info("Unable to create_proc_read_entry!\n");
return;
}
entry = create_proc_read_entry("trx_info", S_IFREG | S_IRUGO,
dir_dev, proc_get_trx_info, dev);
if (!entry) {
pr_info("Unable to create_proc_read_entry!\n");
return;
}
entry = create_proc_read_entry("mac_reg_dump1", S_IFREG | S_IRUGO,
dir_dev, proc_get_mac_reg_dump1, dev);
if (!entry) {
pr_info("Unable to create_proc_read_entry!\n");
return;
}
entry = create_proc_read_entry("mac_reg_dump2", S_IFREG | S_IRUGO,
dir_dev, proc_get_mac_reg_dump2, dev);
if (!entry) {
pr_info("Unable to create_proc_read_entry!\n");
return;
}
entry = create_proc_read_entry("mac_reg_dump3", S_IFREG | S_IRUGO,
dir_dev, proc_get_mac_reg_dump3, dev);
if (!entry) {
pr_info("Unable to create_proc_read_entry!\n");
return;
}
entry = create_proc_read_entry("bb_reg_dump1", S_IFREG | S_IRUGO,
dir_dev, proc_get_bb_reg_dump1, dev);
if (!entry) {
pr_info("Unable to create_proc_read_entry!\n");
return;
}
entry = create_proc_read_entry("bb_reg_dump2", S_IFREG | S_IRUGO,
dir_dev, proc_get_bb_reg_dump2, dev);
if (!entry) {
pr_info("Unable to create_proc_read_entry!\n");
return;
}
entry = create_proc_read_entry("bb_reg_dump3", S_IFREG | S_IRUGO,
dir_dev, proc_get_bb_reg_dump3, dev);
if (!entry) {
pr_info("Unable to create_proc_read_entry!\n");
return;
}
entry = create_proc_read_entry("rf_reg_dump1", S_IFREG | S_IRUGO,
dir_dev, proc_get_rf_reg_dump1, dev);
if (!entry) {
pr_info("Unable to create_proc_read_entry!\n");
return;
}
entry = create_proc_read_entry("rf_reg_dump2", S_IFREG | S_IRUGO,
dir_dev, proc_get_rf_reg_dump2, dev);
if (!entry) {
pr_info("Unable to create_proc_read_entry!\n");
return;
}
rtw_hal_get_hwreg(padapter, HW_VAR_RF_TYPE, (u8 *)(&rf_type));
if ((RF_1T2R == rf_type) || (RF_1T1R == rf_type)) {
entry = create_proc_read_entry("rf_reg_dump3",
S_IFREG | S_IRUGO, dir_dev,
proc_get_rf_reg_dump3, dev);
if (!entry) {
pr_info("Unable to create_proc_read_entry!\n");
return;
}
entry = create_proc_read_entry("rf_reg_dump4",
S_IFREG | S_IRUGO, dir_dev,
proc_get_rf_reg_dump4, dev);
if (!entry) {
pr_info("Unable to create_proc_read_entry!\n");
return;
}
}
#ifdef CONFIG_88EU_AP_MODE
entry = create_proc_read_entry("all_sta_info", S_IFREG | S_IRUGO,
dir_dev, proc_get_all_sta_info, dev);
if (!entry) {
pr_info("Unable to create_proc_read_entry!\n");
return;
}
#endif
entry = create_proc_read_entry("best_channel", S_IFREG | S_IRUGO,
dir_dev, proc_get_best_channel, dev);
if (!entry) {
pr_info("Unable to create_proc_read_entry!\n");
return;
}
entry = create_proc_read_entry("rx_signal", S_IFREG | S_IRUGO,
dir_dev, proc_get_rx_signal, dev);
if (!entry) {
pr_info("Unable to create_proc_read_entry!\n");
return;
}
entry->write_proc = proc_set_rx_signal;
entry = create_proc_read_entry("ht_enable", S_IFREG | S_IRUGO,
dir_dev, proc_get_ht_enable, dev);
if (!entry) {
pr_info("Unable to create_proc_read_entry!\n");
return;
}
entry->write_proc = proc_set_ht_enable;
entry = create_proc_read_entry("cbw40_enable", S_IFREG | S_IRUGO,
dir_dev, proc_get_cbw40_enable, dev);
if (!entry) {
pr_info("Unable to create_proc_read_entry!\n");
return;
}
entry->write_proc = proc_set_cbw40_enable;
entry = create_proc_read_entry("ampdu_enable", S_IFREG | S_IRUGO,
dir_dev, proc_get_ampdu_enable, dev);
if (!entry) {
pr_info("Unable to create_proc_read_entry!\n");
return;
}
entry->write_proc = proc_set_ampdu_enable;
entry = create_proc_read_entry("rx_stbc", S_IFREG | S_IRUGO,
dir_dev, proc_get_rx_stbc, dev);
if (!entry) {
pr_info("Unable to create_proc_read_entry!\n");
return;
}
entry->write_proc = proc_set_rx_stbc;
entry = create_proc_read_entry("path_rssi", S_IFREG | S_IRUGO,
dir_dev, proc_get_two_path_rssi, dev);
if (!entry) {
pr_info("Unable to create_proc_read_entry!\n");
return;
}
entry = create_proc_read_entry("rssi_disp", S_IFREG | S_IRUGO,
dir_dev, proc_get_rssi_disp, dev);
if (!entry) {
pr_info("Unable to create_proc_read_entry!\n");
return;
}
entry->write_proc = proc_set_rssi_disp;
}
void rtw_proc_remove_one(struct net_device *dev)
{
struct proc_dir_entry *dir_dev = NULL;
struct adapter *padapter = rtw_netdev_priv(dev);
u8 rf_type;
dir_dev = padapter->dir_dev;
padapter->dir_dev = NULL;
if (dir_dev) {
remove_proc_entry("write_reg", dir_dev);
remove_proc_entry("read_reg", dir_dev);
remove_proc_entry("fwstate", dir_dev);
remove_proc_entry("sec_info", dir_dev);
remove_proc_entry("mlmext_state", dir_dev);
remove_proc_entry("qos_option", dir_dev);
remove_proc_entry("ht_option", dir_dev);
remove_proc_entry("rf_info", dir_dev);
remove_proc_entry("ap_info", dir_dev);
remove_proc_entry("adapter_state", dir_dev);
remove_proc_entry("trx_info", dir_dev);
remove_proc_entry("mac_reg_dump1", dir_dev);
remove_proc_entry("mac_reg_dump2", dir_dev);
remove_proc_entry("mac_reg_dump3", dir_dev);
remove_proc_entry("bb_reg_dump1", dir_dev);
remove_proc_entry("bb_reg_dump2", dir_dev);
remove_proc_entry("bb_reg_dump3", dir_dev);
remove_proc_entry("rf_reg_dump1", dir_dev);
remove_proc_entry("rf_reg_dump2", dir_dev);
rtw_hal_get_hwreg(padapter, HW_VAR_RF_TYPE, (u8 *)(&rf_type));
if ((RF_1T2R == rf_type) || (RF_1T1R == rf_type)) {
remove_proc_entry("rf_reg_dump3", dir_dev);
remove_proc_entry("rf_reg_dump4", dir_dev);
}
#ifdef CONFIG_88EU_AP_MODE
remove_proc_entry("all_sta_info", dir_dev);
#endif
remove_proc_entry("best_channel", dir_dev);
remove_proc_entry("rx_signal", dir_dev);
remove_proc_entry("cbw40_enable", dir_dev);
remove_proc_entry("ht_enable", dir_dev);
remove_proc_entry("ampdu_enable", dir_dev);
remove_proc_entry("rx_stbc", dir_dev);
remove_proc_entry("path_rssi", dir_dev);
remove_proc_entry("rssi_disp", dir_dev);
remove_proc_entry(dev->name, rtw_proc);
dir_dev = NULL;
} else {
return;
}
rtw_proc_cnt--;
if (rtw_proc_cnt == 0) {
if (rtw_proc) {
remove_proc_entry("ver_info", rtw_proc);
remove_proc_entry(rtw_proc_name, init_net.proc_net);
rtw_proc = NULL;
}
}
}
#endif
static void loadparam(struct adapter *padapter, struct net_device *pnetdev)
{
struct registry_priv *registry_par = &padapter->registrypriv;
......@@ -946,7 +600,6 @@ static int _netdev_open(struct net_device *pnetdev)
}
if (padapter->intf_start)
padapter->intf_start(padapter);
rtw_proc_init_one(pnetdev);
rtw_led_control(padapter, LED_CTL_NO_LINK);
......
......@@ -448,11 +448,9 @@ static void rtw_usb_if1_deinit(struct adapter *if1)
free_mlme_ap_info(if1);
#endif
if (pnetdev) {
/* will call netdev_close() */
unregister_netdev(pnetdev);
rtw_proc_remove_one(pnetdev);
}
if (pnetdev)
unregister_netdev(pnetdev); /* will call netdev_close() */
rtl88eu_mon_deinit(if1->pmondev);
rtw_cancel_all_timer(if1);
......
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