git://ftp.safe.ca
/
safe
/
jmp
/
linux-2.6
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
netfilter: nf_conntrack: death_by_timeout() fix
[safe/jmp/linux-2.6]
/
net
/
phonet
/
pep-gprs.c
diff --git
a/net/phonet/pep-gprs.c
b/net/phonet/pep-gprs.c
index
b0ceac2
..
480839d
100644
(file)
--- a/
net/phonet/pep-gprs.c
+++ b/
net/phonet/pep-gprs.c
@@
-115,10
+115,10
@@
static int gprs_recv(struct gprs_dev *gp, struct sk_buff *skb)
rskb->truesize += rskb->len;
/* Avoid nested fragments */
rskb->truesize += rskb->len;
/* Avoid nested fragments */
-
for (fs = skb_shinfo(skb)->frag_list; fs; fs = fs->next
)
+
skb_walk_frags(skb, fs
)
flen += fs->len;
skb->next = skb_shinfo(skb)->frag_list;
flen += fs->len;
skb->next = skb_shinfo(skb)->frag_list;
- skb_
shinfo(skb)->frag_list = NULL
;
+ skb_
frag_list_init(skb)
;
skb->len -= flen;
skb->data_len -= flen;
skb->truesize -= flen;
skb->len -= flen;
skb->data_len -= flen;
skb->truesize -= flen;
@@
-207,14
+207,14
@@
static int gprs_xmit(struct sk_buff *skb, struct net_device *dev)
dev->name, err);
dev->stats.tx_aborted_errors++;
dev->stats.tx_errors++;
dev->name, err);
dev->stats.tx_aborted_errors++;
dev->stats.tx_errors++;
- dev_kfree_skb(skb);
} else {
dev->stats.tx_packets++;
dev->stats.tx_bytes += len;
}
} else {
dev->stats.tx_packets++;
dev->stats.tx_bytes += len;
}
- if (!pep_writeable(sk))
- netif_stop_queue(dev);
+ netif_stop_queue(dev);
+ if (pep_writeable(sk))
+ netif_wake_queue(dev);
return 0;
}
return 0;
}
@@
-227,6
+227,13
@@
static int gprs_set_mtu(struct net_device *dev, int new_mtu)
return 0;
}
return 0;
}
+static const struct net_device_ops gprs_netdev_ops = {
+ .ndo_open = gprs_open,
+ .ndo_stop = gprs_close,
+ .ndo_start_xmit = gprs_xmit,
+ .ndo_change_mtu = gprs_set_mtu,
+};
+
static void gprs_setup(struct net_device *dev)
{
dev->features = NETIF_F_FRAGLIST;
static void gprs_setup(struct net_device *dev)
{
dev->features = NETIF_F_FRAGLIST;
@@
-237,11
+244,8
@@
static void gprs_setup(struct net_device *dev)
dev->addr_len = 0;
dev->tx_queue_len = 10;
dev->addr_len = 0;
dev->tx_queue_len = 10;
+ dev->netdev_ops = &gprs_netdev_ops;
dev->destructor = free_netdev;
dev->destructor = free_netdev;
- dev->open = gprs_open;
- dev->stop = gprs_close;
- dev->hard_start_xmit = gprs_xmit; /* mandatory */
- dev->change_mtu = gprs_set_mtu;
}
/*
}
/*