2019-06-04 10:11:33 +02:00
/* SPDX-License-Identifier: GPL-2.0-only */
2007-05-05 11:45:53 -07: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 12:19:22 +02: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 11:45:53 -07:00
# ifdef CONFIG_MAC80211_LEDS
2010-11-30 08:58:45 +01:00
void ieee80211_led_assoc ( struct ieee80211_local * local ,
bool associated ) ;
void ieee80211_led_radio ( struct ieee80211_local * local ,
bool enabled ) ;
2015-04-23 12:19:22 +02:00
void ieee80211_alloc_led_names ( struct ieee80211_local * local ) ;
void ieee80211_free_led_names ( struct ieee80211_local * local ) ;
2010-11-30 08:58:45 +01:00
void ieee80211_led_init ( struct ieee80211_local * local ) ;
void ieee80211_led_exit ( struct ieee80211_local * local ) ;
2010-11-30 08:59:23 +01:00
void ieee80211_mod_tpt_led_trig ( struct ieee80211_local * local ,
unsigned int types_on , unsigned int types_off ) ;
2007-05-05 11:45:53 -07:00
# else
2007-09-27 15:10:44 +02:00
static inline void ieee80211_led_assoc ( struct ieee80211_local * local ,
bool associated )
{
}
2008-01-07 19:45:24 +01:00
static inline void ieee80211_led_radio ( struct ieee80211_local * local ,
bool enabled )
{
}
2015-04-23 12:19:22 +02: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 20:02:59 +01:00
{
}
2007-05-05 11:45:53 -07:00
static inline void ieee80211_led_init ( struct ieee80211_local * local )
{
}
static inline void ieee80211_led_exit ( struct ieee80211_local * local )
{
}
2010-11-30 08:59:23 +01:00
static inline void ieee80211_mod_tpt_led_trig ( struct ieee80211_local * local ,
unsigned int types_on ,
unsigned int types_off )
2010-11-30 08:58:45 +01: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 12:19:22 +02:00
if ( ieee80211_is_data ( fc ) & & atomic_read ( & local - > tpt_led_active ) )
2010-11-30 08:58:45 +01:00
local - > tpt_led_trigger - > tx_bytes + = bytes ;
2007-05-05 11:45:53 -07:00
# endif
2010-11-30 08:58:45 +01:00
}
static inline void
ieee80211_tpt_led_trig_rx ( struct ieee80211_local * local , __le16 fc , int bytes )
{
# ifdef CONFIG_MAC80211_LEDS
2015-04-23 12:19:22 +02:00
if ( ieee80211_is_data ( fc ) & & atomic_read ( & local - > tpt_led_active ) )
2010-11-30 08:58:45 +01:00
local - > tpt_led_trigger - > rx_bytes + = bytes ;
# endif
}