Commit 91cde6f7 authored by Ross Burton's avatar Ross Burton Committed by David S. Miller

[IrDA]: LMP discovery timer not started by default

By default, LMP sets up a 3 seconds timer for discovery.
We don't need it until discovery is set to 1.
Signed-off-by: default avatarRoss Burton <ross@openedhand.com>
Signed-off-by: default avatarSamuel Ortiz <samuel@sortiz.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c0e1899b
...@@ -103,9 +103,12 @@ int __init irlmp_init(void) ...@@ -103,9 +103,12 @@ int __init irlmp_init(void)
irlmp->last_lsap_sel = 0x0f; /* Reserved 0x00-0x0f */ irlmp->last_lsap_sel = 0x0f; /* Reserved 0x00-0x0f */
strcpy(sysctl_devname, "Linux"); strcpy(sysctl_devname, "Linux");
/* Do discovery every 3 seconds */
init_timer(&irlmp->discovery_timer); init_timer(&irlmp->discovery_timer);
irlmp_start_discovery_timer(irlmp, sysctl_discovery_timeout*HZ);
/* Do discovery every 3 seconds, conditionaly */
if (sysctl_discovery)
irlmp_start_discovery_timer(irlmp,
sysctl_discovery_timeout*HZ);
return 0; return 0;
} }
......
...@@ -174,8 +174,6 @@ void irlmp_discovery_timer_expired(void *data) ...@@ -174,8 +174,6 @@ void irlmp_discovery_timer_expired(void *data)
/* We always cleanup the log (active & passive discovery) */ /* We always cleanup the log (active & passive discovery) */
irlmp_do_expiry(); irlmp_do_expiry();
/* Active discovery is conditional */
if (sysctl_discovery)
irlmp_do_discovery(sysctl_discovery_slots); irlmp_do_discovery(sysctl_discovery_slots);
/* Restart timer */ /* Restart timer */
......
...@@ -29,6 +29,8 @@ ...@@ -29,6 +29,8 @@
#include <linux/init.h> #include <linux/init.h>
#include <net/irda/irda.h> /* irda_debug */ #include <net/irda/irda.h> /* irda_debug */
#include <net/irda/irlmp.h>
#include <net/irda/timer.h>
#include <net/irda/irias_object.h> #include <net/irda/irias_object.h>
extern int sysctl_discovery; extern int sysctl_discovery;
...@@ -45,6 +47,8 @@ extern int sysctl_max_noreply_time; ...@@ -45,6 +47,8 @@ extern int sysctl_max_noreply_time;
extern int sysctl_warn_noreply_time; extern int sysctl_warn_noreply_time;
extern int sysctl_lap_keepalive_time; extern int sysctl_lap_keepalive_time;
extern struct irlmp_cb *irlmp;
/* this is needed for the proc_dointvec_minmax - Jean II */ /* this is needed for the proc_dointvec_minmax - Jean II */
static int max_discovery_slots = 16; /* ??? */ static int max_discovery_slots = 16; /* ??? */
static int min_discovery_slots = 1; static int min_discovery_slots = 1;
...@@ -85,6 +89,27 @@ static int do_devname(ctl_table *table, int write, struct file *filp, ...@@ -85,6 +89,27 @@ static int do_devname(ctl_table *table, int write, struct file *filp,
return ret; return ret;
} }
static int do_discovery(ctl_table *table, int write, struct file *filp,
void __user *buffer, size_t *lenp, loff_t *ppos)
{
int ret;
ret = proc_dointvec(table, write, filp, buffer, lenp, ppos);
if (ret)
return ret;
if (irlmp == NULL)
return -ENODEV;
if (sysctl_discovery)
irlmp_start_discovery_timer(irlmp, sysctl_discovery_timeout*HZ);
else
del_timer_sync(&irlmp->discovery_timer);
return ret;
}
/* One file */ /* One file */
static ctl_table irda_table[] = { static ctl_table irda_table[] = {
{ {
...@@ -93,7 +118,8 @@ static ctl_table irda_table[] = { ...@@ -93,7 +118,8 @@ static ctl_table irda_table[] = {
.data = &sysctl_discovery, .data = &sysctl_discovery,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec .proc_handler = &do_discovery,
.strategy = &sysctl_intvec
}, },
{ {
.ctl_name = NET_IRDA_DEVNAME, .ctl_name = NET_IRDA_DEVNAME,
......
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