2019-06-04 11:11:33 +03:00
/* SPDX-License-Identifier: GPL-2.0-only */
2007-05-05 22:45:53 +04:00
/*
* Copyright 2006 , Johannes Berg < johannes @ sipsolutions . net >
*/
# include <linux/list.h>
# include <linux/spinlock.h>
# include <linux/leds.h>
# include "ieee80211_i.h"
2015-04-23 13:19:22 +03:00
# define MAC80211_BLINK_DELAY 50 /* ms */
static inline void ieee80211_led_rx ( struct ieee80211_local * local )
{
# ifdef CONFIG_MAC80211_LEDS
unsigned long led_delay = MAC80211_BLINK_DELAY ;
if ( ! atomic_read ( & local - > rx_led_active ) )
return ;
led_trigger_blink_oneshot ( & local - > rx_led , & led_delay , & led_delay , 0 ) ;
# endif
}
static inline void ieee80211_led_tx ( struct ieee80211_local * local )
{
# ifdef CONFIG_MAC80211_LEDS
unsigned long led_delay = MAC80211_BLINK_DELAY ;
if ( ! atomic_read ( & local - > tx_led_active ) )
return ;
led_trigger_blink_oneshot ( & local - > tx_led , & led_delay , & led_delay , 0 ) ;
# endif
}
2007-05-05 22:45:53 +04:00
# ifdef CONFIG_MAC80211_LEDS
2010-11-30 10:58:45 +03:00
void ieee80211_led_assoc ( struct ieee80211_local * local ,
bool associated ) ;
void ieee80211_led_radio ( struct ieee80211_local * local ,
bool enabled ) ;
2015-04-23 13:19:22 +03:00
void ieee80211_alloc_led_names ( struct ieee80211_local * local ) ;
void ieee80211_free_led_names ( struct ieee80211_local * local ) ;
2010-11-30 10:58:45 +03:00
void ieee80211_led_init ( struct ieee80211_local * local ) ;
void ieee80211_led_exit ( struct ieee80211_local * local ) ;
2010-11-30 10:59:23 +03:00
void ieee80211_mod_tpt_led_trig ( struct ieee80211_local * local ,
unsigned int types_on , unsigned int types_off ) ;
2007-05-05 22:45:53 +04:00
# else
2007-09-27 17:10:44 +04:00
static inline void ieee80211_led_assoc ( struct ieee80211_local * local ,
bool associated )
{
}
2008-01-07 21:45:24 +03:00
static inline void ieee80211_led_radio ( struct ieee80211_local * local ,
bool enabled )
{
}
2015-04-23 13:19:22 +03:00
static inline void ieee80211_alloc_led_names ( struct ieee80211_local * local )
{
}
static inline void ieee80211_free_led_names ( struct ieee80211_local * local )
2010-11-27 22:02:59 +03:00
{
}
2007-05-05 22:45:53 +04:00
static inline void ieee80211_led_init ( struct ieee80211_local * local )
{
}
static inline void ieee80211_led_exit ( struct ieee80211_local * local )
{
}
2010-11-30 10:59:23 +03:00
static inline void ieee80211_mod_tpt_led_trig ( struct ieee80211_local * local ,
unsigned int types_on ,
unsigned int types_off )
2010-11-30 10:58:45 +03:00
{
}
# endif
static inline void
ieee80211_tpt_led_trig_tx ( struct ieee80211_local * local , __le16 fc , int bytes )
{
# ifdef CONFIG_MAC80211_LEDS
2015-04-23 13:19:22 +03:00
if ( ieee80211_is_data ( fc ) & & atomic_read ( & local - > tpt_led_active ) )
2010-11-30 10:58:45 +03:00
local - > tpt_led_trigger - > tx_bytes + = bytes ;
2007-05-05 22:45:53 +04:00
# endif
2010-11-30 10:58:45 +03:00
}
static inline void
ieee80211_tpt_led_trig_rx ( struct ieee80211_local * local , __le16 fc , int bytes )
{
# ifdef CONFIG_MAC80211_LEDS
2015-04-23 13:19:22 +03:00
if ( ieee80211_is_data ( fc ) & & atomic_read ( & local - > tpt_led_active ) )
2010-11-30 10:58:45 +03:00
local - > tpt_led_trigger - > rx_bytes + = bytes ;
# endif
}