qcacmn: add APIs to iterate the peers at vdev level

Add new APIs to iterate through the vdev peer list
by taking the peer reference.

A call back has to be passed to these APIs which will
be called for every peer in the lisst

dp_vdev_iterate_peer() -> iterates through peer_list of vdev
dp_pdev_iterate_peer() -> iterates through peer_list of all
                          vdevs in pdev
dp_soc_iterate_peer() -> iterates through peer_lists of all vdevs
                         in soc

Additonal APIs are added to for itearations where the callback
will be called outside the vdev->peer_list_lock, as these APIs
have additional memory allocations suggested to use only in case
the iteration need to happen outside lock

dp_vdev_iterate_peer_lock_safe()
dp_pdev_iterate_peer_lock_safe()
dp_soc_iterate_peer_lock_safe

Change-Id: I24632fe611355cc3e93b7f16d90913d4b8686ca9
This commit is contained in:
Chaithanya Garrepalli
2020-08-14 14:34:49 +05:30
gecommit door snandini
bovenliggende 1322dc7949
commit e2b00339f3
7 gewijzigde bestanden met toevoegingen van 576 en 276 verwijderingen

Bestand weergeven

@@ -703,9 +703,11 @@ static inline void dp_update_pdev_ingress_stats(struct dp_pdev *tgtobj,
}
static inline void dp_update_vdev_stats(struct cdp_vdev_stats *tgtobj,
struct dp_peer *srcobj)
static inline void dp_update_vdev_stats(struct dp_soc *soc,
struct dp_peer *srcobj,
void *arg)
{
struct cdp_vdev_stats *tgtobj = (struct cdp_vdev_stats *)arg;
uint8_t i;
uint8_t pream_type;
@@ -975,7 +977,6 @@ extern void dp_peer_rx_init(struct dp_pdev *pdev, struct dp_peer *peer);
void dp_peer_tx_init(struct dp_pdev *pdev, struct dp_peer *peer);
void dp_peer_cleanup(struct dp_vdev *vdev, struct dp_peer *peer);
void dp_peer_rx_cleanup(struct dp_vdev *vdev, struct dp_peer *peer);
void dp_peer_unref_delete(struct dp_peer *peer, enum dp_peer_mod_id id);
extern struct dp_peer *dp_peer_find_hash_find(struct dp_soc *soc,
uint8_t *peer_mac_addr,
int mac_addr_is_aligned,