u32 nextdescaddress;
        int i;
 
-       ring = pci_alloc_consistent(rtlpci->pdev,
-                                   sizeof(*ring) * entries, &dma);
-
+       ring = pci_zalloc_consistent(rtlpci->pdev, sizeof(*ring) * entries,
+                                    &dma);
        if (!ring || (unsigned long)ring & 0xFF) {
                RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG,
                         "Cannot allocate TX ring (prio = %d)\n", prio);
                return -ENOMEM;
        }
 
-       memset(ring, 0, sizeof(*ring) * entries);
        rtlpci->tx_ring[prio].desc = ring;
        rtlpci->tx_ring[prio].dma = dma;
        rtlpci->tx_ring[prio].idx = 0;
        for (rx_queue_idx = 0; rx_queue_idx < RTL_PCI_MAX_RX_QUEUE;
             rx_queue_idx++) {
                rtlpci->rx_ring[rx_queue_idx].desc =
-                   pci_alloc_consistent(rtlpci->pdev,
-                                        sizeof(*rtlpci->rx_ring[rx_queue_idx].
-                                               desc) * rtlpci->rxringcount,
-                                        &rtlpci->rx_ring[rx_queue_idx].dma);
+                       pci_zalloc_consistent(rtlpci->pdev,
+                                             sizeof(*rtlpci->rx_ring[rx_queue_idx].desc) * rtlpci->rxringcount,
+                                             &rtlpci->rx_ring[rx_queue_idx].dma);
 
                if (!rtlpci->rx_ring[rx_queue_idx].desc ||
                    (unsigned long)rtlpci->rx_ring[rx_queue_idx].desc & 0xFF) {
                        return -ENOMEM;
                }
 
-               memset(rtlpci->rx_ring[rx_queue_idx].desc, 0,
-                      sizeof(*rtlpci->rx_ring[rx_queue_idx].desc) *
-                      rtlpci->rxringcount);
-
                rtlpci->rx_ring[rx_queue_idx].idx = 0;
 
                /* If amsdu_8k is disabled, set buffersize to 4096. This