[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: Ross Burton <ross@openedhand.com> Signed-off-by: Samuel Ortiz <samuel@sortiz.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
c0e1899bdb
commit
91cde6f7d2
@@ -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,9 +174,7 @@ 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 */
|
irlmp_do_discovery(sysctl_discovery_slots);
|
||||||
if (sysctl_discovery)
|
|
||||||
irlmp_do_discovery(sysctl_discovery_slots);
|
|
||||||
|
|
||||||
/* Restart timer */
|
/* Restart timer */
|
||||||
irlmp_start_discovery_timer(irlmp, sysctl_discovery_timeout * HZ);
|
irlmp_start_discovery_timer(irlmp, sysctl_discovery_timeout * HZ);
|
||||||
|
@@ -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;
|
|||||||
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,
|
|||||||
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[] = {
|
|||||||
.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,
|
||||||
|
Reference in New Issue
Block a user