18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0+ */
28c2ecf20Sopenharmony_ci/* Copyright (c) 2015 Quantenna Communications. All rights reserved. */
38c2ecf20Sopenharmony_ci
48c2ecf20Sopenharmony_ci#ifndef QTNFMAC_UTIL_H
58c2ecf20Sopenharmony_ci#define QTNFMAC_UTIL_H
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_ci#include <linux/kernel.h>
88c2ecf20Sopenharmony_ci#include "core.h"
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_ciconst char *qtnf_chipid_to_string(unsigned long chip_id);
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_civoid qtnf_sta_list_init(struct qtnf_sta_list *list);
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_cistruct qtnf_sta_node *qtnf_sta_list_lookup(struct qtnf_sta_list *list,
158c2ecf20Sopenharmony_ci					   const u8 *mac);
168c2ecf20Sopenharmony_cistruct qtnf_sta_node *qtnf_sta_list_lookup_index(struct qtnf_sta_list *list,
178c2ecf20Sopenharmony_ci						 size_t index);
188c2ecf20Sopenharmony_cistruct qtnf_sta_node *qtnf_sta_list_add(struct qtnf_vif *vif,
198c2ecf20Sopenharmony_ci					const u8 *mac);
208c2ecf20Sopenharmony_cibool qtnf_sta_list_del(struct qtnf_vif *vif, const u8 *mac);
218c2ecf20Sopenharmony_ci
228c2ecf20Sopenharmony_civoid qtnf_sta_list_free(struct qtnf_sta_list *list);
238c2ecf20Sopenharmony_ci
248c2ecf20Sopenharmony_cistatic inline size_t qtnf_sta_list_size(const struct qtnf_sta_list *list)
258c2ecf20Sopenharmony_ci{
268c2ecf20Sopenharmony_ci	return atomic_read(&list->size);
278c2ecf20Sopenharmony_ci}
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_cistatic inline bool qtnf_sta_list_empty(const struct qtnf_sta_list *list)
308c2ecf20Sopenharmony_ci{
318c2ecf20Sopenharmony_ci	return list_empty(&list->head);
328c2ecf20Sopenharmony_ci}
338c2ecf20Sopenharmony_ci
348c2ecf20Sopenharmony_ci#endif /* QTNFMAC_UTIL_H */
35