Don't call fw_bus_probe() twice when successive self-id packets received.
This change should stabilize SBP-II device probing.
This commit is contained in:
parent
029e2ee3ee
commit
64666ed6e7
@ -522,6 +522,13 @@ firewire_attach( device_t dev )
|
|||||||
#endif
|
#endif
|
||||||
sc->fc->timeouthandle = timeout((timeout_t *)sc->fc->timeout, (void *)sc->fc, hz * 10);
|
sc->fc->timeouthandle = timeout((timeout_t *)sc->fc->timeout, (void *)sc->fc, hz * 10);
|
||||||
|
|
||||||
|
callout_init(&sc->fc->busprobe_callout
|
||||||
|
#if __FreeBSD_version >= 500000
|
||||||
|
, /* mpsafe? */ 0);
|
||||||
|
#else
|
||||||
|
);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Locate our children */
|
/* Locate our children */
|
||||||
bus_generic_probe(dev);
|
bus_generic_probe(dev);
|
||||||
|
|
||||||
@ -1215,7 +1222,8 @@ void fw_sidrcv(struct firewire_comm* fc, caddr_t buf, u_int len, u_int off)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if 1
|
#if 1
|
||||||
timeout((timeout_t *)fw_bus_probe, (void *)fc, hz/4);
|
callout_reset(&fc->busprobe_callout, hz/4,
|
||||||
|
(void *)fw_bus_probe, (void *)fc);
|
||||||
#else
|
#else
|
||||||
fw_bus_probe(fc);
|
fw_bus_probe(fc);
|
||||||
#endif
|
#endif
|
||||||
|
@ -225,7 +225,7 @@ struct firewire_comm{
|
|||||||
u_int32_t *config_rom;
|
u_int32_t *config_rom;
|
||||||
struct fw_topology_map *topology_map;
|
struct fw_topology_map *topology_map;
|
||||||
struct fw_speed_map *speed_map;
|
struct fw_speed_map *speed_map;
|
||||||
struct callout_handle tlhandle;
|
struct callout busprobe_callout;
|
||||||
struct callout_handle bmrhandle;
|
struct callout_handle bmrhandle;
|
||||||
struct callout_handle timeouthandle;
|
struct callout_handle timeouthandle;
|
||||||
struct callout_handle retry_probe_handle;
|
struct callout_handle retry_probe_handle;
|
||||||
|
Loading…
Reference in New Issue
Block a user