Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 596a1b74 authored by David S. Miller's avatar David S. Miller
Browse files
parents 38ff1edb c4be3c2d
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -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;
+1 −0
Original line number Original line Diff line number Diff line
@@ -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 */
+1 −0
Original line number Original line Diff line number Diff line
@@ -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.
+20 −2
Original line number Original line Diff line number Diff line
@@ -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)
@@ -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,
@@ -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.
@@ -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);