linux/drivers/net/wireless/intersil/hostap/hostap_80211.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef HOSTAP_80211_H
   3#define HOSTAP_80211_H
   4
   5#include <linux/types.h>
   6#include <linux/skbuff.h>
   7#include <linux/netdevice.h>
   8
   9struct hostap_ieee80211_mgmt {
  10        __le16 frame_control;
  11        __le16 duration;
  12        u8 da[6];
  13        u8 sa[6];
  14        u8 bssid[6];
  15        __le16 seq_ctrl;
  16        union {
  17                struct {
  18                        __le16 auth_alg;
  19                        __le16 auth_transaction;
  20                        __le16 status_code;
  21                        /* possibly followed by Challenge text */
  22                        u8 variable[0];
  23                } __packed auth;
  24                struct {
  25                        __le16 reason_code;
  26                } __packed deauth;
  27                struct {
  28                        __le16 capab_info;
  29                        __le16 listen_interval;
  30                        /* followed by SSID and Supported rates */
  31                        u8 variable[0];
  32                } __packed assoc_req;
  33                struct {
  34                        __le16 capab_info;
  35                        __le16 status_code;
  36                        __le16 aid;
  37                        /* followed by Supported rates */
  38                        u8 variable[0];
  39                } __packed assoc_resp, reassoc_resp;
  40                struct {
  41                        __le16 capab_info;
  42                        __le16 listen_interval;
  43                        u8 current_ap[6];
  44                        /* followed by SSID and Supported rates */
  45                        u8 variable[0];
  46                } __packed reassoc_req;
  47                struct {
  48                        __le16 reason_code;
  49                } __packed disassoc;
  50                struct {
  51                } __packed probe_req;
  52                struct {
  53                        u8 timestamp[8];
  54                        __le16 beacon_int;
  55                        __le16 capab_info;
  56                        /* followed by some of SSID, Supported rates,
  57                         * FH Params, DS Params, CF Params, IBSS Params, TIM */
  58                        u8 variable[0];
  59                } __packed beacon, probe_resp;
  60        } u;
  61} __packed;
  62
  63
  64#define IEEE80211_MGMT_HDR_LEN 24
  65#define IEEE80211_DATA_HDR3_LEN 24
  66#define IEEE80211_DATA_HDR4_LEN 30
  67
  68
  69struct hostap_80211_rx_status {
  70        u32 mac_time;
  71        u8 signal;
  72        u8 noise;
  73        u16 rate; /* in 100 kbps */
  74};
  75
  76/* prism2_rx_80211 'type' argument */
  77enum {
  78        PRISM2_RX_MONITOR, PRISM2_RX_MGMT, PRISM2_RX_NON_ASSOC,
  79        PRISM2_RX_NULLFUNC_ACK
  80};
  81
  82int prism2_rx_80211(struct net_device *dev, struct sk_buff *skb,
  83                    struct hostap_80211_rx_status *rx_stats, int type);
  84void hostap_80211_rx(struct net_device *dev, struct sk_buff *skb,
  85                     struct hostap_80211_rx_status *rx_stats);
  86void hostap_dump_rx_80211(const char *name, struct sk_buff *skb,
  87                          struct hostap_80211_rx_status *rx_stats);
  88
  89void hostap_dump_tx_80211(const char *name, struct sk_buff *skb);
  90netdev_tx_t hostap_data_start_xmit(struct sk_buff *skb,
  91                                   struct net_device *dev);
  92netdev_tx_t hostap_mgmt_start_xmit(struct sk_buff *skb,
  93                                   struct net_device *dev);
  94netdev_tx_t hostap_master_start_xmit(struct sk_buff *skb,
  95                                     struct net_device *dev);
  96
  97#endif /* HOSTAP_80211_H */
  98