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

Commit c8b201ff authored by David S. Miller's avatar David S. Miller
Browse files
parents 436b355b 249b405c
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -4984,7 +4984,7 @@ L: linux-wireless@vger.kernel.org
W:	http://linuxwireless.org/
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
S:	Maintained
F:	drivers/net/wireless/rtl818*
F:	drivers/net/wireless/rtl818x/rtl8180*

RTL8187 WIRELESS DRIVER
P:	Herton Ronaldo Krzesinski
@@ -6466,6 +6466,15 @@ M: mitr@volny.cz
S:	Maintained
F:	drivers/input/misc/wistron_btns.c

WL1251 WIRELESS DRIVER
P:	Kalle Valo
M:	kalle.valo@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/wl1251*

WL3501 WIRELESS PCMCIA CARD DRIVER
P:	Arnaldo Carvalho de Melo
M:	acme@ghostprotocols.net
+4 −2
Original line number Diff line number Diff line
@@ -428,10 +428,12 @@ config RTL8187
	  Micronet SP907GK V5
	  Encore ENUWI-G2
	  Trendnet TEW-424UB
	  ASUS P5B Deluxe
	  ASUS P5B Deluxe/P5K Premium motherboards
	  Toshiba Satellite Pro series of laptops
	  Asus Wireless Link
	  Linksys WUSB54GC-EU
	  Linksys WUSB54GC-EU v2
	    (v1 = rt73usb; v3 is rt2070-based,
	     use staging/rt3070 or try rt2800usb)

	  Thanks to Realtek for their support!

+0 −17
Original line number Diff line number Diff line
@@ -1964,14 +1964,6 @@ static void __devexit adm8211_remove(struct pci_dev *pdev)
#ifdef CONFIG_PM
static int adm8211_suspend(struct pci_dev *pdev, pm_message_t state)
{
	struct ieee80211_hw *dev = pci_get_drvdata(pdev);
	struct adm8211_priv *priv = dev->priv;

	if (priv->mode != NL80211_IFTYPE_UNSPECIFIED) {
		ieee80211_stop_queues(dev);
		adm8211_stop(dev);
	}

	pci_save_state(pdev);
	pci_set_power_state(pdev, pci_choose_state(pdev, state));
	return 0;
@@ -1979,17 +1971,8 @@ static int adm8211_suspend(struct pci_dev *pdev, pm_message_t state)

static int adm8211_resume(struct pci_dev *pdev)
{
	struct ieee80211_hw *dev = pci_get_drvdata(pdev);
	struct adm8211_priv *priv = dev->priv;

	pci_set_power_state(pdev, PCI_D0);
	pci_restore_state(pdev);

	if (priv->mode != NL80211_IFTYPE_UNSPECIFIED) {
		adm8211_start(dev);
		ieee80211_wake_queues(dev);
	}

	return 0;
}
#endif /* CONFIG_PM */
+1 −1
Original line number Diff line number Diff line
@@ -1022,7 +1022,7 @@ static int arlan_mac_addr(struct net_device *dev, void *p)
	ARLAN_DEBUG_ENTRY("arlan_mac_addr");
	return -EINVAL;

	if (!netif_running(dev))
	if (netif_running(dev))
		return -EBUSY;
	memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);

+52 −0
Original line number Diff line number Diff line
@@ -109,11 +109,52 @@ struct ar9170_rxstream_mpdu_merge {
	bool has_plcp;
};

#define AR9170_NUM_MAX_BA_RETRY	5
#define AR9170_NUM_TID	16
#define WME_BA_BMP_SIZE         64
#define AR9170_NUM_MAX_AGG_LEN	(2 * WME_BA_BMP_SIZE)

#define WME_AC_BE   2
#define WME_AC_BK   3
#define WME_AC_VI   1
#define WME_AC_VO   0

#define TID_TO_WME_AC(_tid)				\
	((((_tid) == 0) || ((_tid) == 3)) ? WME_AC_BE :	\
	 (((_tid) == 1) || ((_tid) == 2)) ? WME_AC_BK :	\
	 (((_tid) == 4) || ((_tid) == 5)) ? WME_AC_VI :	\
	 WME_AC_VO)

#define BAW_WITHIN(_start, _bawsz, _seqno) \
	((((_seqno) - (_start)) & 0xfff) < (_bawsz))

enum ar9170_tid_state {
	AR9170_TID_STATE_INVALID,
	AR9170_TID_STATE_SHUTDOWN,
	AR9170_TID_STATE_PROGRESS,
	AR9170_TID_STATE_COMPLETE,
};

struct ar9170_sta_tid {
	struct list_head list;
	struct sk_buff_head queue;
	u8 addr[ETH_ALEN];
	u16 ssn;
	u16 tid;
	enum ar9170_tid_state state;
	bool active;
	u8 retry;
};

#define AR9170_QUEUE_TIMEOUT		64
#define AR9170_TX_TIMEOUT		8
#define AR9170_BA_TIMEOUT		4
#define AR9170_JANITOR_DELAY		128
#define AR9170_TX_INVALID_RATE		0xffffffff

#define AR9170_NUM_TX_STATUS		128
#define AR9170_NUM_TX_AGG_MAX		30

struct ar9170 {
	struct ieee80211_hw *hw;
	struct mutex mutex;
@@ -187,14 +228,25 @@ struct ar9170 {
	struct sk_buff_head tx_pending[__AR9170_NUM_TXQ];
	struct sk_buff_head tx_status[__AR9170_NUM_TXQ];
	struct delayed_work tx_janitor;
	/* tx ampdu */
	struct sk_buff_head tx_status_ampdu;
	spinlock_t tx_ampdu_list_lock;
	struct list_head tx_ampdu_list;
	unsigned int tx_ampdu_pending;

	/* rxstream mpdu merge */
	struct ar9170_rxstream_mpdu_merge rx_mpdu;
	struct sk_buff *rx_failover;
	int rx_failover_missing;

	/* (cached) HW A-MPDU settings */
	u8 global_ampdu_density;
	u8 global_ampdu_factor;
};

struct ar9170_sta_info {
	struct ar9170_sta_tid agg[AR9170_NUM_TID];
	unsigned int ampdu_max_len;
};

#define AR9170_TX_FLAG_WAIT_FOR_ACK	BIT(0)
Loading