diff options
Diffstat (limited to 'drivers/net')
| -rw-r--r-- | drivers/net/ethernet/amd/au1000_eth.c | 149 | ||||
| -rw-r--r-- | drivers/net/ethernet/amd/pcnet32.c | 45 | ||||
| -rw-r--r-- | drivers/net/ethernet/atheros/atl1e/atl1e_main.c | 7 | ||||
| -rw-r--r-- | drivers/net/ethernet/cisco/enic/vnic_dev.c | 8 | ||||
| -rw-r--r-- | drivers/net/ethernet/freescale/fs_enet/mac-fec.c | 1 | ||||
| -rw-r--r-- | drivers/net/ethernet/freescale/fs_enet/mac-scc.c | 1 | ||||
| -rw-r--r-- | drivers/net/ethernet/marvell/sky2.c | 5 | ||||
| -rw-r--r-- | drivers/net/ethernet/micrel/ksz884x.c | 7 | ||||
| -rw-r--r-- | drivers/net/ethernet/qlogic/netxen/netxen_nic_ctx.c | 4 | ||||
| -rw-r--r-- | drivers/net/ethernet/qlogic/qlge/qlge_main.c | 11 | ||||
| -rw-r--r-- | drivers/net/irda/au1k_ir.c | 48 | ||||
| -rw-r--r-- | drivers/net/irda/vlsi_ir.c | 4 | ||||
| -rw-r--r-- | drivers/net/wireless/ipw2x00/ipw2100.c | 16 | ||||
| -rw-r--r-- | drivers/net/wireless/mwl8k.c | 6 | ||||
| -rw-r--r-- | drivers/net/wireless/rtl818x/rtl8180/dev.c | 11 | ||||
| -rw-r--r-- | drivers/net/wireless/rtlwifi/pci.c | 17 |
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); | |||
| 89 | MODULE_LICENSE("GPL"); | 89 | MODULE_LICENSE("GPL"); |
| 90 | MODULE_VERSION(DRV_VERSION); | 90 | MODULE_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 | ||
| 279 | static void au1000_enable_rx_tx(struct net_device *dev) | 400 | static 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 | ||
| 292 | static void | 414 | static 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); |
| 525 | free_new_tx_ring: | 520 | free_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) | |||
| 2727 | static int ql_alloc_shadow_space(struct ql_adapter *qdev) | 2727 | static 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 | ||
| 2749 | err_wqp_sh_area: | 2748 | err_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 | ||
| 180 | static int qos_mtt_bits = 0x07; /* 1 ms or more */ | 182 | static int qos_mtt_bits = 0x07; /* 1 ms or more */ |
| @@ -514,9 +516,39 @@ static irqreturn_t au1k_irda_interrupt(int dummy, void *dev_id) | |||
| 514 | static int au1k_init(struct net_device *dev) | 516 | static 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 |
