netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [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).