--- a/drivers/net/ethernet/ar231x/ar231x.c
+++ b/drivers/net/ethernet/ar231x/ar231x.c
@@ -1291,7 +1291,7 @@ static int ar231x_mdiobus_probe (struct
 	BUG_ON(!phydev);
 	BUG_ON(phydev->attached_dev);
 
-	phydev = phy_connect(dev, dev_name(&phydev->dev), &ar231x_adjust_link, 0,
+	phydev = phy_connect(dev, dev_name(&phydev->dev), &ar231x_adjust_link,
 		PHY_INTERFACE_MODE_MII);
 
 	if (IS_ERR(phydev)) {
--- a/drivers/net/phy/mvswitch.c
+++ b/drivers/net/phy/mvswitch.c
@@ -173,7 +173,7 @@ mvswitch_mangle_rx(struct net_device *de
 	if (vlan == -1)
 		return;
 
-	__vlan_hwaccel_put_tag(skb, vlan);
+	__vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), vlan);
 }
 
 
@@ -307,9 +307,9 @@ mvswitch_config_init(struct phy_device *
 
 #ifdef HEADER_MODE
 	dev->priv_flags |= IFF_NO_IP_ALIGN;
-	dev->features |= NETIF_F_HW_VLAN_RX | NETIF_F_HW_VLAN_TX;
+	dev->features |= NETIF_F_HW_VLAN_CTAG_RX | NETIF_F_HW_VLAN_CTAG_TX;
 #else
-	dev->features |= NETIF_F_HW_VLAN_RX;
+	dev->features |= NETIF_F_HW_VLAN_CTAG_RX;
 #endif
 
 	return 0;