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

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

 



On Mon, Jun 30, 2014 at 3:54 AM, Pablo Neira Ayuso <pablo@xxxxxxxxxxxxx> wrote:
> 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);

For this kind of package activity trigger. led_trigger_blink_oneshot()
is the right API to use.
And what's always_blink for? I think for each package event we detects
here we blink once LED.

Thanks,
-Bryan

>> +        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