1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Scan interface for ST-Ericsson CW1200 mac80211 drivers 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (c) 2010, ST-Ericsson 6*4882a593Smuzhiyun * Author: Dmitry Tarnyagin <dmitry.tarnyagin@lockless.no> 7*4882a593Smuzhiyun */ 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #ifndef SCAN_H_INCLUDED 10*4882a593Smuzhiyun #define SCAN_H_INCLUDED 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun #include <linux/semaphore.h> 13*4882a593Smuzhiyun #include "wsm.h" 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun /* external */ struct sk_buff; 16*4882a593Smuzhiyun /* external */ struct cfg80211_scan_request; 17*4882a593Smuzhiyun /* external */ struct ieee80211_channel; 18*4882a593Smuzhiyun /* external */ struct ieee80211_hw; 19*4882a593Smuzhiyun /* external */ struct work_struct; 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun struct cw1200_scan { 22*4882a593Smuzhiyun struct semaphore lock; 23*4882a593Smuzhiyun struct work_struct work; 24*4882a593Smuzhiyun struct delayed_work timeout; 25*4882a593Smuzhiyun struct cfg80211_scan_request *req; 26*4882a593Smuzhiyun struct ieee80211_channel **begin; 27*4882a593Smuzhiyun struct ieee80211_channel **curr; 28*4882a593Smuzhiyun struct ieee80211_channel **end; 29*4882a593Smuzhiyun struct wsm_ssid ssids[WSM_SCAN_MAX_NUM_OF_SSIDS]; 30*4882a593Smuzhiyun int output_power; 31*4882a593Smuzhiyun int n_ssids; 32*4882a593Smuzhiyun int status; 33*4882a593Smuzhiyun atomic_t in_progress; 34*4882a593Smuzhiyun /* Direct probe requests workaround */ 35*4882a593Smuzhiyun struct delayed_work probe_work; 36*4882a593Smuzhiyun int direct_probe; 37*4882a593Smuzhiyun }; 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun int cw1200_hw_scan(struct ieee80211_hw *hw, 40*4882a593Smuzhiyun struct ieee80211_vif *vif, 41*4882a593Smuzhiyun struct ieee80211_scan_request *hw_req); 42*4882a593Smuzhiyun void cw1200_scan_work(struct work_struct *work); 43*4882a593Smuzhiyun void cw1200_scan_timeout(struct work_struct *work); 44*4882a593Smuzhiyun void cw1200_clear_recent_scan_work(struct work_struct *work); 45*4882a593Smuzhiyun void cw1200_scan_complete_cb(struct cw1200_common *priv, 46*4882a593Smuzhiyun struct wsm_scan_complete *arg); 47*4882a593Smuzhiyun void cw1200_scan_failed_cb(struct cw1200_common *priv); 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun /* ******************************************************************** */ 50*4882a593Smuzhiyun /* Raw probe requests TX workaround */ 51*4882a593Smuzhiyun void cw1200_probe_work(struct work_struct *work); 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun #endif 54