diff options
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2x00lib.h')
| -rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00lib.h | 117 | 
1 files changed, 58 insertions, 59 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2x00lib.h b/drivers/net/wireless/rt2x00/rt2x00lib.h index 2cf68f82674..fb7c349ccc9 100644 --- a/drivers/net/wireless/rt2x00/rt2x00lib.h +++ b/drivers/net/wireless/rt2x00/rt2x00lib.h @@ -14,9 +14,7 @@  	GNU General Public License for more details.  	You should have received a copy of the GNU General Public License -	along with this program; if not, write to the -	Free Software Foundation, Inc., -	59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +	along with this program; if not, see <http://www.gnu.org/licenses/>.   */  /* @@ -32,6 +30,8 @@   */  #define WATCHDOG_INTERVAL	round_jiffies_relative(HZ)  #define LINK_TUNE_INTERVAL	round_jiffies_relative(HZ) +#define AGC_INTERVAL		round_jiffies_relative(4 * HZ) +#define VCO_INTERVAL		round_jiffies_relative(10 * HZ) /* 10 sec */  /*   * rt2x00_rate: Per rate device information @@ -101,7 +101,7 @@ void rt2x00lib_config(struct rt2x00_dev *rt2x00dev,   * rt2x00queue_alloc_rxskb - allocate a skb for RX purposes.   * @entry: The entry for which the skb will be applicable.   */ -struct sk_buff *rt2x00queue_alloc_rxskb(struct queue_entry *entry); +struct sk_buff *rt2x00queue_alloc_rxskb(struct queue_entry *entry, gfp_t gfp);  /**   * rt2x00queue_free_skb - free a skb @@ -119,16 +119,6 @@ void rt2x00queue_free_skb(struct queue_entry *entry);  void rt2x00queue_align_frame(struct sk_buff *skb);  /** - * rt2x00queue_align_payload - Align 802.11 payload to 4-byte boundary - * @skb: The skb to align - * @header_length: Length of 802.11 header - * - * Align the 802.11 payload to a 4-byte boundary, this could - * mean the header is not aligned properly though. - */ -void rt2x00queue_align_payload(struct sk_buff *skb, unsigned int header_length); - -/**   * rt2x00queue_insert_l2pad - Align 802.11 header & payload to 4-byte boundary   * @skb: The skb to align   * @header_length: Length of 802.11 header @@ -154,37 +144,44 @@ void rt2x00queue_remove_l2pad(struct sk_buff *skb, unsigned int header_length);   * @local: frame is not from mac80211   */  int rt2x00queue_write_tx_frame(struct data_queue *queue, struct sk_buff *skb, -			       bool local); +			       struct ieee80211_sta *sta, bool local);  /** - * rt2x00queue_update_beacon - Send new beacon from mac80211 to hardware + * rt2x00queue_update_beacon - Send new beacon from mac80211 + *	to hardware. Handles locking by itself (mutex).   * @rt2x00dev: Pointer to &struct rt2x00_dev.   * @vif: Interface for which the beacon should be updated. - * @enable_beacon: Enable beaconing   */  int rt2x00queue_update_beacon(struct rt2x00_dev *rt2x00dev, -			      struct ieee80211_vif *vif, -			      const bool enable_beacon); +			      struct ieee80211_vif *vif);  /** - * rt2x00queue_index_inc - Index incrementation function - * @queue: Queue (&struct data_queue) to perform the action on. - * @index: Index type (&enum queue_index) to perform the action on. - * - * This function will increase the requested index on the queue, - * it will grab the appropriate locks and handle queue overflow events by - * resetting the index to the start of the queue. + * rt2x00queue_update_beacon_locked - Send new beacon from mac80211 + *	to hardware. Caller needs to ensure locking. + * @rt2x00dev: Pointer to &struct rt2x00_dev. + * @vif: Interface for which the beacon should be updated.   */ -void rt2x00queue_index_inc(struct data_queue *queue, enum queue_index index); +int rt2x00queue_update_beacon_locked(struct rt2x00_dev *rt2x00dev, +				     struct ieee80211_vif *vif);  /** - * rt2x00queue_stop_queues - Halt all data queues + * rt2x00queue_clear_beacon - Clear beacon in hardware   * @rt2x00dev: Pointer to &struct rt2x00_dev. + * @vif: Interface for which the beacon should be updated. + */ +int rt2x00queue_clear_beacon(struct rt2x00_dev *rt2x00dev, +			     struct ieee80211_vif *vif); + +/** + * rt2x00queue_index_inc - Index incrementation function + * @entry: Queue entry (&struct queue_entry) to perform the action on. + * @index: Index type (&enum queue_index) to perform the action on.   * - * This function will loop through all available queues to stop - * any pending outgoing frames. + * This function will increase the requested index on the entry's queue, + * it will grab the appropriate locks and handle queue overflow events by + * resetting the index to the start of the queue.   */ -void rt2x00queue_stop_queues(struct rt2x00_dev *rt2x00dev); +void rt2x00queue_index_inc(struct queue_entry *entry, enum queue_index index);  /**   * rt2x00queue_init_queues - Initialize all data queues @@ -274,6 +271,30 @@ void rt2x00link_start_watchdog(struct rt2x00_dev *rt2x00dev);  void rt2x00link_stop_watchdog(struct rt2x00_dev *rt2x00dev);  /** + * rt2x00link_start_agc - Start periodic gain calibration + * @rt2x00dev: Pointer to &struct rt2x00_dev. + */ +void rt2x00link_start_agc(struct rt2x00_dev *rt2x00dev); + +/** + * rt2x00link_start_vcocal - Start periodic VCO calibration + * @rt2x00dev: Pointer to &struct rt2x00_dev. + */ +void rt2x00link_start_vcocal(struct rt2x00_dev *rt2x00dev); + +/** + * rt2x00link_stop_agc - Stop periodic gain calibration + * @rt2x00dev: Pointer to &struct rt2x00_dev. + */ +void rt2x00link_stop_agc(struct rt2x00_dev *rt2x00dev); + +/** + * rt2x00link_stop_vcocal - Stop periodic VCO calibration + * @rt2x00dev: Pointer to &struct rt2x00_dev. + */ +void rt2x00link_stop_vcocal(struct rt2x00_dev *rt2x00dev); + +/**   * rt2x00link_register - Initialize link tuning & watchdog functionality   * @rt2x00dev: Pointer to &struct rt2x00_dev.   * @@ -326,7 +347,8 @@ static inline void rt2x00debug_update_crypto(struct rt2x00_dev *rt2x00dev,   */  #ifdef CONFIG_RT2X00_LIB_CRYPTO  enum cipher rt2x00crypto_key_to_cipher(struct ieee80211_key_conf *key); -void rt2x00crypto_create_tx_descriptor(struct queue_entry *entry, +void rt2x00crypto_create_tx_descriptor(struct rt2x00_dev *rt2x00dev, +				       struct sk_buff *skb,  				       struct txentry_desc *txdesc);  unsigned int rt2x00crypto_tx_overhead(struct rt2x00_dev *rt2x00dev,  				      struct sk_buff *skb); @@ -344,7 +366,8 @@ static inline enum cipher rt2x00crypto_key_to_cipher(struct ieee80211_key_conf *  	return CIPHER_NONE;  } -static inline void rt2x00crypto_create_tx_descriptor(struct queue_entry *entry, +static inline void rt2x00crypto_create_tx_descriptor(struct rt2x00_dev *rt2x00dev, +						     struct sk_buff *skb,  						     struct txentry_desc *txdesc)  {  } @@ -378,41 +401,17 @@ static inline void rt2x00crypto_rx_insert_iv(struct sk_buff *skb,  #endif /* CONFIG_RT2X00_LIB_CRYPTO */  /* - * HT handlers. - */ -#ifdef CONFIG_RT2X00_LIB_HT -void rt2x00ht_create_tx_descriptor(struct queue_entry *entry, -				   struct txentry_desc *txdesc, -				   const struct rt2x00_rate *hwrate); - -u16 rt2x00ht_center_channel(struct rt2x00_dev *rt2x00dev, -			    struct ieee80211_conf *conf); -#else -static inline void rt2x00ht_create_tx_descriptor(struct queue_entry *entry, -						 struct txentry_desc *txdesc, -						 const struct rt2x00_rate *hwrate) -{ -} - -static inline u16 rt2x00ht_center_channel(struct rt2x00_dev *rt2x00dev, -					  struct ieee80211_conf *conf) -{ -	return conf->channel->hw_value; -} -#endif /* CONFIG_RT2X00_LIB_HT */ - -/*   * RFkill handlers.   */  static inline void rt2x00rfkill_register(struct rt2x00_dev *rt2x00dev)  { -	if (test_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags)) +	if (test_bit(CAPABILITY_HW_BUTTON, &rt2x00dev->cap_flags))  		wiphy_rfkill_start_polling(rt2x00dev->hw->wiphy);  }  static inline void rt2x00rfkill_unregister(struct rt2x00_dev *rt2x00dev)  { -	if (test_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags)) +	if (test_bit(CAPABILITY_HW_BUTTON, &rt2x00dev->cap_flags))  		wiphy_rfkill_stop_polling(rt2x00dev->hw->wiphy);  }  | 
