netdev: bfin_mac: let boards set vlan masks
authorMike Frysinger <vapier@gentoo.org>
Mon, 10 Jan 2011 02:54:32 +0000 (02:54 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 10 Jan 2011 21:31:14 +0000 (13:31 -0800)
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/bfin_mac.c
drivers/net/bfin_mac.h
include/linux/bfin_mac.h

index e712be4a6433292ad7fe3a6d49386e615556bc91..0b9fc5173aef1478355e9cadbcb635f1fdca594d 100644 (file)
@@ -588,6 +588,10 @@ static void setup_system_regs(struct net_device *dev)
 
        bfin_write_EMAC_MMC_CTL(RSTC | CROLL);
 
+       /* Set vlan regs to let 1522 bytes long packets pass through */
+       bfin_write_EMAC_VLAN1(lp->vlan1_mask);
+       bfin_write_EMAC_VLAN2(lp->vlan2_mask);
+
        /* Initialize the TX DMA channel registers */
        bfin_write_DMA2_X_COUNT(0);
        bfin_write_DMA2_X_MODIFY(4);
@@ -1520,6 +1524,9 @@ static int __devinit bfin_mac_probe(struct platform_device *pdev)
                goto out_err_mii_probe;
        }
 
+       lp->vlan1_mask = ETH_P_8021Q | mii_bus_data->vlan1_mask;
+       lp->vlan2_mask = ETH_P_8021Q | mii_bus_data->vlan2_mask;
+
        /* Fill in the fields of the device structure with ethernet values. */
        ether_setup(ndev);
 
index 692187da99f0b5c63541b380cbad27a55fbab570..f8559ac9a4034fbf7fe8038f9d352dc978ec7835 100644 (file)
@@ -82,6 +82,9 @@ struct bfin_mac_local {
        struct timer_list tx_reclaim_timer;
        struct net_device *ndev;
 
+       /* Data for EMAC_VLAN1 regs */
+       u16 vlan1_mask, vlan2_mask;
+
        /* MII and PHY stuffs */
        int old_link;          /* used by bf537_adjust_link */
        int old_speed;
index 904dec7d03a1c3dc969096bbe5cae19c6f2f0b41..a69554ef84762f936813d7879bbbc4cccd407ec3 100644 (file)
@@ -24,6 +24,7 @@ struct bfin_mii_bus_platform_data {
        const unsigned short *mac_peripherals;
        int phy_mode;
        unsigned int phy_mask;
+       unsigned short vlan1_mask, vlan2_mask;
 };
 
 #endif