1d2912cb1SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */ 2560424e9SKalle Valo /* 3560424e9SKalle Valo * Scan interface for ST-Ericsson CW1200 mac80211 drivers 4560424e9SKalle Valo * 5560424e9SKalle Valo * Copyright (c) 2010, ST-Ericsson 6560424e9SKalle Valo * Author: Dmitry Tarnyagin <dmitry.tarnyagin@lockless.no> 7560424e9SKalle Valo */ 8560424e9SKalle Valo 9560424e9SKalle Valo #ifndef SCAN_H_INCLUDED 10560424e9SKalle Valo #define SCAN_H_INCLUDED 11560424e9SKalle Valo 12560424e9SKalle Valo #include <linux/semaphore.h> 13560424e9SKalle Valo #include "wsm.h" 14560424e9SKalle Valo 15560424e9SKalle Valo /* external */ struct sk_buff; 16560424e9SKalle Valo /* external */ struct cfg80211_scan_request; 17560424e9SKalle Valo /* external */ struct ieee80211_channel; 18560424e9SKalle Valo /* external */ struct ieee80211_hw; 19560424e9SKalle Valo /* external */ struct work_struct; 20560424e9SKalle Valo 21560424e9SKalle Valo struct cw1200_scan { 22560424e9SKalle Valo struct semaphore lock; 23560424e9SKalle Valo struct work_struct work; 24560424e9SKalle Valo struct delayed_work timeout; 25560424e9SKalle Valo struct cfg80211_scan_request *req; 26560424e9SKalle Valo struct ieee80211_channel **begin; 27560424e9SKalle Valo struct ieee80211_channel **curr; 28560424e9SKalle Valo struct ieee80211_channel **end; 29560424e9SKalle Valo struct wsm_ssid ssids[WSM_SCAN_MAX_NUM_OF_SSIDS]; 30560424e9SKalle Valo int output_power; 31560424e9SKalle Valo int n_ssids; 32560424e9SKalle Valo int status; 33560424e9SKalle Valo atomic_t in_progress; 34560424e9SKalle Valo /* Direct probe requests workaround */ 35560424e9SKalle Valo struct delayed_work probe_work; 36560424e9SKalle Valo int direct_probe; 37560424e9SKalle Valo }; 38560424e9SKalle Valo 39560424e9SKalle Valo int cw1200_hw_scan(struct ieee80211_hw *hw, 40560424e9SKalle Valo struct ieee80211_vif *vif, 41560424e9SKalle Valo struct ieee80211_scan_request *hw_req); 42560424e9SKalle Valo void cw1200_scan_work(struct work_struct *work); 43560424e9SKalle Valo void cw1200_scan_timeout(struct work_struct *work); 44560424e9SKalle Valo void cw1200_clear_recent_scan_work(struct work_struct *work); 45560424e9SKalle Valo void cw1200_scan_complete_cb(struct cw1200_common *priv, 46560424e9SKalle Valo struct wsm_scan_complete *arg); 47560424e9SKalle Valo void cw1200_scan_failed_cb(struct cw1200_common *priv); 48560424e9SKalle Valo 49560424e9SKalle Valo /* ******************************************************************** */ 50560424e9SKalle Valo /* Raw probe requests TX workaround */ 51560424e9SKalle Valo void cw1200_probe_work(struct work_struct *work); 52560424e9SKalle Valo 53560424e9SKalle Valo #endif 54