stmmac: fix memory barriers
Subsystems (4)
PATCH 1/1 stmmac: fix memory barriers
Fix up memory barriers in stmmac driver. They are meant to protect against DMA engine, so smp_ variants are certainly wrong, and dma_ variants are preferable.
drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c +2 -2
@@ -334,7 +334,7 @@ static void dwmac4_rd_prepare_tx_desc(struct dma_desc *p, int is_fs, int len,* descriptors for the same frame has to be set before, to * avoid race condition. */ -wmb (); +dma_wmb (); p->des3 =cpu_to_le32 (tdes3); }
@@ -377,7 +377,7 @@ static void dwmac4_rd_prepare_tso_tx_desc(struct dma_desc *p, int is_fs,* descriptors for the same frame has to be set before, to * avoid race condition. */ -wmb (); +dma_wmb (); p->des3 =cpu_to_le32 (tdes3); }
drivers/net/ethernet/stmicro/stmmac/enh_desc.c +1 -1
@@ -350,7 +350,7 @@ static void enh_desc_prepare_tx_desc(struct dma_desc *p, int is_fs, int len,* descriptors for the same frame has to be set before, to * avoid race condition. */ -wmb (); +dma_wmb (); p->des0 =cpu_to_le32 (tdes0); }
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +4 -4
@@ -2125,7 +2125,7 @@ static netdev_tx_t stmmac_tso_xmit(struct sk_buff *skb, struct net_device *dev)* descriptor and then barrier is needed to make sure that * all is coherent before granting the DMA engine. */ -smp_wmb (); +dma_wmb ();if (netif_msg_pktdata (priv)) { pr_info("%s: curr=%d dirty=%d f=%d, e=%d, f_p=%p, nfrags %d\n",
@@ -2338,7 +2338,7 @@ static netdev_tx_t stmmac_xmit(struct sk_buff *skb, struct net_device *dev)* descriptor and then barrier is needed to make sure that * all is coherent before granting the DMA engine. */ -smp_wmb (); +dma_wmb (); }netdev_sent_queue (dev, skb->len);
@@ -2443,14 +2443,14 @@ static inline void stmmac_rx_refill(struct stmmac_priv *priv)netif_dbg (priv, rx_status, priv->dev,"refill entry #%d\n" , entry); } -wmb (); +dma_wmb ();if (unlikely (priv->synopsys_id >=DWMAC_CORE_4_00 )) priv->hw->desc->init_rx_desc (p, priv->use_riwt,0 ,0 );else priv->hw->desc->set_rx_owner (p); -wmb (); +dma_wmb (); entry =STMMAC_GET_ENTRY (entry,DMA_RX_SIZE ); }
Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Quoted 81 lines · Pavel Machek
Fix up memory barriers in stmmac driver. They are meant to protect against DMA engine, so
smp_variants are certainly wrong, anddma_variants are preferable.Signed-off-by Pavel Machek <[email protected]>drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c +2
-2@@ -334,7 +334,7 @@ static void dwmac4_rd_prepare_tx_desc(struct dma_desc *p, int is_fs, int len,* descriptors for the same frame has to be set before, to * avoid race condition. */ -wmb (); +dma_wmb (); p->des3 =cpu_to_le32 (tdes3); }@@ -377,7 +377,7 @@ static void dwmac4_rd_prepare_tso_tx_desc(struct dma_desc *p, int is_fs,* descriptors for the same frame has to be set before, to * avoid race condition. */ -wmb (); +dma_wmb (); p->des3 =cpu_to_le32 (tdes3); }drivers/net/ethernet/stmicro/stmmac/enh_desc.c +1
-1@@ -350,7 +350,7 @@ static void enh_desc_prepare_tx_desc(struct dma_desc *p, int is_fs, int len,* descriptors for the same frame has to be set before, to * avoid race condition. */ -wmb (); +dma_wmb (); p->des0 =cpu_to_le32 (tdes0); }drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +4
-4@@ -2125,7 +2125,7 @@ static netdev_tx_t stmmac_tso_xmit(struct sk_buff *skb, struct net_device *dev)* descriptor and then barrier is needed to make sure that * all is coherent before granting the DMA engine. */ -smp_wmb (); +dma_wmb ();if (netif_msg_pktdata (priv)) { pr_info("%s: curr=%d dirty=%d f=%d, e=%d, f_p=%p, nfrags %d\n",@@ -2338,7 +2338,7 @@ static netdev_tx_t stmmac_xmit(struct sk_buff *skb, struct net_device *dev)* descriptor and then barrier is needed to make sure that * all is coherent before granting the DMA engine. */ -smp_wmb (); +dma_wmb (); }netdev_sent_queue (dev, skb->len);@@ -2443,14 +2443,14 @@ static inline void stmmac_rx_refill(struct stmmac_priv *priv)netif_dbg (priv, rx_status, priv->dev,"refill entry #%d\n" , entry); } -wmb (); +dma_wmb ();if (unlikely (priv->synopsys_id >=DWMAC_CORE_4_00 )) priv->hw->desc->init_rx_desc (p, priv->use_riwt,0 ,0 );else priv->hw->desc->set_rx_owner (p); -wmb (); +dma_wmb (); entry =STMMAC_GET_ENTRY (entry,DMA_RX_SIZE ); }
Quoted 6 lines · Pavel Machek
Fix up memory barriers in stmmac driver. They are meant to protect against DMA engine, so
smp_variants are certainly wrong, anddma_variants are preferable.Signed-off-by Pavel Machek <[email protected]>
Quoted 76 lines
drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c +2
-2@@ -334,7 +334,7 @@ static void dwmac4_rd_prepare_tx_desc(struct dma_desc *p, int is_fs, int len,* descriptors for the same frame has to be set before, to * avoid race condition. */ -wmb (); +dma_wmb (); p->des3 =cpu_to_le32 (tdes3); }@@ -377,7 +377,7 @@ static void dwmac4_rd_prepare_tso_tx_desc(struct dma_desc *p, int is_fs,* descriptors for the same frame has to be set before, to * avoid race condition. */ -wmb (); +dma_wmb (); p->des3 =cpu_to_le32 (tdes3); }drivers/net/ethernet/stmicro/stmmac/enh_desc.c +1
-1@@ -350,7 +350,7 @@ static void enh_desc_prepare_tx_desc(struct dma_desc *p, int is_fs, int len,* descriptors for the same frame has to be set before, to * avoid race condition. */ -wmb (); +dma_wmb (); p->des0 =cpu_to_le32 (tdes0); }drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +4
-4@@ -2125,7 +2125,7 @@ static netdev_tx_t stmmac_tso_xmit(struct sk_buff *skb, struct net_device *dev)* descriptor and then barrier is needed to make sure that * all is coherent before granting the DMA engine. */ -smp_wmb (); +dma_wmb ();if (netif_msg_pktdata (priv)) { pr_info("%s: curr=%d dirty=%d f=%d, e=%d, f_p=%p, nfrags %d\n",@@ -2338,7 +2338,7 @@ static netdev_tx_t stmmac_xmit(struct sk_buff *skb, struct net_device *dev)* descriptor and then barrier is needed to make sure that * all is coherent before granting the DMA engine. */ -smp_wmb (); +dma_wmb (); }netdev_sent_queue (dev, skb->len);@@ -2443,14 +2443,14 @@ static inline void stmmac_rx_refill(struct stmmac_priv *priv)netif_dbg (priv, rx_status, priv->dev,"refill entry #%d\n" , entry); } -wmb (); +dma_wmb ();if (unlikely (priv->synopsys_id >=DWMAC_CORE_4_00 )) priv->hw->desc->init_rx_desc (p, priv->use_riwt,0 ,0 );else priv->hw->desc->set_rx_owner (p); -wmb (); +dma_wmb (); entry =STMMAC_GET_ENTRY (entry,DMA_RX_SIZE ); }
From: Pavel Machek <[email protected]>
Date: Sun, 18 Dec 2016 21:38:12 +0100
Quoted 5 lines
Fix up memory barriers in stmmac driver. They are meant to protect against DMA engine, so
smp_variants are certainly wrong, anddma_variants are preferable.Signed-off-by Pavel Machek <[email protected]>
Applied.
Hi,
I am trying to built net-next git tree and it is failing:
CC drivers/pnp/card.odrivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_hw_fix_mac_speed’:drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:224:34: error: ‘struct stmmac_priv’ has no member named ‘phydev’
struct phy_device *phydev = priv->phydev;
^
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_eee_init’:
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:298:24: error: ‘struct
stmmac_priv’ has no member named ‘phydev’
if (phy_init_eee(priv->phydev, 1)) {
^
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:330:44: error: ‘struct
stmmac_priv’ has no member named ‘phydev’
priv->hw->mac->set_eee_pls(priv->hw, priv->phydev->link);
^drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_init_ptp’:drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:672:2: error: void value not ignored as it ought to be
return stmmac_ptp_register(priv);
^drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_adjust_link’:drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:694:34: error: ‘struct stmmac_priv’ has no member named ‘phydev’
struct phy_device *phydev = priv->phydev;
^
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_init_phy’:
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:884:6: error: ‘struct
stmmac_priv’ has no member named ‘phydev’
priv->phydev = phydev;
^drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_open’:drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1810:10: error: ‘struct stmmac_priv’ has no member named ‘phydev’
if (priv->phydev)
^
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1811:17: error: ‘struct
stmmac_priv’ has no member named ‘phydev’
phy_start(priv->phydev);
^
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1858:10: error: ‘struct
stmmac_priv’ has no member named ‘phydev’
if (priv->phydev)
^
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1859:22: error: ‘struct
stmmac_priv’ has no member named ‘phydev’
phy_disconnect(priv->phydev);
^
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_release’:
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1878:10: error: ‘struct
stmmac_priv’ has no member named ‘phydev’
if (priv->phydev) {
^
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1879:16: error: ‘struct
stmmac_priv’ has no member named ‘phydev’
phy_stop(priv->phydev);
^
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1880:22: error: ‘struct
stmmac_priv’ has no member named ‘phydev’
phy_disconnect(priv->phydev);
^
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1881:7: error: ‘struct
stmmac_priv’ has no member named ‘phydev’
priv->phydev = NULL;
^drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_ioctl’:drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:2883:12: error: ‘struct stmmac_priv’ has no member named ‘phydev’
if (!priv->phydev)
^
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:2885:27: error: ‘struct
stmmac_priv’ has no member named ‘phydev’
ret = phy_mii_ioctl(priv->phydev, rq, cmd);
^drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_suspend’:drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:3438:10: error: ‘struct stmmac_priv’ has no member named ‘phydev’
if (priv->phydev)
^
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:3439:16: error: ‘struct
stmmac_priv’ has no member named ‘phydev’
phy_stop(priv->phydev);
^drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_resume’:drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:3533:10: error: ‘struct stmmac_priv’ has no member named ‘phydev’
if (priv->phydev)
^
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:3534:17: error: ‘struct
stmmac_priv’ has no member named ‘phydev’
phy_start(priv->phydev);
^drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_init_ptp’:drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:673:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
CC drivers/pnp/driver.o
make[5]: *** [drivers/net/ethernet/stmicro/stmmac/stmmac_main.o] Error 1 make[4]: *** [drivers/net/ethernet/stmicro/stmmac] Error 2
make[3]: *** [drivers/net/ethernet/stmicro] Error 2
make[3]: *** Waiting for unfinished jobs....
CC drivers/pnp/resource.o
Thanks,
Joao
Às 4:06 PM de 12/19/2016, David Miller escreveu:
Quoted 11 lines
From: Pavel Machek <[email protected]>
Date: Sun, 18 Dec 2016 21:38:12 +0100Quoted 5 lines
Fix up memory barriers in stmmac driver. They are meant to protect against DMA engine, so
smp_variants are certainly wrong, anddma_variants are preferable.Signed-off-by Pavel Machek <[email protected]>Applied.
Quoted 10 lines · Joao Pinto
Hi,
I am trying to built net-next git tree and it is failing:
CC
drivers/pnp/card.odrivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_hw_fix_mac_speed’:drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:224:34: error: ‘struct stmmac_priv’ has no member named ‘phydev’
structphy_device*phydev =priv->phydev;
Are you really building net-next?
http://git.kernel.org/cgit/linux/kernel/git/davem/net-next.git/tree/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c#n224
The phy_device initializer does not appear to match your output.
Quoted 112 lines
^ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_eee_init’: drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:298:24: error: ‘struct stmmac_priv’ has no member named ‘phydev’ if (phy_init_eee(priv->phydev, 1)) { ^ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:330:44: error: ‘struct stmmac_priv’ has no member named ‘phydev’ priv->hw->mac->set_eee_pls(priv->hw, priv->phydev->link); ^
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_init_ptp’:drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:672:2: error: void value not ignored as it ought to be
returnstmmac_ptp_register(priv);
^drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_adjust_link’:drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:694:34: error: ‘struct stmmac_priv’ has no member named ‘phydev’struct phy_device *phydev = priv->phydev; ^ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_init_phy’: drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:884:6: error: ‘struct stmmac_priv’ has no member named ‘phydev’ priv->phydev = phydev; ^
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_open’:drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1810:10: error: ‘struct stmmac_priv’ has no member named ‘phydev’
if (priv->phydev)^ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1811:17: error: ‘struct stmmac_priv’ has no member named ‘phydev’ phy_start(priv->phydev); ^ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1858:10: error: ‘struct stmmac_priv’ has no member named ‘phydev’ if (priv->phydev) ^ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1859:22: error: ‘struct stmmac_priv’ has no member named ‘phydev’ phy_disconnect(priv->phydev); ^ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_release’: drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1878:10: error: ‘struct stmmac_priv’ has no member named ‘phydev’ if (priv->phydev) { ^ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1879:16: error: ‘struct stmmac_priv’ has no member named ‘phydev’ phy_stop(priv->phydev); ^ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1880:22: error: ‘struct stmmac_priv’ has no member named ‘phydev’ phy_disconnect(priv->phydev); ^ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1881:7: error: ‘struct stmmac_priv’ has no member named ‘phydev’ priv->phydev = NULL; ^
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_ioctl’:drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:2883:12: error: ‘struct stmmac_priv’ has no member named ‘phydev’
if (!priv->phydev)^ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:2885:27: error: ‘struct stmmac_priv’ has no member named ‘phydev’ ret = phy_mii_ioctl(priv->phydev, rq, cmd); ^
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_suspend’:drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:3438:10: error: ‘struct stmmac_priv’ has no member named ‘phydev’
if (priv->phydev)^ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:3439:16: error: ‘struct stmmac_priv’ has no member named ‘phydev’ phy_stop(priv->phydev); ^
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_resume’:drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:3533:10: error: ‘struct stmmac_priv’ has no member named ‘phydev’
if (priv->phydev)^ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:3534:17: error: ‘struct stmmac_priv’ has no member named ‘phydev’ phy_start(priv->phydev); ^
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_init_ptp’:drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:673:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
CCdrivers/pnp/driver.o
make[5]: *** [drivers/net/ethernet/stmicro/stmmac/stmmac_main.o] Error 1 make[4]: *** [drivers/net/ethernet/stmicro/stmmac] Error 2
make[3]: *** [drivers/net/ethernet/stmicro] Error 2
make[3]: *** Waiting for unfinished jobs....
CCdrivers/pnp/resource.oThanks,
JoaoÀs 4:06 PM de 12/19/2016, David Miller escreveu:
Quoted 10 lines
From: Pavel Machek <[email protected]>
Date: Sun, 18 Dec 2016 21:38:12 +0100Quoted 5 lines
Fix up memory barriers in stmmac driver. They are meant to protect against DMA engine, so
smp_variants are certainly wrong, anddma_variants are preferable.Signed-off-by Pavel Machek <[email protected]>Applied.
Às 5:19 PM de 12/19/2016, Niklas Cassel escreveu:
Quoted 12 lines · Joao Pinto
Quoted 10 lines
Hi,
I am trying to built net-next git tree and it is failing:
CC
drivers/pnp/card.odrivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_hw_fix_mac_speed’:drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:224:34: error: ‘struct stmmac_priv’ has no member named ‘phydev’
structphy_device*phydev =priv->phydev;
Quoted 4 lines
The
phy_deviceinitializer does not appear to match your output.
Spookie! The fetch process left half merge! I will try it again! Thanks!
Quoted 114 lines
Quoted 113 lines
^ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_eee_init’: drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:298:24: error: ‘struct stmmac_priv’ has no member named ‘phydev’ if (phy_init_eee(priv->phydev, 1)) { ^ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:330:44: error: ‘struct stmmac_priv’ has no member named ‘phydev’ priv->hw->mac->set_eee_pls(priv->hw, priv->phydev->link); ^
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_init_ptp’:drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:672:2: error: void value not ignored as it ought to be
returnstmmac_ptp_register(priv);
^drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_adjust_link’:drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:694:34: error: ‘struct stmmac_priv’ has no member named ‘phydev’struct phy_device *phydev = priv->phydev; ^ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_init_phy’: drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:884:6: error: ‘struct stmmac_priv’ has no member named ‘phydev’ priv->phydev = phydev; ^
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_open’:drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1810:10: error: ‘struct stmmac_priv’ has no member named ‘phydev’
if (priv->phydev)^ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1811:17: error: ‘struct stmmac_priv’ has no member named ‘phydev’ phy_start(priv->phydev); ^ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1858:10: error: ‘struct stmmac_priv’ has no member named ‘phydev’ if (priv->phydev) ^ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1859:22: error: ‘struct stmmac_priv’ has no member named ‘phydev’ phy_disconnect(priv->phydev); ^ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_release’: drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1878:10: error: ‘struct stmmac_priv’ has no member named ‘phydev’ if (priv->phydev) { ^ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1879:16: error: ‘struct stmmac_priv’ has no member named ‘phydev’ phy_stop(priv->phydev); ^ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1880:22: error: ‘struct stmmac_priv’ has no member named ‘phydev’ phy_disconnect(priv->phydev); ^ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1881:7: error: ‘struct stmmac_priv’ has no member named ‘phydev’ priv->phydev = NULL; ^
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_ioctl’:drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:2883:12: error: ‘struct stmmac_priv’ has no member named ‘phydev’
if (!priv->phydev)^ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:2885:27: error: ‘struct stmmac_priv’ has no member named ‘phydev’ ret = phy_mii_ioctl(priv->phydev, rq, cmd); ^
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_suspend’:drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:3438:10: error: ‘struct stmmac_priv’ has no member named ‘phydev’
if (priv->phydev)^ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:3439:16: error: ‘struct stmmac_priv’ has no member named ‘phydev’ phy_stop(priv->phydev); ^
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_resume’:drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:3533:10: error: ‘struct stmmac_priv’ has no member named ‘phydev’
if (priv->phydev)^ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:3534:17: error: ‘struct stmmac_priv’ has no member named ‘phydev’ phy_start(priv->phydev); ^
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function ‘stmmac_init_ptp’:drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:673:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
CCdrivers/pnp/driver.o
make[5]: *** [drivers/net/ethernet/stmicro/stmmac/stmmac_main.o] Error 1 make[4]: *** [drivers/net/ethernet/stmicro/stmmac] Error 2
make[3]: *** [drivers/net/ethernet/stmicro] Error 2
make[3]: *** Waiting for unfinished jobs....
CCdrivers/pnp/resource.oThanks,
JoaoÀs 4:06 PM de 12/19/2016, David Miller escreveu:
Quoted 10 lines
From: Pavel Machek <[email protected]>
Date: Sun, 18 Dec 2016 21:38:12 +0100Quoted 5 lines
Fix up memory barriers in stmmac driver. They are meant to protect against DMA engine, so
smp_variants are certainly wrong, anddma_variants are preferable.Signed-off-by Pavel Machek <[email protected]>Applied.