aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/ethernet/amd/au1000_eth.c149
-rw-r--r--drivers/net/ethernet/amd/pcnet32.c45
-rw-r--r--drivers/net/ethernet/atheros/atl1e/atl1e_main.c7
-rw-r--r--drivers/net/ethernet/cisco/enic/vnic_dev.c8
-rw-r--r--drivers/net/ethernet/freescale/fs_enet/mac-fec.c1
-rw-r--r--drivers/net/ethernet/freescale/fs_enet/mac-scc.c1
-rw-r--r--drivers/net/ethernet/marvell/sky2.c5
-rw-r--r--drivers/net/ethernet/micrel/ksz884x.c7
-rw-r--r--drivers/net/ethernet/qlogic/netxen/netxen_nic_ctx.c4
-rw-r--r--drivers/net/ethernet/qlogic/qlge/qlge_main.c11
-rw-r--r--drivers/net/irda/au1k_ir.c48
-rw-r--r--drivers/net/irda/vlsi_ir.c4
-rw-r--r--drivers/net/wireless/ipw2x00/ipw2100.c16
-rw-r--r--drivers/net/wireless/mwl8k.c6
-rw-r--r--drivers/net/wireless/rtl818x/rtl8180/dev.c11
-rw-r--r--drivers/net/wireless/rtlwifi/pci.c17
16 files changed, 235 insertions, 105 deletions
diff --git a/drivers/net/ethernet/amd/au1000_eth.c b/drivers/net/ethernet/amd/au1000_eth.c
index a78e4c136959..31c48a7ac2b6 100644
--- a/drivers/net/ethernet/amd/au1000_eth.c
+++ b/drivers/net/ethernet/amd/au1000_eth.c
@@ -89,6 +89,124 @@ MODULE_DESCRIPTION(DRV_DESC);
89MODULE_LICENSE("GPL"); 89MODULE_LICENSE("GPL");
90MODULE_VERSION(DRV_VERSION); 90MODULE_VERSION(DRV_VERSION);
91 91
92/* AU1000 MAC registers and bits */
93#define MAC_CONTROL 0x0
94# define MAC_RX_ENABLE (1 << 2)
95# define MAC_TX_ENABLE (1 << 3)
96# define MAC_DEF_CHECK (1 << 5)
97# define MAC_SET_BL(X) (((X) & 0x3) << 6)
98# define MAC_AUTO_PAD (1 << 8)
99# define MAC_DISABLE_RETRY (1 << 10)
100# define MAC_DISABLE_BCAST (1 << 11)
101# define MAC_LATE_COL (1 << 12)
102# define MAC_HASH_MODE (1 << 13)
103# define MAC_HASH_ONLY (1 << 15)
104# define MAC_PASS_ALL (1 << 16)
105# define MAC_INVERSE_FILTER (1 << 17)
106# define MAC_PROMISCUOUS (1 << 18)
107# define MAC_PASS_ALL_MULTI (1 << 19)
108# define MAC_FULL_DUPLEX (1 << 20)
109# define MAC_NORMAL_MODE 0
110# define MAC_INT_LOOPBACK (1 << 21)
111# define MAC_EXT_LOOPBACK (1 << 22)
112# define MAC_DISABLE_RX_OWN (1 << 23)
113# define MAC_BIG_ENDIAN (1 << 30)
114# define MAC_RX_ALL (1 << 31)
115#define MAC_ADDRESS_HIGH 0x4
116#define MAC_ADDRESS_LOW 0x8
117#define MAC_MCAST_HIGH 0xC
118#define MAC_MCAST_LOW 0x10
119#define MAC_MII_CNTRL 0x14
120# define MAC_MII_BUSY (1 << 0)
121# define MAC_MII_READ 0
122# define MAC_MII_WRITE (1 << 1)
123# define MAC_SET_MII_SELECT_REG(X) (((X) & 0x1f) << 6)
124# define MAC_SET_MII_SELECT_PHY(X) (((X) & 0x1f) << 11)
125#define MAC_MII_DATA 0x18
126#define MAC_FLOW_CNTRL 0x1C
127# define MAC_FLOW_CNTRL_BUSY (1 << 0)
128# define MAC_FLOW_CNTRL_ENABLE (1 << 1)
129# define MAC_PASS_CONTROL (1 << 2)
130# define MAC_SET_PAUSE(X) (((X) & 0xffff) << 16)
131#define MAC_VLAN1_TAG 0x20
132#define MAC_VLAN2_TAG 0x24
133
134/* Ethernet Controller Enable */
135# define MAC_EN_CLOCK_ENABLE (1 << 0)
136# define MAC_EN_RESET0 (1 << 1)
137# define MAC_EN_TOSS (0 << 2)
138# define MAC_EN_CACHEABLE (1 << 3)
139# define MAC_EN_RESET1 (1 << 4)
140# define MAC_EN_RESET2 (1 << 5)
141# define MAC_DMA_RESET (1 << 6)
142
143/* Ethernet Controller DMA Channels */
144/* offsets from MAC_TX_RING_ADDR address */
145#define MAC_TX_BUFF0_STATUS 0x0
146# define TX_FRAME_ABORTED (1 << 0)
147# define TX_JAB_TIMEOUT (1 << 1)
148# define TX_NO_CARRIER (1 << 2)
149# define TX_LOSS_CARRIER (1 << 3)
150# define TX_EXC_DEF (1 << 4)
151# define TX_LATE_COLL_ABORT (1 << 5)
152# define TX_EXC_COLL (1 << 6)
153# define TX_UNDERRUN (1 << 7)
154# define TX_DEFERRED (1 << 8)
155# define TX_LATE_COLL (1 << 9)
156# define TX_COLL_CNT_MASK (0xF << 10)
157# define TX_PKT_RETRY (1 << 31)
158#define MAC_TX_BUFF0_ADDR 0x4
159# define TX_DMA_ENABLE (1 << 0)
160# define TX_T_DONE (1 << 1)
161# define TX_GET_DMA_BUFFER(X) (((X) >> 2) & 0x3)
162#define MAC_TX_BUFF0_LEN 0x8
163#define MAC_TX_BUFF1_STATUS 0x10
164#define MAC_TX_BUFF1_ADDR 0x14
165#define MAC_TX_BUFF1_LEN 0x18
166#define MAC_TX_BUFF2_STATUS 0x20
167#define MAC_TX_BUFF2_ADDR 0x24
168#define MAC_TX_BUFF2_LEN 0x28
169#define MAC_TX_BUFF3_STATUS 0x30
170#define MAC_TX_BUFF3_ADDR 0x34
171#define MAC_TX_BUFF3_LEN 0x38
172
173/* offsets from MAC_RX_RING_ADDR */
174#define MAC_RX_BUFF0_STATUS 0x0
175# define RX_FRAME_LEN_MASK 0x3fff
176# define RX_WDOG_TIMER (1 << 14)
177# define RX_RUNT (1 << 15)
178# define RX_OVERLEN (1 << 16)
179# define RX_COLL (1 << 17)
180# define RX_ETHER (1 << 18)
181# define RX_MII_ERROR (1 << 19)
182# define RX_DRIBBLING (1 << 20)
183# define RX_CRC_ERROR (1 << 21)
184# define RX_VLAN1 (1 << 22)
185# define RX_VLAN2 (1 << 23)
186# define RX_LEN_ERROR (1 << 24)
187# define RX_CNTRL_FRAME (1 << 25)
188# define RX_U_CNTRL_FRAME (1 << 26)
189# define RX_MCAST_FRAME (1 << 27)
190# define RX_BCAST_FRAME (1 << 28)
191# define RX_FILTER_FAIL (1 << 29)
192# define RX_PACKET_FILTER (1 << 30)
193# define RX_MISSED_FRAME (1 << 31)
194
195# define RX_ERROR (RX_WDOG_TIMER | RX_RUNT | RX_OVERLEN | \
196 RX_COLL | RX_MII_ERROR | RX_CRC_ERROR | \
197 RX_LEN_ERROR | RX_U_CNTRL_FRAME | RX_MISSED_FRAME)
198#define MAC_RX_BUFF0_ADDR 0x4
199# define RX_DMA_ENABLE (1 << 0)
200# define RX_T_DONE (1 << 1)
201# define RX_GET_DMA_BUFFER(X) (((X) >> 2) & 0x3)
202# define RX_SET_BUFF_ADDR(X) ((X) & 0xffffffc0)
203#define MAC_RX_BUFF1_STATUS 0x10
204#define MAC_RX_BUFF1_ADDR 0x14
205#define MAC_RX_BUFF2_STATUS 0x20
206#define MAC_RX_BUFF2_ADDR 0x24
207#define MAC_RX_BUFF3_STATUS 0x30
208#define MAC_RX_BUFF3_ADDR 0x34
209
92/* 210/*
93 * Theory of operation 211 * Theory of operation
94 * 212 *
@@ -152,10 +270,12 @@ static void au1000_enable_mac(struct net_device *dev, int force_reset)
152 270
153 if (force_reset || (!aup->mac_enabled)) { 271 if (force_reset || (!aup->mac_enabled)) {
154 writel(MAC_EN_CLOCK_ENABLE, aup->enable); 272 writel(MAC_EN_CLOCK_ENABLE, aup->enable);
155 au_sync_delay(2); 273 wmb(); /* drain writebuffer */
274 mdelay(2);
156 writel((MAC_EN_RESET0 | MAC_EN_RESET1 | MAC_EN_RESET2 275 writel((MAC_EN_RESET0 | MAC_EN_RESET1 | MAC_EN_RESET2
157 | MAC_EN_CLOCK_ENABLE), aup->enable); 276 | MAC_EN_CLOCK_ENABLE), aup->enable);
158 au_sync_delay(2); 277 wmb(); /* drain writebuffer */
278 mdelay(2);
159 279
160 aup->mac_enabled = 1; 280 aup->mac_enabled = 1;
161 } 281 }
@@ -273,7 +393,8 @@ static void au1000_hard_stop(struct net_device *dev)
273 reg = readl(&aup->mac->control); 393 reg = readl(&aup->mac->control);
274 reg &= ~(MAC_RX_ENABLE | MAC_TX_ENABLE); 394 reg &= ~(MAC_RX_ENABLE | MAC_TX_ENABLE);
275 writel(reg, &aup->mac->control); 395 writel(reg, &aup->mac->control);
276 au_sync_delay(10); 396 wmb(); /* drain writebuffer */
397 mdelay(10);
277} 398}
278 399
279static void au1000_enable_rx_tx(struct net_device *dev) 400static void au1000_enable_rx_tx(struct net_device *dev)
@@ -286,7 +407,8 @@ static void au1000_enable_rx_tx(struct net_device *dev)
286 reg = readl(&aup->mac->control); 407 reg = readl(&aup->mac->control);
287 reg |= (MAC_RX_ENABLE | MAC_TX_ENABLE); 408 reg |= (MAC_RX_ENABLE | MAC_TX_ENABLE);
288 writel(reg, &aup->mac->control); 409 writel(reg, &aup->mac->control);
289 au_sync_delay(10); 410 wmb(); /* drain writebuffer */
411 mdelay(10);
290} 412}
291 413
292static void 414static void
@@ -336,7 +458,8 @@ au1000_adjust_link(struct net_device *dev)
336 reg |= MAC_DISABLE_RX_OWN; 458 reg |= MAC_DISABLE_RX_OWN;
337 } 459 }
338 writel(reg, &aup->mac->control); 460 writel(reg, &aup->mac->control);
339 au_sync_delay(1); 461 wmb(); /* drain writebuffer */
462 mdelay(1);
340 463
341 au1000_enable_rx_tx(dev); 464 au1000_enable_rx_tx(dev);
342 aup->old_duplex = phydev->duplex; 465 aup->old_duplex = phydev->duplex;
@@ -500,9 +623,11 @@ static void au1000_reset_mac_unlocked(struct net_device *dev)
500 au1000_hard_stop(dev); 623 au1000_hard_stop(dev);
501 624
502 writel(MAC_EN_CLOCK_ENABLE, aup->enable); 625 writel(MAC_EN_CLOCK_ENABLE, aup->enable);
503 au_sync_delay(2); 626 wmb(); /* drain writebuffer */
627 mdelay(2);
504 writel(0, aup->enable); 628 writel(0, aup->enable);
505 au_sync_delay(2); 629 wmb(); /* drain writebuffer */
630 mdelay(2);
506 631
507 aup->tx_full = 0; 632 aup->tx_full = 0;
508 for (i = 0; i < NUM_RX_DMA; i++) { 633 for (i = 0; i < NUM_RX_DMA; i++) {
@@ -652,7 +777,7 @@ static int au1000_init(struct net_device *dev)
652 for (i = 0; i < NUM_RX_DMA; i++) 777 for (i = 0; i < NUM_RX_DMA; i++)
653 aup->rx_dma_ring[i]->buff_stat |= RX_DMA_ENABLE; 778 aup->rx_dma_ring[i]->buff_stat |= RX_DMA_ENABLE;
654 779
655 au_sync(); 780 wmb(); /* drain writebuffer */
656 781
657 control = MAC_RX_ENABLE | MAC_TX_ENABLE; 782 control = MAC_RX_ENABLE | MAC_TX_ENABLE;
658#ifndef CONFIG_CPU_LITTLE_ENDIAN 783#ifndef CONFIG_CPU_LITTLE_ENDIAN
@@ -669,7 +794,7 @@ static int au1000_init(struct net_device *dev)
669 794
670 writel(control, &aup->mac->control); 795 writel(control, &aup->mac->control);
671 writel(0x8100, &aup->mac->vlan1_tag); /* activate vlan support */ 796 writel(0x8100, &aup->mac->vlan1_tag); /* activate vlan support */
672 au_sync(); 797 wmb(); /* drain writebuffer */
673 798
674 spin_unlock_irqrestore(&aup->lock, flags); 799 spin_unlock_irqrestore(&aup->lock, flags);
675 return 0; 800 return 0;
@@ -760,7 +885,7 @@ static int au1000_rx(struct net_device *dev)
760 } 885 }
761 prxd->buff_stat = (u32)(pDB->dma_addr | RX_DMA_ENABLE); 886 prxd->buff_stat = (u32)(pDB->dma_addr | RX_DMA_ENABLE);
762 aup->rx_head = (aup->rx_head + 1) & (NUM_RX_DMA - 1); 887 aup->rx_head = (aup->rx_head + 1) & (NUM_RX_DMA - 1);
763 au_sync(); 888 wmb(); /* drain writebuffer */
764 889
765 /* next descriptor */ 890 /* next descriptor */
766 prxd = aup->rx_dma_ring[aup->rx_head]; 891 prxd = aup->rx_dma_ring[aup->rx_head];
@@ -808,7 +933,7 @@ static void au1000_tx_ack(struct net_device *dev)
808 au1000_update_tx_stats(dev, ptxd->status); 933 au1000_update_tx_stats(dev, ptxd->status);
809 ptxd->buff_stat &= ~TX_T_DONE; 934 ptxd->buff_stat &= ~TX_T_DONE;
810 ptxd->len = 0; 935 ptxd->len = 0;
811 au_sync(); 936 wmb(); /* drain writebuffer */
812 937
813 aup->tx_tail = (aup->tx_tail + 1) & (NUM_TX_DMA - 1); 938 aup->tx_tail = (aup->tx_tail + 1) & (NUM_TX_DMA - 1);
814 ptxd = aup->tx_dma_ring[aup->tx_tail]; 939 ptxd = aup->tx_dma_ring[aup->tx_tail];
@@ -939,7 +1064,7 @@ static netdev_tx_t au1000_tx(struct sk_buff *skb, struct net_device *dev)
939 ps->tx_bytes += ptxd->len; 1064 ps->tx_bytes += ptxd->len;
940 1065
941 ptxd->buff_stat = pDB->dma_addr | TX_DMA_ENABLE; 1066 ptxd->buff_stat = pDB->dma_addr | TX_DMA_ENABLE;
942 au_sync(); 1067 wmb(); /* drain writebuffer */
943 dev_kfree_skb(skb); 1068 dev_kfree_skb(skb);
944 aup->tx_head = (aup->tx_head + 1) & (NUM_TX_DMA - 1); 1069 aup->tx_head = (aup->tx_head + 1) & (NUM_TX_DMA - 1);
945 return NETDEV_TX_OK; 1070 return NETDEV_TX_OK;
diff --git a/drivers/net/ethernet/amd/pcnet32.c b/drivers/net/ethernet/amd/pcnet32.c
index e7cc9174e364..4a8fdc4721d5 100644
--- a/drivers/net/ethernet/amd/pcnet32.c
+++ b/drivers/net/ethernet/amd/pcnet32.c
@@ -481,37 +481,32 @@ static void pcnet32_realloc_tx_ring(struct net_device *dev,
481 dma_addr_t *new_dma_addr_list; 481 dma_addr_t *new_dma_addr_list;
482 struct pcnet32_tx_head *new_tx_ring; 482 struct pcnet32_tx_head *new_tx_ring;
483 struct sk_buff **new_skb_list; 483 struct sk_buff **new_skb_list;
484 unsigned int entries = BIT(size);
484 485
485 pcnet32_purge_tx_ring(dev); 486 pcnet32_purge_tx_ring(dev);
486 487
487 new_tx_ring = pci_alloc_consistent(lp->pci_dev, 488 new_tx_ring =
488 sizeof(struct pcnet32_tx_head) * 489 pci_zalloc_consistent(lp->pci_dev,
489 (1 << size), 490 sizeof(struct pcnet32_tx_head) * entries,
490 &new_ring_dma_addr); 491 &new_ring_dma_addr);
491 if (new_tx_ring == NULL) { 492 if (new_tx_ring == NULL)
492 netif_err(lp, drv, dev, "Consistent memory allocation failed\n");
493 return; 493 return;
494 }
495 memset(new_tx_ring, 0, sizeof(struct pcnet32_tx_head) * (1 << size));
496 494
497 new_dma_addr_list = kcalloc(1 << size, sizeof(dma_addr_t), 495 new_dma_addr_list = kcalloc(entries, sizeof(dma_addr_t), GFP_ATOMIC);
498 GFP_ATOMIC);
499 if (!new_dma_addr_list) 496 if (!new_dma_addr_list)
500 goto free_new_tx_ring; 497 goto free_new_tx_ring;
501 498
502 new_skb_list = kcalloc(1 << size, sizeof(struct sk_buff *), 499 new_skb_list = kcalloc(entries, sizeof(struct sk_buff *), GFP_ATOMIC);
503 GFP_ATOMIC);
504 if (!new_skb_list) 500 if (!new_skb_list)
505 goto free_new_lists; 501 goto free_new_lists;
506 502
507 kfree(lp->tx_skbuff); 503 kfree(lp->tx_skbuff);
508 kfree(lp->tx_dma_addr); 504 kfree(lp->tx_dma_addr);
509 pci_free_consistent(lp->pci_dev, 505 pci_free_consistent(lp->pci_dev,
510 sizeof(struct pcnet32_tx_head) * 506 sizeof(struct pcnet32_tx_head) * lp->tx_ring_size,
511 lp->tx_ring_size, lp->tx_ring, 507 lp->tx_ring, lp->tx_ring_dma_addr);
512 lp->tx_ring_dma_addr);
513 508
514 lp->tx_ring_size = (1 << size); 509 lp->tx_ring_size = entries;
515 lp->tx_mod_mask = lp->tx_ring_size - 1; 510 lp->tx_mod_mask = lp->tx_ring_size - 1;
516 lp->tx_len_bits = (size << 12); 511 lp->tx_len_bits = (size << 12);
517 lp->tx_ring = new_tx_ring; 512 lp->tx_ring = new_tx_ring;
@@ -524,8 +519,7 @@ free_new_lists:
524 kfree(new_dma_addr_list); 519 kfree(new_dma_addr_list);
525free_new_tx_ring: 520free_new_tx_ring:
526 pci_free_consistent(lp->pci_dev, 521 pci_free_consistent(lp->pci_dev,
527 sizeof(struct pcnet32_tx_head) * 522 sizeof(struct pcnet32_tx_head) * entries,
528 (1 << size),
529 new_tx_ring, 523 new_tx_ring,
530 new_ring_dma_addr); 524 new_ring_dma_addr);
531} 525}
@@ -549,17 +543,14 @@ static void pcnet32_realloc_rx_ring(struct net_device *dev,
549 struct pcnet32_rx_head *new_rx_ring; 543 struct pcnet32_rx_head *new_rx_ring;
550 struct sk_buff **new_skb_list; 544 struct sk_buff **new_skb_list;
551 int new, overlap; 545 int new, overlap;
552 unsigned int entries = 1 << size; 546 unsigned int entries = BIT(size);
553 547
554 new_rx_ring = pci_alloc_consistent(lp->pci_dev, 548 new_rx_ring =
555 sizeof(struct pcnet32_rx_head) * 549 pci_zalloc_consistent(lp->pci_dev,
556 entries, 550 sizeof(struct pcnet32_rx_head) * entries,
557 &new_ring_dma_addr); 551 &new_ring_dma_addr);
558 if (new_rx_ring == NULL) { 552 if (new_rx_ring == NULL)
559 netif_err(lp, drv, dev, "Consistent memory allocation failed\n");
560 return; 553 return;
561 }
562 memset(new_rx_ring, 0, sizeof(struct pcnet32_rx_head) * entries);
563 554
564 new_dma_addr_list = kcalloc(entries, sizeof(dma_addr_t), GFP_ATOMIC); 555 new_dma_addr_list = kcalloc(entries, sizeof(dma_addr_t), GFP_ATOMIC);
565 if (!new_dma_addr_list) 556 if (!new_dma_addr_list)
diff --git a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
index 4345332533ad..316e0c3fe048 100644
--- a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
+++ b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
@@ -831,17 +831,14 @@ static int atl1e_setup_ring_resources(struct atl1e_adapter *adapter)
831 /* real ring DMA buffer */ 831 /* real ring DMA buffer */
832 832
833 size = adapter->ring_size; 833 size = adapter->ring_size;
834 adapter->ring_vir_addr = pci_alloc_consistent(pdev, 834 adapter->ring_vir_addr = pci_zalloc_consistent(pdev, adapter->ring_size,
835 adapter->ring_size, &adapter->ring_dma); 835 &adapter->ring_dma);
836
837 if (adapter->ring_vir_addr == NULL) { 836 if (adapter->ring_vir_addr == NULL) {
838 netdev_err(adapter->netdev, 837 netdev_err(adapter->netdev,
839 "pci_alloc_consistent failed, size = D%d\n", size); 838 "pci_alloc_consistent failed, size = D%d\n", size);
840 return -ENOMEM; 839 return -ENOMEM;
841 } 840 }
842 841
843 memset(adapter->ring_vir_addr, 0, adapter->ring_size);
844
845 rx_page_desc = rx_ring->rx_page_desc; 842 rx_page_desc = rx_ring->rx_page_desc;
846 843
847 /* Init TPD Ring */ 844 /* Init TPD Ring */
diff --git a/drivers/net/ethernet/cisco/enic/vnic_dev.c b/drivers/net/ethernet/cisco/enic/vnic_dev.c
index 5abc496bcf29..37472ce4fac3 100644
--- a/drivers/net/ethernet/cisco/enic/vnic_dev.c
+++ b/drivers/net/ethernet/cisco/enic/vnic_dev.c
@@ -432,14 +432,12 @@ int vnic_dev_fw_info(struct vnic_dev *vdev,
432 int err = 0; 432 int err = 0;
433 433
434 if (!vdev->fw_info) { 434 if (!vdev->fw_info) {
435 vdev->fw_info = pci_alloc_consistent(vdev->pdev, 435 vdev->fw_info = pci_zalloc_consistent(vdev->pdev,
436 sizeof(struct vnic_devcmd_fw_info), 436 sizeof(struct vnic_devcmd_fw_info),
437 &vdev->fw_info_pa); 437 &vdev->fw_info_pa);
438 if (!vdev->fw_info) 438 if (!vdev->fw_info)
439 return -ENOMEM; 439 return -ENOMEM;
440 440
441 memset(vdev->fw_info, 0, sizeof(struct vnic_devcmd_fw_info));
442
443 a0 = vdev->fw_info_pa; 441 a0 = vdev->fw_info_pa;
444 a1 = sizeof(struct vnic_devcmd_fw_info); 442 a1 = sizeof(struct vnic_devcmd_fw_info);
445 443
diff --git a/drivers/net/ethernet/freescale/fs_enet/mac-fec.c b/drivers/net/ethernet/freescale/fs_enet/mac-fec.c
index fc5413488496..1eedfba2ad3c 100644
--- a/drivers/net/ethernet/freescale/fs_enet/mac-fec.c
+++ b/drivers/net/ethernet/freescale/fs_enet/mac-fec.c
@@ -41,7 +41,6 @@
41#ifdef CONFIG_8xx 41#ifdef CONFIG_8xx
42#include <asm/8xx_immap.h> 42#include <asm/8xx_immap.h>
43#include <asm/pgtable.h> 43#include <asm/pgtable.h>
44#include <asm/mpc8xx.h>
45#include <asm/cpm1.h> 44#include <asm/cpm1.h>
46#endif 45#endif
47 46
diff --git a/drivers/net/ethernet/freescale/fs_enet/mac-scc.c b/drivers/net/ethernet/freescale/fs_enet/mac-scc.c
index b4bf02f57d43..90b3b19b7cd3 100644
--- a/drivers/net/ethernet/freescale/fs_enet/mac-scc.c
+++ b/drivers/net/ethernet/freescale/fs_enet/mac-scc.c
@@ -40,7 +40,6 @@
40#ifdef CONFIG_8xx 40#ifdef CONFIG_8xx
41#include <asm/8xx_immap.h> 41#include <asm/8xx_immap.h>
42#include <asm/pgtable.h> 42#include <asm/pgtable.h>
43#include <asm/mpc8xx.h>
44#include <asm/cpm1.h> 43#include <asm/cpm1.h>
45#endif 44#endif
46 45
diff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c
index 69693384b58c..59915144aabb 100644
--- a/drivers/net/ethernet/marvell/sky2.c
+++ b/drivers/net/ethernet/marvell/sky2.c
@@ -1622,11 +1622,10 @@ static int sky2_alloc_buffers(struct sky2_port *sky2)
1622 if (!sky2->tx_ring) 1622 if (!sky2->tx_ring)
1623 goto nomem; 1623 goto nomem;
1624 1624
1625 sky2->rx_le = pci_alloc_consistent(hw->pdev, RX_LE_BYTES, 1625 sky2->rx_le = pci_zalloc_consistent(hw->pdev, RX_LE_BYTES,
1626 &sky2->rx_le_map); 1626 &sky2->rx_le_map);
1627 if (!sky2->rx_le) 1627 if (!sky2->rx_le)
1628 goto nomem; 1628 goto nomem;
1629 memset(sky2->rx_le, 0, RX_LE_BYTES);
1630 1629
1631 sky2->rx_ring = kcalloc(sky2->rx_pending, sizeof(struct rx_ring_info), 1630 sky2->rx_ring = kcalloc(sky2->rx_pending, sizeof(struct rx_ring_info),
1632 GFP_KERNEL); 1631 GFP_KERNEL);
diff --git a/drivers/net/ethernet/micrel/ksz884x.c b/drivers/net/ethernet/micrel/ksz884x.c
index 064a48d0c368..cd5f106306d9 100644
--- a/drivers/net/ethernet/micrel/ksz884x.c
+++ b/drivers/net/ethernet/micrel/ksz884x.c
@@ -4409,14 +4409,13 @@ static int ksz_alloc_desc(struct dev_info *adapter)
4409 DESC_ALIGNMENT; 4409 DESC_ALIGNMENT;
4410 4410
4411 adapter->desc_pool.alloc_virt = 4411 adapter->desc_pool.alloc_virt =
4412 pci_alloc_consistent( 4412 pci_zalloc_consistent(adapter->pdev,
4413 adapter->pdev, adapter->desc_pool.alloc_size, 4413 adapter->desc_pool.alloc_size,
4414 &adapter->desc_pool.dma_addr); 4414 &adapter->desc_pool.dma_addr);
4415 if (adapter->desc_pool.alloc_virt == NULL) { 4415 if (adapter->desc_pool.alloc_virt == NULL) {
4416 adapter->desc_pool.alloc_size = 0; 4416 adapter->desc_pool.alloc_size = 0;
4417 return 1; 4417 return 1;
4418 } 4418 }
4419 memset(adapter->desc_pool.alloc_virt, 0, adapter->desc_pool.alloc_size);
4420 4419
4421 /* Align to the next cache line boundary. */ 4420 /* Align to the next cache line boundary. */
4422 offset = (((ulong) adapter->desc_pool.alloc_virt % DESC_ALIGNMENT) ? 4421 offset = (((ulong) adapter->desc_pool.alloc_virt % DESC_ALIGNMENT) ?
diff --git a/drivers/net/ethernet/qlogic/netxen/netxen_nic_ctx.c b/drivers/net/ethernet/qlogic/netxen/netxen_nic_ctx.c
index 6f6be57f4690..b8d5270359cd 100644
--- a/drivers/net/ethernet/qlogic/netxen/netxen_nic_ctx.c
+++ b/drivers/net/ethernet/qlogic/netxen/netxen_nic_ctx.c
@@ -129,14 +129,12 @@ netxen_get_minidump_template(struct netxen_adapter *adapter)
129 return NX_RCODE_INVALID_ARGS; 129 return NX_RCODE_INVALID_ARGS;
130 } 130 }
131 131
132 addr = pci_alloc_consistent(adapter->pdev, size, &md_template_addr); 132 addr = pci_zalloc_consistent(adapter->pdev, size, &md_template_addr);
133
134 if (!addr) { 133 if (!addr) {
135 dev_err(&adapter->pdev->dev, "Unable to allocate dmable memory for template.\n"); 134 dev_err(&adapter->pdev->dev, "Unable to allocate dmable memory for template.\n");
136 return -ENOMEM; 135 return -ENOMEM;
137 } 136 }
138 137
139 memset(addr, 0, size);
140 memset(&cmd, 0, sizeof(cmd)); 138 memset(&cmd, 0, sizeof(cmd));
141 memset(&cmd.rsp, 1, sizeof(struct _cdrp_cmd)); 139 memset(&cmd.rsp, 1, sizeof(struct _cdrp_cmd));
142 cmd.req.cmd = NX_CDRP_CMD_GET_TEMP_HDR; 140 cmd.req.cmd = NX_CDRP_CMD_GET_TEMP_HDR;
diff --git a/drivers/net/ethernet/qlogic/qlge/qlge_main.c b/drivers/net/ethernet/qlogic/qlge/qlge_main.c
index b40050e03a56..d836ace52277 100644
--- a/drivers/net/ethernet/qlogic/qlge/qlge_main.c
+++ b/drivers/net/ethernet/qlogic/qlge/qlge_main.c
@@ -2727,23 +2727,22 @@ static void ql_free_shadow_space(struct ql_adapter *qdev)
2727static int ql_alloc_shadow_space(struct ql_adapter *qdev) 2727static int ql_alloc_shadow_space(struct ql_adapter *qdev)
2728{ 2728{
2729 qdev->rx_ring_shadow_reg_area = 2729 qdev->rx_ring_shadow_reg_area =
2730 pci_alloc_consistent(qdev->pdev, 2730 pci_zalloc_consistent(qdev->pdev, PAGE_SIZE,
2731 PAGE_SIZE, &qdev->rx_ring_shadow_reg_dma); 2731 &qdev->rx_ring_shadow_reg_dma);
2732 if (qdev->rx_ring_shadow_reg_area == NULL) { 2732 if (qdev->rx_ring_shadow_reg_area == NULL) {
2733 netif_err(qdev, ifup, qdev->ndev, 2733 netif_err(qdev, ifup, qdev->ndev,
2734 "Allocation of RX shadow space failed.\n"); 2734 "Allocation of RX shadow space failed.\n");
2735 return -ENOMEM; 2735 return -ENOMEM;
2736 } 2736 }
2737 memset(qdev->rx_ring_shadow_reg_area, 0, PAGE_SIZE); 2737
2738 qdev->tx_ring_shadow_reg_area = 2738 qdev->tx_ring_shadow_reg_area =
2739 pci_alloc_consistent(qdev->pdev, PAGE_SIZE, 2739 pci_zalloc_consistent(qdev->pdev, PAGE_SIZE,
2740 &qdev->tx_ring_shadow_reg_dma); 2740 &qdev->tx_ring_shadow_reg_dma);
2741 if (qdev->tx_ring_shadow_reg_area == NULL) { 2741 if (qdev->tx_ring_shadow_reg_area == NULL) {
2742 netif_err(qdev, ifup, qdev->ndev, 2742 netif_err(qdev, ifup, qdev->ndev,
2743 "Allocation of TX shadow space failed.\n"); 2743 "Allocation of TX shadow space failed.\n");
2744 goto err_wqp_sh_area; 2744 goto err_wqp_sh_area;
2745 } 2745 }
2746 memset(qdev->tx_ring_shadow_reg_area, 0, PAGE_SIZE);
2747 return 0; 2746 return 0;
2748 2747
2749err_wqp_sh_area: 2748err_wqp_sh_area:
diff --git a/drivers/net/irda/au1k_ir.c b/drivers/net/irda/au1k_ir.c
index 5f91e3e01c04..aab2cf72d025 100644
--- a/drivers/net/irda/au1k_ir.c
+++ b/drivers/net/irda/au1k_ir.c
@@ -18,6 +18,7 @@
18 * with this program; if not, see <http://www.gnu.org/licenses/>. 18 * with this program; if not, see <http://www.gnu.org/licenses/>.
19 */ 19 */
20 20
21#include <linux/clk.h>
21#include <linux/module.h> 22#include <linux/module.h>
22#include <linux/netdevice.h> 23#include <linux/netdevice.h>
23#include <linux/interrupt.h> 24#include <linux/interrupt.h>
@@ -175,6 +176,7 @@ struct au1k_private {
175 176
176 struct resource *ioarea; 177 struct resource *ioarea;
177 struct au1k_irda_platform_data *platdata; 178 struct au1k_irda_platform_data *platdata;
179 struct clk *irda_clk;
178}; 180};
179 181
180static int qos_mtt_bits = 0x07; /* 1 ms or more */ 182static int qos_mtt_bits = 0x07; /* 1 ms or more */
@@ -514,9 +516,39 @@ static irqreturn_t au1k_irda_interrupt(int dummy, void *dev_id)
514static int au1k_init(struct net_device *dev) 516static int au1k_init(struct net_device *dev)
515{ 517{
516 struct au1k_private *aup = netdev_priv(dev); 518 struct au1k_private *aup = netdev_priv(dev);
517 u32 enable, ring_address; 519 u32 enable, ring_address, phyck;
520 struct clk *c;
518 int i; 521 int i;
519 522
523 c = clk_get(NULL, "irda_clk");
524 if (IS_ERR(c))
525 return PTR_ERR(c);
526 i = clk_prepare_enable(c);
527 if (i) {
528 clk_put(c);
529 return i;
530 }
531
532 switch (clk_get_rate(c)) {
533 case 40000000:
534 phyck = IR_PHYCLK_40MHZ;
535 break;
536 case 48000000:
537 phyck = IR_PHYCLK_48MHZ;
538 break;
539 case 56000000:
540 phyck = IR_PHYCLK_56MHZ;
541 break;
542 case 64000000:
543 phyck = IR_PHYCLK_64MHZ;
544 break;
545 default:
546 clk_disable_unprepare(c);
547 clk_put(c);
548 return -EINVAL;
549 }
550 aup->irda_clk = c;
551
520 enable = IR_HC | IR_CE | IR_C; 552 enable = IR_HC | IR_CE | IR_C;
521#ifndef CONFIG_CPU_LITTLE_ENDIAN 553#ifndef CONFIG_CPU_LITTLE_ENDIAN
522 enable |= IR_BE; 554 enable |= IR_BE;
@@ -545,7 +577,7 @@ static int au1k_init(struct net_device *dev)
545 irda_write(aup, IR_RING_SIZE, 577 irda_write(aup, IR_RING_SIZE,
546 (RING_SIZE_64 << 8) | (RING_SIZE_64 << 12)); 578 (RING_SIZE_64 << 8) | (RING_SIZE_64 << 12));
547 579
548 irda_write(aup, IR_CONFIG_2, IR_PHYCLK_48MHZ | IR_ONE_PIN); 580 irda_write(aup, IR_CONFIG_2, phyck | IR_ONE_PIN);
549 irda_write(aup, IR_RING_ADDR_CMPR, 0); 581 irda_write(aup, IR_RING_ADDR_CMPR, 0);
550 582
551 au1k_irda_set_speed(dev, 9600); 583 au1k_irda_set_speed(dev, 9600);
@@ -619,6 +651,9 @@ static int au1k_irda_stop(struct net_device *dev)
619 free_irq(aup->irq_tx, dev); 651 free_irq(aup->irq_tx, dev);
620 free_irq(aup->irq_rx, dev); 652 free_irq(aup->irq_rx, dev);
621 653
654 clk_disable_unprepare(aup->irda_clk);
655 clk_put(aup->irda_clk);
656
622 return 0; 657 return 0;
623} 658}
624 659
@@ -853,6 +888,7 @@ static int au1k_irda_probe(struct platform_device *pdev)
853 struct au1k_private *aup; 888 struct au1k_private *aup;
854 struct net_device *dev; 889 struct net_device *dev;
855 struct resource *r; 890 struct resource *r;
891 struct clk *c;
856 int err; 892 int err;
857 893
858 dev = alloc_irdadev(sizeof(struct au1k_private)); 894 dev = alloc_irdadev(sizeof(struct au1k_private));
@@ -886,6 +922,14 @@ static int au1k_irda_probe(struct platform_device *pdev)
886 if (!aup->ioarea) 922 if (!aup->ioarea)
887 goto out; 923 goto out;
888 924
925 /* bail out early if clock doesn't exist */
926 c = clk_get(NULL, "irda_clk");
927 if (IS_ERR(c)) {
928 err = PTR_ERR(c);
929 goto out;
930 }
931 clk_put(c);
932
889 aup->iobase = ioremap_nocache(r->start, resource_size(r)); 933 aup->iobase = ioremap_nocache(r->start, resource_size(r));
890 if (!aup->iobase) 934 if (!aup->iobase)
891 goto out2; 935 goto out2;
diff --git a/drivers/net/irda/vlsi_ir.c b/drivers/net/irda/vlsi_ir.c
index 485006604bbc..58ef59469dd0 100644
--- a/drivers/net/irda/vlsi_ir.c
+++ b/drivers/net/irda/vlsi_ir.c
@@ -485,13 +485,13 @@ static int vlsi_create_hwif(vlsi_irda_dev_t *idev)
485 idev->virtaddr = NULL; 485 idev->virtaddr = NULL;
486 idev->busaddr = 0; 486 idev->busaddr = 0;
487 487
488 ringarea = pci_alloc_consistent(idev->pdev, HW_RING_AREA_SIZE, &idev->busaddr); 488 ringarea = pci_zalloc_consistent(idev->pdev, HW_RING_AREA_SIZE,
489 &idev->busaddr);
489 if (!ringarea) { 490 if (!ringarea) {
490 IRDA_ERROR("%s: insufficient memory for descriptor rings\n", 491 IRDA_ERROR("%s: insufficient memory for descriptor rings\n",
491 __func__); 492 __func__);
492 goto out; 493 goto out;
493 } 494 }
494 memset(ringarea, 0, HW_RING_AREA_SIZE);
495 495
496 hwmap = (struct ring_descr_hw *)ringarea; 496 hwmap = (struct ring_descr_hw *)ringarea;
497 idev->rx_ring = vlsi_alloc_ring(idev->pdev, hwmap, ringsize[1], 497 idev->rx_ring = vlsi_alloc_ring(idev->pdev, hwmap, ringsize[1],
diff --git a/drivers/net/wireless/ipw2x00/ipw2100.c b/drivers/net/wireless/ipw2x00/ipw2100.c
index dfc6dfc56d52..1ab8e500fb77 100644
--- a/drivers/net/wireless/ipw2x00/ipw2100.c
+++ b/drivers/net/wireless/ipw2x00/ipw2100.c
@@ -3449,8 +3449,9 @@ static int ipw2100_msg_allocate(struct ipw2100_priv *priv)
3449 return -ENOMEM; 3449 return -ENOMEM;
3450 3450
3451 for (i = 0; i < IPW_COMMAND_POOL_SIZE; i++) { 3451 for (i = 0; i < IPW_COMMAND_POOL_SIZE; i++) {
3452 v = pci_alloc_consistent(priv->pci_dev, 3452 v = pci_zalloc_consistent(priv->pci_dev,
3453 sizeof(struct ipw2100_cmd_header), &p); 3453 sizeof(struct ipw2100_cmd_header),
3454 &p);
3454 if (!v) { 3455 if (!v) {
3455 printk(KERN_ERR DRV_NAME ": " 3456 printk(KERN_ERR DRV_NAME ": "
3456 "%s: PCI alloc failed for msg " 3457 "%s: PCI alloc failed for msg "
@@ -3459,8 +3460,6 @@ static int ipw2100_msg_allocate(struct ipw2100_priv *priv)
3459 break; 3460 break;
3460 } 3461 }
3461 3462
3462 memset(v, 0, sizeof(struct ipw2100_cmd_header));
3463
3464 priv->msg_buffers[i].type = COMMAND; 3463 priv->msg_buffers[i].type = COMMAND;
3465 priv->msg_buffers[i].info.c_struct.cmd = 3464 priv->msg_buffers[i].info.c_struct.cmd =
3466 (struct ipw2100_cmd_header *)v; 3465 (struct ipw2100_cmd_header *)v;
@@ -4336,16 +4335,12 @@ static int status_queue_allocate(struct ipw2100_priv *priv, int entries)
4336 IPW_DEBUG_INFO("enter\n"); 4335 IPW_DEBUG_INFO("enter\n");
4337 4336
4338 q->size = entries * sizeof(struct ipw2100_status); 4337 q->size = entries * sizeof(struct ipw2100_status);
4339 q->drv = 4338 q->drv = pci_zalloc_consistent(priv->pci_dev, q->size, &q->nic);
4340 (struct ipw2100_status *)pci_alloc_consistent(priv->pci_dev,
4341 q->size, &q->nic);
4342 if (!q->drv) { 4339 if (!q->drv) {
4343 IPW_DEBUG_WARNING("Can not allocate status queue.\n"); 4340 IPW_DEBUG_WARNING("Can not allocate status queue.\n");
4344 return -ENOMEM; 4341 return -ENOMEM;
4345 } 4342 }
4346 4343
4347 memset(q->drv, 0, q->size);
4348
4349 IPW_DEBUG_INFO("exit\n"); 4344 IPW_DEBUG_INFO("exit\n");
4350 4345
4351 return 0; 4346 return 0;
@@ -4374,13 +4369,12 @@ static int bd_queue_allocate(struct ipw2100_priv *priv,
4374 4369
4375 q->entries = entries; 4370 q->entries = entries;
4376 q->size = entries * sizeof(struct ipw2100_bd); 4371 q->size = entries * sizeof(struct ipw2100_bd);
4377 q->drv = pci_alloc_consistent(priv->pci_dev, q->size, &q->nic); 4372 q->drv = pci_zalloc_consistent(priv->pci_dev, q->size, &q->nic);
4378 if (!q->drv) { 4373 if (!q->drv) {
4379 IPW_DEBUG_INFO 4374 IPW_DEBUG_INFO
4380 ("can't allocate shared memory for buffer descriptors\n"); 4375 ("can't allocate shared memory for buffer descriptors\n");
4381 return -ENOMEM; 4376 return -ENOMEM;
4382 } 4377 }
4383 memset(q->drv, 0, q->size);
4384 4378
4385 IPW_DEBUG_INFO("exit\n"); 4379 IPW_DEBUG_INFO("exit\n");
4386 4380
diff --git a/drivers/net/wireless/mwl8k.c b/drivers/net/wireless/mwl8k.c
index 9a3d4d6724f7..fc6cb215e761 100644
--- a/drivers/net/wireless/mwl8k.c
+++ b/drivers/net/wireless/mwl8k.c
@@ -1159,12 +1159,11 @@ static int mwl8k_rxq_init(struct ieee80211_hw *hw, int index)
1159 1159
1160 size = MWL8K_RX_DESCS * priv->rxd_ops->rxd_size; 1160 size = MWL8K_RX_DESCS * priv->rxd_ops->rxd_size;
1161 1161
1162 rxq->rxd = pci_alloc_consistent(priv->pdev, size, &rxq->rxd_dma); 1162 rxq->rxd = pci_zalloc_consistent(priv->pdev, size, &rxq->rxd_dma);
1163 if (rxq->rxd == NULL) { 1163 if (rxq->rxd == NULL) {
1164 wiphy_err(hw->wiphy, "failed to alloc RX descriptors\n"); 1164 wiphy_err(hw->wiphy, "failed to alloc RX descriptors\n");
1165 return -ENOMEM; 1165 return -ENOMEM;
1166 } 1166 }
1167 memset(rxq->rxd, 0, size);
1168 1167
1169 rxq->buf = kcalloc(MWL8K_RX_DESCS, sizeof(*rxq->buf), GFP_KERNEL); 1168 rxq->buf = kcalloc(MWL8K_RX_DESCS, sizeof(*rxq->buf), GFP_KERNEL);
1170 if (rxq->buf == NULL) { 1169 if (rxq->buf == NULL) {
@@ -1451,12 +1450,11 @@ static int mwl8k_txq_init(struct ieee80211_hw *hw, int index)
1451 1450
1452 size = MWL8K_TX_DESCS * sizeof(struct mwl8k_tx_desc); 1451 size = MWL8K_TX_DESCS * sizeof(struct mwl8k_tx_desc);
1453 1452
1454 txq->txd = pci_alloc_consistent(priv->pdev, size, &txq->txd_dma); 1453 txq->txd = pci_zalloc_consistent(priv->pdev, size, &txq->txd_dma);
1455 if (txq->txd == NULL) { 1454 if (txq->txd == NULL) {
1456 wiphy_err(hw->wiphy, "failed to alloc TX descriptors\n"); 1455 wiphy_err(hw->wiphy, "failed to alloc TX descriptors\n");
1457 return -ENOMEM; 1456 return -ENOMEM;
1458 } 1457 }
1459 memset(txq->txd, 0, size);
1460 1458
1461 txq->skb = kcalloc(MWL8K_TX_DESCS, sizeof(*txq->skb), GFP_KERNEL); 1459 txq->skb = kcalloc(MWL8K_TX_DESCS, sizeof(*txq->skb), GFP_KERNEL);
1462 if (txq->skb == NULL) { 1460 if (txq->skb == NULL) {
diff --git a/drivers/net/wireless/rtl818x/rtl8180/dev.c b/drivers/net/wireless/rtl818x/rtl8180/dev.c
index 4b904f708184..fcc45e5bf50a 100644
--- a/drivers/net/wireless/rtl818x/rtl8180/dev.c
+++ b/drivers/net/wireless/rtl818x/rtl8180/dev.c
@@ -972,16 +972,13 @@ static int rtl8180_init_rx_ring(struct ieee80211_hw *dev)
972 else 972 else
973 priv->rx_ring_sz = sizeof(struct rtl8180_rx_desc); 973 priv->rx_ring_sz = sizeof(struct rtl8180_rx_desc);
974 974
975 priv->rx_ring = pci_alloc_consistent(priv->pdev, 975 priv->rx_ring = pci_zalloc_consistent(priv->pdev, priv->rx_ring_sz * 32,
976 priv->rx_ring_sz * 32, 976 &priv->rx_ring_dma);
977 &priv->rx_ring_dma);
978
979 if (!priv->rx_ring || (unsigned long)priv->rx_ring & 0xFF) { 977 if (!priv->rx_ring || (unsigned long)priv->rx_ring & 0xFF) {
980 wiphy_err(dev->wiphy, "Cannot allocate RX ring\n"); 978 wiphy_err(dev->wiphy, "Cannot allocate RX ring\n");
981 return -ENOMEM; 979 return -ENOMEM;
982 } 980 }
983 981
984 memset(priv->rx_ring, 0, priv->rx_ring_sz * 32);
985 priv->rx_idx = 0; 982 priv->rx_idx = 0;
986 983
987 for (i = 0; i < 32; i++) { 984 for (i = 0; i < 32; i++) {
@@ -1040,14 +1037,14 @@ static int rtl8180_init_tx_ring(struct ieee80211_hw *dev,
1040 dma_addr_t dma; 1037 dma_addr_t dma;
1041 int i; 1038 int i;
1042 1039
1043 ring = pci_alloc_consistent(priv->pdev, sizeof(*ring) * entries, &dma); 1040 ring = pci_zalloc_consistent(priv->pdev, sizeof(*ring) * entries,
1041 &dma);
1044 if (!ring || (unsigned long)ring & 0xFF) { 1042 if (!ring || (unsigned long)ring & 0xFF) {
1045 wiphy_err(dev->wiphy, "Cannot allocate TX ring (prio = %d)\n", 1043 wiphy_err(dev->wiphy, "Cannot allocate TX ring (prio = %d)\n",
1046 prio); 1044 prio);
1047 return -ENOMEM; 1045 return -ENOMEM;
1048 } 1046 }
1049 1047
1050 memset(ring, 0, sizeof(*ring)*entries);
1051 priv->tx_ring[prio].desc = ring; 1048 priv->tx_ring[prio].desc = ring;
1052 priv->tx_ring[prio].dma = dma; 1049 priv->tx_ring[prio].dma = dma;
1053 priv->tx_ring[prio].idx = 0; 1050 priv->tx_ring[prio].idx = 0;
diff --git a/drivers/net/wireless/rtlwifi/pci.c b/drivers/net/wireless/rtlwifi/pci.c
index dae55257f0e8..67d1ee6edcad 100644
--- a/drivers/net/wireless/rtlwifi/pci.c
+++ b/drivers/net/wireless/rtlwifi/pci.c
@@ -1092,16 +1092,14 @@ static int _rtl_pci_init_tx_ring(struct ieee80211_hw *hw,
1092 u32 nextdescaddress; 1092 u32 nextdescaddress;
1093 int i; 1093 int i;
1094 1094
1095 ring = pci_alloc_consistent(rtlpci->pdev, 1095 ring = pci_zalloc_consistent(rtlpci->pdev, sizeof(*ring) * entries,
1096 sizeof(*ring) * entries, &dma); 1096 &dma);
1097
1098 if (!ring || (unsigned long)ring & 0xFF) { 1097 if (!ring || (unsigned long)ring & 0xFF) {
1099 RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, 1098 RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG,
1100 "Cannot allocate TX ring (prio = %d)\n", prio); 1099 "Cannot allocate TX ring (prio = %d)\n", prio);
1101 return -ENOMEM; 1100 return -ENOMEM;
1102 } 1101 }
1103 1102
1104 memset(ring, 0, sizeof(*ring) * entries);
1105 rtlpci->tx_ring[prio].desc = ring; 1103 rtlpci->tx_ring[prio].desc = ring;
1106 rtlpci->tx_ring[prio].dma = dma; 1104 rtlpci->tx_ring[prio].dma = dma;
1107 rtlpci->tx_ring[prio].idx = 0; 1105 rtlpci->tx_ring[prio].idx = 0;
@@ -1139,10 +1137,9 @@ static int _rtl_pci_init_rx_ring(struct ieee80211_hw *hw)
1139 for (rx_queue_idx = 0; rx_queue_idx < RTL_PCI_MAX_RX_QUEUE; 1137 for (rx_queue_idx = 0; rx_queue_idx < RTL_PCI_MAX_RX_QUEUE;
1140 rx_queue_idx++) { 1138 rx_queue_idx++) {
1141 rtlpci->rx_ring[rx_queue_idx].desc = 1139 rtlpci->rx_ring[rx_queue_idx].desc =
1142 pci_alloc_consistent(rtlpci->pdev, 1140 pci_zalloc_consistent(rtlpci->pdev,
1143 sizeof(*rtlpci->rx_ring[rx_queue_idx]. 1141 sizeof(*rtlpci->rx_ring[rx_queue_idx].desc) * rtlpci->rxringcount,
1144 desc) * rtlpci->rxringcount, 1142 &rtlpci->rx_ring[rx_queue_idx].dma);
1145 &rtlpci->rx_ring[rx_queue_idx].dma);
1146 1143
1147 if (!rtlpci->rx_ring[rx_queue_idx].desc || 1144 if (!rtlpci->rx_ring[rx_queue_idx].desc ||
1148 (unsigned long)rtlpci->rx_ring[rx_queue_idx].desc & 0xFF) { 1145 (unsigned long)rtlpci->rx_ring[rx_queue_idx].desc & 0xFF) {
@@ -1151,10 +1148,6 @@ static int _rtl_pci_init_rx_ring(struct ieee80211_hw *hw)
1151 return -ENOMEM; 1148 return -ENOMEM;
1152 } 1149 }
1153 1150
1154 memset(rtlpci->rx_ring[rx_queue_idx].desc, 0,
1155 sizeof(*rtlpci->rx_ring[rx_queue_idx].desc) *
1156 rtlpci->rxringcount);
1157
1158 rtlpci->rx_ring[rx_queue_idx].idx = 0; 1151 rtlpci->rx_ring[rx_queue_idx].idx = 0;
1159 1152
1160 /* If amsdu_8k is disabled, set buffersize to 4096. This 1153 /* If amsdu_8k is disabled, set buffersize to 4096. This