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

Commit a8519de4 authored by David S. Miller's avatar David S. Miller
Browse files
parents 5c16807d 560ad81b
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -3583,9 +3583,12 @@ M: "John W. Linville" <linville@tuxdriver.com>
L:	linux-wireless@vger.kernel.org
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6.git
S:	Maintained
F:	net/mac80211/
F:	net/rfkill/
F:	net/wireless/
F:	include/net/ieee80211*
F:	include/linux/wireless.h
F:	drivers/net/wireless/

NETWORKING DRIVERS
L:	netdev@vger.kernel.org
@@ -5577,7 +5580,16 @@ L: linux-wireless@vger.kernel.org
W:	http://wireless.kernel.org
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
S:	Maintained
F:	drivers/net/wireless/wl12xx/wl1251*
F:	drivers/net/wireless/wl12xx/*
X:	drivers/net/wireless/wl12xx/wl1271*

WL1271 WIRELESS DRIVER
M:	Luciano Coelho <luciano.coelho@nokia.com>
L:	linux-wireless@vger.kernel.org
W:	http://wireless.kernel.org
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
S:	Maintained
F:	drivers/net/wireless/wl12xx/wl1271*

WL3501 WIRELESS PCMCIA CARD DRIVER
M:	Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
+43 −1
Original line number Diff line number Diff line
@@ -233,6 +233,11 @@ void usbnet_skb_return (struct usbnet *dev, struct sk_buff *skb)
{
	int	status;

	if (test_bit(EVENT_RX_PAUSED, &dev->flags)) {
		skb_queue_tail(&dev->rxq_pause, skb);
		return;
	}

	skb->protocol = eth_type_trans (skb, dev->net);
	dev->net->stats.rx_packets++;
	dev->net->stats.rx_bytes += skb->len;
@@ -525,6 +530,41 @@ static void intr_complete (struct urb *urb)
		deverr(dev, "intr resubmit --> %d", status);
}

/*-------------------------------------------------------------------------*/
void usbnet_pause_rx(struct usbnet *dev)
{
	set_bit(EVENT_RX_PAUSED, &dev->flags);

	if (netif_msg_rx_status(dev))
		devdbg(dev, "paused rx queue enabled");
}
EXPORT_SYMBOL_GPL(usbnet_pause_rx);

void usbnet_resume_rx(struct usbnet *dev)
{
	struct sk_buff *skb;
	int num = 0;

	clear_bit(EVENT_RX_PAUSED, &dev->flags);

	while ((skb = skb_dequeue(&dev->rxq_pause)) != NULL) {
		usbnet_skb_return(dev, skb);
		num++;
	}

	tasklet_schedule(&dev->bh);

	if (netif_msg_rx_status(dev))
		devdbg(dev, "paused rx queue disabled, %d skbs requeued", num);
}
EXPORT_SYMBOL_GPL(usbnet_resume_rx);

void usbnet_purge_paused_rxq(struct usbnet *dev)
{
	skb_queue_purge(&dev->rxq_pause);
}
EXPORT_SYMBOL_GPL(usbnet_purge_paused_rxq);

/*-------------------------------------------------------------------------*/

// unlink pending rx/tx; completion handlers do all other cleanup
@@ -623,6 +663,8 @@ int usbnet_stop (struct net_device *net)

	usb_kill_urb(dev->interrupt);

	usbnet_purge_paused_rxq(dev);

	/* deferred work (task, timer, softirq) must also stop.
	 * can't flush_scheduled_work() until we drop rtnl (later),
	 * else workers could deadlock; so make workers a NOP.
@@ -1113,7 +1155,6 @@ static void usbnet_bh (unsigned long param)
}



/*-------------------------------------------------------------------------
 *
 * USB Device Driver support
@@ -1210,6 +1251,7 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)
	skb_queue_head_init (&dev->rxq);
	skb_queue_head_init (&dev->txq);
	skb_queue_head_init (&dev->done);
	skb_queue_head_init(&dev->rxq_pause);
	dev->bh.func = usbnet_bh;
	dev->bh.data = (unsigned long) dev;
	INIT_WORK (&dev->kevent, kevent);
+1 −3
Original line number Diff line number Diff line
@@ -5,9 +5,7 @@ menuconfig ATH_COMMON
	---help---
	  This will enable the support for the Atheros wireless drivers.
	  ath5k, ath9k and ar9170 drivers share some common code, this option
	  enables the common ath.ko module which currently shares just common
	  regulatory EEPROM helpers but will likely be extended later to share
	  more between modules.
	  enables the common ath.ko module which shares common helpers.

	  For more information and documentation on this module you can visit:

+30 −0
Original line number Diff line number Diff line
/*
 * Copyright (c) 2008-2009 Atheros Communications Inc.
 *
 * Permission to use, copy, modify, and/or distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

#ifndef ATH_H
#define ATH_H

#include <linux/skbuff.h>

struct ath_common {
	u16 cachelsz;
};

struct sk_buff *ath_rxbuf_alloc(struct ath_common *common,
				u32 len,
				gfp_t gfp_mask);

#endif /* ATH_H */
+17 −0
Original line number Diff line number Diff line
@@ -919,6 +919,12 @@ enum ath5k_int {
	AR5K_INT_NOCARD	= 0xffffffff
};

/* Software interrupts used for calibration */
enum ath5k_software_interrupt {
	AR5K_SWI_FULL_CALIBRATION = 0x01,
	AR5K_SWI_SHORT_CALIBRATION = 0x02,
};

/*
 * Power management
 */
@@ -1123,6 +1129,15 @@ struct ath5k_hw {
	/* noise floor from last periodic calibration */
	s32			ah_noise_floor;

	/* Calibration timestamp */
	unsigned long		ah_cal_tstamp;

	/* Calibration interval (secs) */
	u8			ah_cal_intval;

	/* Software interrupt mask */
	u8			ah_swi_mask;

	/*
	 * Function pointers
	 */
@@ -1157,6 +1172,7 @@ extern void ath5k_unregister_leds(struct ath5k_softc *sc);

/* Reset Functions */
extern int ath5k_hw_nic_wakeup(struct ath5k_hw *ah, int flags, bool initial);
extern int ath5k_hw_on_hold(struct ath5k_hw *ah);
extern int ath5k_hw_reset(struct ath5k_hw *ah, enum nl80211_iftype op_mode, struct ieee80211_channel *channel, bool change_channel);
/* Power management functions */
extern int ath5k_hw_set_power(struct ath5k_hw *ah, enum ath5k_power_mode mode, bool set_chip, u16 sleep_duration);
@@ -1275,6 +1291,7 @@ extern int ath5k_hw_channel(struct ath5k_hw *ah, struct ieee80211_channel *chann
/* PHY calibration */
extern int ath5k_hw_phy_calibrate(struct ath5k_hw *ah, struct ieee80211_channel *channel);
extern int ath5k_hw_noise_floor_calibration(struct ath5k_hw *ah, short freq);
extern void ath5k_hw_calibration_poll(struct ath5k_hw *ah);
/* Spur mitigation */
bool ath5k_hw_chan_has_spur_noise(struct ath5k_hw *ah,
				struct ieee80211_channel *channel);
Loading