123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- /*
- * ITP code for ST-Ericsson CW1200 mac80211 driver
- *
- * Copyright (c) 2011, ST-Ericsson
- * Author: Dmitry Tarnyagin <dmitry.tarnyagin@lockless.no>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
- #ifndef CW1200_ITP_H_INCLUDED
- #define CW1200_ITP_H_INCLUDED
- struct cw200_common;
- struct wsm_tx_confirm;
- struct dentry;
- #ifdef CONFIG_CW1200_ITP
- /*extern*/ struct ieee80211_channel;
- #define TEST_MODE_NO_TEST (0)
- #define TEST_MODE_RX_TEST (1)
- #define TEST_MODE_TX_TEST (2)
- #define ITP_DEFAULT_DA_ADDR {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}
- #define ITP_MIN_DATA_SIZE 6
- #define ITP_MAX_DATA_SIZE 1600
- #define ITP_TIME_THRES_US 10000
- #define ITP_US_TO_MS(x) ((x)/1000)
- #define ITP_MS_TO_US(x) ((x)*1000)
- #define ITP_BUF_SIZE 255
- enum cw1200_itp_data_modes {
- ITP_DATA_ZEROS,
- ITP_DATA_ONES,
- ITP_DATA_ZERONES,
- ITP_DATA_RANDOM,
- ITP_DATA_MAX_MODE,
- };
- enum cw1200_itp_version_type {
- ITP_CHIP_ID,
- ITP_FW_VER,
- };
- enum cw1200_itp_preamble_type {
- ITP_PREAMBLE_LONG,
- ITP_PREAMBLE_SHORT,
- ITP_PREAMBLE_OFDM,
- ITP_PREAMBLE_MIXED,
- ITP_PREAMBLE_GREENFIELD,
- ITP_PREAMBLE_MAX,
- };
- struct cw1200_itp {
- struct cw1200_common *priv;
- atomic_t open_count;
- atomic_t awaiting_confirm;
- struct sk_buff_head log_queue;
- wait_queue_head_t read_wait;
- wait_queue_head_t write_wait;
- wait_queue_head_t close_wait;
- struct ieee80211_channel *saved_channel;
- atomic_t stop_tx;
- struct delayed_work tx_work;
- struct delayed_work tx_finish;
- spinlock_t tx_lock;
- struct timespec last_sent;
- atomic_t test_mode;
- int rx_cnt;
- long rx_rssi;
- int rx_rssi_max;
- int rx_rssi_min;
- unsigned band;
- unsigned ch;
- unsigned rate;
- unsigned preamble;
- unsigned int number;
- unsigned data_mode;
- int interval_us;
- int power;
- u8 *data;
- int hdr_len;
- int data_len;
- };
- int cw1200_itp_init(struct cw1200_common *priv);
- void cw1200_itp_release(struct cw1200_common *priv);
- bool cw1200_is_itp(struct cw1200_common *priv);
- bool cw1200_itp_rxed(struct cw1200_common *priv, struct sk_buff *skb);
- void cw1200_itp_wake_up_tx(struct cw1200_common *priv);
- int cw1200_itp_get_tx(struct cw1200_common *priv, u8 **data,
- size_t *tx_len, int *burst);
- bool cw1200_itp_tx_running(struct cw1200_common *priv);
- #else /* CONFIG_CW1200_ITP */
- static inline int cw1200_itp_init(struct cw1200_common *priv)
- {
- return 0;
- }
- static inline void cw1200_itp_release(struct cw1200_common *priv)
- {
- }
- static inline bool cw1200_is_itp(struct cw1200_common *priv)
- {
- return false;
- }
- static inline bool cw1200_itp_rxed(struct cw1200_common *priv,
- struct sk_buff *skb)
- {
- return false;
- }
- static inline void cw1200_itp_consume_txed(struct cw1200_common *priv)
- {
- }
- static inline void cw1200_itp_wake_up_tx(struct cw1200_common *priv)
- {
- }
- static inline int cw1200_itp_get_tx(struct cw1200_common *priv, u8 **data,
- size_t *tx_len, int *burst)
- {
- return 0;
- }
- static inline bool cw1200_itp_tx_running(struct cw1200_common *priv)
- {
- return false;
- }
- #endif /* CONFIG_CW1200_ITP */
- #endif /* CW1200_ITP_H_INCLUDED */
|