#include <linux/types.h>
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
#include <brcmu_utils.h>
#include "core.h"
#include "debug.h"
#include "bus.h"
#include "proto.h"
#include "flowring.h"
#include "msgbuf.h"
#include "common.h"
#define BRCMF_FLOWRING_HIGH …
#define BRCMF_FLOWRING_LOW …
#define BRCMF_FLOWRING_INVALID_IFIDX …
#define BRCMF_FLOWRING_HASH_AP(da, fifo, ifidx) …
#define BRCMF_FLOWRING_HASH_STA(fifo, ifidx) …
static const u8 brcmf_flowring_prio2fifo[] = …;
static const u8 ALLFFMAC[ETH_ALEN] = …;
static bool
brcmf_flowring_is_tdls_mac(struct brcmf_flowring *flow, u8 mac[ETH_ALEN])
{ … }
u32 brcmf_flowring_lookup(struct brcmf_flowring *flow, u8 da[ETH_ALEN],
u8 prio, u8 ifidx)
{ … }
u32 brcmf_flowring_create(struct brcmf_flowring *flow, u8 da[ETH_ALEN],
u8 prio, u8 ifidx)
{ … }
u8 brcmf_flowring_tid(struct brcmf_flowring *flow, u16 flowid)
{ … }
static void brcmf_flowring_block(struct brcmf_flowring *flow, u16 flowid,
bool blocked)
{ … }
void brcmf_flowring_delete(struct brcmf_flowring *flow, u16 flowid)
{ … }
u32 brcmf_flowring_enqueue(struct brcmf_flowring *flow, u16 flowid,
struct sk_buff *skb)
{ … }
struct sk_buff *brcmf_flowring_dequeue(struct brcmf_flowring *flow, u16 flowid)
{ … }
void brcmf_flowring_reinsert(struct brcmf_flowring *flow, u16 flowid,
struct sk_buff *skb)
{ … }
u32 brcmf_flowring_qlen(struct brcmf_flowring *flow, u16 flowid)
{ … }
void brcmf_flowring_open(struct brcmf_flowring *flow, u16 flowid)
{ … }
u8 brcmf_flowring_ifidx_get(struct brcmf_flowring *flow, u16 flowid)
{ … }
struct brcmf_flowring *brcmf_flowring_attach(struct device *dev, u16 nrofrings)
{ … }
void brcmf_flowring_detach(struct brcmf_flowring *flow)
{ … }
void brcmf_flowring_configure_addr_mode(struct brcmf_flowring *flow, int ifidx,
enum proto_addr_mode addr_mode)
{ … }
void brcmf_flowring_delete_peer(struct brcmf_flowring *flow, int ifidx,
u8 peer[ETH_ALEN])
{ … }
void brcmf_flowring_add_tdls_peer(struct brcmf_flowring *flow, int ifidx,
u8 peer[ETH_ALEN])
{ … }