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