Merge branch 'master' of /home/davem/src/GIT/linux-2.6/
authorDavid S. Miller <davem@davemloft.net>
Mon, 15 Mar 2010 23:23:54 +0000 (16:23 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 15 Mar 2010 23:23:54 +0000 (16:23 -0700)
1  2 
Documentation/networking/timestamping/timestamping.c
drivers/net/davinci_emac.c

index 7b81d169cb0fae8ebd68024d17c2791f69f3453f,bab619a482145e9a08ecc62f674d9c6bb05110cc..8ba82bfe6a33c57d54adcde8d7c3e1977926d565
@@@ -41,9 -41,9 +41,9 @@@
  #include <arpa/inet.h>
  #include <net/if.h>
  
 -#include "asm/types.h"
 -#include "linux/net_tstamp.h"
 -#include "linux/errqueue.h"
 +#include <asm/types.h>
 +#include <linux/net_tstamp.h>
 +#include <linux/errqueue.h>
  
  #ifndef SO_TIMESTAMPING
  # define SO_TIMESTAMPING         37
@@@ -164,7 -164,7 +164,7 @@@ static void printpacket(struct msghdr *
  
        gettimeofday(&now, 0);
  
 -      printf("%ld.%06ld: received %s data, %d bytes from %s, %d bytes control messages\n",
 +      printf("%ld.%06ld: received %s data, %d bytes from %s, %zu bytes control messages\n",
               (long)now.tv_sec, (long)now.tv_usec,
               (recvmsg_flags & MSG_ERRQUEUE) ? "error" : "regular",
               res,
        for (cmsg = CMSG_FIRSTHDR(msg);
             cmsg;
             cmsg = CMSG_NXTHDR(msg, cmsg)) {
 -              printf("   cmsg len %d: ", cmsg->cmsg_len);
 +              printf("   cmsg len %zu: ", cmsg->cmsg_len);
                switch (cmsg->cmsg_level) {
                case SOL_SOCKET:
                        printf("SOL_SOCKET ");
@@@ -370,7 -370,7 +370,7 @@@ int main(int argc, char **argv
        }
  
        sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
-       if (socket < 0)
+       if (sock < 0)
                bail("socket");
  
        memset(&device, 0, sizeof(device));
index 5c4f5b14ff026d4132699379663990f78703cda3,8bd086aee56dc02144ba68b4ab2d958a7783c5c8..2b8edd2efbf608994946f1a1cb9ae40f71938ae7
   *     PHY layer usage
   */
  
 -/** Pending Items in this driver:
 - * 1. Use Linux cache infrastcture for DMA'ed memory (dma_xxx functions)
 - */
 -
  #include <linux/module.h>
  #include <linux/kernel.h>
  #include <linux/sched.h>
@@@ -500,6 -504,12 +500,6 @@@ static unsigned long mdio_max_freq
  
  /* Cache macros - Packet buffers would be from skb pool which is cached */
  #define EMAC_VIRT_NOCACHE(addr) (addr)
 -#define EMAC_CACHE_INVALIDATE(addr, size) \
 -      dma_cache_maint((void *)addr, size, DMA_FROM_DEVICE)
 -#define EMAC_CACHE_WRITEBACK(addr, size) \
 -      dma_cache_maint((void *)addr, size, DMA_TO_DEVICE)
 -#define EMAC_CACHE_WRITEBACK_INVALIDATE(addr, size) \
 -      dma_cache_maint((void *)addr, size, DMA_BIDIRECTIONAL)
  
  /* DM644x does not have BD's in cached memory - so no cache functions */
  #define BD_CACHE_INVALIDATE(addr, size)
@@@ -1225,10 -1235,6 +1225,10 @@@ static void emac_txch_teardown(struct e
        if (1 == txch->queue_active) {
                curr_bd = txch->active_queue_head;
                while (curr_bd != NULL) {
 +                      dma_unmap_single(emac_dev, curr_bd->buff_ptr,
 +                              curr_bd->off_b_len & EMAC_RX_BD_BUF_SIZE,
 +                              DMA_TO_DEVICE);
 +
                        emac_net_tx_complete(priv, (void __force *)
                                        &curr_bd->buf_token, 1, ch);
                        if (curr_bd != txch->active_queue_tail)
@@@ -1321,11 -1327,6 +1321,11 @@@ static int emac_tx_bdproc(struct emac_p
                                txch->queue_active = 0; /* end of queue */
                        }
                }
 +
 +              dma_unmap_single(emac_dev, curr_bd->buff_ptr,
 +                              curr_bd->off_b_len & EMAC_RX_BD_BUF_SIZE,
 +                              DMA_TO_DEVICE);
 +
                *tx_complete_ptr = (u32) curr_bd->buf_token;
                ++tx_complete_ptr;
                ++tx_complete_cnt;
@@@ -1386,8 -1387,8 +1386,8 @@@ static int emac_send(struct emac_priv *
  
        txch->bd_pool_head = curr_bd->next;
        curr_bd->buf_token = buf_list->buf_token;
 -      /* FIXME buff_ptr = dma_map_single(... data_ptr ...) */
 -      curr_bd->buff_ptr = virt_to_phys(buf_list->data_ptr);
 +      curr_bd->buff_ptr = dma_map_single(&priv->ndev->dev, buf_list->data_ptr,
 +                      buf_list->length, DMA_TO_DEVICE);
        curr_bd->off_b_len = buf_list->length;
        curr_bd->h_next = 0;
        curr_bd->next = NULL;
@@@ -1467,6 -1468,7 +1467,6 @@@ static int emac_dev_xmit(struct sk_buf
        tx_buf.length = skb->len;
        tx_buf.buf_token = (void *)skb;
        tx_buf.data_ptr = skb->data;
 -      EMAC_CACHE_WRITEBACK((unsigned long)skb->data, skb->len);
        ndev->trans_start = jiffies;
        ret_code = emac_send(priv, &tx_packet, EMAC_DEF_TX_CH);
        if (unlikely(ret_code != 0)) {
@@@ -1541,6 -1543,7 +1541,6 @@@ static void *emac_net_alloc_rx_buf(stru
        p_skb->dev = ndev;
        skb_reserve(p_skb, NET_IP_ALIGN);
        *data_token = (void *) p_skb;
 -      EMAC_CACHE_WRITEBACK_INVALIDATE((unsigned long)p_skb->data, buf_size);
        return p_skb->data;
  }
  
@@@ -1609,8 -1612,8 +1609,8 @@@ static int emac_init_rxch(struct emac_p
                /* populate the hardware descriptor */
                curr_bd->h_next = emac_virt_to_phys(rxch->active_queue_head,
                                priv);
 -              /* FIXME buff_ptr = dma_map_single(... data_ptr ...) */
 -              curr_bd->buff_ptr = virt_to_phys(curr_bd->data_ptr);
 +              curr_bd->buff_ptr = dma_map_single(emac_dev, curr_bd->data_ptr,
 +                              rxch->buf_size, DMA_FROM_DEVICE);
                curr_bd->off_b_len = rxch->buf_size;
                curr_bd->mode = EMAC_CPPI_OWNERSHIP_BIT;
  
@@@ -1694,12 -1697,6 +1694,12 @@@ static void emac_cleanup_rxch(struct em
                curr_bd = rxch->active_queue_head;
                while (curr_bd) {
                        if (curr_bd->buf_token) {
 +                              dma_unmap_single(&priv->ndev->dev,
 +                                      curr_bd->buff_ptr,
 +                                      curr_bd->off_b_len
 +                                              & EMAC_RX_BD_BUF_SIZE,
 +                                      DMA_FROM_DEVICE);
 +
                                dev_kfree_skb_any((struct sk_buff *)\
                                                  curr_bd->buf_token);
                        }
@@@ -1874,8 -1871,8 +1874,8 @@@ static void emac_addbd_to_rx_queue(stru
  
        /* populate the hardware descriptor */
        curr_bd->h_next = 0;
 -      /* FIXME buff_ptr = dma_map_single(... buffer ...) */
 -      curr_bd->buff_ptr = virt_to_phys(buffer);
 +      curr_bd->buff_ptr = dma_map_single(&priv->ndev->dev, buffer,
 +                              rxch->buf_size, DMA_FROM_DEVICE);
        curr_bd->off_b_len = rxch->buf_size;
        curr_bd->mode = EMAC_CPPI_OWNERSHIP_BIT;
        curr_bd->next = NULL;
@@@ -1930,6 -1927,7 +1930,6 @@@ static int emac_net_rx_cb(struct emac_p
        p_skb = (struct sk_buff *)net_pkt_list->pkt_token;
        /* set length of packet */
        skb_put(p_skb, net_pkt_list->pkt_length);
 -      EMAC_CACHE_INVALIDATE((unsigned long)p_skb->data, p_skb->len);
        p_skb->protocol = eth_type_trans(p_skb, priv->ndev);
        netif_receive_skb(p_skb);
        priv->net_dev_stats.rx_bytes += net_pkt_list->pkt_length;
@@@ -1992,11 -1990,6 +1992,11 @@@ static int emac_rx_bdproc(struct emac_p
                rx_buf_obj->data_ptr = (char *)curr_bd->data_ptr;
                rx_buf_obj->length = curr_bd->off_b_len & EMAC_RX_BD_BUF_SIZE;
                rx_buf_obj->buf_token = curr_bd->buf_token;
 +
 +              dma_unmap_single(&priv->ndev->dev, curr_bd->buff_ptr,
 +                              curr_bd->off_b_len & EMAC_RX_BD_BUF_SIZE,
 +                              DMA_FROM_DEVICE);
 +
                curr_pkt->pkt_token = curr_pkt->buf_list->buf_token;
                curr_pkt->num_bufs = 1;
                curr_pkt->pkt_length =
@@@ -2665,7 -2658,7 +2665,7 @@@ static int __devinit davinci_emac_probe
  
        pdata = pdev->dev.platform_data;
        if (!pdata) {
-               printk(KERN_ERR "DaVinci EMAC: No platfrom data\n");
+               printk(KERN_ERR "DaVinci EMAC: No platform data\n");
                return -ENODEV;
        }
  
@@@ -2827,37 -2820,31 +2827,37 @@@ static int __devexit davinci_emac_remov
        return 0;
  }
  
 -static
 -int davinci_emac_suspend(struct platform_device *pdev, pm_message_t state)
 +static int davinci_emac_suspend(struct device *dev)
  {
 -      struct net_device *dev = platform_get_drvdata(pdev);
 +      struct platform_device *pdev = to_platform_device(dev);
 +      struct net_device *ndev = platform_get_drvdata(pdev);
  
 -      if (netif_running(dev))
 -              emac_dev_stop(dev);
 +      if (netif_running(ndev))
 +              emac_dev_stop(ndev);
  
        clk_disable(emac_clk);
  
        return 0;
  }
  
 -static int davinci_emac_resume(struct platform_device *pdev)
 +static int davinci_emac_resume(struct device *dev)
  {
 -      struct net_device *dev = platform_get_drvdata(pdev);
 +      struct platform_device *pdev = to_platform_device(dev);
 +      struct net_device *ndev = platform_get_drvdata(pdev);
  
        clk_enable(emac_clk);
  
 -      if (netif_running(dev))
 -              emac_dev_open(dev);
 +      if (netif_running(ndev))
 +              emac_dev_open(ndev);
  
        return 0;
  }
  
 +static const struct dev_pm_ops davinci_emac_pm_ops = {
 +      .suspend        = davinci_emac_suspend,
 +      .resume         = davinci_emac_resume,
 +};
 +
  /**
   * davinci_emac_driver: EMAC platform driver structure
   */
@@@ -2865,10 -2852,11 +2865,10 @@@ static struct platform_driver davinci_e
        .driver = {
                .name    = "davinci_emac",
                .owner   = THIS_MODULE,
 +              .pm      = &davinci_emac_pm_ops,
        },
        .probe = davinci_emac_probe,
        .remove = __devexit_p(davinci_emac_remove),
 -      .suspend = davinci_emac_suspend,
 -      .resume = davinci_emac_resume,
  };
  
  /**