Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6
[safe/jmp/linux-2.6] / drivers / net / ibmveth.c
index 91ec9fd..5c6315d 100644 (file)
@@ -260,7 +260,7 @@ static void ibmveth_replenish_buffer_pool(struct ibmveth_adapter *adapter, struc
                dma_addr = dma_map_single(&adapter->vdev->dev, skb->data,
                                pool->buff_size, DMA_FROM_DEVICE);
 
-               if (dma_mapping_error((&adapter->vdev->dev, dma_addr))
+               if (dma_mapping_error(&adapter->vdev->dev, dma_addr))
                        goto failure;
 
                pool->free_map[free_index] = IBM_VETH_INVALID_MAP;
@@ -294,7 +294,7 @@ failure:
                pool->consumer_index = pool->size - 1;
        else
                pool->consumer_index--;
-       if (!dma_mapping_error((&adapter->vdev->dev, dma_addr))
+       if (!dma_mapping_error(&adapter->vdev->dev, dma_addr))
                dma_unmap_single(&adapter->vdev->dev,
                                 pool->dma_addr[index], pool->buff_size,
                                 DMA_FROM_DEVICE);
@@ -488,7 +488,7 @@ static void ibmveth_cleanup(struct ibmveth_adapter *adapter)
                                                 &adapter->rx_buff_pool[i]);
 
        if (adapter->bounce_buffer != NULL) {
-               if (!dma_mapping_error(adapter->bounce_buffer_dma)) {
+               if (!dma_mapping_error(dev, adapter->bounce_buffer_dma)) {
                        dma_unmap_single(&adapter->vdev->dev,
                                        adapter->bounce_buffer_dma,
                                        adapter->netdev->mtu + IBMVETH_BUFF_OH,
@@ -527,7 +527,7 @@ retry:
 
 static int ibmveth_open(struct net_device *netdev)
 {
-       struct ibmveth_adapter *adapter = netdev->priv;
+       struct ibmveth_adapter *adapter = netdev_priv(netdev);
        u64 mac_address = 0;
        int rxq_entries = 1;
        unsigned long lpar_rc;
@@ -602,7 +602,7 @@ static int ibmveth_open(struct net_device *netdev)
 
        if(lpar_rc != H_SUCCESS) {
                ibmveth_error_printk("h_register_logical_lan failed with %ld\n", lpar_rc);
-               ibmveth_error_printk("buffer TCE:0x%lx filter TCE:0x%lx rxq desc:0x%lx MAC:0x%lx\n",
+               ibmveth_error_printk("buffer TCE:0x%llx filter TCE:0x%llx rxq desc:0x%llx MAC:0x%llx\n",
                                     adapter->buffer_list_dma,
                                     adapter->filter_list_dma,
                                     rxq_desc.desc,
@@ -666,7 +666,7 @@ static int ibmveth_open(struct net_device *netdev)
 
 static int ibmveth_close(struct net_device *netdev)
 {
-       struct ibmveth_adapter *adapter = netdev->priv;
+       struct ibmveth_adapter *adapter = netdev_priv(netdev);
        long lpar_rc;
 
        ibmveth_debug_printk("close starting\n");
@@ -722,7 +722,7 @@ static u32 netdev_get_link(struct net_device *dev) {
 
 static void ibmveth_set_rx_csum_flags(struct net_device *dev, u32 data)
 {
-       struct ibmveth_adapter *adapter = dev->priv;
+       struct ibmveth_adapter *adapter = netdev_priv(dev);
 
        if (data)
                adapter->rx_csum = 1;
@@ -741,7 +741,7 @@ static void ibmveth_set_rx_csum_flags(struct net_device *dev, u32 data)
 
 static void ibmveth_set_tx_csum_flags(struct net_device *dev, u32 data)
 {
-       struct ibmveth_adapter *adapter = dev->priv;
+       struct ibmveth_adapter *adapter = netdev_priv(dev);
 
        if (data) {
                dev->features |= NETIF_F_IP_CSUM;
@@ -753,8 +753,8 @@ static void ibmveth_set_tx_csum_flags(struct net_device *dev, u32 data)
 static int ibmveth_set_csum_offload(struct net_device *dev, u32 data,
                                    void (*done) (struct net_device *, u32))
 {
-       struct ibmveth_adapter *adapter = dev->priv;
-       u64 set_attr, clr_attr, ret_attr;
+       struct ibmveth_adapter *adapter = netdev_priv(dev);
+       unsigned long set_attr, clr_attr, ret_attr;
        long ret;
        int rc1 = 0, rc2 = 0;
        int restart = 0;
@@ -805,7 +805,7 @@ static int ibmveth_set_csum_offload(struct net_device *dev, u32 data,
 
 static int ibmveth_set_rx_csum(struct net_device *dev, u32 data)
 {
-       struct ibmveth_adapter *adapter = dev->priv;
+       struct ibmveth_adapter *adapter = netdev_priv(dev);
 
        if ((data && adapter->rx_csum) || (!data && !adapter->rx_csum))
                return 0;
@@ -815,7 +815,7 @@ static int ibmveth_set_rx_csum(struct net_device *dev, u32 data)
 
 static int ibmveth_set_tx_csum(struct net_device *dev, u32 data)
 {
-       struct ibmveth_adapter *adapter = dev->priv;
+       struct ibmveth_adapter *adapter = netdev_priv(dev);
        int rc = 0;
 
        if (data && (dev->features & NETIF_F_IP_CSUM))
@@ -833,7 +833,7 @@ static int ibmveth_set_tx_csum(struct net_device *dev, u32 data)
 
 static u32 ibmveth_get_rx_csum(struct net_device *dev)
 {
-       struct ibmveth_adapter *adapter = dev->priv;
+       struct ibmveth_adapter *adapter = netdev_priv(dev);
        return adapter->rx_csum;
 }
 
@@ -862,7 +862,7 @@ static void ibmveth_get_ethtool_stats(struct net_device *dev,
                                      struct ethtool_stats *stats, u64 *data)
 {
        int i;
-       struct ibmveth_adapter *adapter = dev->priv;
+       struct ibmveth_adapter *adapter = netdev_priv(dev);
 
        for (i = 0; i < ARRAY_SIZE(ibmveth_stats); i++)
                data[i] = IBMVETH_GET_STAT(adapter, ibmveth_stats[i].offset);
@@ -889,7 +889,7 @@ static int ibmveth_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 
 static int ibmveth_start_xmit(struct sk_buff *skb, struct net_device *netdev)
 {
-       struct ibmveth_adapter *adapter = netdev->priv;
+       struct ibmveth_adapter *adapter = netdev_priv(netdev);
        union ibmveth_buf_desc desc;
        unsigned long lpar_rc;
        unsigned long correlator;
@@ -904,8 +904,6 @@ static int ibmveth_start_xmit(struct sk_buff *skb, struct net_device *netdev)
        unsigned long data_dma_addr;
 
        desc.fields.flags_len = IBMVETH_BUF_VALID | skb->len;
-       data_dma_addr = dma_map_single(&adapter->vdev->dev, skb->data,
-                                      skb->len, DMA_TO_DEVICE);
 
        if (skb->ip_summed == CHECKSUM_PARTIAL &&
            ip_hdr(skb)->protocol != IPPROTO_TCP && skb_checksum_help(skb)) {
@@ -924,7 +922,9 @@ static int ibmveth_start_xmit(struct sk_buff *skb, struct net_device *netdev)
                buf[1] = 0;
        }
 
-       if (dma_mapping_error((&adapter->vdev->dev, data_dma_addr)) {
+       data_dma_addr = dma_map_single(&adapter->vdev->dev, skb->data,
+                                      skb->len, DMA_TO_DEVICE);
+       if (dma_mapping_error(&adapter->vdev->dev, data_dma_addr)) {
                if (!firmware_has_feature(FW_FEATURE_CMO))
                        ibmveth_error_printk("tx: unable to map xmit buffer\n");
                skb_copy_from_linear_data(skb, adapter->bounce_buffer,
@@ -932,6 +932,7 @@ static int ibmveth_start_xmit(struct sk_buff *skb, struct net_device *netdev)
                desc.fields.address = adapter->bounce_buffer_dma;
                tx_map_failed++;
                used_bounce = 1;
+               wmb();
        } else
                desc.fields.address = data_dma_addr;
 
@@ -1013,7 +1014,6 @@ static int ibmveth_poll(struct napi_struct *napi, int budget)
                        netdev->stats.rx_packets++;
                        netdev->stats.rx_bytes += length;
                        frames_processed++;
-                       netdev->last_rx = jiffies;
                }
        } while (frames_processed < budget);
 
@@ -1028,10 +1028,10 @@ static int ibmveth_poll(struct napi_struct *napi, int budget)
 
                ibmveth_assert(lpar_rc == H_SUCCESS);
 
-               netif_rx_complete(netdev, napi);
+               napi_complete(napi);
 
                if (ibmveth_rxq_pending_buffer(adapter) &&
-                   netif_rx_reschedule(netdev, napi)) {
+                   napi_reschedule(napi)) {
                        lpar_rc = h_vio_signal(adapter->vdev->unit_address,
                                               VIO_IRQ_DISABLE);
                        goto restart_poll;
@@ -1044,21 +1044,21 @@ static int ibmveth_poll(struct napi_struct *napi, int budget)
 static irqreturn_t ibmveth_interrupt(int irq, void *dev_instance)
 {
        struct net_device *netdev = dev_instance;
-       struct ibmveth_adapter *adapter = netdev->priv;
+       struct ibmveth_adapter *adapter = netdev_priv(netdev);
        unsigned long lpar_rc;
 
-       if (netif_rx_schedule_prep(netdev, &adapter->napi)) {
+       if (napi_schedule_prep(&adapter->napi)) {
                lpar_rc = h_vio_signal(adapter->vdev->unit_address,
                                       VIO_IRQ_DISABLE);
                ibmveth_assert(lpar_rc == H_SUCCESS);
-               __netif_rx_schedule(netdev, &adapter->napi);
+               __napi_schedule(&adapter->napi);
        }
        return IRQ_HANDLED;
 }
 
 static void ibmveth_set_multicast_list(struct net_device *netdev)
 {
-       struct ibmveth_adapter *adapter = netdev->priv;
+       struct ibmveth_adapter *adapter = netdev_priv(netdev);
        unsigned long lpar_rc;
 
        if((netdev->flags & IFF_PROMISC) || (netdev->mc_count > adapter->mcastFilterSize)) {
@@ -1106,7 +1106,7 @@ static void ibmveth_set_multicast_list(struct net_device *netdev)
 
 static int ibmveth_change_mtu(struct net_device *dev, int new_mtu)
 {
-       struct ibmveth_adapter *adapter = dev->priv;
+       struct ibmveth_adapter *adapter = netdev_priv(dev);
        struct vio_dev *viodev = adapter->vdev;
        int new_mtu_oh = new_mtu + IBMVETH_BUFF_OH;
        int i;
@@ -1158,7 +1158,7 @@ static int ibmveth_change_mtu(struct net_device *dev, int new_mtu)
 #ifdef CONFIG_NET_POLL_CONTROLLER
 static void ibmveth_poll_controller(struct net_device *dev)
 {
-       ibmveth_replenish_task(dev->priv);
+       ibmveth_replenish_task(netdev_priv(dev));
        ibmveth_interrupt(dev->irq, dev);
 }
 #endif
@@ -1209,7 +1209,7 @@ static int __devinit ibmveth_probe(struct vio_dev *dev, const struct vio_device_
        long ret;
        struct net_device *netdev;
        struct ibmveth_adapter *adapter;
-       u64 set_attr, ret_attr;
+       unsigned long set_attr, ret_attr;
 
        unsigned char *mac_addr_p;
        unsigned int *mcastFilterSize_p;
@@ -1240,7 +1240,7 @@ static int __devinit ibmveth_probe(struct vio_dev *dev, const struct vio_device_
        if(!netdev)
                return -ENOMEM;
 
-       adapter = netdev->priv;
+       adapter = netdev_priv(netdev);
        dev->dev.driver_data = netdev;
 
        adapter->vdev = dev;
@@ -1336,7 +1336,7 @@ static int __devinit ibmveth_probe(struct vio_dev *dev, const struct vio_device_
 static int __devexit ibmveth_remove(struct vio_dev *dev)
 {
        struct net_device *netdev = dev->dev.driver_data;
-       struct ibmveth_adapter *adapter = netdev->priv;
+       struct ibmveth_adapter *adapter = netdev_priv(netdev);
        int i;
 
        for(i = 0; i<IbmVethNumBufferPools; i++)
@@ -1370,22 +1370,21 @@ static int ibmveth_show(struct seq_file *seq, void *v)
        struct ibmveth_adapter *adapter = seq->private;
        char *current_mac = ((char*) &adapter->netdev->dev_addr);
        char *firmware_mac = ((char*) &adapter->mac_addr) ;
-       DECLARE_MAC_BUF(mac);
 
        seq_printf(seq, "%s %s\n\n", ibmveth_driver_string, ibmveth_driver_version);
 
        seq_printf(seq, "Unit Address:    0x%x\n", adapter->vdev->unit_address);
-       seq_printf(seq, "Current MAC:     %s\n", print_mac(mac, current_mac));
-       seq_printf(seq, "Firmware MAC:    %s\n", print_mac(mac, firmware_mac));
+       seq_printf(seq, "Current MAC:     %pM\n", current_mac);
+       seq_printf(seq, "Firmware MAC:    %pM\n", firmware_mac);
 
        seq_printf(seq, "\nAdapter Statistics:\n");
-       seq_printf(seq, "  TX:  vio_map_single failres:      %ld\n", adapter->tx_map_failed);
-       seq_printf(seq, "       send failures:               %ld\n", adapter->tx_send_failed);
-       seq_printf(seq, "  RX:  replenish task cycles:       %ld\n", adapter->replenish_task_cycles);
-       seq_printf(seq, "       alloc_skb_failures:          %ld\n", adapter->replenish_no_mem);
-       seq_printf(seq, "       add buffer failures:         %ld\n", adapter->replenish_add_buff_failure);
-       seq_printf(seq, "       invalid buffers:             %ld\n", adapter->rx_invalid_buffer);
-       seq_printf(seq, "       no buffers:                  %ld\n", adapter->rx_no_buffer);
+       seq_printf(seq, "  TX:  vio_map_single failres:      %lld\n", adapter->tx_map_failed);
+       seq_printf(seq, "       send failures:               %lld\n", adapter->tx_send_failed);
+       seq_printf(seq, "  RX:  replenish task cycles:       %lld\n", adapter->replenish_task_cycles);
+       seq_printf(seq, "       alloc_skb_failures:          %lld\n", adapter->replenish_no_mem);
+       seq_printf(seq, "       add buffer failures:         %lld\n", adapter->replenish_add_buff_failure);
+       seq_printf(seq, "       invalid buffers:             %lld\n", adapter->rx_invalid_buffer);
+       seq_printf(seq, "       no buffers:                  %lld\n", adapter->rx_no_buffer);
 
        return 0;
 }
@@ -1471,7 +1470,7 @@ const char * buf, size_t count)
                                                      kobj);
        struct net_device *netdev =
            container_of(kobj->parent, struct device, kobj)->driver_data;
-       struct ibmveth_adapter *adapter = netdev->priv;
+       struct ibmveth_adapter *adapter = netdev_priv(netdev);
        long value = simple_strtol(buf, NULL, 10);
        long rc;