#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.
#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 1453 of file kernel-3.5/iface.c.
static int identical_mac_addr_allowed | ( | int | type1, |
int | type2 | ||
) | [inline, static] |
Definition at line 84 of file kernel-3.5/iface.c.
static int ieee80211_add_virtual_monitor | ( | struct ieee80211_local * | local | ) | [static] |
Definition at line 217 of file kernel-3.5/iface.c.
void ieee80211_adjust_monitor_flags | ( | struct ieee80211_sub_if_data * | sdata, |
const int | offset | ||
) |
Definition at line 181 of file kernel-3.5/iface.c.
static void ieee80211_assign_perm_addr | ( | struct ieee80211_local * | local, |
struct net_device * | dev, | ||
enum nl80211_iftype | type | ||
) | [static] |
Definition at line 1174 of file kernel-3.5/iface.c.
static int ieee80211_change_mac | ( | struct net_device * | dev, |
void * | addr | ||
) | [static] |
Definition at line 67 of file kernel-3.5/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.5/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.5/iface.c.
static int ieee80211_check_queues | ( | struct ieee80211_sub_if_data * | sdata | ) | [static] |
Definition at line 152 of file kernel-3.5/iface.c.
static void ieee80211_clean_sdata | ( | struct ieee80211_sub_if_data * | sdata | ) | [static] |
Definition at line 1048 of file kernel-3.5/iface.c.
static void ieee80211_del_virtual_monitor | ( | struct ieee80211_local * | local | ) | [static] |
Definition at line 258 of file kernel-3.5/iface.c.
static int ieee80211_do_open | ( | struct net_device * | dev, |
bool | coming_up | ||
) | [static] |
Definition at line 283 of file kernel-3.5/iface.c.
static void ieee80211_do_stop | ( | struct ieee80211_sub_if_data * | sdata, |
bool | going_down | ||
) | [static] |
Definition at line 511 of file kernel-3.5/iface.c.
static u32 ieee80211_idle_off | ( | struct ieee80211_local * | local, |
const char * | reason | ||
) | [static] |
Definition at line 1424 of file kernel-3.5/iface.c.
static u32 ieee80211_idle_on | ( | struct ieee80211_local * | local | ) | [static] |
Definition at line 1438 of file kernel-3.5/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 1286 of file kernel-3.5/iface.c.
int ieee80211_if_change_type | ( | struct ieee80211_sub_if_data * | sdata, |
enum nl80211_iftype | type | ||
) |
Definition at line 1138 of file kernel-3.5/iface.c.
void ieee80211_if_remove | ( | struct ieee80211_sub_if_data * | sdata | ) |
Definition at line 1385 of file kernel-3.5/iface.c.
static void ieee80211_if_setup | ( | struct net_device * | dev | ) | [static] |
Definition at line 840 of file kernel-3.5/iface.c.
void ieee80211_iface_exit | ( | void | ) |
Definition at line 1589 of file kernel-3.5/iface.c.
int ieee80211_iface_init | ( | void | ) |
Definition at line 1584 of file kernel-3.5/iface.c.
static void ieee80211_iface_work | ( | struct work_struct * | work | ) | [static] |
Definition at line 848 of file kernel-3.5/iface.c.
static u16 ieee80211_monitor_select_queue | ( | struct net_device * | dev, |
struct sk_buff * | skb | ||
) | [static] |
Definition at line 809 of file kernel-3.5/iface.c.
static u16 ieee80211_netdev_select_queue | ( | struct net_device * | dev, |
struct sk_buff * | skb | ||
) | [static] |
Definition at line 792 of file kernel-3.5/iface.c.
static int ieee80211_open | ( | struct net_device * | dev | ) | [static] |
Definition at line 495 of file kernel-3.5/iface.c.
void ieee80211_recalc_idle | ( | struct ieee80211_local * | local | ) |
Definition at line 1545 of file kernel-3.5/iface.c.
void ieee80211_remove_interfaces | ( | struct ieee80211_local * | local | ) |
Definition at line 1404 of file kernel-3.5/iface.c.
static int ieee80211_runtime_change_iftype | ( | struct ieee80211_sub_if_data * | sdata, |
enum nl80211_iftype | type | ||
) | [static] |
Definition at line 1060 of file kernel-3.5/iface.c.
static void ieee80211_set_default_queues | ( | struct ieee80211_sub_if_data * | sdata | ) | [static] |
Definition at line 201 of file kernel-3.5/iface.c.
static void ieee80211_set_multicast_list | ( | struct net_device * | dev | ) | [static] |
Definition at line 733 of file kernel-3.5/iface.c.
static void ieee80211_setup_sdata | ( | struct ieee80211_sub_if_data * | sdata, |
enum nl80211_iftype | type | ||
) | [static] |
Definition at line 982 of file kernel-3.5/iface.c.
static int ieee80211_stop | ( | struct net_device * | dev | ) | [static] |
Definition at line 724 of file kernel-3.5/iface.c.
static void ieee80211_teardown_sdata | ( | struct net_device * | dev | ) | [static] |
Definition at line 769 of file kernel-3.5/iface.c.
static int netdev_notify | ( | struct notifier_block * | nb, |
unsigned long | state, | ||
void * | ndev | ||
) | [static] |
Definition at line 1556 of file kernel-3.5/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 798 of file kernel-3.5/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 829 of file kernel-3.5/iface.c.
struct notifier_block mac80211_netdev_notifier [static] |
{ .notifier_call = netdev_notify, }
Definition at line 1580 of file kernel-3.5/iface.c.