index = fec_enet_get_bd_index(rxq->rx_bd_base, bdp, fep);
                data = rxq->rx_skbuff[index]->data;
                dma_sync_single_for_cpu(&fep->pdev->dev, bdp->cbd_bufaddr,
-                                       FEC_ENET_RX_FRSIZE, DMA_FROM_DEVICE);
+                                       FEC_ENET_RX_FRSIZE - fep->rx_align,
+                                       DMA_FROM_DEVICE);
 
                if (id_entry->driver_data & FEC_QUIRK_SWAP_FRAME)
                        swap_buffer(data, pkt_len);
                }
 
                dma_sync_single_for_device(&fep->pdev->dev, bdp->cbd_bufaddr,
-                                       FEC_ENET_RX_FRSIZE, DMA_FROM_DEVICE);
+                                          FEC_ENET_RX_FRSIZE - fep->rx_align,
+                                          DMA_FROM_DEVICE);
 rx_processing_done:
                /* Clear the status flags for this buffer */
                status &= ~BD_ENET_RX_STATS;
                        if (skb) {
                                dma_unmap_single(&fep->pdev->dev,
                                                 bdp->cbd_bufaddr,
-                                                FEC_ENET_RX_FRSIZE,
+                                                FEC_ENET_RX_FRSIZE - fep->rx_align,
                                                 DMA_FROM_DEVICE);
                                dev_kfree_skb(skb);
                        }