/* Assignment of Tx CTRP of given queue */
        tx_curr_desc = pep->tx_curr_desc_q;
        wrl(pep, ETH_C_TX_DESC_1,
-           (u32) ((struct tx_desc *)pep->tx_desc_dma + tx_curr_desc));
+           (u32) (pep->tx_desc_dma + tx_curr_desc * sizeof(struct tx_desc)));
 
        /* Assignment of Rx CRDP of given queue */
        rx_curr_desc = pep->rx_curr_desc_q;
        wrl(pep, ETH_C_RX_DESC_0,
-           (u32) ((struct rx_desc *)pep->rx_desc_dma + rx_curr_desc));
+           (u32) (pep->rx_desc_dma + rx_curr_desc * sizeof(struct rx_desc)));
 
        wrl(pep, ETH_F_RX_DESC_0,
-           (u32) ((struct rx_desc *)pep->rx_desc_dma + rx_curr_desc));
+           (u32) (pep->rx_desc_dma + rx_curr_desc * sizeof(struct rx_desc)));
 
        /* Clear all interrupts */
        wrl(pep, INT_CAUSE, 0);