/* * Required functions exported by the port-specific (os-dependent) driver * to common (os-independent) driver code. * * Copyright (C) 2015, Broadcom Corporation. All Rights Reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * * $Id: wl_export.h 579954 2015-08-17 18:08:53Z $ */ #ifndef _wl_export_h_ #define _wl_export_h_ struct wl_info; struct wl_if; struct wlc_if; extern void wl_init(struct wl_info *wl); extern uint wl_reset(struct wl_info *wl); extern void wl_intrson(struct wl_info *wl); extern uint32 wl_intrsoff(struct wl_info *wl); extern void wl_intrsrestore(struct wl_info *wl, uint32 macintmask); extern void wl_event(struct wl_info *wl, char *ifname, wlc_event_t *e); extern void wl_event_sync(struct wl_info *wl, char *ifname, wlc_event_t *e); extern void wl_event_sendup(struct wl_info *wl, const wlc_event_t *e, uint8 *data, uint32 len); extern int wl_up(struct wl_info *wl); extern void wl_down(struct wl_info *wl); extern void wl_dump_ver(struct wl_info *wl, struct bcmstrbuf *b); extern void wl_txflowcontrol(struct wl_info *wl, struct wl_if *wlif, bool state, int prio); extern bool wl_alloc_dma_resources(struct wl_info *wl, uint dmaddrwidth); extern void wl_reclaim(void); extern void wl_nocard_timer(void *arg); extern void wl_recover_nocard(struct wl_info *wl); extern void wl_devicerecovery(struct wl_info *wl ); extern uint32 wl_pcie_bar1(struct wl_info *wl, uchar** addr); struct wl_timer; extern struct wl_timer *wl_init_timer(struct wl_info *wl, void (*fn)(void* arg), void *arg, const char *name); extern void wl_free_timer(struct wl_info *wl, struct wl_timer *timer); extern void wl_add_timer(struct wl_info *wl, struct wl_timer *timer, uint ms, int periodic); extern bool wl_del_timer(struct wl_info *wl, struct wl_timer *timer); extern void wl_sendup(struct wl_info *wl, struct wl_if *wlif, void *p, int numpkt); extern char *wl_ifname(struct wl_info *wl, struct wl_if *wlif); extern struct wl_if *wl_add_if(struct wl_info *wl, struct wlc_if* wlcif, uint unit, struct ether_addr *remote); extern void wl_del_if(struct wl_info *wl, struct wl_if *wlif); #ifdef DWDS extern void wl_dwds_del_if(struct wl_info *wl, struct wl_if *wlif, bool force); #endif extern int wl_osl_pcie_rc(struct wl_info *wl, uint op, int param); extern void wl_monitor(struct wl_info *wl, wl_rxsts_t *rxsts, void *p); extern void wl_set_monitor(struct wl_info *wl, int val); extern uint wl_buf_to_pktcopy(osl_t *osh, void *p, uchar *buf, int len, uint offset); extern void * wl_get_pktbuffer(osl_t *osh, int len); extern int wl_set_pktlen(osl_t *osh, void *p, int len); #define IFCTX_ARPI (1) #define IFCTX_NDI (2) #define IFCTX_NETDEV (3) extern void *wl_get_ifctx(struct wl_info *wl, int ctx_id, wl_if_t *wlif); #define wl_sort_bsslist(a, b) FALSE #define wl_outputpacket_complete(a, b, c) do { } while (0) #endif