--- zzzz-none-000/linux-2.6.32.61/drivers/net/phy/phy_device.c 2013-06-10 09:43:48.000000000 +0000 +++ ar9-7330-650/linux-2.6.32.61/drivers/net/phy/phy_device.c 2011-07-20 07:23:51.000000000 +0000 @@ -146,6 +146,18 @@ } EXPORT_SYMBOL(phy_scan_fixups); +static int generic_receive_skb(struct sk_buff *skb) +{ + skb->protocol = eth_type_trans(skb, skb->dev); + return netif_receive_skb(skb); +} + +static int generic_rx(struct sk_buff *skb) +{ + skb->protocol = eth_type_trans(skb, skb->dev); + return netif_rx(skb); +} + struct phy_device* phy_device_create(struct mii_bus *bus, int addr, int phy_id) { struct phy_device *dev; @@ -175,6 +187,8 @@ dev_set_name(&dev->dev, PHY_ID_FMT, bus->id, addr); dev->state = PHY_DOWN; + dev->netif_receive_skb = &generic_receive_skb; + dev->netif_rx = &generic_rx; mutex_init(&dev->lock);