mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-11-16 17:13:10 +02:00
[mcs814x] nuport-mac: various fixes
- properly check for the link up condition in the phylib adjust callback - do not assign skb->dev, eth_type_trans() already does it - handle skb allocation failures in the refill path git-svn-id: svn://svn.openwrt.org/openwrt/trunk@33780 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
f3263c9679
commit
05a3ece84a
@ -396,7 +396,7 @@ static void nuport_mac_adjust_link(struct net_device *dev)
|
|||||||
priv->old_link = phydev->link;
|
priv->old_link = phydev->link;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (phydev->link & (priv->old_duplex != phydev->duplex)) {
|
if (phydev->link && (priv->old_duplex != phydev->duplex)) {
|
||||||
reg = nuport_mac_readl(CTRL_REG);
|
reg = nuport_mac_readl(CTRL_REG);
|
||||||
if (phydev->duplex == DUPLEX_FULL)
|
if (phydev->duplex == DUPLEX_FULL)
|
||||||
reg |= DUPLEX_FULL;
|
reg |= DUPLEX_FULL;
|
||||||
@ -564,7 +564,6 @@ static int nuport_mac_rx(struct net_device *dev, int limit)
|
|||||||
|
|
||||||
/* Get packet status */
|
/* Get packet status */
|
||||||
status = get_unaligned((u32 *) (skb->data + len));
|
status = get_unaligned((u32 *) (skb->data + len));
|
||||||
skb->dev = dev;
|
|
||||||
|
|
||||||
dma_unmap_single(&priv->pdev->dev, priv->rx_addr, skb->len,
|
dma_unmap_single(&priv->pdev->dev, priv->rx_addr, skb->len,
|
||||||
DMA_FROM_DEVICE);
|
DMA_FROM_DEVICE);
|
||||||
@ -615,6 +614,9 @@ static int nuport_mac_rx(struct net_device *dev, int limit)
|
|||||||
|
|
||||||
exit:
|
exit:
|
||||||
skb = netdev_alloc_skb(dev, RX_ALLOC_SIZE);
|
skb = netdev_alloc_skb(dev, RX_ALLOC_SIZE);
|
||||||
|
if (!skb)
|
||||||
|
goto out;
|
||||||
|
|
||||||
skb_reserve(skb, RX_SKB_HEADROOM);
|
skb_reserve(skb, RX_SKB_HEADROOM);
|
||||||
priv->rx_skb[priv->cur_rx] = skb;
|
priv->rx_skb[priv->cur_rx] = skb;
|
||||||
priv->irq_rxskb[priv->cur_rx] = 1;
|
priv->irq_rxskb[priv->cur_rx] = 1;
|
||||||
@ -624,7 +626,7 @@ exit:
|
|||||||
priv->cur_rx = 0;
|
priv->cur_rx = 0;
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
out:
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user