|
@@ -120,7 +120,7 @@ static int __devinit atl1_sw_init(struct atl1_adapter *adapter)
|
|
|
struct atl1_hw *hw = &adapter->hw;
|
|
|
struct net_device *netdev = adapter->netdev;
|
|
|
|
|
|
- hw->max_frame_size = netdev->mtu + ETH_HLEN + ETH_FCS_LEN;
|
|
|
+ hw->max_frame_size = netdev->mtu + ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN;
|
|
|
hw->min_frame_size = ETH_ZLEN + ETH_FCS_LEN;
|
|
|
|
|
|
adapter->wol = 0;
|
|
@@ -688,7 +688,7 @@ static int atl1_change_mtu(struct net_device *netdev, int new_mtu)
|
|
|
{
|
|
|
struct atl1_adapter *adapter = netdev_priv(netdev);
|
|
|
int old_mtu = netdev->mtu;
|
|
|
- int max_frame = new_mtu + ETH_HLEN + ETH_FCS_LEN;
|
|
|
+ int max_frame = new_mtu + ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN;
|
|
|
|
|
|
if ((max_frame < ETH_ZLEN + ETH_FCS_LEN) ||
|
|
|
(max_frame > MAX_JUMBO_FRAME_SIZE)) {
|
|
@@ -853,8 +853,8 @@ static u32 atl1_configure(struct atl1_adapter *adapter)
|
|
|
/* set Interrupt Clear Timer */
|
|
|
iowrite16(adapter->ict, hw->hw_addr + REG_CMBDISDMA_TIMER);
|
|
|
|
|
|
- /* set MTU, 4 : VLAN */
|
|
|
- iowrite32(hw->max_frame_size + 4, hw->hw_addr + REG_MTU);
|
|
|
+ /* set max frame size hw will accept */
|
|
|
+ iowrite32(hw->max_frame_size, hw->hw_addr + REG_MTU);
|
|
|
|
|
|
/* jumbo size & rrd retirement timer */
|
|
|
value = (((u32) hw->rx_jumbo_th & RXQ_JMBOSZ_TH_MASK)
|