git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
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]
/
net
/
atm
/
br2684.c
diff --git
a/net/atm/br2684.c
b/net/atm/br2684.c
index
91a89d3
..
680ccb1
100644
(file)
--- a/
net/atm/br2684.c
+++ b/
net/atm/br2684.c
@@
-18,6
+18,7
@@
Author: Marcell GAL, 2000, XDSL Ltd, Hungary
#include <net/arp.h>
#include <linux/atm.h>
#include <linux/atmdev.h>
#include <net/arp.h>
#include <linux/atm.h>
#include <linux/atmdev.h>
+#include <linux/capability.h>
#include <linux/seq_file.h>
#include <linux/atmbr2684.h>
#include <linux/seq_file.h>
#include <linux/atmbr2684.h>
@@
-97,7
+98,7
@@
struct br2684_dev {
* do read-locking under interrupt context, so write locking must block
* the current CPU's interrupts
*/
* do read-locking under interrupt context, so write locking must block
* the current CPU's interrupts
*/
-static
rwlock_t devs_lock = RW_LOCK_UNLOCKED
;
+static
DEFINE_RWLOCK(devs_lock)
;
static LIST_HEAD(br2684_devs);
static LIST_HEAD(br2684_devs);
@@
-190,7
+191,7
@@
static int br2684_xmit_vcc(struct sk_buff *skb, struct br2684_dev *brdev,
dev_kfree_skb(skb);
return 0;
}
dev_kfree_skb(skb);
return 0;
}
- atomic_add(skb->truesize, &
atmvcc->sk
->sk_wmem_alloc);
+ atomic_add(skb->truesize, &
sk_atm(atmvcc)
->sk_wmem_alloc);
ATM_SKB(skb)->atm_options = atmvcc->atm_options;
brdev->stats.tx_packets++;
brdev->stats.tx_bytes += skb->len;
ATM_SKB(skb)->atm_options = atmvcc->atm_options;
brdev->stats.tx_packets++;
brdev->stats.tx_bytes += skb->len;
@@
-220,7
+221,7
@@
static int br2684_start_xmit(struct sk_buff *skb, struct net_device *dev)
/* netif_stop_queue(dev); */
dev_kfree_skb(skb);
read_unlock(&devs_lock);
/* netif_stop_queue(dev); */
dev_kfree_skb(skb);
read_unlock(&devs_lock);
- return
-EUNATCH
;
+ return
0
;
}
if (!br2684_xmit_vcc(skb, brdev, brvcc)) {
/*
}
if (!br2684_xmit_vcc(skb, brdev, brvcc)) {
/*
@@
-289,21
+290,20
@@
xmit will add the additional header part in that case */
* This is similar to eth_type_trans, which cannot be used because of
* our dev->hard_header_len
*/
* This is similar to eth_type_trans, which cannot be used because of
* our dev->hard_header_len
*/
-static inline unsigned short br_type_trans(struct sk_buff *skb,
- struct net_device *dev)
+static inline __be16 br_type_trans(struct sk_buff *skb, struct net_device *dev)
{
struct ethhdr *eth;
unsigned char *rawp;
{
struct ethhdr *eth;
unsigned char *rawp;
- eth =
skb->mac.ethernet
;
+ eth =
eth_hdr(skb)
;
- if (
*eth->h_dest & 1
) {
- if (
memcmp(eth->h_dest, dev->broadcast, ETH_ALEN) == 0
)
+ if (
is_multicast_ether_addr(eth->h_dest)
) {
+ if (
!compare_ether_addr(eth->h_dest, dev->broadcast)
)
skb->pkt_type = PACKET_BROADCAST;
else
skb->pkt_type = PACKET_MULTICAST;
}
skb->pkt_type = PACKET_BROADCAST;
else
skb->pkt_type = PACKET_MULTICAST;
}
- else if (
memcmp(eth->h_dest, dev->dev_addr, ETH_ALEN
))
+ else if (
compare_ether_addr(eth->h_dest, dev->dev_addr
))
skb->pkt_type = PACKET_OTHERHOST;
if (ntohs(eth->h_proto) >= 1536)
skb->pkt_type = PACKET_OTHERHOST;
if (ntohs(eth->h_proto) >= 1536)
@@
-557,13
+557,13
@@
Note: we do not have explicit unassign, but look at _push()
barrier();
atmvcc->push = br2684_push;
skb_queue_head_init(©);
barrier();
atmvcc->push = br2684_push;
skb_queue_head_init(©);
- skb_migrate(&
atmvcc->sk
->sk_receive_queue, ©);
- while ((skb = skb_dequeue(©))) {
+ skb_migrate(&
sk_atm(atmvcc)
->sk_receive_queue, ©);
+ while ((skb = skb_dequeue(©))
!= NULL
) {
BRPRIV(skb->dev)->stats.rx_bytes -= skb->len;
BRPRIV(skb->dev)->stats.rx_packets--;
br2684_push(atmvcc, skb);
}
BRPRIV(skb->dev)->stats.rx_bytes -= skb->len;
BRPRIV(skb->dev)->stats.rx_packets--;
br2684_push(atmvcc, skb);
}
-
(void) try
_module_get(THIS_MODULE);
+
_
_module_get(THIS_MODULE);
return 0;
error:
write_unlock_irq(&devs_lock);
return 0;
error:
write_unlock_irq(&devs_lock);