Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
This commit is contained in:
commit
a98917acc7
@ -1141,7 +1141,8 @@ static int ar9170_set_freq_cal_data(struct ar9170 *ar,
|
||||
u8 vpds[2][AR5416_PD_GAIN_ICEPTS];
|
||||
u8 pwrs[2][AR5416_PD_GAIN_ICEPTS];
|
||||
int chain, idx, i;
|
||||
u8 f;
|
||||
u32 phy_data = 0;
|
||||
u8 f, tmp;
|
||||
|
||||
switch (channel->band) {
|
||||
case IEEE80211_BAND_2GHZ:
|
||||
@ -1208,9 +1209,6 @@ static int ar9170_set_freq_cal_data(struct ar9170 *ar,
|
||||
}
|
||||
|
||||
for (i = 0; i < 76; i++) {
|
||||
u32 phy_data;
|
||||
u8 tmp;
|
||||
|
||||
if (i < 25) {
|
||||
tmp = ar9170_interpolate_val(i, &pwrs[0][0],
|
||||
&vpds[0][0]);
|
||||
|
@ -340,10 +340,15 @@ static u16 tx_write_2byte_queue(struct b43_pio_txqueue *q,
|
||||
q->mmio_base + B43_PIO_TXDATA,
|
||||
sizeof(u16));
|
||||
if (data_len & 1) {
|
||||
u8 tail[2] = { 0, };
|
||||
|
||||
/* Write the last byte. */
|
||||
ctl &= ~B43_PIO_TXCTL_WRITEHI;
|
||||
b43_piotx_write16(q, B43_PIO_TXCTL, ctl);
|
||||
b43_piotx_write16(q, B43_PIO_TXDATA, data[data_len - 1]);
|
||||
tail[0] = data[data_len - 1];
|
||||
ssb_block_write(dev->dev, tail, 2,
|
||||
q->mmio_base + B43_PIO_TXDATA,
|
||||
sizeof(u16));
|
||||
}
|
||||
|
||||
return ctl;
|
||||
@ -386,26 +391,31 @@ static u32 tx_write_4byte_queue(struct b43_pio_txqueue *q,
|
||||
q->mmio_base + B43_PIO8_TXDATA,
|
||||
sizeof(u32));
|
||||
if (data_len & 3) {
|
||||
u32 value = 0;
|
||||
u8 tail[4] = { 0, };
|
||||
|
||||
/* Write the last few bytes. */
|
||||
ctl &= ~(B43_PIO8_TXCTL_8_15 | B43_PIO8_TXCTL_16_23 |
|
||||
B43_PIO8_TXCTL_24_31);
|
||||
data = &(data[data_len - 1]);
|
||||
switch (data_len & 3) {
|
||||
case 3:
|
||||
ctl |= B43_PIO8_TXCTL_16_23;
|
||||
value |= (u32)(*data) << 16;
|
||||
data--;
|
||||
ctl |= B43_PIO8_TXCTL_16_23 | B43_PIO8_TXCTL_8_15;
|
||||
tail[0] = data[data_len - 3];
|
||||
tail[1] = data[data_len - 2];
|
||||
tail[2] = data[data_len - 1];
|
||||
break;
|
||||
case 2:
|
||||
ctl |= B43_PIO8_TXCTL_8_15;
|
||||
value |= (u32)(*data) << 8;
|
||||
data--;
|
||||
tail[0] = data[data_len - 2];
|
||||
tail[1] = data[data_len - 1];
|
||||
break;
|
||||
case 1:
|
||||
value |= (u32)(*data);
|
||||
tail[0] = data[data_len - 1];
|
||||
break;
|
||||
}
|
||||
b43_piotx_write32(q, B43_PIO8_TXCTL, ctl);
|
||||
b43_piotx_write32(q, B43_PIO8_TXDATA, value);
|
||||
ssb_block_write(dev->dev, tail, 4,
|
||||
q->mmio_base + B43_PIO8_TXDATA,
|
||||
sizeof(u32));
|
||||
}
|
||||
|
||||
return ctl;
|
||||
@ -693,21 +703,25 @@ static bool pio_rx_frame(struct b43_pio_rxqueue *q)
|
||||
q->mmio_base + B43_PIO8_RXDATA,
|
||||
sizeof(u32));
|
||||
if (len & 3) {
|
||||
u32 value;
|
||||
char *data;
|
||||
u8 tail[4] = { 0, };
|
||||
|
||||
/* Read the last few bytes. */
|
||||
value = b43_piorx_read32(q, B43_PIO8_RXDATA);
|
||||
data = &(skb->data[len + padding - 1]);
|
||||
ssb_block_read(dev->dev, tail, 4,
|
||||
q->mmio_base + B43_PIO8_RXDATA,
|
||||
sizeof(u32));
|
||||
switch (len & 3) {
|
||||
case 3:
|
||||
*data = (value >> 16);
|
||||
data--;
|
||||
skb->data[len + padding - 3] = tail[0];
|
||||
skb->data[len + padding - 2] = tail[1];
|
||||
skb->data[len + padding - 1] = tail[2];
|
||||
break;
|
||||
case 2:
|
||||
*data = (value >> 8);
|
||||
data--;
|
||||
skb->data[len + padding - 2] = tail[0];
|
||||
skb->data[len + padding - 1] = tail[1];
|
||||
break;
|
||||
case 1:
|
||||
*data = value;
|
||||
skb->data[len + padding - 1] = tail[0];
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@ -715,11 +729,13 @@ static bool pio_rx_frame(struct b43_pio_rxqueue *q)
|
||||
q->mmio_base + B43_PIO_RXDATA,
|
||||
sizeof(u16));
|
||||
if (len & 1) {
|
||||
u16 value;
|
||||
u8 tail[2] = { 0, };
|
||||
|
||||
/* Read the last byte. */
|
||||
value = b43_piorx_read16(q, B43_PIO_RXDATA);
|
||||
skb->data[len + padding - 1] = value;
|
||||
ssb_block_read(dev->dev, tail, 2,
|
||||
q->mmio_base + B43_PIO_RXDATA,
|
||||
sizeof(u16));
|
||||
skb->data[len + padding - 1] = tail[0];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -631,6 +631,9 @@ static void mac80211_hwsim_bss_info_changed(struct ieee80211_hw *hw,
|
||||
data->beacon_int = 1024 * info->beacon_int / 1000 * HZ / 1000;
|
||||
if (WARN_ON(!data->beacon_int))
|
||||
data->beacon_int = 1;
|
||||
if (data->started)
|
||||
mod_timer(&data->beacon_timer,
|
||||
jiffies + data->beacon_int);
|
||||
}
|
||||
|
||||
if (changed & BSS_CHANGED_ERP_CTS_PROT) {
|
||||
|
@ -2381,6 +2381,7 @@ static struct usb_device_id rt73usb_device_table[] = {
|
||||
/* Huawei-3Com */
|
||||
{ USB_DEVICE(0x1472, 0x0009), USB_DEVICE_DATA(&rt73usb_ops) },
|
||||
/* Hercules */
|
||||
{ USB_DEVICE(0x06f8, 0xe002), USB_DEVICE_DATA(&rt73usb_ops) },
|
||||
{ USB_DEVICE(0x06f8, 0xe010), USB_DEVICE_DATA(&rt73usb_ops) },
|
||||
{ USB_DEVICE(0x06f8, 0xe020), USB_DEVICE_DATA(&rt73usb_ops) },
|
||||
/* Linksys */
|
||||
|
@ -367,7 +367,10 @@ ieee80211_tx_h_unicast_ps_buf(struct ieee80211_tx_data *tx)
|
||||
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)tx->skb->data;
|
||||
u32 staflags;
|
||||
|
||||
if (unlikely(!sta || ieee80211_is_probe_resp(hdr->frame_control)))
|
||||
if (unlikely(!sta || ieee80211_is_probe_resp(hdr->frame_control)
|
||||
|| ieee80211_is_auth(hdr->frame_control)
|
||||
|| ieee80211_is_assoc_resp(hdr->frame_control)
|
||||
|| ieee80211_is_reassoc_resp(hdr->frame_control)))
|
||||
return TX_CONTINUE;
|
||||
|
||||
staflags = get_sta_flags(sta);
|
||||
|
Loading…
Reference in New Issue
Block a user