ramips: raeth: add a helper function for skb allocation

SVN-Revision: 30555
This commit is contained in:
Gabor Juhos 2012-02-15 18:33:42 +00:00
parent e57546de83
commit 8b8d9a8336
1 changed files with 16 additions and 6 deletions

View File

@ -88,6 +88,20 @@ ramips_hw_set_macaddr(unsigned char *mac)
RAMIPS_GDMA1_MAC_ADRL); RAMIPS_GDMA1_MAC_ADRL);
} }
static struct sk_buff *
ramips_alloc_skb(struct raeth_priv *re)
{
struct sk_buff *skb;
skb = netdev_alloc_skb(re->netdev, MAX_RX_LENGTH + NET_IP_ALIGN);
if (!skb)
return NULL;
skb_reserve(skb, NET_IP_ALIGN);
return skb;
}
#if defined(CONFIG_RALINK_RT288X) || defined(CONFIG_RALINK_RT3883) #if defined(CONFIG_RALINK_RT288X) || defined(CONFIG_RALINK_RT3883)
#define RAMIPS_MDIO_RETRY 1000 #define RAMIPS_MDIO_RETRY 1000
@ -522,13 +536,10 @@ ramips_alloc_dma(struct raeth_priv *re)
dma_addr_t dma_addr; dma_addr_t dma_addr;
struct sk_buff *new_skb; struct sk_buff *new_skb;
new_skb = netdev_alloc_skb(re->netdev, new_skb = ramips_alloc_skb(re);
MAX_RX_LENGTH + NET_IP_ALIGN);
if (!new_skb) if (!new_skb)
goto err_cleanup; goto err_cleanup;
skb_reserve(new_skb, NET_IP_ALIGN);
dma_addr = dma_map_single(&re->netdev->dev, new_skb->data, dma_addr = dma_map_single(&re->netdev->dev, new_skb->data,
MAX_RX_LENGTH, DMA_FROM_DEVICE); MAX_RX_LENGTH, DMA_FROM_DEVICE);
re->rx_dma[i] = dma_addr; re->rx_dma[i] = dma_addr;
@ -629,7 +640,7 @@ ramips_eth_rx_hw(unsigned long ptr)
rx_skb = re->rx_skb[rx]; rx_skb = re->rx_skb[rx];
pktlen = RX_DMA_PLEN0(re->rx[rx].rxd2); pktlen = RX_DMA_PLEN0(re->rx[rx].rxd2);
new_skb = netdev_alloc_skb(dev, MAX_RX_LENGTH + NET_IP_ALIGN); new_skb = ramips_alloc_skb(re);
/* Reuse the buffer on allocation failures */ /* Reuse the buffer on allocation failures */
if (new_skb) { if (new_skb) {
dma_addr_t dma_addr; dma_addr_t dma_addr;
@ -646,7 +657,6 @@ ramips_eth_rx_hw(unsigned long ptr)
netif_rx(rx_skb); netif_rx(rx_skb);
re->rx_skb[rx] = new_skb; re->rx_skb[rx] = new_skb;
skb_reserve(new_skb, NET_IP_ALIGN);
dma_addr = dma_map_single(&re->netdev->dev, dma_addr = dma_map_single(&re->netdev->dev,
new_skb->data, new_skb->data,