Lines Matching refs:peer
357 struct fwnet_peer *peer, u16 datagram_label, unsigned dg_size, in fwnet_pd_new() argument
381 list_add_tail(&new->pd_link, &peer->pd_list); in fwnet_pd_new()
393 static struct fwnet_partial_datagram *fwnet_pd_find(struct fwnet_peer *peer, in fwnet_pd_find() argument
398 list_for_each_entry(pd, &peer->pd_list, pd_link) in fwnet_pd_find()
418 static bool fwnet_pd_update(struct fwnet_peer *peer, in fwnet_pd_update() argument
431 list_move_tail(&pd->pd_link, &peer->pd_list); in fwnet_pd_update()
449 struct fwnet_peer *peer; in fwnet_peer_find_by_guid() local
451 list_for_each_entry(peer, &dev->peer_list, peer_link) in fwnet_peer_find_by_guid()
452 if (peer->guid == guid) in fwnet_peer_find_by_guid()
453 return peer; in fwnet_peer_find_by_guid()
462 struct fwnet_peer *peer; in fwnet_peer_find_by_node_id() local
464 list_for_each_entry(peer, &dev->peer_list, peer_link) in fwnet_peer_find_by_node_id()
465 if (peer->node_id == node_id && in fwnet_peer_find_by_node_id()
466 peer->generation == generation) in fwnet_peer_find_by_node_id()
467 return peer; in fwnet_peer_find_by_node_id()
573 struct fwnet_peer *peer; in fwnet_incoming_packet() local
621 peer = fwnet_peer_find_by_node_id(dev, source_node_id, generation); in fwnet_incoming_packet()
622 if (!peer) { in fwnet_incoming_packet()
627 pd = fwnet_pd_find(peer, datagram_label); in fwnet_incoming_packet()
629 while (peer->pdg_size >= FWNET_MAX_FRAGMENTS) { in fwnet_incoming_packet()
631 fwnet_pd_delete(list_first_entry(&peer->pd_list, in fwnet_incoming_packet()
633 peer->pdg_size--; in fwnet_incoming_packet()
635 pd = fwnet_pd_new(net, peer, datagram_label, in fwnet_incoming_packet()
641 peer->pdg_size++; in fwnet_incoming_packet()
650 pd = fwnet_pd_new(net, peer, datagram_label, in fwnet_incoming_packet()
653 peer->pdg_size--; in fwnet_incoming_packet()
658 if (!fwnet_pd_update(peer, pd, buf, fg_off, len)) { in fwnet_incoming_packet()
665 peer->pdg_size--; in fwnet_incoming_packet()
677 peer->pdg_size--; in fwnet_incoming_packet()
1224 struct fwnet_peer *peer; in fwnet_tx() local
1282 peer = fwnet_peer_find_by_guid(dev, be64_to_cpu(guid)); in fwnet_tx()
1283 if (!peer) in fwnet_tx()
1286 generation = peer->generation; in fwnet_tx()
1287 dest_node = peer->node_id; in fwnet_tx()
1288 max_payload = peer->max_payload; in fwnet_tx()
1289 datagram_label_ptr = &peer->datagram_label; in fwnet_tx()
1294 ptask->speed = peer->speed; in fwnet_tx()
1401 struct fwnet_peer *peer; in fwnet_add_peer() local
1403 peer = kmalloc(sizeof(*peer), GFP_KERNEL); in fwnet_add_peer()
1404 if (!peer) in fwnet_add_peer()
1407 dev_set_drvdata(&unit->device, peer); in fwnet_add_peer()
1409 peer->dev = dev; in fwnet_add_peer()
1410 peer->guid = (u64)device->config_rom[3] << 32 | device->config_rom[4]; in fwnet_add_peer()
1411 INIT_LIST_HEAD(&peer->pd_list); in fwnet_add_peer()
1412 peer->pdg_size = 0; in fwnet_add_peer()
1413 peer->datagram_label = 0; in fwnet_add_peer()
1414 peer->speed = device->max_speed; in fwnet_add_peer()
1415 peer->max_payload = fwnet_max_payload(device->max_rec, peer->speed); in fwnet_add_peer()
1417 peer->generation = device->generation; in fwnet_add_peer()
1419 peer->node_id = device->node_id; in fwnet_add_peer()
1422 list_add_tail(&peer->peer_link, &dev->peer_list); in fwnet_add_peer()
1524 struct fwnet_peer *peer = dev_get_drvdata(&unit->device); in fwnet_update() local
1529 spin_lock_irq(&peer->dev->lock); in fwnet_update()
1530 peer->node_id = device->node_id; in fwnet_update()
1531 peer->generation = generation; in fwnet_update()
1532 spin_unlock_irq(&peer->dev->lock); in fwnet_update()
1535 static void fwnet_remove_peer(struct fwnet_peer *peer, struct fwnet_device *dev) in fwnet_remove_peer() argument
1540 list_del(&peer->peer_link); in fwnet_remove_peer()
1545 list_for_each_entry_safe(pd, pd_next, &peer->pd_list, pd_link) in fwnet_remove_peer()
1548 kfree(peer); in fwnet_remove_peer()
1553 struct fwnet_peer *peer = dev_get_drvdata(&unit->device); in fwnet_remove() local
1554 struct fwnet_device *dev = peer->dev; in fwnet_remove()
1562 fwnet_remove_peer(peer, dev); in fwnet_remove()