|
@@ -648,6 +648,8 @@ static int mtk_tx_map(struct sk_buff *skb, struct net_device *dev,
|
|
|
|
|
|
WRITE_ONCE(itxd->txd1, mapped_addr);
|
|
|
itx_buf->flags |= MTK_TX_FLAGS_SINGLE0;
|
|
|
+ itx_buf->flags |= (!mac->id) ? MTK_TX_FLAGS_FPORT0 :
|
|
|
+ MTK_TX_FLAGS_FPORT1;
|
|
|
dma_unmap_addr_set(itx_buf, dma_addr0, mapped_addr);
|
|
|
dma_unmap_len_set(itx_buf, dma_len0, skb_headlen(skb));
|
|
|
|
|
@@ -689,6 +691,9 @@ static int mtk_tx_map(struct sk_buff *skb, struct net_device *dev,
|
|
|
memset(tx_buf, 0, sizeof(*tx_buf));
|
|
|
tx_buf->skb = (struct sk_buff *)MTK_DMA_DUMMY_DESC;
|
|
|
tx_buf->flags |= MTK_TX_FLAGS_PAGE0;
|
|
|
+ tx_buf->flags |= (!mac->id) ? MTK_TX_FLAGS_FPORT0 :
|
|
|
+ MTK_TX_FLAGS_FPORT1;
|
|
|
+
|
|
|
dma_unmap_addr_set(tx_buf, dma_addr0, mapped_addr);
|
|
|
dma_unmap_len_set(tx_buf, dma_len0, frag_map_size);
|
|
|
frag_size -= frag_map_size;
|
|
@@ -1011,17 +1016,16 @@ static int mtk_poll_tx(struct mtk_eth *eth, int budget)
|
|
|
|
|
|
while ((cpu != dma) && budget) {
|
|
|
u32 next_cpu = desc->txd2;
|
|
|
- int mac;
|
|
|
+ int mac = 0;
|
|
|
|
|
|
desc = mtk_qdma_phys_to_virt(ring, desc->txd2);
|
|
|
if ((desc->txd3 & TX_DMA_OWNER_CPU) == 0)
|
|
|
break;
|
|
|
|
|
|
- mac = (desc->txd4 >> TX_DMA_FPORT_SHIFT) &
|
|
|
- TX_DMA_FPORT_MASK;
|
|
|
- mac--;
|
|
|
-
|
|
|
tx_buf = mtk_desc_to_tx_buf(ring, desc);
|
|
|
+ if (tx_buf->flags & MTK_TX_FLAGS_FPORT1)
|
|
|
+ mac = 1;
|
|
|
+
|
|
|
skb = tx_buf->skb;
|
|
|
if (!skb) {
|
|
|
condition = 1;
|