brintos

brintos / linux-shallow public Read only

0
0
Text · 1.8 KiB · 7fb11f4 Raw
63 lines · c
1// SPDX-License-Identifier: ISC2/*3 * Copyright (c) 2014 Broadcom Corporation4 */5#ifndef BRCMFMAC_COMMONRING_H6#define BRCMFMAC_COMMONRING_H7 8 9struct brcmf_commonring {10	u16 r_ptr;11	u16 w_ptr;12	u16 f_ptr;13	u16 depth;14	u16 item_len;15 16	void *buf_addr;17 18	int (*cr_ring_bell)(void *ctx);19	int (*cr_update_rptr)(void *ctx);20	int (*cr_update_wptr)(void *ctx);21	int (*cr_write_rptr)(void *ctx);22	int (*cr_write_wptr)(void *ctx);23 24	void *cr_ctx;25 26	spinlock_t lock;27	unsigned long flags;28	bool inited;29	bool was_full;30 31	atomic_t outstanding_tx;32};33 34 35void brcmf_commonring_register_cb(struct brcmf_commonring *commonring,36				  int (*cr_ring_bell)(void *ctx),37				  int (*cr_update_rptr)(void *ctx),38				  int (*cr_update_wptr)(void *ctx),39				  int (*cr_write_rptr)(void *ctx),40				  int (*cr_write_wptr)(void *ctx), void *ctx);41void brcmf_commonring_config(struct brcmf_commonring *commonring, u16 depth,42			     u16 item_len, void *buf_addr);43void brcmf_commonring_lock(struct brcmf_commonring *commonring);44void brcmf_commonring_unlock(struct brcmf_commonring *commonring);45bool brcmf_commonring_write_available(struct brcmf_commonring *commonring);46void *brcmf_commonring_reserve_for_write(struct brcmf_commonring *commonring);47void *48brcmf_commonring_reserve_for_write_multiple(struct brcmf_commonring *commonring,49					    u16 n_items, u16 *alloced);50int brcmf_commonring_write_complete(struct brcmf_commonring *commonring);51void brcmf_commonring_write_cancel(struct brcmf_commonring *commonring,52				   u16 n_items);53void *brcmf_commonring_get_read_ptr(struct brcmf_commonring *commonring,54				    u16 *n_items);55int brcmf_commonring_read_complete(struct brcmf_commonring *commonring,56				   u16 n_items);57 58#define brcmf_commonring_n_items(commonring) (commonring->depth)59#define brcmf_commonring_len_item(commonring) (commonring->item_len)60 61 62#endif /* BRCMFMAC_COMMONRING_H */63