]> xenbits.xensource.com Git - xenclient/kernel.git/commitdiff
imported patch drivers-net-atl1-backport drivers-net-atl1-from-2.6.21
authort_jeang <devnull@localhost>
Tue, 6 Jan 2009 12:05:57 +0000 (12:05 +0000)
committert_jeang <devnull@localhost>
Tue, 6 Jan 2009 12:05:57 +0000 (12:05 +0000)
drivers/net/atl1/atl1.h
drivers/net/atl1/atl1_ethtool.c
drivers/net/atl1/atl1_main.c

index b1c6034e68fa320ddd48fabec94374d403e09ae5..91a7194a08b82a706f9b648b3c93f30067cdbcf4 100644 (file)
 
 #include "atl1_hw.h"
 
+#if 0
+typedef _Bool bool;
+enum {
+        false   = 0,
+        true    = 1
+};
+#endif
+
 /* function prototypes needed by multiple files */
 s32 atl1_up(struct atl1_adapter *adapter);
 void atl1_down(struct atl1_adapter *adapter);
@@ -38,7 +46,7 @@ void atl1_free_ring_resources(struct atl1_adapter *adapter);
 
 extern char atl1_driver_name[];
 extern char atl1_driver_version[];
-extern const struct ethtool_ops atl1_ethtool_ops;
+extern struct ethtool_ops atl1_ethtool_ops;
 
 struct atl1_adapter;
 
index c11c27798e5c151b606e1f538548b815d3e01c9d..5b328c8d164074f2146fd0c03fd39a489932c6a0 100644 (file)
@@ -483,7 +483,7 @@ static int atl1_nway_reset(struct net_device *netdev)
        return 0;
 }
 
-const struct ethtool_ops atl1_ethtool_ops = {
+struct ethtool_ops atl1_ethtool_ops = {
        .get_settings           = atl1_get_settings,
        .set_settings           = atl1_set_settings,
        .get_drvinfo            = atl1_get_drvinfo,
index 8606eac5bec88215c398c8d36a8afd0faccac8c7..88122d5cc6a0e78eb79fb0e2cef08ad114ce107f 100644 (file)
@@ -395,7 +395,7 @@ static void atl1_rx_checksum(struct atl1_adapter *adapter,
        /* IPv4, but hardware thinks its checksum is wrong */
        printk(KERN_DEBUG "%s: hw csum wrong pkt_flag:%x, err_flag:%x\n",
                atl1_driver_name, rrd->pkt_flg, rrd->err_flg);
-       skb->ip_summed = CHECKSUM_COMPLETE;
+       skb->ip_summed = CHECKSUM_HW;
        skb->csum = htons(rrd->xsz.xsum_sz.rx_chksum);
        adapter->hw_csum_err++;
        return;
@@ -703,7 +703,7 @@ static void atl1_check_for_link(struct atl1_adapter *adapter)
  * @data: pointer to a network interface device structure
  * @pt_regs: CPU registers structure
  */
-static irqreturn_t atl1_intr(int irq, void *data)
+static irqreturn_t atl1_intr(int irq, void *data, struct pt_regs *regs)
 {
        /*struct atl1_adapter *adapter = ((struct net_device *)data)->priv;*/
        struct atl1_adapter *adapter = netdev_priv(data);
@@ -1252,7 +1252,8 @@ static void atl1_vlan_rx_kill_vid(struct net_device *netdev, u16 vid)
 
        spin_lock_irqsave(&adapter->lock, flags);
        /* atl1_irq_disable(adapter); */
-       vlan_group_set_device(adapter->vlgrp, vid, NULL);
+       if (adapter->vlgrp)
+               adapter->vlgrp->vlan_devices[vid] = NULL;
        /* atl1_irq_enable(adapter); */
        spin_unlock_irqrestore(&adapter->lock, flags);
        /* We don't do Vlan filtering */
@@ -1265,7 +1266,7 @@ static void atl1_restore_vlan(struct atl1_adapter *adapter)
        if (adapter->vlgrp) {
                u16 vid;
                for (vid = 0; vid < VLAN_GROUP_ARRAY_LEN; vid++) {
-                       if (!vlan_group_get_device(adapter->vlgrp, vid))
+                       if (!adapter->vlgrp->vlan_devices[vid])
                                continue;
                        atl1_vlan_rx_add_vid(adapter->netdev, vid);
                }
@@ -1326,9 +1327,9 @@ static int atl1_tx_csum(struct atl1_adapter *adapter, struct sk_buff *skb,
 {
        u8 css, cso;
 
-       if (likely(skb->ip_summed == CHECKSUM_PARTIAL)) {
+       if (likely(skb->ip_summed == CHECKSUM_HW)) {
                cso = skb->h.raw - skb->data;
-               css = (skb->h.raw + skb->csum_offset) - skb->data;
+               css = (skb->h.raw + skb->csum) - skb->data;
                if (unlikely(cso & 0x1)) {
                        printk(KERN_DEBUG "%s: payload offset != even number\n",
                                atl1_driver_name);
@@ -2053,10 +2054,9 @@ static int atl1_close(struct net_device *netdev)
  * state-machine will not be reset. DMAR_TO_INT will
  * assert again and again.
  */
-static void atl1_tx_timeout_task(struct work_struct *work)
+static void atl1_tx_timeout_task(void *data)
 {
-       struct atl1_adapter *adapter =
-               container_of(work, struct atl1_adapter, tx_timeout_task);
+       struct atl1_adapter *adapter = data;
        struct net_device *netdev = adapter->netdev;
 
        netif_device_detach(netdev);
@@ -2068,10 +2068,9 @@ static void atl1_tx_timeout_task(struct work_struct *work)
 /*
  * atl1_link_chg_task - deal with link change event Out of interrupt context
  */
-static void atl1_link_chg_task(struct work_struct *work)
+static void atl1_link_chg_task(void *data)
 {
-       struct atl1_adapter *adapter =
-               container_of(work, struct atl1_adapter, link_chg_task);
+       struct atl1_adapter *adapter = data;
        unsigned long flags;
 
        spin_lock_irqsave(&adapter->lock, flags);
@@ -2276,11 +2275,11 @@ static int __devinit atl1_probe(struct pci_dev *pdev,
        adapter->phy_config_timer.data = (unsigned long)adapter;
        adapter->phy_timer_pending = false;
 
-       INIT_WORK(&adapter->tx_timeout_task, atl1_tx_timeout_task);
+       INIT_WORK(&adapter->tx_timeout_task, atl1_tx_timeout_task, adapter);
 
-       INIT_WORK(&adapter->link_chg_task, atl1_link_chg_task);
+       INIT_WORK(&adapter->link_chg_task, atl1_link_chg_task, adapter);
 
-       INIT_WORK(&adapter->pcie_dma_to_rst_task, atl1_tx_timeout_task);
+       INIT_WORK(&adapter->pcie_dma_to_rst_task, atl1_tx_timeout_task, adapter);
 
        err = register_netdev(netdev);
        if (err)