#define TPD_INSTC_SET(tpd, val)                BITS_SET((tpd)->word[3], 17, 17, val)
 /* High-14bit Buffer Address, So, the 64b-bit address is
  * {DESC_CTRL_11_TX_DATA_HIADDR[17:0],(register) BUFFER_ADDR_H, BUFFER_ADDR_L}
+ * Extend TPD_BUFFER_ADDR_H to [31, 18], because we never enable timestamping.
  */
-#define TPD_BUFFER_ADDR_H_SET(tpd, val)        BITS_SET((tpd)->word[3], 18, 30, val)
+#define TPD_BUFFER_ADDR_H_SET(tpd, val)        BITS_SET((tpd)->word[3], 18, 31, val)
 /* Format D. Word offset from the 1st byte of this packet to start to calculate
  * the custom checksum.
  */
 
        u32 reg;
        int ret;
 
-       /* The TPD buffer address is limited to 45 bits. */
-       ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(45));
+       /* The TPD buffer address is limited to:
+        * 1. PTP:      45bits. (Driver doesn't support yet.)
+        * 2. NON-PTP:  46bits.
+        */
+       ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(46));
        if (ret) {
                dev_err(&pdev->dev, "could not set DMA mask\n");
                return ret;