Path: blob/main/sys/contrib/dev/broadcom/brcm80211/brcmfmac/commonring.h
178665 views
// SPDX-License-Identifier: ISC1/*2* Copyright (c) 2014 Broadcom Corporation3*/4#ifndef BRCMFMAC_COMMONRING_H5#define BRCMFMAC_COMMONRING_H678struct brcmf_commonring {9u16 r_ptr;10u16 w_ptr;11u16 f_ptr;12u16 depth;13u16 item_len;1415void *buf_addr;1617int (*cr_ring_bell)(void *ctx);18int (*cr_update_rptr)(void *ctx);19int (*cr_update_wptr)(void *ctx);20int (*cr_write_rptr)(void *ctx);21int (*cr_write_wptr)(void *ctx);2223void *cr_ctx;2425spinlock_t lock;26unsigned long flags;27bool inited;28bool was_full;2930atomic_t outstanding_tx;31};323334void brcmf_commonring_register_cb(struct brcmf_commonring *commonring,35int (*cr_ring_bell)(void *ctx),36int (*cr_update_rptr)(void *ctx),37int (*cr_update_wptr)(void *ctx),38int (*cr_write_rptr)(void *ctx),39int (*cr_write_wptr)(void *ctx), void *ctx);40void brcmf_commonring_config(struct brcmf_commonring *commonring, u16 depth,41u16 item_len, void *buf_addr);42void brcmf_commonring_lock(struct brcmf_commonring *commonring);43void brcmf_commonring_unlock(struct brcmf_commonring *commonring);44bool brcmf_commonring_write_available(struct brcmf_commonring *commonring);45void *brcmf_commonring_reserve_for_write(struct brcmf_commonring *commonring);46void *47brcmf_commonring_reserve_for_write_multiple(struct brcmf_commonring *commonring,48u16 n_items, u16 *alloced);49int brcmf_commonring_write_complete(struct brcmf_commonring *commonring);50void brcmf_commonring_write_cancel(struct brcmf_commonring *commonring,51u16 n_items);52void *brcmf_commonring_get_read_ptr(struct brcmf_commonring *commonring,53u16 *n_items);54int brcmf_commonring_read_complete(struct brcmf_commonring *commonring,55u16 n_items);5657#define brcmf_commonring_n_items(commonring) (commonring->depth)58#define brcmf_commonring_len_item(commonring) (commonring->item_len)596061#endif /* BRCMFMAC_COMMONRING_H */626364