#include <linux/slab.h>
#include <linux/kernel.h>
#include <linux/if_arp.h>
#include <linux/netdevice.h>
#include <linux/rtnetlink.h>
#include <net/mac80211.h>
#include <net/ieee80211_radiotap.h>
#include "ieee80211_i.h"
#include "sta_info.h"
#include "debugfs_netdev.h"
#include "mesh.h"
#include "led.h"
#include "driver-ops.h"
#include "wme.h"
#include "rate.h"
Go to the source code of this file.
Defines | |
#define | ADJUST(_f, _s) |
Functions | |
u32 | __ieee80211_recalc_idle (struct ieee80211_local *local) |
static int | identical_mac_addr_allowed (int type1, int type2) |
void | ieee80211_adjust_monitor_flags (struct ieee80211_sub_if_data *sdata, const int offset) |
static void | ieee80211_assign_perm_addr (struct ieee80211_local *local, struct net_device *dev, enum nl80211_iftype type) |
static int | ieee80211_change_mac (struct net_device *dev, void *addr) |
static int | ieee80211_change_mtu (struct net_device *dev, int new_mtu) |
static int | ieee80211_check_concurrent_iface (struct ieee80211_sub_if_data *sdata, enum nl80211_iftype iftype) |
static int | ieee80211_do_open (struct net_device *dev, bool coming_up) |
static void | ieee80211_do_stop (struct ieee80211_sub_if_data *sdata, bool going_down) |
static u32 | ieee80211_idle_off (struct ieee80211_local *local, const char *reason) |
static u32 | ieee80211_idle_on (struct ieee80211_local *local) |
int | ieee80211_if_add (struct ieee80211_local *local, const char *name, struct net_device **new_dev, enum nl80211_iftype type, struct vif_params *params) |
int | ieee80211_if_change_type (struct ieee80211_sub_if_data *sdata, enum nl80211_iftype type) |
void | ieee80211_if_remove (struct ieee80211_sub_if_data *sdata) |
static void | ieee80211_if_setup (struct net_device *dev) |
void | ieee80211_iface_exit (void) |
int | ieee80211_iface_init (void) |
static void | ieee80211_iface_work (struct work_struct *work) |
static u16 | ieee80211_monitor_select_queue (struct net_device *dev, struct sk_buff *skb) |
static u16 | ieee80211_netdev_select_queue (struct net_device *dev, struct sk_buff *skb) |
static int | ieee80211_open (struct net_device *dev) |
void | ieee80211_recalc_idle (struct ieee80211_local *local) |
void | ieee80211_remove_interfaces (struct ieee80211_local *local) |
static int | ieee80211_runtime_change_iftype (struct ieee80211_sub_if_data *sdata, enum nl80211_iftype type) |
static void | ieee80211_set_multicast_list (struct net_device *dev) |
static void | ieee80211_setup_sdata (struct ieee80211_sub_if_data *sdata, enum nl80211_iftype type) |
static int | ieee80211_stop (struct net_device *dev) |
static void | ieee80211_teardown_sdata (struct net_device *dev) |
static int | netdev_notify (struct notifier_block *nb, unsigned long state, void *ndev) |
Variables | |
static struct net_device_ops | ieee80211_dataif_ops |
static struct net_device_ops | ieee80211_monitorif_ops |
static struct notifier_block | mac80211_netdev_notifier |
#define ADJUST | ( | _f, | |
_s | |||
) |
do { \ if (flags & MONITOR_FLAG_##_f) \ local->fif_##_s += offset; \ } while (0)
u32 __ieee80211_recalc_idle | ( | struct ieee80211_local * | local | ) |
Definition at line 1288 of file kernel-3.2/iface.c.
static int identical_mac_addr_allowed | ( | int | type1, |
int | type2 | ||
) | [inline, static] |
Definition at line 84 of file kernel-3.2/iface.c.
void ieee80211_adjust_monitor_flags | ( | struct ieee80211_sub_if_data * | sdata, |
const int | offset | ||
) |
Definition at line 152 of file kernel-3.2/iface.c.
static void ieee80211_assign_perm_addr | ( | struct ieee80211_local * | local, |
struct net_device * | dev, | ||
enum nl80211_iftype | type | ||
) | [static] |
Definition at line 1021 of file kernel-3.2/iface.c.
static int ieee80211_change_mac | ( | struct net_device * | dev, |
void * | addr | ||
) | [static] |
Definition at line 67 of file kernel-3.2/iface.c.
static int ieee80211_change_mtu | ( | struct net_device * | dev, |
int | new_mtu | ||
) | [static] |
DOC: Interface list locking
The interface list in each struct ieee80211_local is protected three-fold:
(1) modifications may only be done under the RTNL (2) modifications and readers are protected against each other by the iflist_mtx. (3) modifications are done in an RCU manner so atomic readers can traverse the list in RCU-safe blocks.
As a consequence, reads (traversals) of the list can be protected by either the RTNL, the iflist_mtx or RCU.
Definition at line 46 of file kernel-3.2/iface.c.
static int ieee80211_check_concurrent_iface | ( | struct ieee80211_sub_if_data * | sdata, |
enum nl80211_iftype | iftype | ||
) | [static] |
Definition at line 98 of file kernel-3.2/iface.c.
static int ieee80211_do_open | ( | struct net_device * | dev, |
bool | coming_up | ||
) | [static] |
Definition at line 177 of file kernel-3.2/iface.c.
static void ieee80211_do_stop | ( | struct ieee80211_sub_if_data * | sdata, |
bool | going_down | ||
) | [static] |
Definition at line 376 of file kernel-3.2/iface.c.
static u32 ieee80211_idle_off | ( | struct ieee80211_local * | local, |
const char * | reason | ||
) | [static] |
Definition at line 1259 of file kernel-3.2/iface.c.
static u32 ieee80211_idle_on | ( | struct ieee80211_local * | local | ) | [static] |
Definition at line 1273 of file kernel-3.2/iface.c.
int ieee80211_if_add | ( | struct ieee80211_local * | local, |
const char * | name, | ||
struct net_device ** | new_dev, | ||
enum nl80211_iftype | type, | ||
struct vif_params * | params | ||
) |
Definition at line 1133 of file kernel-3.2/iface.c.
int ieee80211_if_change_type | ( | struct ieee80211_sub_if_data * | sdata, |
enum nl80211_iftype | type | ||
) |
Definition at line 985 of file kernel-3.2/iface.c.
void ieee80211_if_remove | ( | struct ieee80211_sub_if_data * | sdata | ) |
Definition at line 1219 of file kernel-3.2/iface.c.
static void ieee80211_if_setup | ( | struct net_device * | dev | ) | [static] |
Definition at line 708 of file kernel-3.2/iface.c.
void ieee80211_iface_exit | ( | void | ) |
Definition at line 1417 of file kernel-3.2/iface.c.
int ieee80211_iface_init | ( | void | ) |
Definition at line 1412 of file kernel-3.2/iface.c.
static void ieee80211_iface_work | ( | struct work_struct * | work | ) | [static] |
Definition at line 716 of file kernel-3.2/iface.c.
static u16 ieee80211_monitor_select_queue | ( | struct net_device * | dev, |
struct sk_buff * | skb | ||
) | [static] |
Definition at line 664 of file kernel-3.2/iface.c.
static u16 ieee80211_netdev_select_queue | ( | struct net_device * | dev, |
struct sk_buff * | skb | ||
) | [static] |
Definition at line 647 of file kernel-3.2/iface.c.
static int ieee80211_open | ( | struct net_device * | dev | ) | [static] |
Definition at line 360 of file kernel-3.2/iface.c.
void ieee80211_recalc_idle | ( | struct ieee80211_local * | local | ) |
Definition at line 1373 of file kernel-3.2/iface.c.
void ieee80211_remove_interfaces | ( | struct ieee80211_local * | local | ) |
Definition at line 1238 of file kernel-3.2/iface.c.
static int ieee80211_runtime_change_iftype | ( | struct ieee80211_sub_if_data * | sdata, |
enum nl80211_iftype | type | ||
) | [static] |
Definition at line 914 of file kernel-3.2/iface.c.
static void ieee80211_set_multicast_list | ( | struct net_device * | dev | ) | [static] |
Definition at line 588 of file kernel-3.2/iface.c.
static void ieee80211_setup_sdata | ( | struct ieee80211_sub_if_data * | sdata, |
enum nl80211_iftype | type | ||
) | [static] |
Definition at line 850 of file kernel-3.2/iface.c.
static int ieee80211_stop | ( | struct net_device * | dev | ) | [static] |
Definition at line 579 of file kernel-3.2/iface.c.
static void ieee80211_teardown_sdata | ( | struct net_device * | dev | ) | [static] |
Definition at line 624 of file kernel-3.2/iface.c.
static int netdev_notify | ( | struct notifier_block * | nb, |
unsigned long | state, | ||
void * | ndev | ||
) | [static] |
Definition at line 1384 of file kernel-3.2/iface.c.
struct net_device_ops ieee80211_dataif_ops [static] |
{ .ndo_open = ieee80211_open, .ndo_stop = ieee80211_stop, .ndo_uninit = ieee80211_teardown_sdata, .ndo_start_xmit = ieee80211_subif_start_xmit, .ndo_set_rx_mode = ieee80211_set_multicast_list, .ndo_change_mtu = ieee80211_change_mtu, .ndo_set_mac_address = ieee80211_change_mac, .ndo_select_queue = ieee80211_netdev_select_queue, }
Definition at line 653 of file kernel-3.2/iface.c.
struct net_device_ops ieee80211_monitorif_ops [static] |
{ .ndo_open = ieee80211_open, .ndo_stop = ieee80211_stop, .ndo_uninit = ieee80211_teardown_sdata, .ndo_start_xmit = ieee80211_monitor_start_xmit, .ndo_set_rx_mode = ieee80211_set_multicast_list, .ndo_change_mtu = ieee80211_change_mtu, .ndo_set_mac_address = eth_mac_addr, .ndo_select_queue = ieee80211_monitor_select_queue, }
Definition at line 697 of file kernel-3.2/iface.c.
struct notifier_block mac80211_netdev_notifier [static] |
{ .notifier_call = netdev_notify, }
Definition at line 1408 of file kernel-3.2/iface.c.