Commit a5a97263a9fd6a94f954d41ae3233ea65a90bd8a

Authored by Chris Poon
Committed by David S. Miller
1 parent 7de6af0f23

[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. */