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

Commit d8d326dc authored by David S. Miller's avatar David S. Miller
Browse files
parents fed396a5 021570e5
Loading
Loading
Loading
Loading
+2 −8
Original line number Diff line number Diff line
@@ -2978,20 +2978,14 @@ F: drivers/net/ixgb/
F:	drivers/net/ixgbe/

INTEL PRO/WIRELESS 2100 NETWORK CONNECTION SUPPORT
M:	Reinette Chatre <reinette.chatre@intel.com>
M:	Intel Linux Wireless <ilw@linux.intel.com>
L:	linux-wireless@vger.kernel.org
W:	http://ipw2100.sourceforge.net
S:	Odd Fixes
S:	Orphan
F:	Documentation/networking/README.ipw2100
F:	drivers/net/wireless/ipw2x00/ipw2100.*

INTEL PRO/WIRELESS 2915ABG NETWORK CONNECTION SUPPORT
M:	Reinette Chatre <reinette.chatre@intel.com>
M:	Intel Linux Wireless <ilw@linux.intel.com>
L:	linux-wireless@vger.kernel.org
W:	http://ipw2200.sourceforge.net
S:	Odd Fixes
S:	Orphan
F:	Documentation/networking/README.ipw2200
F:	drivers/net/wireless/ipw2x00/ipw2200.*

+13 −2
Original line number Diff line number Diff line
@@ -594,6 +594,7 @@ static int prism2_config(struct pcmcia_device *link)
	local_info_t *local;
	int ret = 1;
	struct hostap_cs_priv *hw_priv;
	unsigned long flags;

	PDEBUG(DEBUG_FLOW, "prism2_config()\n");

@@ -625,9 +626,15 @@ static int prism2_config(struct pcmcia_device *link)
	local->hw_priv = hw_priv;
	hw_priv->link = link;

	/*
	 * Make sure the IRQ handler cannot proceed until at least
	 * dev->base_addr is initialized.
	 */
	spin_lock_irqsave(&local->irq_init_lock, flags);

	ret = pcmcia_request_irq(link, prism2_interrupt);
	if (ret)
		goto failed;
		goto failed_unlock;

	/*
	 * This actually configures the PCMCIA socket -- setting up
@@ -636,11 +643,13 @@ static int prism2_config(struct pcmcia_device *link)
	 */
	ret = pcmcia_request_configuration(link, &link->conf);
	if (ret)
		goto failed;
		goto failed_unlock;

	dev->irq = link->irq;
	dev->base_addr = link->io.BasePort1;

	spin_unlock_irqrestore(&local->irq_init_lock, flags);

	/* Finally, report what we've done */
	printk(KERN_INFO "%s: index 0x%02x: ",
	       dev_info, link->conf.ConfigIndex);
@@ -667,6 +676,8 @@ static int prism2_config(struct pcmcia_device *link)

	return ret;

 failed_unlock:
	 spin_unlock_irqrestore(&local->irq_init_lock, flags);
 failed:
	kfree(hw_priv);
	prism2_release((u_long)link);
+13 −0
Original line number Diff line number Diff line
@@ -2621,6 +2621,18 @@ static irqreturn_t prism2_interrupt(int irq, void *dev_id)
	iface = netdev_priv(dev);
	local = iface->local;

	/* Detect early interrupt before driver is fully configued */
	spin_lock(&local->irq_init_lock);
	if (!dev->base_addr) {
		if (net_ratelimit()) {
			printk(KERN_DEBUG "%s: Interrupt, but dev not configured\n",
			       dev->name);
		}
		spin_unlock(&local->irq_init_lock);
		return IRQ_HANDLED;
	}
	spin_unlock(&local->irq_init_lock);

	prism2_io_debug_add(dev, PRISM2_IO_DEBUG_CMD_INTERRUPT, 0, 0);

	if (local->func->card_present && !local->func->card_present(local)) {
@@ -3138,6 +3150,7 @@ prism2_init_local_data(struct prism2_helper_functions *funcs, int card_idx,
	spin_lock_init(&local->cmdlock);
	spin_lock_init(&local->baplock);
	spin_lock_init(&local->lock);
	spin_lock_init(&local->irq_init_lock);
	mutex_init(&local->rid_bap_mtx);

	if (card_idx < 0 || card_idx >= MAX_PARM_DEVICES)
+1 −1
Original line number Diff line number Diff line
@@ -654,7 +654,7 @@ struct local_info {
	rwlock_t iface_lock; /* hostap_interfaces read lock; use write lock
			      * when removing entries from the list.
			      * TX and RX paths can use read lock. */
	spinlock_t cmdlock, baplock, lock;
	spinlock_t cmdlock, baplock, lock, irq_init_lock;
	struct mutex rid_bap_mtx;
	u16 infofid; /* MAC buffer id for info frame */
	/* txfid, intransmitfid, next_txtid, and next_alloc are protected by
+5 −0
Original line number Diff line number Diff line
@@ -1299,6 +1299,11 @@ void iwlagn_rx_reply_compressed_ba(struct iwl_priv *priv,
	sta_id = ba_resp->sta_id;
	tid = ba_resp->tid;
	agg = &priv->stations[sta_id].tid[tid].agg;
	if (unlikely(agg->txq_id != scd_flow)) {
		IWL_ERR(priv, "BA scd_flow %d does not match txq_id %d\n",
			scd_flow, agg->txq_id);
		return;
	}

	/* Find index just before block-ack window */
	index = iwl_queue_dec_wrap(ba_resp_scd_ssn & 0xff, txq->q.n_bd);
Loading