Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / drivers / atm / idt77252.c
index 3d8764a..b4a76ca 100644 (file)
@@ -46,6 +46,7 @@ static char const rcsid[] =
 #include <linux/init.h>
 #include <linux/bitops.h>
 #include <linux/wait.h>
+#include <linux/jiffies.h>
 #include <asm/semaphore.h>
 #include <asm/io.h>
 #include <asm/uaccess.h>
@@ -727,10 +728,11 @@ push_on_scq(struct idt77252_dev *card, struct vc_map *vc, struct sk_buff *skb)
        spin_lock_irqsave(&vc->lock, flags);
        if (vc->estimator) {
                struct atm_vcc *vcc = vc->tx_vcc;
+               struct sock *sk = sk_atm(vcc);
 
                vc->estimator->cells += (skb->len + 47) / 48;
-               if (atomic_read(&vcc->sk->sk_wmem_alloc) >
-                   (vcc->sk->sk_sndbuf >> 1)) {
+               if (atomic_read(&sk->sk_wmem_alloc) >
+                   (sk->sk_sndbuf >> 1)) {
                        u32 cps = vc->estimator->maxcps;
 
                        vc->estimator->cps = cps;
@@ -779,7 +781,7 @@ push_on_scq(struct idt77252_dev *card, struct vc_map *vc, struct sk_buff *skb)
        return 0;
 
 out:
-       if (jiffies - scq->trans_start > HZ) {
+       if (time_after(jiffies, scq->trans_start + HZ)) {
                printk("%s: Error pushing TBD for %d.%d\n",
                       card->name, vc->tx_vcc->vpi, vc->tx_vcc->vci);
 #ifdef CONFIG_ATM_IDT77252_DEBUG
@@ -1099,7 +1101,7 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)
                               cell, ATM_CELL_PAYLOAD);
 
                        ATM_SKB(sb)->vcc = vcc;
-                       do_gettimeofday(&sb->stamp);
+                       __net_timestamp(sb);
                        vcc->push(vcc, sb);
                        atomic_inc(&vcc->stats->rx);
 
@@ -1177,7 +1179,7 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)
 
                        skb_trim(skb, len);
                        ATM_SKB(skb)->vcc = vcc;
-                       do_gettimeofday(&skb->stamp);
+                       __net_timestamp(skb);
 
                        vcc->push(vcc, skb);
                        atomic_inc(&vcc->stats->rx);
@@ -1199,7 +1201,7 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)
 
                skb_trim(skb, len);
                ATM_SKB(skb)->vcc = vcc;
-               do_gettimeofday(&skb->stamp);
+               __net_timestamp(skb);
 
                vcc->push(vcc, skb);
                atomic_inc(&vcc->stats->rx);
@@ -1325,7 +1327,7 @@ idt77252_rx_raw(struct idt77252_dev *card)
                        goto drop;
                }
 
-               if ((vcc->sk != NULL) && !atm_charge(vcc, sb->truesize)) {
+               if (!atm_charge(vcc, sb->truesize)) {
                        RXPRINTK("%s: atm_charge() dropped AAL0 packets.\n",
                                 card->name);
                        dev_kfree_skb(sb);
@@ -1338,7 +1340,7 @@ idt77252_rx_raw(struct idt77252_dev *card)
                       ATM_CELL_PAYLOAD);
 
                ATM_SKB(sb)->vcc = vcc;
-               do_gettimeofday(&sb->stamp);
+               __net_timestamp(sb);
                vcc->push(vcc, sb);
                atomic_inc(&vcc->stats->rx);
 
@@ -2029,7 +2031,7 @@ idt77252_send_oam(struct atm_vcc *vcc, void *cell, int flags)
                atomic_inc(&vcc->stats->tx_err);
                return -ENOMEM;
        }
-       atomic_add(skb->truesize, &vcc->sk->sk_wmem_alloc);
+       atomic_add(skb->truesize, &sk_atm(vcc)->sk_wmem_alloc);
 
        memcpy(skb_put(skb, 52), cell, 52);