#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 <asm/unaligned.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 "rate.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 619 of file kernel-3.5/rx.c.
#define SEQ_MASK 0xfff |
Definition at line 553 of file kernel-3.5/rx.c.
#define SEQ_MODULO 0x1000 |
Definition at line 552 of file kernel-3.5/rx.c.
static int __ieee80211_data_to_8023 | ( | struct ieee80211_rx_data * | rx, |
bool * | port_control | ||
) | [static] |
Definition at line 1678 of file kernel-3.5/rx.c.
static void __ieee80211_rx_handle_packet | ( | struct ieee80211_hw * | hw, |
struct sk_buff * | skb | ||
) | [static] |
Definition at line 2912 of file kernel-3.5/rx.c.
static void ap_sta_ps_end | ( | struct sta_info * | sta | ) | [static] |
Definition at line 1159 of file kernel-3.5/rx.c.
static void ap_sta_ps_start | ( | struct sta_info * | sta | ) | [static] |
Definition at line 1144 of file kernel-3.5/rx.c.
static int ieee80211_802_1x_port_control | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 1591 of file kernel-3.5/rx.c.
static void ieee80211_add_rx_radiotap_header | ( | struct ieee80211_local * | local, |
struct sk_buff * | skb, | ||
struct ieee80211_rate * | rate, | ||
int | rtap_len, | ||
bool | has_fcs | ||
) | [static] |
Definition at line 104 of file kernel-3.5/rx.c.
static void ieee80211_deliver_skb | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 1746 of file kernel-3.5/rx.c.
static int ieee80211_drop_unencrypted | ( | struct ieee80211_rx_data * | rx, |
__le16 | fc | ||
) | [static] |
Definition at line 1601 of file kernel-3.5/rx.c.
static int ieee80211_drop_unencrypted_mgmt | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 1624 of file kernel-3.5/rx.c.
static bool ieee80211_frame_allowed | ( | struct ieee80211_rx_data * | rx, |
__le16 | fc | ||
) | [static] |
Definition at line 1720 of file kernel-3.5/rx.c.
static int ieee80211_get_mmie_keyidx | ( | struct sk_buff * | skb | ) | [static] |
Definition at line 476 of file kernel-3.5/rx.c.
static void ieee80211_invoke_rx_handlers | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 2722 of file kernel-3.5/rx.c.
static int ieee80211_is_multicast_robust_mgmt_frame | ( | struct sk_buff * | skb | ) | [static] |
Definition at line 464 of file kernel-3.5/rx.c.
static int ieee80211_is_unicast_robust_mgmt_frame | ( | struct sk_buff * | skb | ) | [static] |
Definition at line 453 of file kernel-3.5/rx.c.
static void ieee80211_parse_qos | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 352 of file kernel-3.5/rx.c.
static bool ieee80211_prepare_and_rx_handle | ( | struct ieee80211_rx_data * | rx, |
struct sk_buff * | skb, | ||
bool | consume | ||
) | [static] |
Definition at line 2875 of file kernel-3.5/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 2130 of file kernel-3.5/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 1388 of file kernel-3.5/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 1427 of file kernel-3.5/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 571 of file kernel-3.5/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 595 of file kernel-3.5/rx.c.
void ieee80211_release_reorder_timeout | ( | struct sta_info * | sta, |
int | tid | ||
) |
Definition at line 2751 of file kernel-3.5/rx.c.
void ieee80211_rx | ( | struct ieee80211_hw * | hw, |
struct sk_buff * | skb | ||
) |
Definition at line 3022 of file kernel-3.5/rx.c.
static void ieee80211_rx_cooked_monitor | ( | struct ieee80211_rx_data * | rx, |
struct ieee80211_rate * | rate | ||
) | [static] |
Definition at line 2558 of file kernel-3.5/rx.c.
static ieee80211_rx_result debug_noinline ieee80211_rx_h_action | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 2217 of file kernel-3.5/rx.c.
static ieee80211_rx_result debug_noinline ieee80211_rx_h_action_return | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 2456 of file kernel-3.5/rx.c.
static ieee80211_rx_result debug_noinline ieee80211_rx_h_amsdu | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 1836 of file kernel-3.5/rx.c.
static ieee80211_rx_result debug_noinline ieee80211_rx_h_check | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 838 of file kernel-3.5/rx.c.
static ieee80211_rx_result debug_noinline ieee80211_rx_h_check_more_data | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 1112 of file kernel-3.5/rx.c.
static ieee80211_rx_result debug_noinline ieee80211_rx_h_ctrl | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 2075 of file kernel-3.5/rx.c.
static ieee80211_rx_result debug_noinline ieee80211_rx_h_data | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 2011 of file kernel-3.5/rx.c.
static ieee80211_rx_result debug_noinline ieee80211_rx_h_decrypt | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 911 of file kernel-3.5/rx.c.
static ieee80211_rx_result debug_noinline ieee80211_rx_h_defragment | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 1470 of file kernel-3.5/rx.c.
static ieee80211_rx_result debug_noinline ieee80211_rx_h_mgmt | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 2507 of file kernel-3.5/rx.c.
static ieee80211_rx_result debug_noinline ieee80211_rx_h_mgmt_check | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 2177 of file kernel-3.5/rx.c.
static ieee80211_rx_result debug_noinline ieee80211_rx_h_passive_scan | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 431 of file kernel-3.5/rx.c.
static ieee80211_rx_result debug_noinline ieee80211_rx_h_sta_process | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 1274 of file kernel-3.5/rx.c.
static ieee80211_rx_result debug_noinline ieee80211_rx_h_uapsd_and_pspoll | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 1199 of file kernel-3.5/rx.c.
static ieee80211_rx_result debug_noinline ieee80211_rx_h_userspace_mgmt | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 2423 of file kernel-3.5/rx.c.
static void ieee80211_rx_handlers | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 2662 of file kernel-3.5/rx.c.
static void ieee80211_rx_handlers_result | ( | struct ieee80211_rx_data * | rx, |
ieee80211_rx_result | res | ||
) | [static] |
Definition at line 2627 of file kernel-3.5/rx.c.
void ieee80211_rx_irqsafe | ( | struct ieee80211_hw * | hw, |
struct sk_buff * | skb | ||
) |
Definition at line 3125 of file kernel-3.5/rx.c.
static ieee80211_rx_result ieee80211_rx_mesh_check | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 499 of file kernel-3.5/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 227 of file kernel-3.5/rx.c.
static int ieee80211_rx_radiotap_len | ( | struct ieee80211_local * | local, |
struct ieee80211_rx_status * | status | ||
) | [static] |
Definition at line 76 of file kernel-3.5/rx.c.
static void ieee80211_rx_reorder_ampdu | ( | struct ieee80211_rx_data * | rx | ) | [static] |
Definition at line 764 of file kernel-3.5/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 694 of file kernel-3.5/rx.c.
int ieee80211_sta_ps_transition | ( | struct ieee80211_sta * | sta, |
bool | start | ||
) |
Definition at line 1177 of file kernel-3.5/rx.c.
static void ieee80211_sta_reorder_release | ( | struct ieee80211_hw * | hw, |
struct tid_ampdu_rx * | tid_agg_rx | ||
) | [static] |
Definition at line 621 of file kernel-3.5/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 419 of file kernel-3.5/rx.c.
static int prepare_for_handlers | ( | struct ieee80211_rx_data * | rx, |
struct ieee80211_hdr * | hdr | ||
) | [static] |
Definition at line 2777 of file kernel-3.5/rx.c.
static struct sk_buff* remove_monitor_info | ( | struct ieee80211_local * | local, |
struct sk_buff * | skb | ||
) | [static, read] |
Definition at line 41 of file kernel-3.5/rx.c.
Definition at line 560 of file kernel-3.5/rx.c.
Definition at line 555 of file kernel-3.5/rx.c.
Definition at line 565 of file kernel-3.5/rx.c.
static int should_drop_frame | ( | struct sk_buff * | skb, |
int | present_fcs_len | ||
) | [inline, static] |
Definition at line 58 of file kernel-3.5/rx.c.