aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/socionext/sni_ave.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet/socionext/sni_ave.c')
-rw-r--r--drivers/net/ethernet/socionext/sni_ave.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/drivers/net/ethernet/socionext/sni_ave.c b/drivers/net/ethernet/socionext/sni_ave.c
index 6732f5cbde08..7c7cd9d94bcc 100644
--- a/drivers/net/ethernet/socionext/sni_ave.c
+++ b/drivers/net/ethernet/socionext/sni_ave.c
@@ -185,8 +185,8 @@
185 NETIF_MSG_TX_ERR) 185 NETIF_MSG_TX_ERR)
186 186
187/* Parameter for descriptor */ 187/* Parameter for descriptor */
188#define AVE_NR_TXDESC 32 /* Tx descriptor */ 188#define AVE_NR_TXDESC 64 /* Tx descriptor */
189#define AVE_NR_RXDESC 64 /* Rx descriptor */ 189#define AVE_NR_RXDESC 256 /* Rx descriptor */
190 190
191#define AVE_DESC_OFS_CMDSTS 0 191#define AVE_DESC_OFS_CMDSTS 0
192#define AVE_DESC_OFS_ADDRL 4 192#define AVE_DESC_OFS_ADDRL 4
@@ -194,6 +194,7 @@
194 194
195/* Parameter for ethernet frame */ 195/* Parameter for ethernet frame */
196#define AVE_MAX_ETHFRAME 1518 196#define AVE_MAX_ETHFRAME 1518
197#define AVE_FRAME_HEADROOM 2
197 198
198/* Parameter for interrupt */ 199/* Parameter for interrupt */
199#define AVE_INTM_COUNT 20 200#define AVE_INTM_COUNT 20
@@ -576,12 +577,13 @@ static int ave_rxdesc_prepare(struct net_device *ndev, int entry)
576 577
577 skb = priv->rx.desc[entry].skbs; 578 skb = priv->rx.desc[entry].skbs;
578 if (!skb) { 579 if (!skb) {
579 skb = netdev_alloc_skb_ip_align(ndev, 580 skb = netdev_alloc_skb(ndev, AVE_MAX_ETHFRAME);
580 AVE_MAX_ETHFRAME);
581 if (!skb) { 581 if (!skb) {
582 netdev_err(ndev, "can't allocate skb for Rx\n"); 582 netdev_err(ndev, "can't allocate skb for Rx\n");
583 return -ENOMEM; 583 return -ENOMEM;
584 } 584 }
585 skb->data += AVE_FRAME_HEADROOM;
586 skb->tail += AVE_FRAME_HEADROOM;
585 } 587 }
586 588
587 /* set disable to cmdsts */ 589 /* set disable to cmdsts */
@@ -594,12 +596,12 @@ static int ave_rxdesc_prepare(struct net_device *ndev, int entry)
594 * - Rx buffer begins with 2 byte headroom, and data will be put from 596 * - Rx buffer begins with 2 byte headroom, and data will be put from
595 * (buffer + 2). 597 * (buffer + 2).
596 * To satisfy this, specify the address to put back the buffer 598 * To satisfy this, specify the address to put back the buffer
597 * pointer advanced by NET_IP_ALIGN by netdev_alloc_skb_ip_align(), 599 * pointer advanced by AVE_FRAME_HEADROOM, and expand the map size
598 * and expand the map size by NET_IP_ALIGN. 600 * by AVE_FRAME_HEADROOM.
599 */ 601 */
600 ret = ave_dma_map(ndev, &priv->rx.desc[entry], 602 ret = ave_dma_map(ndev, &priv->rx.desc[entry],
601 skb->data - NET_IP_ALIGN, 603 skb->data - AVE_FRAME_HEADROOM,
602 AVE_MAX_ETHFRAME + NET_IP_ALIGN, 604 AVE_MAX_ETHFRAME + AVE_FRAME_HEADROOM,
603 DMA_FROM_DEVICE, &paddr); 605 DMA_FROM_DEVICE, &paddr);
604 if (ret) { 606 if (ret) {
605 netdev_err(ndev, "can't map skb for Rx\n"); 607 netdev_err(ndev, "can't map skb for Rx\n");
@@ -1689,9 +1691,10 @@ static int ave_probe(struct platform_device *pdev)
1689 pdev->name, pdev->id); 1691 pdev->name, pdev->id);
1690 1692
1691 /* Register as a NAPI supported driver */ 1693 /* Register as a NAPI supported driver */
1692 netif_napi_add(ndev, &priv->napi_rx, ave_napi_poll_rx, priv->rx.ndesc); 1694 netif_napi_add(ndev, &priv->napi_rx, ave_napi_poll_rx,
1695 NAPI_POLL_WEIGHT);
1693 netif_tx_napi_add(ndev, &priv->napi_tx, ave_napi_poll_tx, 1696 netif_tx_napi_add(ndev, &priv->napi_tx, ave_napi_poll_tx,
1694 priv->tx.ndesc); 1697 NAPI_POLL_WEIGHT);
1695 1698
1696 platform_set_drvdata(pdev, ndev); 1699 platform_set_drvdata(pdev, ndev);
1697 1700
@@ -1913,5 +1916,6 @@ static struct platform_driver ave_driver = {
1913}; 1916};
1914module_platform_driver(ave_driver); 1917module_platform_driver(ave_driver);
1915 1918
1919MODULE_AUTHOR("Kunihiko Hayashi <hayashi.kunihiko@socionext.com>");
1916MODULE_DESCRIPTION("Socionext UniPhier AVE ethernet driver"); 1920MODULE_DESCRIPTION("Socionext UniPhier AVE ethernet driver");
1917MODULE_LICENSE("GPL v2"); 1921MODULE_LICENSE("GPL v2");