P2P: Add p2p_get_peer_found to get peer info
This will only retrieve information about peers that have been fully discovered, not peers that are only half-discovered based on their Probe Request frames. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
8fd7dc1b1c
commit
c165d81eea
2 changed files with 51 additions and 0 deletions
|
@ -3239,3 +3239,44 @@ const u8 * p2p_get_go_neg_peer(struct p2p_data *p2p)
|
||||||
return NULL;
|
return NULL;
|
||||||
return p2p->go_neg_peer->info.p2p_device_addr;
|
return p2p->go_neg_peer->info.p2p_device_addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const struct p2p_peer_info *
|
||||||
|
p2p_get_peer_found(struct p2p_data *p2p, const u8 *addr, int next)
|
||||||
|
{
|
||||||
|
struct p2p_device *dev;
|
||||||
|
|
||||||
|
if (addr) {
|
||||||
|
dev = p2p_get_device(p2p, addr);
|
||||||
|
if (!dev)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (!next) {
|
||||||
|
if (dev->flags & P2P_DEV_PROBE_REQ_ONLY)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
return &dev->info;
|
||||||
|
} else {
|
||||||
|
do {
|
||||||
|
dev = dl_list_first(&dev->list,
|
||||||
|
struct p2p_device,
|
||||||
|
list);
|
||||||
|
if (&dev->list == &p2p->devices)
|
||||||
|
return NULL;
|
||||||
|
} while (dev->flags & P2P_DEV_PROBE_REQ_ONLY);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
dev = dl_list_first(&p2p->devices, struct p2p_device, list);
|
||||||
|
if (!dev)
|
||||||
|
return NULL;
|
||||||
|
while (dev->flags & P2P_DEV_PROBE_REQ_ONLY) {
|
||||||
|
dev = dl_list_first(&dev->list,
|
||||||
|
struct p2p_device,
|
||||||
|
list);
|
||||||
|
if (&dev->list == &p2p->devices)
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return &dev->info;
|
||||||
|
}
|
||||||
|
|
|
@ -1372,4 +1372,14 @@ unsigned int p2p_get_group_num_members(struct p2p_group *group);
|
||||||
*/
|
*/
|
||||||
const u8 * p2p_iterate_group_members(struct p2p_group *group, void **next);
|
const u8 * p2p_iterate_group_members(struct p2p_group *group, void **next);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* p2p_get_peer_found - Get P2P peer info structure of a found peer
|
||||||
|
* @p2p: P2P module context from p2p_init()
|
||||||
|
* @addr: P2P Device Address of the peer or %NULL to indicate the first peer
|
||||||
|
* @next: Whether to select the peer entry following the one indicated by addr
|
||||||
|
* Returns: The first P2P peer info available or %NULL if no such peer exists
|
||||||
|
*/
|
||||||
|
const struct p2p_peer_info *
|
||||||
|
p2p_get_peer_found(struct p2p_data *p2p, const u8 *addr, int next);
|
||||||
|
|
||||||
#endif /* P2P_H */
|
#endif /* P2P_H */
|
||||||
|
|
Loading…
Reference in a new issue