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

+23 -58
+3 -4
drivers/net/wireless/iwlwifi/iwl-agn.c
··· 1384 1384 1385 1385 rxq->queue[i] = NULL; 1386 1386 1387 - pci_dma_sync_single_for_cpu(priv->pci_dev, rxb->dma_addr, 1387 + pci_dma_sync_single_for_cpu(priv->pci_dev, rxb->aligned_dma_addr, 1388 1388 priv->hw_params.rx_buf_size, 1389 1389 PCI_DMA_FROMDEVICE); 1390 1390 pkt = (struct iwl_rx_packet *)rxb->skb->data; ··· 1436 1436 rxb->skb = NULL; 1437 1437 } 1438 1438 1439 - pci_unmap_single(priv->pci_dev, rxb->dma_addr, 1440 - priv->hw_params.rx_buf_size, 1439 + pci_unmap_single(priv->pci_dev, rxb->real_dma_addr, 1440 + priv->hw_params.rx_buf_size + 256, 1441 1441 PCI_DMA_FROMDEVICE); 1442 1442 spin_lock_irqsave(&rxq->lock, flags); 1443 1443 list_add_tail(&rxb->list, &priv->rxq.rx_used); ··· 2341 2341 mutex_lock(&priv->mutex); 2342 2342 iwl_alive_start(priv); 2343 2343 mutex_unlock(&priv->mutex); 2344 - ieee80211_notify_mac(priv->hw, IEEE80211_NOTIFY_RE_ASSOC); 2345 2344 } 2346 2345 2347 2346 static void iwl4965_bg_rf_kill(struct work_struct *work)
+2 -1
drivers/net/wireless/iwlwifi/iwl-dev.h
··· 89 89 #define DEFAULT_LONG_RETRY_LIMIT 4U 90 90 91 91 struct iwl_rx_mem_buffer { 92 - dma_addr_t dma_addr; 92 + dma_addr_t real_dma_addr; 93 + dma_addr_t aligned_dma_addr; 93 94 struct sk_buff *skb; 94 95 struct list_head list; 95 96 };
+17 -9
drivers/net/wireless/iwlwifi/iwl-rx.c
··· 204 204 list_del(element); 205 205 206 206 /* Point to Rx buffer via next RBD in circular buffer */ 207 - rxq->bd[rxq->write] = iwl_dma_addr2rbd_ptr(priv, rxb->dma_addr); 207 + rxq->bd[rxq->write] = iwl_dma_addr2rbd_ptr(priv, rxb->aligned_dma_addr); 208 208 rxq->queue[rxq->write] = rxb; 209 209 rxq->write = (rxq->write + 1) & RX_QUEUE_MASK; 210 210 rxq->free_count--; ··· 251 251 rxb = list_entry(element, struct iwl_rx_mem_buffer, list); 252 252 253 253 /* Alloc a new receive buffer */ 254 - rxb->skb = alloc_skb(priv->hw_params.rx_buf_size, 254 + rxb->skb = alloc_skb(priv->hw_params.rx_buf_size + 256, 255 255 __GFP_NOWARN | GFP_ATOMIC); 256 256 if (!rxb->skb) { 257 257 if (net_ratelimit()) ··· 266 266 list_del(element); 267 267 268 268 /* Get physical address of RB/SKB */ 269 - rxb->dma_addr = 270 - pci_map_single(priv->pci_dev, rxb->skb->data, 271 - priv->hw_params.rx_buf_size, PCI_DMA_FROMDEVICE); 269 + rxb->real_dma_addr = pci_map_single( 270 + priv->pci_dev, 271 + rxb->skb->data, 272 + priv->hw_params.rx_buf_size + 256, 273 + PCI_DMA_FROMDEVICE); 274 + /* dma address must be no more than 36 bits */ 275 + BUG_ON(rxb->real_dma_addr & ~DMA_BIT_MASK(36)); 276 + /* and also 256 byte aligned! */ 277 + rxb->aligned_dma_addr = ALIGN(rxb->real_dma_addr, 256); 278 + skb_reserve(rxb->skb, rxb->aligned_dma_addr - rxb->real_dma_addr); 279 + 272 280 list_add_tail(&rxb->list, &rxq->rx_free); 273 281 rxq->free_count++; 274 282 } ··· 308 300 for (i = 0; i < RX_QUEUE_SIZE + RX_FREE_BUFFERS; i++) { 309 301 if (rxq->pool[i].skb != NULL) { 310 302 pci_unmap_single(priv->pci_dev, 311 - rxq->pool[i].dma_addr, 312 - priv->hw_params.rx_buf_size, 303 + rxq->pool[i].real_dma_addr, 304 + priv->hw_params.rx_buf_size + 256, 313 305 PCI_DMA_FROMDEVICE); 314 306 dev_kfree_skb(rxq->pool[i].skb); 315 307 } ··· 362 354 * to an SKB, so we need to unmap and free potential storage */ 363 355 if (rxq->pool[i].skb != NULL) { 364 356 pci_unmap_single(priv->pci_dev, 365 - rxq->pool[i].dma_addr, 366 - priv->hw_params.rx_buf_size, 357 + rxq->pool[i].real_dma_addr, 358 + priv->hw_params.rx_buf_size + 256, 367 359 PCI_DMA_FROMDEVICE); 368 360 priv->alloc_rxb_skb--; 369 361 dev_kfree_skb(rxq->pool[i].skb);
-1
drivers/net/wireless/iwlwifi/iwl3945-base.c
··· 6012 6012 mutex_lock(&priv->mutex); 6013 6013 iwl3945_alive_start(priv); 6014 6014 mutex_unlock(&priv->mutex); 6015 - ieee80211_notify_mac(priv->hw, IEEE80211_NOTIFY_RE_ASSOC); 6016 6015 } 6017 6016 6018 6017 static void iwl3945_bg_rf_kill(struct work_struct *work)
+1 -1
drivers/net/wireless/libertas_tf/if_usb.c
··· 331 331 /* Fill the receive configuration URB and initialise the Rx call back */ 332 332 usb_fill_bulk_urb(cardp->rx_urb, cardp->udev, 333 333 usb_rcvbulkpipe(cardp->udev, cardp->ep_in), 334 - (void *) (skb->tail), 334 + skb_tail_pointer(skb), 335 335 MRVDRV_ETH_RX_PACKET_BUFFER_SIZE, callbackfn, cardp); 336 336 337 337 cardp->rx_urb->transfer_flags |= URB_ZERO_PACKET;
-20
include/net/mac80211.h
··· 74 74 */ 75 75 76 76 /** 77 - * enum ieee80211_notification_type - Low level driver notification 78 - * @IEEE80211_NOTIFY_RE_ASSOC: start the re-association sequence 79 - */ 80 - enum ieee80211_notification_types { 81 - IEEE80211_NOTIFY_RE_ASSOC, 82 - }; 83 - 84 - /** 85 77 * struct ieee80211_ht_bss_info - describing BSS's HT characteristics 86 78 * 87 79 * This structure describes most essential parameters needed ··· 1788 1796 */ 1789 1797 void ieee80211_stop_tx_ba_cb_irqsafe(struct ieee80211_hw *hw, const u8 *ra, 1790 1798 u16 tid); 1791 - 1792 - /** 1793 - * ieee80211_notify_mac - low level driver notification 1794 - * @hw: pointer as obtained from ieee80211_alloc_hw(). 1795 - * @notif_type: enum ieee80211_notification_types 1796 - * 1797 - * This function must be called by low level driver to inform mac80211 of 1798 - * low level driver status change or force mac80211 to re-assoc for low 1799 - * level driver internal error that require re-assoc. 1800 - */ 1801 - void ieee80211_notify_mac(struct ieee80211_hw *hw, 1802 - enum ieee80211_notification_types notif_type); 1803 1799 1804 1800 /** 1805 1801 * ieee80211_find_sta - find a station
-22
net/mac80211/mlme.c
··· 2560 2560 ieee80211_restart_sta_timer(sdata); 2561 2561 rcu_read_unlock(); 2562 2562 } 2563 - 2564 - /* driver notification call */ 2565 - void ieee80211_notify_mac(struct ieee80211_hw *hw, 2566 - enum ieee80211_notification_types notif_type) 2567 - { 2568 - struct ieee80211_local *local = hw_to_local(hw); 2569 - struct ieee80211_sub_if_data *sdata; 2570 - 2571 - switch (notif_type) { 2572 - case IEEE80211_NOTIFY_RE_ASSOC: 2573 - rtnl_lock(); 2574 - list_for_each_entry(sdata, &local->interfaces, list) { 2575 - if (sdata->vif.type != NL80211_IFTYPE_STATION) 2576 - continue; 2577 - 2578 - ieee80211_sta_req_auth(sdata, &sdata->u.sta); 2579 - } 2580 - rtnl_unlock(); 2581 - break; 2582 - } 2583 - } 2584 - EXPORT_SYMBOL(ieee80211_notify_mac);