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

+44 -23
+2
drivers/net/wireless/ath5k/base.c
··· 1787 1787 1788 1788 spin_lock(&sc->rxbuflock); 1789 1789 do { 1790 + rxs.flag = 0; 1791 + 1790 1792 if (unlikely(list_empty(&sc->rxbuf))) { 1791 1793 ATH5K_WARN(sc, "empty rx buf pool\n"); 1792 1794 break;
+4 -2
drivers/net/wireless/ath5k/hw.c
··· 4119 4119 rs->rs_tstamp = AR5K_REG_MS(rx_status->rx_status_1, 4120 4120 AR5K_5210_RX_DESC_STATUS1_RECEIVE_TIMESTAMP); 4121 4121 rs->rs_status = 0; 4122 + rs->rs_phyerr = 0; 4122 4123 4123 4124 /* 4124 4125 * Key table status ··· 4146 4145 if (rx_status->rx_status_1 & 4147 4146 AR5K_5210_RX_DESC_STATUS1_PHY_ERROR) { 4148 4147 rs->rs_status |= AR5K_RXERR_PHY; 4149 - rs->rs_phyerr = AR5K_REG_MS(rx_status->rx_status_1, 4148 + rs->rs_phyerr |= AR5K_REG_MS(rx_status->rx_status_1, 4150 4149 AR5K_5210_RX_DESC_STATUS1_PHY_ERROR); 4151 4150 } 4152 4151 ··· 4194 4193 rs->rs_tstamp = AR5K_REG_MS(rx_status->rx_status_1, 4195 4194 AR5K_5212_RX_DESC_STATUS1_RECEIVE_TIMESTAMP); 4196 4195 rs->rs_status = 0; 4196 + rs->rs_phyerr = 0; 4197 4197 4198 4198 /* 4199 4199 * Key table status ··· 4217 4215 if (rx_status->rx_status_1 & 4218 4216 AR5K_5212_RX_DESC_STATUS1_PHY_ERROR) { 4219 4217 rs->rs_status |= AR5K_RXERR_PHY; 4220 - rs->rs_phyerr = AR5K_REG_MS(rx_err->rx_error_1, 4218 + rs->rs_phyerr |= AR5K_REG_MS(rx_err->rx_error_1, 4221 4219 AR5K_RX_DESC_ERROR1_PHY_ERROR_CODE); 4222 4220 } 4223 4221
+1
drivers/net/wireless/hostap/hostap_cs.c
··· 833 833 PCMCIA_DEVICE_MANF_CARD(0x50c2, 0x0001), 834 834 PCMCIA_DEVICE_MANF_CARD(0x50c2, 0x7300), 835 835 /* PCMCIA_DEVICE_MANF_CARD(0xc00f, 0x0000), conflict with pcnet_cs */ 836 + PCMCIA_DEVICE_MANF_CARD(0xc250, 0x0002), 836 837 PCMCIA_DEVICE_MANF_CARD(0xd601, 0x0002), 837 838 PCMCIA_DEVICE_MANF_CARD(0xd601, 0x0005), 838 839 PCMCIA_DEVICE_MANF_CARD(0xd601, 0x0010),
+13 -14
drivers/net/wireless/libertas/ethtool.c
··· 73 73 return ret; 74 74 } 75 75 76 - static void lbs_ethtool_get_stats(struct net_device * dev, 77 - struct ethtool_stats * stats, u64 * data) 76 + static void lbs_ethtool_get_stats(struct net_device *dev, 77 + struct ethtool_stats *stats, uint64_t *data) 78 78 { 79 79 struct lbs_private *priv = dev->priv; 80 80 struct cmd_ds_mesh_access mesh_access; ··· 83 83 lbs_deb_enter(LBS_DEB_ETHTOOL); 84 84 85 85 /* Get Mesh Statistics */ 86 - ret = lbs_prepare_and_send_command(priv, 87 - CMD_MESH_ACCESS, CMD_ACT_MESH_GET_STATS, 88 - CMD_OPTION_WAITFORRSP, 0, &mesh_access); 86 + ret = lbs_mesh_access(priv, CMD_ACT_MESH_GET_STATS, &mesh_access); 89 87 90 - if (ret) 88 + if (ret) { 89 + memset(data, 0, MESH_STATS_NUM*(sizeof(uint64_t))); 91 90 return; 91 + } 92 92 93 93 priv->mstats.fwd_drop_rbt = le32_to_cpu(mesh_access.data[0]); 94 94 priv->mstats.fwd_drop_ttl = le32_to_cpu(mesh_access.data[1]); ··· 111 111 lbs_deb_enter(LBS_DEB_ETHTOOL); 112 112 } 113 113 114 - static int lbs_ethtool_get_sset_count(struct net_device * dev, int sset) 114 + static int lbs_ethtool_get_sset_count(struct net_device *dev, int sset) 115 115 { 116 - switch (sset) { 117 - case ETH_SS_STATS: 116 + struct lbs_private *priv = dev->priv; 117 + 118 + if (sset == ETH_SS_STATS && dev == priv->mesh_dev) 118 119 return MESH_STATS_NUM; 119 - default: 120 - return -EOPNOTSUPP; 121 - } 120 + 121 + return -EOPNOTSUPP; 122 122 } 123 123 124 124 static void lbs_ethtool_get_strings(struct net_device *dev, 125 - u32 stringset, 126 - u8 * s) 125 + uint32_t stringset, uint8_t *s) 127 126 { 128 127 int i; 129 128
+1
drivers/net/wireless/orinoco_cs.c
··· 461 461 PCMCIA_DEVICE_MANF_CARD(0x028a, 0x0673), /* Linksys WCF12 Wireless CompactFlash Card */ 462 462 PCMCIA_DEVICE_MANF_CARD(0x02aa, 0x0002), /* ASUS SpaceLink WL-100 */ 463 463 PCMCIA_DEVICE_MANF_CARD(0x02ac, 0x0002), /* SpeedStream SS1021 Wireless Adapter */ 464 + PCMCIA_DEVICE_MANF_CARD(0x02ac, 0x3021), /* SpeedStream Wireless Adapter */ 464 465 PCMCIA_DEVICE_MANF_CARD(0x14ea, 0xb001), /* PLANEX RoadLannerWave GW-NS11H */ 465 466 PCMCIA_DEVICE_MANF_CARD(0x50c2, 0x7300), /* Airvast WN-100 */ 466 467 PCMCIA_DEVICE_MANF_CARD(0x9005, 0x0021), /* Adaptec Ultra Wireless ANW-8030 */
+12 -2
drivers/net/wireless/rtl8187_dev.c
··· 92 92 u8 data[4]; 93 93 struct usb_ctrlrequest dr; 94 94 } *buf; 95 + int rc; 95 96 96 97 buf = kmalloc(sizeof(*buf), GFP_ATOMIC); 97 98 if (!buf) ··· 117 116 usb_fill_control_urb(urb, priv->udev, usb_sndctrlpipe(priv->udev, 0), 118 117 (unsigned char *)dr, buf, len, 119 118 rtl8187_iowrite_async_cb, buf); 120 - usb_submit_urb(urb, GFP_ATOMIC); 119 + rc = usb_submit_urb(urb, GFP_ATOMIC); 120 + if (rc < 0) { 121 + kfree(buf); 122 + usb_free_urb(urb); 123 + } 121 124 } 122 125 123 126 static inline void rtl818x_iowrite32_async(struct rtl8187_priv *priv, ··· 174 169 struct urb *urb; 175 170 __le16 rts_dur = 0; 176 171 u32 flags; 172 + int rc; 177 173 178 174 urb = usb_alloc_urb(0, GFP_ATOMIC); 179 175 if (!urb) { ··· 214 208 info->dev = dev; 215 209 usb_fill_bulk_urb(urb, priv->udev, usb_sndbulkpipe(priv->udev, 2), 216 210 hdr, skb->len, rtl8187_tx_cb, skb); 217 - usb_submit_urb(urb, GFP_ATOMIC); 211 + rc = usb_submit_urb(urb, GFP_ATOMIC); 212 + if (rc < 0) { 213 + usb_free_urb(urb); 214 + kfree_skb(skb); 215 + } 218 216 219 217 return 0; 220 218 }
+11 -4
net/mac80211/mlme.c
··· 730 730 if (bss->wmm_ie) { 731 731 wmm = 1; 732 732 } 733 + 734 + /* get all rates supported by the device and the AP as 735 + * some APs don't like getting a superset of their rates 736 + * in the association request (e.g. D-Link DAP 1353 in 737 + * b-only mode) */ 738 + rates_len = ieee80211_compatible_rates(bss, sband, &rates); 739 + 733 740 ieee80211_rx_bss_put(dev, bss); 741 + } else { 742 + rates = ~0; 743 + rates_len = sband->n_bitrates; 734 744 } 735 745 736 746 mgmt = (struct ieee80211_mgmt *) skb_put(skb, 24); ··· 771 761 *pos++ = ifsta->ssid_len; 772 762 memcpy(pos, ifsta->ssid, ifsta->ssid_len); 773 763 774 - /* all supported rates should be added here but some APs 775 - * (e.g. D-Link DAP 1353 in b-only mode) don't like that 776 - * Therefore only add rates the AP supports */ 777 - rates_len = ieee80211_compatible_rates(bss, sband, &rates); 764 + /* add all rates which were marked to be used above */ 778 765 supp_rates_len = rates_len; 779 766 if (supp_rates_len > 8) 780 767 supp_rates_len = 8;
-1
net/mac80211/wext.c
··· 209 209 range->num_frequency = c; 210 210 211 211 IW_EVENT_CAPA_SET_KERNEL(range->event_capa); 212 - IW_EVENT_CAPA_SET(range->event_capa, SIOCGIWTHRSPY); 213 212 IW_EVENT_CAPA_SET(range->event_capa, SIOCGIWAP); 214 213 IW_EVENT_CAPA_SET(range->event_capa, SIOCGIWSCAN); 215 214