#include <linux/jiffies.h>
#include <linux/slab.h>
#include <linux/kernel.h>
#include <linux/skbuff.h>
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
#include <linux/rcupdate.h>
#include <linux/export.h>
#include <net/mac80211.h>
#include <net/ieee80211_radiotap.h>
#include "ieee80211_i.h"
#include "driver-ops.h"
#include "led.h"
#include "mesh.h"
#include "wep.h"
#include "wpa.h"
#include "tkip.h"
#include "wme.h"
#include "rt_wmp.h"
Go to the source code of this file.
#define CALL_RXH | ( | rxh | ) |
do { \ res = rxh(rx); \ if (res != RX_CONTINUE) \ goto rxh_next; \ } while (0);
#define CALL_RXH | ( | rxh | ) |
do { \ res = rxh(rx); \ if (res != RX_CONTINUE) \ goto rxh_next; \ } while (0);
#define HT_RX_REORDER_BUF_TIMEOUT (HZ / 10) |
Definition at line 620 of file kernel-3.2/rx.c.
#define SEQ_MASK 0xfff |
Definition at line 554 of file kernel-3.2/rx.c.
#define SEQ_MODULO 0x1000 |
Definition at line 553 of file kernel-3.2/rx.c.
static int __ieee80211_data_to_8023 | ( | struct ieee80211_rx_data * | rx, |
bool * | port_control | ||
) | [static] |
Definition at line 1681 of file kernel-3.2/rx.c.
static void __ieee80211_rx_handle_packet | ( | struct ieee80211_hw * | hw, |
struct sk_buff * | skb | ||
) | [static] |
Definition at line 2867 of file kernel-3.2/rx.c.
static void ap_sta_ps_end | ( | struct sta_info * | sta | ) | [static] |
Definition at line 1146 of file kernel-3.2/rx.c.
static void ap_sta_ps_start | ( | struct sta_info * | sta | ) | [static] |
Definition at line 1131 of file kernel-3.2/rx.c.
static int ieee80211_802_1x_port_control | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 1594 of file kernel-3.2/rx.c.
static void ieee80211_add_rx_radiotap_header | ( | struct ieee80211_local * | local, |
struct sk_buff * | skb, | ||
struct ieee80211_rate * | rate, | ||
int | rtap_len | ||
) | [static] |
Definition at line 102 of file kernel-3.2/rx.c.
static void ieee80211_deliver_skb | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 1750 of file kernel-3.2/rx.c.
static int ieee80211_drop_unencrypted | ( | struct ieee80211_rx_data * | rx, |
__le16 | fc | ||
) | [static] |
Definition at line 1604 of file kernel-3.2/rx.c.
static int ieee80211_drop_unencrypted_mgmt | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 1627 of file kernel-3.2/rx.c.
static bool ieee80211_frame_allowed | ( | struct ieee80211_rx_data * | rx, |
__le16 | fc | ||
) | [static] |
Definition at line 1723 of file kernel-3.2/rx.c.
static int ieee80211_get_mmie_keyidx | ( | struct sk_buff * | skb | ) | [static] |
Definition at line 477 of file kernel-3.2/rx.c.
static void ieee80211_invoke_rx_handlers | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 2681 of file kernel-3.2/rx.c.
static int ieee80211_is_multicast_robust_mgmt_frame | ( | struct sk_buff * | skb | ) | [static] |
Definition at line 465 of file kernel-3.2/rx.c.
static int ieee80211_is_unicast_robust_mgmt_frame | ( | struct sk_buff * | skb | ) | [static] |
Definition at line 454 of file kernel-3.2/rx.c.
static void ieee80211_parse_qos | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 348 of file kernel-3.2/rx.c.
static bool ieee80211_prepare_and_rx_handle | ( | struct ieee80211_rx_data * | rx, |
struct sk_buff * | skb, | ||
bool | consume | ||
) | [static] |
Definition at line 2830 of file kernel-3.2/rx.c.
static void ieee80211_process_sa_query_req | ( | struct ieee80211_sub_if_data * | sdata, |
struct ieee80211_mgmt * | mgmt, | ||
size_t | len | ||
) | [static] |
Definition at line 2139 of file kernel-3.2/rx.c.
static struct ieee80211_fragment_entry* ieee80211_reassemble_add | ( | struct ieee80211_sub_if_data * | sdata, |
unsigned int | frag, | ||
unsigned int | seq, | ||
int | rx_queue, | ||
struct sk_buff ** | skb | ||
) | [static, read] |
Definition at line 1372 of file kernel-3.2/rx.c.
static struct ieee80211_fragment_entry* ieee80211_reassemble_find | ( | struct ieee80211_sub_if_data * | sdata, |
unsigned int | frag, | ||
unsigned int | seq, | ||
int | rx_queue, | ||
struct ieee80211_hdr * | hdr | ||
) | [static, read] |
Definition at line 1411 of file kernel-3.2/rx.c.
static void ieee80211_release_reorder_frame | ( | struct ieee80211_hw * | hw, |
struct tid_ampdu_rx * | tid_agg_rx, | ||
int | index | ||
) | [static] |
Definition at line 572 of file kernel-3.2/rx.c.
static void ieee80211_release_reorder_frames | ( | struct ieee80211_hw * | hw, |
struct tid_ampdu_rx * | tid_agg_rx, | ||
u16 | head_seq_num | ||
) | [static] |
Definition at line 596 of file kernel-3.2/rx.c.
void ieee80211_release_reorder_timeout | ( | struct sta_info * | sta, |
int | tid | ||
) |
Definition at line 2710 of file kernel-3.2/rx.c.
void ieee80211_rx | ( | struct ieee80211_hw * | hw, |
struct sk_buff * | skb | ||
) |
Definition at line 2976 of file kernel-3.2/rx.c.
static void ieee80211_rx_cooked_monitor | ( | struct ieee80211_rx_data * | rx, |
struct ieee80211_rate * | rate | ||
) | [static] |
Definition at line 2500 of file kernel-3.2/rx.c.
static ieee80211_rx_result debug_noinline ieee80211_rx_h_action | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 2212 of file kernel-3.2/rx.c.
static ieee80211_rx_result debug_noinline ieee80211_rx_h_action_return | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 2395 of file kernel-3.2/rx.c.
static ieee80211_rx_result debug_noinline ieee80211_rx_h_amsdu | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 1839 of file kernel-3.2/rx.c.
static ieee80211_rx_result debug_noinline ieee80211_rx_h_check | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 828 of file kernel-3.2/rx.c.
static ieee80211_rx_result debug_noinline ieee80211_rx_h_check_more_data | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 1099 of file kernel-3.2/rx.c.
static ieee80211_rx_result debug_noinline ieee80211_rx_h_ctrl | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 2084 of file kernel-3.2/rx.c.
static ieee80211_rx_result debug_noinline ieee80211_rx_h_data | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 2025 of file kernel-3.2/rx.c.
static ieee80211_rx_result debug_noinline ieee80211_rx_h_decrypt | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 889 of file kernel-3.2/rx.c.
static ieee80211_rx_result debug_noinline ieee80211_rx_h_defragment | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 1454 of file kernel-3.2/rx.c.
static ieee80211_rx_result debug_noinline ieee80211_rx_h_mgmt | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 2446 of file kernel-3.2/rx.c.
static ieee80211_rx_result debug_noinline ieee80211_rx_h_mgmt_check | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 2186 of file kernel-3.2/rx.c.
static ieee80211_rx_result debug_noinline ieee80211_rx_h_passive_scan | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 427 of file kernel-3.2/rx.c.
static ieee80211_rx_result debug_noinline ieee80211_rx_h_remove_qos_control | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 1575 of file kernel-3.2/rx.c.
static ieee80211_rx_result debug_noinline ieee80211_rx_h_sta_process | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 1265 of file kernel-3.2/rx.c.
static ieee80211_rx_result debug_noinline ieee80211_rx_h_uapsd_and_pspoll | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 1190 of file kernel-3.2/rx.c.
static ieee80211_rx_result debug_noinline ieee80211_rx_h_userspace_mgmt | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 2366 of file kernel-3.2/rx.c.
static void ieee80211_rx_handlers | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 2620 of file kernel-3.2/rx.c.
static void ieee80211_rx_handlers_result | ( | struct ieee80211_rx_data * | rx, |
ieee80211_rx_result | res | ||
) | [static] |
Definition at line 2585 of file kernel-3.2/rx.c.
void ieee80211_rx_irqsafe | ( | struct ieee80211_hw * | hw, |
struct sk_buff * | skb | ||
) |
Definition at line 3095 of file kernel-3.2/rx.c.
static ieee80211_rx_result ieee80211_rx_mesh_check | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 500 of file kernel-3.2/rx.c.
static struct sk_buff* ieee80211_rx_monitor | ( | struct ieee80211_local * | local, |
struct sk_buff * | origskb, | ||
struct ieee80211_rate * | rate | ||
) | [static, read] |
Definition at line 224 of file kernel-3.2/rx.c.
static int ieee80211_rx_radiotap_len | ( | struct ieee80211_local * | local, |
struct ieee80211_rx_status * | status | ||
) | [static] |
Definition at line 74 of file kernel-3.2/rx.c.
static void ieee80211_rx_reorder_ampdu | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 765 of file kernel-3.2/rx.c.
static bool ieee80211_sta_manage_reorder_buf | ( | struct ieee80211_hw * | hw, |
struct tid_ampdu_rx * | tid_agg_rx, | ||
struct sk_buff * | skb | ||
) | [static] |
Definition at line 695 of file kernel-3.2/rx.c.
int ieee80211_sta_ps_transition | ( | struct ieee80211_sta * | sta, |
bool | start | ||
) |
Definition at line 1168 of file kernel-3.2/rx.c.
static void ieee80211_sta_reorder_release | ( | struct ieee80211_hw * | hw, |
struct tid_ampdu_rx * | tid_agg_rx | ||
) | [static] |
Definition at line 622 of file kernel-3.2/rx.c.
static void ieee80211_verify_alignment | ( | struct ieee80211_rx_data * | rx | ) | [static] |
DOC: Packet alignment
Drivers always need to pass packets that are aligned to two-byte boundaries to the stack.
Additionally, should, if possible, align the payload data in a way that guarantees that the contained IP header is aligned to a four-byte boundary. In the case of regular frames, this simply means aligning the payload to a four-byte boundary (because either the IP header is directly contained, or IV/RFC1042 headers that have a length divisible by four are in front of it). If the payload data is not properly aligned and the architecture doesn't support efficient unaligned operations, mac80211 will align the data.
With A-MSDU frames, however, the payload data address must yield two modulo four because there are 14-byte 802.3 headers within the A-MSDU frames that push the IP header further back to a multiple of four again. Thankfully, the specs were sane enough this time around to require padding each A-MSDU subframe to a length that is a multiple of four.
Padding like Atheros hardware adds which is between the 802.11 header and the payload is not supported, the driver is required to move the 802.11 header to be directly in front of the payload in that case.
Definition at line 415 of file kernel-3.2/rx.c.
static int prepare_for_handlers | ( | struct ieee80211_rx_data * | rx, |
struct ieee80211_hdr * | hdr | ||
) | [static] |
Definition at line 2736 of file kernel-3.2/rx.c.
static struct sk_buff* remove_monitor_info | ( | struct ieee80211_local * | local, |
struct sk_buff * | skb | ||
) | [static, read] |
Definition at line 39 of file kernel-3.2/rx.c.
Definition at line 561 of file kernel-3.2/rx.c.
Definition at line 556 of file kernel-3.2/rx.c.
Definition at line 566 of file kernel-3.2/rx.c.
static int should_drop_frame | ( | struct sk_buff * | skb, |
int | present_fcs_len | ||
) | [inline, static] |
Definition at line 56 of file kernel-3.2/rx.c.