diff options
Diffstat (limited to 'drivers/net/wireless/ath/carl9170')
| -rw-r--r-- | drivers/net/wireless/ath/carl9170/debug.c | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/carl9170/main.c | 17 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/carl9170/rx.c | 16 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/carl9170/tx.c | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/carl9170/usb.c | 10 | 
5 files changed, 17 insertions, 28 deletions
diff --git a/drivers/net/wireless/ath/carl9170/debug.c b/drivers/net/wireless/ath/carl9170/debug.c index 3d70cd277fd..1c0af9cd9a8 100644 --- a/drivers/net/wireless/ath/carl9170/debug.c +++ b/drivers/net/wireless/ath/carl9170/debug.c @@ -37,7 +37,6 @@   *    OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.   */ -#include <linux/init.h>  #include <linux/slab.h>  #include <linux/module.h>  #include <linux/seq_file.h> diff --git a/drivers/net/wireless/ath/carl9170/main.c b/drivers/net/wireless/ath/carl9170/main.c index 349fa22a921..f8ded84b7be 100644 --- a/drivers/net/wireless/ath/carl9170/main.c +++ b/drivers/net/wireless/ath/carl9170/main.c @@ -37,7 +37,6 @@   *    OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.   */ -#include <linux/init.h>  #include <linux/slab.h>  #include <linux/module.h>  #include <linux/etherdevice.h> @@ -1708,7 +1707,9 @@ found:  	return 0;  } -static void carl9170_op_flush(struct ieee80211_hw *hw, u32 queues, bool drop) +static void carl9170_op_flush(struct ieee80211_hw *hw, +			      struct ieee80211_vif *vif, +			      u32 queues, bool drop)  {  	struct ar9170 *ar = hw->priv;  	unsigned int vid; @@ -1968,18 +1969,6 @@ static int carl9170_parse_eeprom(struct ar9170 *ar)  		return -ENOMEM;  	ar->num_channels = chans; -	/* -	 * I measured this, a bandswitch takes roughly -	 * 135 ms and a frequency switch about 80. -	 * -	 * FIXME: measure these values again once EEPROM settings -	 *	  are used, that will influence them! -	 */ -	if (bands == 2) -		ar->hw->channel_change_time = 135 * 1000; -	else -		ar->hw->channel_change_time = 80 * 1000; -  	regulatory->current_rd = le16_to_cpu(ar->eeprom.reg_domain[0]);  	/* second part of wiphy init */ diff --git a/drivers/net/wireless/ath/carl9170/rx.c b/drivers/net/wireless/ath/carl9170/rx.c index e935f61c7fa..924135b8e57 100644 --- a/drivers/net/wireless/ath/carl9170/rx.c +++ b/drivers/net/wireless/ath/carl9170/rx.c @@ -37,7 +37,6 @@   *    OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.   */ -#include <linux/init.h>  #include <linux/slab.h>  #include <linux/module.h>  #include <linux/etherdevice.h> @@ -520,6 +519,7 @@ static void carl9170_ps_beacon(struct ar9170 *ar, void *data, unsigned int len)  {  	struct ieee80211_hdr *hdr = data;  	struct ieee80211_tim_ie *tim_ie; +	struct ath_common *common = &ar->common;  	u8 *tim;  	u8 tim_len;  	bool cam; @@ -527,17 +527,13 @@ static void carl9170_ps_beacon(struct ar9170 *ar, void *data, unsigned int len)  	if (likely(!(ar->hw->conf.flags & IEEE80211_CONF_PS)))  		return; -	/* check if this really is a beacon */ -	if (!ieee80211_is_beacon(hdr->frame_control)) -		return; -  	/* min. beacon length + FCS_LEN */  	if (len <= 40 + FCS_LEN)  		return; +	/* check if this really is a beacon */  	/* and only beacons from the associated BSSID, please */ -	if (!ether_addr_equal(hdr->addr3, ar->common.curbssid) || -	    !ar->common.curaid) +	if (!ath_is_mybeacon(common, hdr) || !common->curaid)  		return;  	ar->ps.last_beacon = jiffies; @@ -576,7 +572,7 @@ static void carl9170_ps_beacon(struct ar9170 *ar, void *data, unsigned int len)  static void carl9170_ba_check(struct ar9170 *ar, void *data, unsigned int len)  { -	struct ieee80211_bar *bar = (void *) data; +	struct ieee80211_bar *bar = data;  	struct carl9170_bar_list_entry *entry;  	unsigned int queue; @@ -602,8 +598,8 @@ static void carl9170_ba_check(struct ar9170 *ar, void *data, unsigned int len)  		if (bar->start_seq_num == entry_bar->start_seq_num &&  		    TID_CHECK(bar->control, entry_bar->control) && -		    ether_addr_equal(bar->ra, entry_bar->ta) && -		    ether_addr_equal(bar->ta, entry_bar->ra)) { +		    ether_addr_equal_64bits(bar->ra, entry_bar->ta) && +		    ether_addr_equal_64bits(bar->ta, entry_bar->ra)) {  			struct ieee80211_tx_info *tx_info;  			tx_info = IEEE80211_SKB_CB(entry_skb); diff --git a/drivers/net/wireless/ath/carl9170/tx.c b/drivers/net/wireless/ath/carl9170/tx.c index e3f696ee4d2..4cadfd48ffd 100644 --- a/drivers/net/wireless/ath/carl9170/tx.c +++ b/drivers/net/wireless/ath/carl9170/tx.c @@ -37,7 +37,6 @@   *    OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.   */ -#include <linux/init.h>  #include <linux/slab.h>  #include <linux/module.h>  #include <linux/etherdevice.h> diff --git a/drivers/net/wireless/ath/carl9170/usb.c b/drivers/net/wireless/ath/carl9170/usb.c index 307bc0ddff9..f35c7f30f9a 100644 --- a/drivers/net/wireless/ath/carl9170/usb.c +++ b/drivers/net/wireless/ath/carl9170/usb.c @@ -773,7 +773,7 @@ void carl9170_usb_stop(struct ar9170 *ar)  	complete_all(&ar->cmd_wait);  	/* This is required to prevent an early completion on _start */ -	INIT_COMPLETION(ar->cmd_wait); +	reinit_completion(&ar->cmd_wait);  	/*  	 * Note: @@ -1076,8 +1076,14 @@ static int carl9170_usb_probe(struct usb_interface *intf,  	carl9170_set_state(ar, CARL9170_STOPPED); -	return request_firmware_nowait(THIS_MODULE, 1, CARL9170FW_NAME, +	err = request_firmware_nowait(THIS_MODULE, 1, CARL9170FW_NAME,  		&ar->udev->dev, GFP_KERNEL, ar, carl9170_usb_firmware_step2); +	if (err) { +		usb_put_dev(udev); +		usb_put_dev(udev); +		carl9170_free(ar); +	} +	return err;  }  static void carl9170_usb_disconnect(struct usb_interface *intf)  | 
