--- a/drivers/net/ethernet/lantiq_etop.c +++ b/drivers/net/ethernet/lantiq_etop.c @@ -190,8 +190,12 @@ ltq_etop_hw_receive(struct ltq_etop_chan skb_put(skb, len); skb->dev = ch->netdev; - skb->protocol = eth_type_trans(skb, ch->netdev); - netif_receive_skb(skb); + if (priv->phydev && priv->phydev->netif_receive_skb) { + priv->phydev->netif_receive_skb(skb); + } else { + skb->protocol = eth_type_trans(skb, ch->netdev); + netif_receive_skb(skb); + } } static int