Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * Scan interface for ST-Ericsson CW1200 mac80211 drivers
0004  *
0005  * Copyright (c) 2010, ST-Ericsson
0006  * Author: Dmitry Tarnyagin <dmitry.tarnyagin@lockless.no>
0007  */
0008 
0009 #ifndef SCAN_H_INCLUDED
0010 #define SCAN_H_INCLUDED
0011 
0012 #include <linux/semaphore.h>
0013 #include "wsm.h"
0014 
0015 /* external */ struct sk_buff;
0016 /* external */ struct cfg80211_scan_request;
0017 /* external */ struct ieee80211_channel;
0018 /* external */ struct ieee80211_hw;
0019 /* external */ struct work_struct;
0020 
0021 struct cw1200_scan {
0022     struct semaphore lock;
0023     struct work_struct work;
0024     struct delayed_work timeout;
0025     struct cfg80211_scan_request *req;
0026     struct ieee80211_channel **begin;
0027     struct ieee80211_channel **curr;
0028     struct ieee80211_channel **end;
0029     struct wsm_ssid ssids[WSM_SCAN_MAX_NUM_OF_SSIDS];
0030     int output_power;
0031     int n_ssids;
0032     int status;
0033     atomic_t in_progress;
0034     /* Direct probe requests workaround */
0035     struct delayed_work probe_work;
0036     int direct_probe;
0037 };
0038 
0039 int cw1200_hw_scan(struct ieee80211_hw *hw,
0040            struct ieee80211_vif *vif,
0041            struct ieee80211_scan_request *hw_req);
0042 void cw1200_scan_work(struct work_struct *work);
0043 void cw1200_scan_timeout(struct work_struct *work);
0044 void cw1200_clear_recent_scan_work(struct work_struct *work);
0045 void cw1200_scan_complete_cb(struct cw1200_common *priv,
0046                  struct wsm_scan_complete *arg);
0047 void cw1200_scan_failed_cb(struct cw1200_common *priv);
0048 
0049 /* ******************************************************************** */
0050 /* Raw probe requests TX workaround                 */
0051 void cw1200_probe_work(struct work_struct *work);
0052 
0053 #endif