Loading drivers/net/wireless/libertas/if_spi.c +1 −0 Original line number Original line Diff line number Diff line Loading @@ -995,6 +995,7 @@ static int if_spi_host_to_card(struct lbs_private *priv, spin_unlock_irqrestore(&card->buffer_lock, flags); spin_unlock_irqrestore(&card->buffer_lock, flags); break; break; default: default: kfree(packet); netdev_err(priv->dev, "can't transfer buffer of type %d\n", netdev_err(priv->dev, "can't transfer buffer of type %d\n", type); type); err = -EINVAL; err = -EINVAL; Loading drivers/net/wireless/rt2x00/rt2800usb.c +1 −0 Original line number Original line Diff line number Diff line Loading @@ -919,6 +919,7 @@ static struct usb_device_id rt2800usb_device_table[] = { { USB_DEVICE(0x050d, 0x935b) }, { USB_DEVICE(0x050d, 0x935b) }, /* Buffalo */ /* Buffalo */ { USB_DEVICE(0x0411, 0x00e8) }, { USB_DEVICE(0x0411, 0x00e8) }, { USB_DEVICE(0x0411, 0x0158) }, { USB_DEVICE(0x0411, 0x016f) }, { USB_DEVICE(0x0411, 0x016f) }, { USB_DEVICE(0x0411, 0x01a2) }, { USB_DEVICE(0x0411, 0x01a2) }, /* Corega */ /* Corega */ Loading drivers/net/wireless/rt2x00/rt2x00.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -943,6 +943,7 @@ struct rt2x00_dev { * Powersaving work * Powersaving work */ */ struct delayed_work autowakeup_work; struct delayed_work autowakeup_work; struct work_struct sleep_work; /* /* * Data queue arrays for RX, TX, Beacon and ATIM. * Data queue arrays for RX, TX, Beacon and ATIM. Loading drivers/net/wireless/rt2x00/rt2x00dev.c +20 −2 Original line number Original line Diff line number Diff line Loading @@ -465,6 +465,23 @@ static u8 *rt2x00lib_find_ie(u8 *data, unsigned int len, u8 ie) return NULL; return NULL; } } static void rt2x00lib_sleep(struct work_struct *work) { struct rt2x00_dev *rt2x00dev = container_of(work, struct rt2x00_dev, sleep_work); if (!test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags)) return; /* * Check again is powersaving is enabled, to prevent races from delayed * work execution. */ if (!test_bit(CONFIG_POWERSAVING, &rt2x00dev->flags)) rt2x00lib_config(rt2x00dev, &rt2x00dev->hw->conf, IEEE80211_CONF_CHANGE_PS); } static void rt2x00lib_rxdone_check_ps(struct rt2x00_dev *rt2x00dev, static void rt2x00lib_rxdone_check_ps(struct rt2x00_dev *rt2x00dev, struct sk_buff *skb, struct sk_buff *skb, struct rxdone_entry_desc *rxdesc) struct rxdone_entry_desc *rxdesc) Loading Loading @@ -512,8 +529,7 @@ static void rt2x00lib_rxdone_check_ps(struct rt2x00_dev *rt2x00dev, cam |= (tim_ie->bitmap_ctrl & 0x01); cam |= (tim_ie->bitmap_ctrl & 0x01); if (!cam && !test_bit(CONFIG_POWERSAVING, &rt2x00dev->flags)) if (!cam && !test_bit(CONFIG_POWERSAVING, &rt2x00dev->flags)) rt2x00lib_config(rt2x00dev, &rt2x00dev->hw->conf, queue_work(rt2x00dev->workqueue, &rt2x00dev->sleep_work); IEEE80211_CONF_CHANGE_PS); } } static int rt2x00lib_rxdone_read_signal(struct rt2x00_dev *rt2x00dev, static int rt2x00lib_rxdone_read_signal(struct rt2x00_dev *rt2x00dev, Loading Loading @@ -1141,6 +1157,7 @@ int rt2x00lib_probe_dev(struct rt2x00_dev *rt2x00dev) INIT_WORK(&rt2x00dev->intf_work, rt2x00lib_intf_scheduled); INIT_WORK(&rt2x00dev->intf_work, rt2x00lib_intf_scheduled); INIT_DELAYED_WORK(&rt2x00dev->autowakeup_work, rt2x00lib_autowakeup); INIT_DELAYED_WORK(&rt2x00dev->autowakeup_work, rt2x00lib_autowakeup); INIT_WORK(&rt2x00dev->sleep_work, rt2x00lib_sleep); /* /* * Let the driver probe the device to detect the capabilities. * Let the driver probe the device to detect the capabilities. Loading Loading @@ -1197,6 +1214,7 @@ void rt2x00lib_remove_dev(struct rt2x00_dev *rt2x00dev) */ */ cancel_work_sync(&rt2x00dev->intf_work); cancel_work_sync(&rt2x00dev->intf_work); cancel_delayed_work_sync(&rt2x00dev->autowakeup_work); cancel_delayed_work_sync(&rt2x00dev->autowakeup_work); cancel_work_sync(&rt2x00dev->sleep_work); if (rt2x00_is_usb(rt2x00dev)) { if (rt2x00_is_usb(rt2x00dev)) { del_timer_sync(&rt2x00dev->txstatus_timer); del_timer_sync(&rt2x00dev->txstatus_timer); cancel_work_sync(&rt2x00dev->rxdone_work); cancel_work_sync(&rt2x00dev->rxdone_work); Loading Loading
drivers/net/wireless/libertas/if_spi.c +1 −0 Original line number Original line Diff line number Diff line Loading @@ -995,6 +995,7 @@ static int if_spi_host_to_card(struct lbs_private *priv, spin_unlock_irqrestore(&card->buffer_lock, flags); spin_unlock_irqrestore(&card->buffer_lock, flags); break; break; default: default: kfree(packet); netdev_err(priv->dev, "can't transfer buffer of type %d\n", netdev_err(priv->dev, "can't transfer buffer of type %d\n", type); type); err = -EINVAL; err = -EINVAL; Loading
drivers/net/wireless/rt2x00/rt2800usb.c +1 −0 Original line number Original line Diff line number Diff line Loading @@ -919,6 +919,7 @@ static struct usb_device_id rt2800usb_device_table[] = { { USB_DEVICE(0x050d, 0x935b) }, { USB_DEVICE(0x050d, 0x935b) }, /* Buffalo */ /* Buffalo */ { USB_DEVICE(0x0411, 0x00e8) }, { USB_DEVICE(0x0411, 0x00e8) }, { USB_DEVICE(0x0411, 0x0158) }, { USB_DEVICE(0x0411, 0x016f) }, { USB_DEVICE(0x0411, 0x016f) }, { USB_DEVICE(0x0411, 0x01a2) }, { USB_DEVICE(0x0411, 0x01a2) }, /* Corega */ /* Corega */ Loading
drivers/net/wireless/rt2x00/rt2x00.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -943,6 +943,7 @@ struct rt2x00_dev { * Powersaving work * Powersaving work */ */ struct delayed_work autowakeup_work; struct delayed_work autowakeup_work; struct work_struct sleep_work; /* /* * Data queue arrays for RX, TX, Beacon and ATIM. * Data queue arrays for RX, TX, Beacon and ATIM. Loading
drivers/net/wireless/rt2x00/rt2x00dev.c +20 −2 Original line number Original line Diff line number Diff line Loading @@ -465,6 +465,23 @@ static u8 *rt2x00lib_find_ie(u8 *data, unsigned int len, u8 ie) return NULL; return NULL; } } static void rt2x00lib_sleep(struct work_struct *work) { struct rt2x00_dev *rt2x00dev = container_of(work, struct rt2x00_dev, sleep_work); if (!test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags)) return; /* * Check again is powersaving is enabled, to prevent races from delayed * work execution. */ if (!test_bit(CONFIG_POWERSAVING, &rt2x00dev->flags)) rt2x00lib_config(rt2x00dev, &rt2x00dev->hw->conf, IEEE80211_CONF_CHANGE_PS); } static void rt2x00lib_rxdone_check_ps(struct rt2x00_dev *rt2x00dev, static void rt2x00lib_rxdone_check_ps(struct rt2x00_dev *rt2x00dev, struct sk_buff *skb, struct sk_buff *skb, struct rxdone_entry_desc *rxdesc) struct rxdone_entry_desc *rxdesc) Loading Loading @@ -512,8 +529,7 @@ static void rt2x00lib_rxdone_check_ps(struct rt2x00_dev *rt2x00dev, cam |= (tim_ie->bitmap_ctrl & 0x01); cam |= (tim_ie->bitmap_ctrl & 0x01); if (!cam && !test_bit(CONFIG_POWERSAVING, &rt2x00dev->flags)) if (!cam && !test_bit(CONFIG_POWERSAVING, &rt2x00dev->flags)) rt2x00lib_config(rt2x00dev, &rt2x00dev->hw->conf, queue_work(rt2x00dev->workqueue, &rt2x00dev->sleep_work); IEEE80211_CONF_CHANGE_PS); } } static int rt2x00lib_rxdone_read_signal(struct rt2x00_dev *rt2x00dev, static int rt2x00lib_rxdone_read_signal(struct rt2x00_dev *rt2x00dev, Loading Loading @@ -1141,6 +1157,7 @@ int rt2x00lib_probe_dev(struct rt2x00_dev *rt2x00dev) INIT_WORK(&rt2x00dev->intf_work, rt2x00lib_intf_scheduled); INIT_WORK(&rt2x00dev->intf_work, rt2x00lib_intf_scheduled); INIT_DELAYED_WORK(&rt2x00dev->autowakeup_work, rt2x00lib_autowakeup); INIT_DELAYED_WORK(&rt2x00dev->autowakeup_work, rt2x00lib_autowakeup); INIT_WORK(&rt2x00dev->sleep_work, rt2x00lib_sleep); /* /* * Let the driver probe the device to detect the capabilities. * Let the driver probe the device to detect the capabilities. Loading Loading @@ -1197,6 +1214,7 @@ void rt2x00lib_remove_dev(struct rt2x00_dev *rt2x00dev) */ */ cancel_work_sync(&rt2x00dev->intf_work); cancel_work_sync(&rt2x00dev->intf_work); cancel_delayed_work_sync(&rt2x00dev->autowakeup_work); cancel_delayed_work_sync(&rt2x00dev->autowakeup_work); cancel_work_sync(&rt2x00dev->sleep_work); if (rt2x00_is_usb(rt2x00dev)) { if (rt2x00_is_usb(rt2x00dev)) { del_timer_sync(&rt2x00dev->txstatus_timer); del_timer_sync(&rt2x00dev->txstatus_timer); cancel_work_sync(&rt2x00dev->rxdone_work); cancel_work_sync(&rt2x00dev->rxdone_work); Loading