#include <linux/delay.h>
#include <linux/if_ether.h>
#include <linux/skbuff.h>
#include <linux/if_arp.h>
#include <linux/etherdevice.h>
#include <linux/rtnetlink.h>
#include <net/mac80211.h>
#include <asm/unaligned.h>
#include "ieee80211_i.h"
#include "driver-ops.h"
#include "rate.h"
#define IEEE80211_OCB_HOUSEKEEPING_INTERVAL …
#define IEEE80211_OCB_PEER_INACTIVITY_LIMIT …
#define IEEE80211_OCB_MAX_STA_ENTRIES …
enum ocb_deferred_task_flags { … };
void ieee80211_ocb_rx_no_sta(struct ieee80211_sub_if_data *sdata,
const u8 *bssid, const u8 *addr,
u32 supp_rates)
{ … }
static struct sta_info *ieee80211_ocb_finish_sta(struct sta_info *sta)
__acquires(RCU)
{ … }
static void ieee80211_ocb_housekeeping(struct ieee80211_sub_if_data *sdata)
{ … }
void ieee80211_ocb_work(struct ieee80211_sub_if_data *sdata)
{ … }
static void ieee80211_ocb_housekeeping_timer(struct timer_list *t)
{ … }
void ieee80211_ocb_setup_sdata(struct ieee80211_sub_if_data *sdata)
{ … }
int ieee80211_ocb_join(struct ieee80211_sub_if_data *sdata,
struct ocb_setup *setup)
{ … }
int ieee80211_ocb_leave(struct ieee80211_sub_if_data *sdata)
{ … }