Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 15407
b: refs/heads/master
c: 14c0fa2
h: refs/heads/master
i:
  15405: f6bfb94
  15403: 69e0131
  15399: fb11196
  15391: 66089a5
v: v3
  • Loading branch information
Stefan Richter authored and Jody McIntyre committed Dec 1, 2005
1 parent e4d378c commit d509177
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 01fc99864ecc678c4f1f476b2a8b64ebcb14e733
refs/heads/master: 14c0fa243b358c24040ff5f44b60c47aaf6430c3
1 change: 1 addition & 0 deletions trunk/drivers/ieee1394/hosts.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ struct hpsb_host {
/* this nodes state */
unsigned in_bus_reset:1;
unsigned is_shutdown:1;
unsigned resume_packet_sent:1;

/* this nodes' duties on the bus */
unsigned is_root:1;
Expand Down
25 changes: 25 additions & 0 deletions trunk/drivers/ieee1394/nodemgr.c
Original file line number Diff line number Diff line change
Expand Up @@ -1410,6 +1410,24 @@ static void nodemgr_node_probe(struct host_info *hi, int generation)
return;
}

static int nodemgr_send_resume_packet(struct hpsb_host *host)
{
struct hpsb_packet *packet;
int ret = 1;

packet = hpsb_make_phypacket(host,
0x003c0000 | NODEID_TO_NODE(host->node_id) << 24);
if (packet) {
packet->no_waiter = 1;
packet->generation = get_hpsb_generation(host);
ret = hpsb_send_packet(packet);
}
if (ret)
HPSB_WARN("fw-host%d: Failed to broadcast resume packet",
host->id);
return ret;
}

/* Because we are a 1394a-2000 compliant IRM, we need to inform all the other
* nodes of the broadcast channel. (Really we're only setting the validity
* bit). Other IRM responsibilities go in here as well. */
Expand Down Expand Up @@ -1460,6 +1478,13 @@ static int nodemgr_do_irm_duties(struct hpsb_host *host, int cycles)
}
}

/* Some devices suspend their ports while being connected to an inactive
* host adapter, i.e. if connected before the low-level driver is
* loaded. They become visible either when physically unplugged and
* replugged, or when receiving a resume packet. Send one once. */
if (!host->resume_packet_sent && !nodemgr_send_resume_packet(host))
host->resume_packet_sent = 1;

return 1;
}

Expand Down

0 comments on commit d509177

Please sign in to comment.