Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

[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
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -103,9 +103,12 @@ int __init irlmp_init(void)
	irlmp->last_lsap_sel = 0x0f; /* Reserved 0x00-0x0f */
	strcpy(sysctl_devname, "Linux");

	/* Do discovery every 3 seconds */
	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;
}
+1 −3
Original line number Diff line number Diff line
@@ -174,8 +174,6 @@ void irlmp_discovery_timer_expired(void *data)
	/* We always cleanup the log (active & passive discovery) */
	irlmp_do_expiry();

	/* Active discovery is conditional */
	if (sysctl_discovery)
	irlmp_do_discovery(sysctl_discovery_slots);

	/* Restart timer */
+27 −1
Original line number Diff line number Diff line
@@ -29,6 +29,8 @@
#include <linux/init.h>

#include <net/irda/irda.h>		/* irda_debug */
#include <net/irda/irlmp.h>
#include <net/irda/timer.h>
#include <net/irda/irias_object.h>

extern int  sysctl_discovery;
@@ -45,6 +47,8 @@ extern int sysctl_max_noreply_time;
extern int  sysctl_warn_noreply_time;
extern int  sysctl_lap_keepalive_time;

extern struct irlmp_cb *irlmp;

/* this is needed for the proc_dointvec_minmax - Jean II */
static int max_discovery_slots = 16;		/* ??? */
static int min_discovery_slots = 1;
@@ -85,6 +89,27 @@ static int do_devname(ctl_table *table, int write, struct file *filp,
	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 */
static ctl_table irda_table[] = {
	{
@@ -93,7 +118,8 @@ static ctl_table irda_table[] = {
		.data		= &sysctl_discovery,
		.maxlen		= sizeof(int),
		.mode		= 0644,
		.proc_handler	= &proc_dointvec
		.proc_handler	= &do_discovery,
		.strategy       = &sysctl_intvec
	},
	{
		.ctl_name	= NET_IRDA_DEVNAME,