Em Qua 25 Nov 2009, às 20:18:14, Michael Buesch escreveu: > On Wednesday 25 November 2009 22:44:25 Herton Ronaldo Krzesinski wrote: > > Hmm strange, reviewing it now I only see a missing #ifdef CONFIG_RTL8187_LEDS > > around rtl8187_leds_start inside rtl8187_start. Despite it, the patch worked > > here, may be something I'm not seeing... > > http://bu3sch.de/misc/rtl8187.JPG My approach wasn't good, I have another try, this one I couldn't test yet as I'm away from the laptop with rtl8187 until tomorrow, but I decided to post it now (sorry for another patch dump, this I hope should work): diff --git a/drivers/net/wireless/rtl818x/rtl8187_dev.c b/drivers/net/wireless/rtl818x/rtl8187_dev.c index 2017ccc..25cd10c 100644 --- a/drivers/net/wireless/rtl818x/rtl8187_dev.c +++ b/drivers/net/wireless/rtl818x/rtl8187_dev.c @@ -1022,6 +1022,13 @@ static void rtl8187_stop(struct ieee80211_hw *dev) if (!priv->is_rtl8187b) cancel_delayed_work_sync(&priv->work); + +#ifdef CONFIG_RTL8187_LEDS + /* XXX: turn the LED off */ + cancel_delayed_work_sync(&priv->led_on); + ieee80211_queue_delayed_work(dev, &priv->led_off, 0); + flush_delayed_work(&priv->led_off); +#endif } static int rtl8187_add_interface(struct ieee80211_hw *dev, diff --git a/drivers/net/wireless/rtl818x/rtl8187_leds.c b/drivers/net/wireless/rtl818x/rtl8187_leds.c index cf8a4a4..40419b3 100644 --- a/drivers/net/wireless/rtl818x/rtl8187_leds.c +++ b/drivers/net/wireless/rtl818x/rtl8187_leds.c @@ -107,6 +107,10 @@ static void rtl8187_led_brightness_set(struct led_classdev *led_dev, struct ieee80211_hw *hw = led->dev; struct rtl8187_priv *priv = hw->priv; + /* Don't change the LED, when the device is down. */ + if (priv->mode == NL80211_IFTYPE_UNSPECIFIED) + return; + if (brightness == LED_OFF) { ieee80211_queue_delayed_work(hw, &priv->led_off, 0); /* The LED is off for 1/20 sec so that it just blinks. */ @@ -208,8 +212,6 @@ void rtl8187_leds_exit(struct ieee80211_hw *dev) { struct rtl8187_priv *priv = dev->priv; - /* turn the LED off before exiting */ - ieee80211_queue_delayed_work(dev, &priv->led_off, 0); rtl8187_unregister_led(&priv->led_rx); rtl8187_unregister_led(&priv->led_tx); cancel_delayed_work_sync(&priv->led_off); -- []'s Herton -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html