Re: [BUG] nf: xt_LED: led-always-blink invisible

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Cc'ing LED subsystem developers.

On Thu, Jun 19, 2014 at 11:17:49AM +0200, Jiří Prchal wrote:
> Hi all,
> probably I found bug in kernel 3.14.0 in xt_LED module when set
> led-always-blink. If it is set, then between switch led OFF and ON
> is almost zero time. So blink is invisible. I did some fix, but I'm
> not sure if this way would be good. Please, help to direct me. This
> is not final patch so don't punish me for coding style.

Yes, coding style needs to be fixed.

On top of that, I need a second opinion on this since I'm not familiar
with the led subsystem.

@Richard, Bryan: Would you comment on this, please?

Thanks.

> diff --git a/net/netfilter/xt_LED.c b/net/netfilter/xt_LED.c
> index 993de2b..430584b 100644
> --- a/net/netfilter/xt_LED.c
> +++ b/net/netfilter/xt_LED.c
> @@ -54,30 +54,32 @@ static unsigned int
>  led_tg(struct sk_buff *skb, const struct xt_action_param *par)
>  {
>  	const struct xt_led_info *ledinfo = par->targinfo;
>  	struct xt_led_info_internal *ledinternal = ledinfo->internal_data;
> +        unsigned long t=50;
> 
>  	/*
>  	 * If "always blink" is enabled, and there's still some time until the
>  	 * LED will switch off, briefly switch it off now.
>  	 */
>  	if ((ledinfo->delay > 0) && ledinfo->always_blink &&
>  	    timer_pending(&ledinternal->timer))
> -		led_trigger_event(&ledinternal->netfilter_led_trigger, LED_OFF);
> -
> -	led_trigger_event(&ledinternal->netfilter_led_trigger, LED_FULL);
> +		//led_trigger_event(&ledinternal->netfilter_led_trigger, LED_OFF);
> +          led_trigger_blink_oneshot(&ledinternal->netfilter_led_trigger, &t, &t, 1);
> +        else
> +                led_trigger_event(&ledinternal->netfilter_led_trigger, LED_FULL);
> 
>  	/* If there's a positive delay, start/update the timer */
>  	if (ledinfo->delay > 0) {
>  		mod_timer(&ledinternal->timer,
>  			  jiffies + msecs_to_jiffies(ledinfo->delay));
> 
>  	/* Otherwise if there was no delay given, blink as fast as possible */
>  	} else if (ledinfo->delay == 0) {
>  		led_trigger_event(&ledinternal->netfilter_led_trigger, LED_OFF);
>  	}
> 
>  	/* else the delay is negative, which means switch on and stay on */
> 
>  	return XT_CONTINUE;
>  }
> 
--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Netfitler Users]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux