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

Commit 42fe95ca authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'fixes' of master.kernel.org:/pub/scm/linux/kernel/git/linville/wireless-2.6

parents 997b37da 6fff1c64
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1256,7 +1256,7 @@ ath5k_txbuf_setup(struct ath5k_softc *sc, struct ath5k_buf *bf,
	if (ctl->flags & IEEE80211_TXCTL_NO_ACK)
		flags |= AR5K_TXDESC_NOACK;

	pktlen = skb->len + FCS_LEN;
	pktlen = skb->len;

	if (!(ctl->flags & IEEE80211_TXCTL_DO_NOT_ENCRYPT)) {
		keyidx = ctl->key_idx;
@@ -1952,7 +1952,7 @@ ath5k_beacon_setup(struct ath5k_softc *sc, struct ath5k_buf *bf,
	}

	ds->ds_data = bf->skbaddr;
	ret = ah->ah_setup_tx_desc(ah, ds, skb->len + FCS_LEN,
	ret = ah->ah_setup_tx_desc(ah, ds, skb->len,
			ieee80211_get_hdrlen_from_skb(skb),
			AR5K_PKT_TYPE_BEACON, (ctl->power_level * 2), ctl->tx_rate, 1,
			AR5K_TXKEYIX_INVALID, antenna, flags, 0, 0);
+20 −14
Original line number Diff line number Diff line
@@ -3506,7 +3506,7 @@ ath5k_hw_setup_2word_tx_desc(struct ath5k_hw *ah, struct ath5k_desc *desc,
{
	u32 frame_type;
	struct ath5k_hw_2w_tx_desc *tx_desc;
	unsigned int buff_len;
	unsigned int frame_len;

	tx_desc = (struct ath5k_hw_2w_tx_desc *)&desc->ds_ctl0;

@@ -3537,22 +3537,25 @@ ath5k_hw_setup_2word_tx_desc(struct ath5k_hw *ah, struct ath5k_desc *desc,
	/* Setup control descriptor */

	/* Verify and set frame length */
	if (pkt_len & ~AR5K_2W_TX_DESC_CTL0_FRAME_LEN)

	/* remove padding we might have added before */
	frame_len = pkt_len - (hdr_len & 3) + FCS_LEN;

	if (frame_len & ~AR5K_2W_TX_DESC_CTL0_FRAME_LEN)
		return -EINVAL;

	tx_desc->tx_control_0 = pkt_len & AR5K_2W_TX_DESC_CTL0_FRAME_LEN;
	tx_desc->tx_control_0 = frame_len & AR5K_2W_TX_DESC_CTL0_FRAME_LEN;

	/* Verify and set buffer length */
	buff_len = pkt_len - FCS_LEN;

	/* NB: beacon's BufLen must be a multiple of 4 bytes */
	if(type == AR5K_PKT_TYPE_BEACON)
		buff_len = roundup(buff_len, 4);
		pkt_len = roundup(pkt_len, 4);

	if (buff_len & ~AR5K_2W_TX_DESC_CTL1_BUF_LEN)
	if (pkt_len & ~AR5K_2W_TX_DESC_CTL1_BUF_LEN)
		return -EINVAL;

	tx_desc->tx_control_1 = buff_len & AR5K_2W_TX_DESC_CTL1_BUF_LEN;
	tx_desc->tx_control_1 = pkt_len & AR5K_2W_TX_DESC_CTL1_BUF_LEN;

	/*
	 * Verify and set header length
@@ -3634,7 +3637,7 @@ static int ath5k_hw_setup_4word_tx_desc(struct ath5k_hw *ah,
{
	struct ath5k_hw_4w_tx_desc *tx_desc;
	struct ath5k_hw_tx_status *tx_status;
	unsigned int buff_len;
	unsigned int frame_len;

	ATH5K_TRACE(ah->ah_sc);
	tx_desc = (struct ath5k_hw_4w_tx_desc *)&desc->ds_ctl0;
@@ -3669,22 +3672,25 @@ static int ath5k_hw_setup_4word_tx_desc(struct ath5k_hw *ah,
	/* Setup control descriptor */

	/* Verify and set frame length */
	if (pkt_len & ~AR5K_4W_TX_DESC_CTL0_FRAME_LEN)

	/* remove padding we might have added before */
	frame_len = pkt_len - (hdr_len & 3) + FCS_LEN;

	if (frame_len & ~AR5K_4W_TX_DESC_CTL0_FRAME_LEN)
		return -EINVAL;

	tx_desc->tx_control_0 = pkt_len & AR5K_4W_TX_DESC_CTL0_FRAME_LEN;
	tx_desc->tx_control_0 = frame_len & AR5K_4W_TX_DESC_CTL0_FRAME_LEN;

	/* Verify and set buffer length */
	buff_len = pkt_len - FCS_LEN;

	/* NB: beacon's BufLen must be a multiple of 4 bytes */
	if(type == AR5K_PKT_TYPE_BEACON)
		buff_len = roundup(buff_len, 4);
		pkt_len = roundup(pkt_len, 4);

	if (buff_len & ~AR5K_4W_TX_DESC_CTL1_BUF_LEN)
	if (pkt_len & ~AR5K_4W_TX_DESC_CTL1_BUF_LEN)
		return -EINVAL;

	tx_desc->tx_control_1 = buff_len & AR5K_4W_TX_DESC_CTL1_BUF_LEN;
	tx_desc->tx_control_1 = pkt_len & AR5K_4W_TX_DESC_CTL1_BUF_LEN;

	tx_desc->tx_control_0 |=
		AR5K_REG_SM(tx_power, AR5K_4W_TX_DESC_CTL0_XMIT_POWER) |
+6 −0
Original line number Diff line number Diff line
@@ -14,6 +14,12 @@
#include "lo.h"
#include "phy.h"


/* The unique identifier of the firmware that's officially supported by
 * this driver version. */
#define B43_SUPPORTED_FIRMWARE_ID	"FW13"


#ifdef CONFIG_B43_DEBUG
# define B43_DEBUG	1
#else
+35 −5
Original line number Diff line number Diff line
@@ -58,6 +58,8 @@ MODULE_AUTHOR("Stefano Brivio");
MODULE_AUTHOR("Michael Buesch");
MODULE_LICENSE("GPL");

MODULE_FIRMWARE(B43_SUPPORTED_FIRMWARE_ID);


static int modparam_bad_frames_preempt;
module_param_named(bad_frames_preempt, modparam_bad_frames_preempt, int, 0444);
@@ -1859,7 +1861,7 @@ static int b43_upload_microcode(struct b43_wldev *dev)
		err = -EOPNOTSUPP;
		goto error;
	}
	b43dbg(dev->wl, "Loading firmware version %u.%u "
	b43info(dev->wl, "Loading firmware version %u.%u "
		"(20%.2i-%.2i-%.2i %.2i:%.2i:%.2i)\n",
		fwrev, fwpatch,
		(fwdate >> 12) & 0xF, (fwdate >> 8) & 0xF, fwdate & 0xFF,
@@ -4200,6 +4202,33 @@ static struct ssb_driver b43_ssb_driver = {
	.resume		= b43_resume,
};

static void b43_print_driverinfo(void)
{
	const char *feat_pci = "", *feat_pcmcia = "", *feat_nphy = "",
		   *feat_leds = "", *feat_rfkill = "";

#ifdef CONFIG_B43_PCI_AUTOSELECT
	feat_pci = "P";
#endif
#ifdef CONFIG_B43_PCMCIA
	feat_pcmcia = "M";
#endif
#ifdef CONFIG_B43_NPHY
	feat_nphy = "N";
#endif
#ifdef CONFIG_B43_LEDS
	feat_leds = "L";
#endif
#ifdef CONFIG_B43_RFKILL
	feat_rfkill = "R";
#endif
	printk(KERN_INFO "Broadcom 43xx driver loaded "
	       "[ Features: %s%s%s%s%s, Firmware-ID: "
	       B43_SUPPORTED_FIRMWARE_ID " ]\n",
	       feat_pci, feat_pcmcia, feat_nphy,
	       feat_leds, feat_rfkill);
}

static int __init b43_init(void)
{
	int err;
@@ -4211,6 +4240,7 @@ static int __init b43_init(void)
	err = ssb_driver_register(&b43_ssb_driver);
	if (err)
		goto err_pcmcia_exit;
	b43_print_driverinfo();

	return err;

+4 −0
Original line number Diff line number Diff line
@@ -23,6 +23,10 @@
#include "phy.h"


/* The unique identifier of the firmware that's officially supported by this
 * driver version. */
#define B43legacy_SUPPORTED_FIRMWARE_ID	"FW10"

#define B43legacy_IRQWAIT_MAX_RETRIES	20

#define B43legacy_RX_MAX_SSI		60 /* best guess at max ssi */
Loading