[SUNHME]: VLAN support for sunhme

This patch enables VLAN support on sunhme by increasing BMAC_TXMAX/BMAC_RXMAX
and allocating extra space via skb_put for the VLAN header.

Signed-off-by: Chris Poon <dev-null@telus.net>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by Chris Poon and committed by David S. Miller a5a97263 7de6af0f

+11 -6
+11 -6
drivers/net/sunhme.c
··· 1281 1281 skb->dev = dev; 1282 1282 1283 1283 /* Because we reserve afterwards. */ 1284 - skb_put(skb, (ETH_FRAME_LEN + RX_OFFSET)); 1284 + skb_put(skb, (ETH_FRAME_LEN + RX_OFFSET + 4)); 1285 1285 hme_write_rxd(hp, &hb->happy_meal_rxd[i], 1286 1286 (RXFLAG_OWN | ((RX_BUF_ALLOC_SIZE - RX_OFFSET) << 16)), 1287 1287 hme_dma_map(hp, skb->data, RX_BUF_ALLOC_SIZE, DMA_FROMDEVICE)); ··· 1700 1700 HMD(("tx old[%08x] and rx [%08x] ON!\n", 1701 1701 hme_read32(hp, bregs + BMAC_TXCFG), 1702 1702 hme_read32(hp, bregs + BMAC_RXCFG))); 1703 + 1704 + /* Set larger TX/RX size to allow for 802.1q */ 1705 + hme_write32(hp, bregs + BMAC_TXMAX, ETH_FRAME_LEN + 8); 1706 + hme_write32(hp, bregs + BMAC_RXMAX, ETH_FRAME_LEN + 8); 1707 + 1703 1708 hme_write32(hp, bregs + BMAC_TXCFG, 1704 1709 hme_read32(hp, bregs + BMAC_TXCFG) | BIGMAC_TXCFG_ENABLE); 1705 1710 hme_write32(hp, bregs + BMAC_RXCFG, ··· 2044 2039 hme_dma_unmap(hp, dma_addr, RX_BUF_ALLOC_SIZE, DMA_FROMDEVICE); 2045 2040 hp->rx_skbs[elem] = new_skb; 2046 2041 new_skb->dev = dev; 2047 - skb_put(new_skb, (ETH_FRAME_LEN + RX_OFFSET)); 2042 + skb_put(new_skb, (ETH_FRAME_LEN + RX_OFFSET + 4)); 2048 2043 hme_write_rxd(hp, this, 2049 2044 (RXFLAG_OWN|((RX_BUF_ALLOC_SIZE-RX_OFFSET)<<16)), 2050 2045 hme_dma_map(hp, new_skb->data, RX_BUF_ALLOC_SIZE, DMA_FROMDEVICE)); ··· 2814 2809 dev->watchdog_timeo = 5*HZ; 2815 2810 dev->ethtool_ops = &hme_ethtool_ops; 2816 2811 2817 - /* Happy Meal can do it all... except VLAN. */ 2818 - dev->features |= NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_VLAN_CHALLENGED; 2812 + /* Happy Meal can do it all... */ 2813 + dev->features |= NETIF_F_SG | NETIF_F_HW_CSUM; 2819 2814 2820 2815 dev->irq = sdev->irqs[0]; 2821 2816 ··· 3148 3143 dev->irq = pdev->irq; 3149 3144 dev->dma = 0; 3150 3145 3151 - /* Happy Meal can do it all... except VLAN. */ 3152 - dev->features |= NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_VLAN_CHALLENGED; 3146 + /* Happy Meal can do it all... */ 3147 + dev->features |= NETIF_F_SG | NETIF_F_HW_CSUM; 3153 3148 3154 3149 #if defined(CONFIG_SBUS) && defined(CONFIG_PCI) 3155 3150 /* Hook up PCI register/dma accessors. */