cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

scan.h (3162B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * This file is part of wl12xx
      4 *
      5 * Copyright (C) 2012 Texas Instruments. All rights reserved.
      6 */
      7
      8#ifndef __WL12XX_SCAN_H__
      9#define __WL12XX_SCAN_H__
     10
     11#include "../wlcore/wlcore.h"
     12#include "../wlcore/cmd.h"
     13#include "../wlcore/scan.h"
     14
     15#define WL12XX_MAX_CHANNELS_5GHZ 23
     16
     17struct basic_scan_params {
     18	/* Scan option flags (WL1271_SCAN_OPT_*) */
     19	__le16 scan_options;
     20	u8 role_id;
     21	/* Number of scan channels in the list (maximum 30) */
     22	u8 n_ch;
     23	/* This field indicates the number of probe requests to send
     24	   per channel for an active scan */
     25	u8 n_probe_reqs;
     26	u8 tid_trigger;
     27	u8 ssid_len;
     28	u8 use_ssid_list;
     29
     30	/* Rate bit field for sending the probes */
     31	__le32 tx_rate;
     32
     33	u8 ssid[IEEE80211_MAX_SSID_LEN];
     34	/* Band to scan */
     35	u8 band;
     36
     37	u8 scan_tag;
     38	u8 padding2[2];
     39} __packed;
     40
     41struct basic_scan_channel_params {
     42	/* Duration in TU to wait for frames on a channel for active scan */
     43	__le32 min_duration;
     44	__le32 max_duration;
     45	__le32 bssid_lsb;
     46	__le16 bssid_msb;
     47	u8 early_termination;
     48	u8 tx_power_att;
     49	u8 channel;
     50	/* FW internal use only! */
     51	u8 dfs_candidate;
     52	u8 activity_detected;
     53	u8 pad;
     54} __packed;
     55
     56struct wl1271_cmd_scan {
     57	struct wl1271_cmd_header header;
     58
     59	struct basic_scan_params params;
     60	struct basic_scan_channel_params channels[WL1271_SCAN_MAX_CHANNELS];
     61
     62	/* src mac address */
     63	u8 addr[ETH_ALEN];
     64	u8 padding[2];
     65} __packed;
     66
     67struct wl1271_cmd_sched_scan_config {
     68	struct wl1271_cmd_header header;
     69
     70	__le32 intervals[SCAN_MAX_CYCLE_INTERVALS];
     71
     72	s8 rssi_threshold; /* for filtering (in dBm) */
     73	s8 snr_threshold;  /* for filtering (in dB) */
     74
     75	u8 cycles;       /* maximum number of scan cycles */
     76	u8 report_after; /* report when this number of results are received */
     77	u8 terminate;    /* stop scanning after reporting */
     78
     79	u8 tag;
     80	u8 bss_type; /* for filtering */
     81	u8 filter_type;
     82
     83	u8 ssid_len;     /* For SCAN_SSID_FILTER_SPECIFIC */
     84	u8 ssid[IEEE80211_MAX_SSID_LEN];
     85
     86	u8 n_probe_reqs; /* Number of probes requests per channel */
     87
     88	u8 passive[SCAN_MAX_BANDS];
     89	u8 active[SCAN_MAX_BANDS];
     90
     91	u8 dfs;
     92
     93	u8 n_pactive_ch; /* number of pactive (passive until fw detects energy)
     94			    channels in BG band */
     95	u8 role_id;
     96	u8 padding[1];
     97	struct conn_scan_ch_params channels_2[MAX_CHANNELS_2GHZ];
     98	struct conn_scan_ch_params channels_5[WL12XX_MAX_CHANNELS_5GHZ];
     99	struct conn_scan_ch_params channels_4[MAX_CHANNELS_4GHZ];
    100} __packed;
    101
    102struct wl1271_cmd_sched_scan_start {
    103	struct wl1271_cmd_header header;
    104
    105	u8 tag;
    106	u8 role_id;
    107	u8 padding[2];
    108} __packed;
    109
    110struct wl1271_cmd_sched_scan_stop {
    111	struct wl1271_cmd_header header;
    112
    113	u8 tag;
    114	u8 role_id;
    115	u8 padding[2];
    116} __packed;
    117
    118int wl12xx_scan_start(struct wl1271 *wl, struct wl12xx_vif *wlvif,
    119		      struct cfg80211_scan_request *req);
    120int wl12xx_scan_stop(struct wl1271 *wl, struct wl12xx_vif *wlvif);
    121void wl12xx_scan_completed(struct wl1271 *wl, struct wl12xx_vif *wlvif);
    122int wl12xx_sched_scan_start(struct wl1271 *wl, struct wl12xx_vif  *wlvif,
    123			    struct cfg80211_sched_scan_request *req,
    124			    struct ieee80211_scan_ies *ies);
    125void wl12xx_scan_sched_scan_stop(struct wl1271 *wl,  struct wl12xx_vif *wlvif);
    126#endif