* [PATCH v1 0/4] net: fec: Code cleanup
@ 2014-09-23 7:40 Fugang Duan
2014-09-23 7:40 ` [PATCH v1 1/4] net: fec: Add Ftype to BD to distiguish three tx queues for AVB Fugang Duan
` (4 more replies)
0 siblings, 5 replies; 10+ messages in thread
From: Fugang Duan @ 2014-09-23 7:40 UTC (permalink / raw)
To: davem; +Cc: netdev, b20596, b38611
This patches does several things:
- Fixing multiqueue issue.
- Removing the unnecessary errata workaround.
- Aligning the data buffer dma map/unmap size.
- Freeing resource after probe failed.
Fugang Duan (4):
net: fec: Add Ftype to BD to distiguish three tx queues for AVB
net: fec: remove the ERR006358 workaround for imx6sx enet
net: fec: align rx data buffer size for dma map/unmap
net: fec: free resource after phy probe failed
drivers/net/ethernet/freescale/fec.h | 1 +
drivers/net/ethernet/freescale/fec_main.c | 25 ++++++++++++++++++++-----
2 files changed, 21 insertions(+), 5 deletions(-)
--
1.7.8
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v1 1/4] net: fec: Add Ftype to BD to distiguish three tx queues for AVB
2014-09-23 7:40 [PATCH v1 0/4] net: fec: Code cleanup Fugang Duan
@ 2014-09-23 7:40 ` Fugang Duan
2014-09-23 7:40 ` [PATCH v1 2/4] net: fec: remove the ERR006358 workaround for imx6sx enet Fugang Duan
` (3 subsequent siblings)
4 siblings, 0 replies; 10+ messages in thread
From: Fugang Duan @ 2014-09-23 7:40 UTC (permalink / raw)
To: davem; +Cc: netdev, b20596, b38611
The current driver loss Ftype field init for BD, which cause tx
queue #1 and #2 cannot work well.
Add Ftype field to BD to distiguish three queues for AVB:
0 -> Best Effort
1 -> ClassA
2 -> ClassB
Signed-off-by: Fugang Duan <B38611@freescale.com>
---
drivers/net/ethernet/freescale/fec.h | 1 +
drivers/net/ethernet/freescale/fec_main.c | 11 +++++++++++
2 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/drivers/net/ethernet/freescale/fec.h b/drivers/net/ethernet/freescale/fec.h
index 26fb1de..354a309 100644
--- a/drivers/net/ethernet/freescale/fec.h
+++ b/drivers/net/ethernet/freescale/fec.h
@@ -308,6 +308,7 @@ struct bufdesc_ex {
#define RCMR_CMP_2 (RCMR_CMP_CFG(4, 0) | RCMR_CMP_CFG(5, 1) | \
RCMR_CMP_CFG(6, 2) | RCMR_CMP_CFG(7, 3))
#define RCMR_CMP(X) ((X == 1) ? RCMR_CMP_1 : RCMR_CMP_2)
+#define FEC_TX_BD_FTYPE(X) ((X & 0xF) << 20)
/* The number of Tx and Rx buffers. These are allocated from the page
* pool. The code may assume these are power of two, so it it best
diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
index 3a4ec0f..a0f21ce 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -426,6 +426,8 @@ fec_enet_txq_submit_frag_skb(struct fec_enet_priv_tx_q *txq,
}
if (fep->bufdesc_ex) {
+ if (id_entry->driver_data & FEC_QUIRK_HAS_AVB)
+ estatus |= FEC_TX_BD_FTYPE(queue);
if (skb->ip_summed == CHECKSUM_PARTIAL)
estatus |= BD_ENET_TX_PINS | BD_ENET_TX_IINS;
ebdp->cbd_bdu = 0;
@@ -555,6 +557,9 @@ static int fec_enet_txq_submit_skb(struct fec_enet_priv_tx_q *txq,
fep->hwts_tx_en))
skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;
+ if (id_entry->driver_data & FEC_QUIRK_HAS_AVB)
+ estatus |= FEC_TX_BD_FTYPE(queue);
+
if (skb->ip_summed == CHECKSUM_PARTIAL)
estatus |= BD_ENET_TX_PINS | BD_ENET_TX_IINS;
@@ -599,6 +604,7 @@ fec_enet_txq_put_data_tso(struct fec_enet_priv_tx_q *txq, struct sk_buff *skb,
const struct platform_device_id *id_entry =
platform_get_device_id(fep->pdev);
struct bufdesc_ex *ebdp = container_of(bdp, struct bufdesc_ex, desc);
+ unsigned short queue = skb_get_queue_mapping(skb);
unsigned short status;
unsigned int estatus = 0;
dma_addr_t addr;
@@ -629,6 +635,8 @@ fec_enet_txq_put_data_tso(struct fec_enet_priv_tx_q *txq, struct sk_buff *skb,
bdp->cbd_bufaddr = addr;
if (fep->bufdesc_ex) {
+ if (id_entry->driver_data & FEC_QUIRK_HAS_AVB)
+ estatus |= FEC_TX_BD_FTYPE(queue);
if (skb->ip_summed == CHECKSUM_PARTIAL)
estatus |= BD_ENET_TX_PINS | BD_ENET_TX_IINS;
ebdp->cbd_bdu = 0;
@@ -659,6 +667,7 @@ fec_enet_txq_put_hdr_tso(struct fec_enet_priv_tx_q *txq,
platform_get_device_id(fep->pdev);
int hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb);
struct bufdesc_ex *ebdp = container_of(bdp, struct bufdesc_ex, desc);
+ unsigned short queue = skb_get_queue_mapping(skb);
void *bufaddr;
unsigned long dmabuf;
unsigned short status;
@@ -692,6 +701,8 @@ fec_enet_txq_put_hdr_tso(struct fec_enet_priv_tx_q *txq,
bdp->cbd_datlen = hdr_len;
if (fep->bufdesc_ex) {
+ if (id_entry->driver_data & FEC_QUIRK_HAS_AVB)
+ estatus |= FEC_TX_BD_FTYPE(queue);
if (skb->ip_summed == CHECKSUM_PARTIAL)
estatus |= BD_ENET_TX_PINS | BD_ENET_TX_IINS;
ebdp->cbd_bdu = 0;
--
1.7.8
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v1 2/4] net: fec: remove the ERR006358 workaround for imx6sx enet
2014-09-23 7:40 [PATCH v1 0/4] net: fec: Code cleanup Fugang Duan
2014-09-23 7:40 ` [PATCH v1 1/4] net: fec: Add Ftype to BD to distiguish three tx queues for AVB Fugang Duan
@ 2014-09-23 7:40 ` Fugang Duan
2014-09-23 7:40 ` [PATCH v1 3/4] net: fec: align rx data buffer size for dma map/unmap Fugang Duan
` (2 subsequent siblings)
4 siblings, 0 replies; 10+ messages in thread
From: Fugang Duan @ 2014-09-23 7:40 UTC (permalink / raw)
To: davem; +Cc: netdev, b20596, b38611
Remove the ERR006358 workaround for imx6sx enet since the hw issue
was fixed on the SOC.
Signed-off-by: Fugang Duan <B38611@freescale.com>
---
drivers/net/ethernet/freescale/fec_main.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
index a0f21ce..e87a8e9 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -144,8 +144,8 @@ static struct platform_device_id fec_devtype[] = {
.name = "imx6sx-fec",
.driver_data = FEC_QUIRK_ENET_MAC | FEC_QUIRK_HAS_GBIT |
FEC_QUIRK_HAS_BUFDESC_EX | FEC_QUIRK_HAS_CSUM |
- FEC_QUIRK_HAS_VLAN | FEC_QUIRK_ERR006358 |
- FEC_QUIRK_HAS_AVB | FEC_QUIRK_ERR007885,
+ FEC_QUIRK_HAS_VLAN | FEC_QUIRK_HAS_AVB |
+ FEC_QUIRK_ERR007885,
}, {
/* sentinel */
}
--
1.7.8
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v1 3/4] net: fec: align rx data buffer size for dma map/unmap
2014-09-23 7:40 [PATCH v1 0/4] net: fec: Code cleanup Fugang Duan
2014-09-23 7:40 ` [PATCH v1 1/4] net: fec: Add Ftype to BD to distiguish three tx queues for AVB Fugang Duan
2014-09-23 7:40 ` [PATCH v1 2/4] net: fec: remove the ERR006358 workaround for imx6sx enet Fugang Duan
@ 2014-09-23 7:40 ` Fugang Duan
2014-09-23 7:40 ` [PATCH v1 4/4] net: fec: free resource after phy probe failed Fugang Duan
2014-09-26 20:06 ` [PATCH v1 0/4] net: fec: Code cleanup David Miller
4 siblings, 0 replies; 10+ messages in thread
From: Fugang Duan @ 2014-09-23 7:40 UTC (permalink / raw)
To: davem; +Cc: netdev, b20596, b38611
Align allocated rx data buffer size for dma map/unmap, otherwise
kernel print warning when enable DMA_API_DEBUG.
Signed-off-by: Fugang Duan <B38611@freescale.com>
---
drivers/net/ethernet/freescale/fec_main.c | 8 +++++---
1 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
index e87a8e9..3ce3567 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -1403,7 +1403,8 @@ fec_enet_rx_queue(struct net_device *ndev, int budget, u16 queue_id)
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);
@@ -1475,7 +1476,8 @@ fec_enet_rx_queue(struct net_device *ndev, int budget, u16 queue_id)
}
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;
@@ -2448,7 +2450,7 @@ static void fec_enet_free_buffers(struct net_device *ndev)
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);
}
--
1.7.8
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v1 4/4] net: fec: free resource after phy probe failed
2014-09-23 7:40 [PATCH v1 0/4] net: fec: Code cleanup Fugang Duan
` (2 preceding siblings ...)
2014-09-23 7:40 ` [PATCH v1 3/4] net: fec: align rx data buffer size for dma map/unmap Fugang Duan
@ 2014-09-23 7:40 ` Fugang Duan
2014-09-26 20:06 ` [PATCH v1 0/4] net: fec: Code cleanup David Miller
4 siblings, 0 replies; 10+ messages in thread
From: Fugang Duan @ 2014-09-23 7:40 UTC (permalink / raw)
To: davem; +Cc: netdev, b20596, b38611
Free memory and disable all related clocks when there has no phy
connection or phy probe failed.
Signed-off-by: Fugang Duan <B38611@freescale.com>
---
drivers/net/ethernet/freescale/fec_main.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
index 3ce3567..2b16ead 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -2675,6 +2675,8 @@ fec_enet_open(struct net_device *ndev)
ret = fec_enet_mii_probe(ndev);
if (ret) {
fec_enet_free_buffers(ndev);
+ fec_enet_clk_enable(ndev, false);
+ pinctrl_pm_select_sleep_state(&fep->pdev->dev);
return ret;
}
--
1.7.8
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v1 0/4] net: fec: Code cleanup
2014-09-23 7:40 [PATCH v1 0/4] net: fec: Code cleanup Fugang Duan
` (3 preceding siblings ...)
2014-09-23 7:40 ` [PATCH v1 4/4] net: fec: free resource after phy probe failed Fugang Duan
@ 2014-09-26 20:06 ` David Miller
2014-09-27 9:51 ` fugang.duan
4 siblings, 1 reply; 10+ messages in thread
From: David Miller @ 2014-09-26 20:06 UTC (permalink / raw)
To: b38611; +Cc: netdev, b20596
From: Fugang Duan <b38611@freescale.com>
Date: Tue, 23 Sep 2014 15:40:54 +0800
> This patches does several things:
> - Fixing multiqueue issue.
> - Removing the unnecessary errata workaround.
> - Aligning the data buffer dma map/unmap size.
> - Freeing resource after probe failed.
Series applied to net-next, thanks.
Please always explicitly state what tree you expect your patches to be
applied to in the future.
^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [PATCH v1 0/4] net: fec: Code cleanup
2014-09-26 20:06 ` [PATCH v1 0/4] net: fec: Code cleanup David Miller
@ 2014-09-27 9:51 ` fugang.duan
2014-09-27 22:55 ` David Miller
0 siblings, 1 reply; 10+ messages in thread
From: fugang.duan @ 2014-09-27 9:51 UTC (permalink / raw)
To: David Miller; +Cc: netdev@vger.kernel.org, Frank.Li@freescale.com
From: David Miller <davem@davemloft.net> Sent: Saturday, September 27, 2014 4:06 AM
>To: Duan Fugang-B38611
>Cc: netdev@vger.kernel.org; Li Frank-B20596
>Subject: Re: [PATCH v1 0/4] net: fec: Code cleanup
>
>From: Fugang Duan <b38611@freescale.com>
>Date: Tue, 23 Sep 2014 15:40:54 +0800
>
>> This patches does several things:
>> - Fixing multiqueue issue.
>> - Removing the unnecessary errata workaround.
>> - Aligning the data buffer dma map/unmap size.
>> - Freeing resource after probe failed.
>
>Series applied to net-next, thanks.
>
>Please always explicitly state what tree you expect your patches to be
>applied to in the future.
No special requirement, just follow the normal rel flow.
Thanks,
Andy
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v1 0/4] net: fec: Code cleanup
2014-09-27 9:51 ` fugang.duan
@ 2014-09-27 22:55 ` David Miller
2014-09-28 3:39 ` fugang.duan
0 siblings, 1 reply; 10+ messages in thread
From: David Miller @ 2014-09-27 22:55 UTC (permalink / raw)
To: fugang.duan; +Cc: netdev, Frank.Li
From: "fugang.duan@freescale.com" <fugang.duan@freescale.com>
Date: Sat, 27 Sep 2014 09:51:52 +0000
> From: David Miller <davem@davemloft.net> Sent: Saturday, September 27, 2014 4:06 AM
>>To: Duan Fugang-B38611
>>Cc: netdev@vger.kernel.org; Li Frank-B20596
>>Subject: Re: [PATCH v1 0/4] net: fec: Code cleanup
>>
>>From: Fugang Duan <b38611@freescale.com>
>>Date: Tue, 23 Sep 2014 15:40:54 +0800
>>
>>> This patches does several things:
>>> - Fixing multiqueue issue.
>>> - Removing the unnecessary errata workaround.
>>> - Aligning the data buffer dma map/unmap size.
>>> - Freeing resource after probe failed.
>>
>>Series applied to net-next, thanks.
>>
>>Please always explicitly state what tree you expect your patches to be
>>applied to in the future.
>
> No special requirement, just follow the normal rel flow.
That doesn't mean anything to me.
You must state what tree your patches apply properly to, and thus
where you expect them to be intergrated.
^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [PATCH v1 0/4] net: fec: Code cleanup
2014-09-27 22:55 ` David Miller
@ 2014-09-28 3:39 ` fugang.duan
2014-09-28 20:43 ` Florian Fainelli
0 siblings, 1 reply; 10+ messages in thread
From: fugang.duan @ 2014-09-28 3:39 UTC (permalink / raw)
To: David Miller; +Cc: netdev@vger.kernel.org, Frank.Li@freescale.com
From: David Miller <davem@davemloft.net> Sent: Sunday, September 28, 2014 6:55 AM
>To: Duan Fugang-B38611
>Cc: netdev@vger.kernel.org; Li Frank-B20596
>Subject: Re: [PATCH v1 0/4] net: fec: Code cleanup
>
>From: "fugang.duan@freescale.com" <fugang.duan@freescale.com>
>Date: Sat, 27 Sep 2014 09:51:52 +0000
>
>> From: David Miller <davem@davemloft.net> Sent: Saturday, September 27,
>> 2014 4:06 AM
>>>To: Duan Fugang-B38611
>>>Cc: netdev@vger.kernel.org; Li Frank-B20596
>>>Subject: Re: [PATCH v1 0/4] net: fec: Code cleanup
>>>
>>>From: Fugang Duan <b38611@freescale.com>
>>>Date: Tue, 23 Sep 2014 15:40:54 +0800
>>>
>>>> This patches does several things:
>>>> - Fixing multiqueue issue.
>>>> - Removing the unnecessary errata workaround.
>>>> - Aligning the data buffer dma map/unmap size.
>>>> - Freeing resource after probe failed.
>>>
>>>Series applied to net-next, thanks.
>>>
>>>Please always explicitly state what tree you expect your patches to be
>>>applied to in the future.
>>
>> No special requirement, just follow the normal rel flow.
>
>That doesn't mean anything to me.
>
>You must state what tree your patches apply properly to, and thus where
>you expect them to be intergrated.
I see. It is better let them enter to 3.17 (rc7).
Thanks,
Andy
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v1 0/4] net: fec: Code cleanup
2014-09-28 3:39 ` fugang.duan
@ 2014-09-28 20:43 ` Florian Fainelli
0 siblings, 0 replies; 10+ messages in thread
From: Florian Fainelli @ 2014-09-28 20:43 UTC (permalink / raw)
To: fugang.duan@freescale.com, David Miller
Cc: netdev@vger.kernel.org, Frank.Li@freescale.com
On 09/27/14 20:39, fugang.duan@freescale.com wrote:
> From: David Miller <davem@davemloft.net> Sent: Sunday, September 28, 2014 6:55 AM
>> To: Duan Fugang-B38611
>> Cc: netdev@vger.kernel.org; Li Frank-B20596
>> Subject: Re: [PATCH v1 0/4] net: fec: Code cleanup
>>
>> From: "fugang.duan@freescale.com" <fugang.duan@freescale.com>
>> Date: Sat, 27 Sep 2014 09:51:52 +0000
>>
>>> From: David Miller <davem@davemloft.net> Sent: Saturday, September 27,
>>> 2014 4:06 AM
>>>> To: Duan Fugang-B38611
>>>> Cc: netdev@vger.kernel.org; Li Frank-B20596
>>>> Subject: Re: [PATCH v1 0/4] net: fec: Code cleanup
>>>>
>>>> From: Fugang Duan <b38611@freescale.com>
>>>> Date: Tue, 23 Sep 2014 15:40:54 +0800
>>>>
>>>>> This patches does several things:
>>>>> - Fixing multiqueue issue.
>>>>> - Removing the unnecessary errata workaround.
>>>>> - Aligning the data buffer dma map/unmap size.
>>>>> - Freeing resource after probe failed.
>>>>
>>>> Series applied to net-next, thanks.
>>>>
>>>> Please always explicitly state what tree you expect your patches to be
>>>> applied to in the future.
>>>
>>> No special requirement, just follow the normal rel flow.
>>
>> That doesn't mean anything to me.
>>
>> You must state what tree your patches apply properly to, and thus where
>> you expect them to be intergrated.
>
> I see. It is better let them enter to 3.17 (rc7).
They are not bugfixes, so they should target David's net-next tree,
which will be pulled by Linus during the v3.18 merge window in the next
few days.
Stuff that really needs to be fixed for 3.17 need to target David's net
tree.
--
Florian
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2014-09-28 20:43 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-09-23 7:40 [PATCH v1 0/4] net: fec: Code cleanup Fugang Duan
2014-09-23 7:40 ` [PATCH v1 1/4] net: fec: Add Ftype to BD to distiguish three tx queues for AVB Fugang Duan
2014-09-23 7:40 ` [PATCH v1 2/4] net: fec: remove the ERR006358 workaround for imx6sx enet Fugang Duan
2014-09-23 7:40 ` [PATCH v1 3/4] net: fec: align rx data buffer size for dma map/unmap Fugang Duan
2014-09-23 7:40 ` [PATCH v1 4/4] net: fec: free resource after phy probe failed Fugang Duan
2014-09-26 20:06 ` [PATCH v1 0/4] net: fec: Code cleanup David Miller
2014-09-27 9:51 ` fugang.duan
2014-09-27 22:55 ` David Miller
2014-09-28 3:39 ` fugang.duan
2014-09-28 20:43 ` Florian Fainelli
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).