Commit a5a97263a9fd6a94f954d41ae3233ea65a90bd8a
Committed by
David S. Miller
1 parent
7de6af0f23
Exists in
master
and in
7 other branches
[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>
Showing 1 changed file with 11 additions and 6 deletions Side-by-side Diff
drivers/net/sunhme.c
... | ... | @@ -1281,7 +1281,7 @@ |
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,6 +1700,11 @@ |
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, |
... | ... | @@ -2039,7 +2044,7 @@ |
2039 | 2044 | hme_dma_unmap(hp, dma_addr, RX_BUF_ALLOC_SIZE, DMA_FROMDEVICE); |
2040 | 2045 | hp->rx_skbs[elem] = new_skb; |
2041 | 2046 | new_skb->dev = dev; |
2042 | - skb_put(new_skb, (ETH_FRAME_LEN + RX_OFFSET)); | |
2047 | + skb_put(new_skb, (ETH_FRAME_LEN + RX_OFFSET + 4)); | |
2043 | 2048 | hme_write_rxd(hp, this, |
2044 | 2049 | (RXFLAG_OWN|((RX_BUF_ALLOC_SIZE-RX_OFFSET)<<16)), |
2045 | 2050 | hme_dma_map(hp, new_skb->data, RX_BUF_ALLOC_SIZE, DMA_FROMDEVICE)); |
... | ... | @@ -2809,8 +2814,8 @@ |
2809 | 2814 | dev->watchdog_timeo = 5*HZ; |
2810 | 2815 | dev->ethtool_ops = &hme_ethtool_ops; |
2811 | 2816 | |
2812 | - /* Happy Meal can do it all... except VLAN. */ | |
2813 | - dev->features |= NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_VLAN_CHALLENGED; | |
2817 | + /* Happy Meal can do it all... */ | |
2818 | + dev->features |= NETIF_F_SG | NETIF_F_HW_CSUM; | |
2814 | 2819 | |
2815 | 2820 | dev->irq = sdev->irqs[0]; |
2816 | 2821 | |
... | ... | @@ -3143,8 +3148,8 @@ |
3143 | 3148 | dev->irq = pdev->irq; |
3144 | 3149 | dev->dma = 0; |
3145 | 3150 | |
3146 | - /* Happy Meal can do it all... except VLAN. */ | |
3147 | - dev->features |= NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_VLAN_CHALLENGED; | |
3151 | + /* Happy Meal can do it all... */ | |
3152 | + dev->features |= NETIF_F_SG | NETIF_F_HW_CSUM; | |
3148 | 3153 | |
3149 | 3154 | #if defined(CONFIG_SBUS) && defined(CONFIG_PCI) |
3150 | 3155 | /* Hook up PCI register/dma accessors. */ |