diff options
Diffstat (limited to 'net/802')
-rw-r--r-- | net/802/fc.c | 2 | ||||
-rw-r--r-- | net/802/fddi.c | 4 | ||||
-rw-r--r-- | net/802/hippi.c | 6 | ||||
-rw-r--r-- | net/802/p8022.c | 3 | ||||
-rw-r--r-- | net/802/p8023.c | 1 | ||||
-rw-r--r-- | net/802/psnap.c | 7 | ||||
-rw-r--r-- | net/802/sysctl_net_802.c | 3 | ||||
-rw-r--r-- | net/802/tr.c | 22 |
8 files changed, 28 insertions, 20 deletions
diff --git a/net/802/fc.c b/net/802/fc.c index 640d34e026c2..282c4ab1abe6 100644 --- a/net/802/fc.c +++ b/net/802/fc.c | |||
@@ -87,7 +87,7 @@ static int fc_rebuild_header(struct sk_buff *skb) | |||
87 | struct fch_hdr *fch=(struct fch_hdr *)skb->data; | 87 | struct fch_hdr *fch=(struct fch_hdr *)skb->data; |
88 | struct fcllc *fcllc=(struct fcllc *)(skb->data+sizeof(struct fch_hdr)); | 88 | struct fcllc *fcllc=(struct fcllc *)(skb->data+sizeof(struct fch_hdr)); |
89 | if(fcllc->ethertype != htons(ETH_P_IP)) { | 89 | if(fcllc->ethertype != htons(ETH_P_IP)) { |
90 | printk("fc_rebuild_header: Don't know how to resolve type %04X addresses ?\n",(unsigned int)htons(fcllc->ethertype)); | 90 | printk("fc_rebuild_header: Don't know how to resolve type %04X addresses ?\n", ntohs(fcllc->ethertype)); |
91 | return 0; | 91 | return 0; |
92 | } | 92 | } |
93 | #ifdef CONFIG_INET | 93 | #ifdef CONFIG_INET |
diff --git a/net/802/fddi.c b/net/802/fddi.c index 5ce24c4bb840..ac242a4bc346 100644 --- a/net/802/fddi.c +++ b/net/802/fddi.c | |||
@@ -108,8 +108,8 @@ static int fddi_rebuild_header(struct sk_buff *skb) | |||
108 | else | 108 | else |
109 | #endif | 109 | #endif |
110 | { | 110 | { |
111 | printk("%s: Don't know how to resolve type %02X addresses.\n", | 111 | printk("%s: Don't know how to resolve type %04X addresses.\n", |
112 | skb->dev->name, htons(fddi->hdr.llc_snap.ethertype)); | 112 | skb->dev->name, ntohs(fddi->hdr.llc_snap.ethertype)); |
113 | return(0); | 113 | return(0); |
114 | } | 114 | } |
115 | } | 115 | } |
diff --git a/net/802/hippi.c b/net/802/hippi.c index 051e8af56a77..6d7fed3dd99a 100644 --- a/net/802/hippi.c +++ b/net/802/hippi.c | |||
@@ -51,6 +51,7 @@ static int hippi_header(struct sk_buff *skb, struct net_device *dev, | |||
51 | unsigned len) | 51 | unsigned len) |
52 | { | 52 | { |
53 | struct hippi_hdr *hip = (struct hippi_hdr *)skb_push(skb, HIPPI_HLEN); | 53 | struct hippi_hdr *hip = (struct hippi_hdr *)skb_push(skb, HIPPI_HLEN); |
54 | struct hippi_cb *hcb = (struct hippi_cb *) skb->cb; | ||
54 | 55 | ||
55 | if (!len){ | 56 | if (!len){ |
56 | len = skb->len - HIPPI_HLEN; | 57 | len = skb->len - HIPPI_HLEN; |
@@ -84,9 +85,10 @@ static int hippi_header(struct sk_buff *skb, struct net_device *dev, | |||
84 | if (daddr) | 85 | if (daddr) |
85 | { | 86 | { |
86 | memcpy(hip->le.dest_switch_addr, daddr + 3, 3); | 87 | memcpy(hip->le.dest_switch_addr, daddr + 3, 3); |
87 | memcpy(&skb->private.ifield, daddr + 2, 4); | 88 | memcpy(&hcb->ifield, daddr + 2, 4); |
88 | return HIPPI_HLEN; | 89 | return HIPPI_HLEN; |
89 | } | 90 | } |
91 | hcb->ifield = 0; | ||
90 | return -((int)HIPPI_HLEN); | 92 | return -((int)HIPPI_HLEN); |
91 | } | 93 | } |
92 | 94 | ||
@@ -122,7 +124,7 @@ static int hippi_rebuild_header(struct sk_buff *skb) | |||
122 | * Determine the packet's protocol ID. | 124 | * Determine the packet's protocol ID. |
123 | */ | 125 | */ |
124 | 126 | ||
125 | unsigned short hippi_type_trans(struct sk_buff *skb, struct net_device *dev) | 127 | __be16 hippi_type_trans(struct sk_buff *skb, struct net_device *dev) |
126 | { | 128 | { |
127 | struct hippi_hdr *hip; | 129 | struct hippi_hdr *hip; |
128 | 130 | ||
diff --git a/net/802/p8022.c b/net/802/p8022.c index 5ae63416df6d..b24817c63ca8 100644 --- a/net/802/p8022.c +++ b/net/802/p8022.c | |||
@@ -35,7 +35,8 @@ static int p8022_request(struct datalink_proto *dl, struct sk_buff *skb, | |||
35 | struct datalink_proto *register_8022_client(unsigned char type, | 35 | struct datalink_proto *register_8022_client(unsigned char type, |
36 | int (*func)(struct sk_buff *skb, | 36 | int (*func)(struct sk_buff *skb, |
37 | struct net_device *dev, | 37 | struct net_device *dev, |
38 | struct packet_type *pt)) | 38 | struct packet_type *pt, |
39 | struct net_device *orig_dev)) | ||
39 | { | 40 | { |
40 | struct datalink_proto *proto; | 41 | struct datalink_proto *proto; |
41 | 42 | ||
diff --git a/net/802/p8023.c b/net/802/p8023.c index a0b61b40225f..6368d3dce444 100644 --- a/net/802/p8023.c +++ b/net/802/p8023.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/skbuff.h> | 20 | #include <linux/skbuff.h> |
21 | 21 | ||
22 | #include <net/datalink.h> | 22 | #include <net/datalink.h> |
23 | #include <net/p8022.h> | ||
23 | 24 | ||
24 | /* | 25 | /* |
25 | * Place an 802.3 header on a packet. The driver will do the mac | 26 | * Place an 802.3 header on a packet. The driver will do the mac |
diff --git a/net/802/psnap.c b/net/802/psnap.c index 1053821ddf93..ab80b1fab53c 100644 --- a/net/802/psnap.c +++ b/net/802/psnap.c | |||
@@ -47,7 +47,7 @@ static struct datalink_proto *find_snap_client(unsigned char *desc) | |||
47 | * A SNAP packet has arrived | 47 | * A SNAP packet has arrived |
48 | */ | 48 | */ |
49 | static int snap_rcv(struct sk_buff *skb, struct net_device *dev, | 49 | static int snap_rcv(struct sk_buff *skb, struct net_device *dev, |
50 | struct packet_type *pt) | 50 | struct packet_type *pt, struct net_device *orig_dev) |
51 | { | 51 | { |
52 | int rc = 1; | 52 | int rc = 1; |
53 | struct datalink_proto *proto; | 53 | struct datalink_proto *proto; |
@@ -61,7 +61,7 @@ static int snap_rcv(struct sk_buff *skb, struct net_device *dev, | |||
61 | /* Pass the frame on. */ | 61 | /* Pass the frame on. */ |
62 | skb->h.raw += 5; | 62 | skb->h.raw += 5; |
63 | skb_pull(skb, 5); | 63 | skb_pull(skb, 5); |
64 | rc = proto->rcvfunc(skb, dev, &snap_packet_type); | 64 | rc = proto->rcvfunc(skb, dev, &snap_packet_type, orig_dev); |
65 | } else { | 65 | } else { |
66 | skb->sk = NULL; | 66 | skb->sk = NULL; |
67 | kfree_skb(skb); | 67 | kfree_skb(skb); |
@@ -118,7 +118,8 @@ module_exit(snap_exit); | |||
118 | struct datalink_proto *register_snap_client(unsigned char *desc, | 118 | struct datalink_proto *register_snap_client(unsigned char *desc, |
119 | int (*rcvfunc)(struct sk_buff *, | 119 | int (*rcvfunc)(struct sk_buff *, |
120 | struct net_device *, | 120 | struct net_device *, |
121 | struct packet_type *)) | 121 | struct packet_type *, |
122 | struct net_device *)) | ||
122 | { | 123 | { |
123 | struct datalink_proto *proto = NULL; | 124 | struct datalink_proto *proto = NULL; |
124 | 125 | ||
diff --git a/net/802/sysctl_net_802.c b/net/802/sysctl_net_802.c index 36079630c49f..700129556c13 100644 --- a/net/802/sysctl_net_802.c +++ b/net/802/sysctl_net_802.c | |||
@@ -10,9 +10,10 @@ | |||
10 | * 2 of the License, or (at your option) any later version. | 10 | * 2 of the License, or (at your option) any later version. |
11 | */ | 11 | */ |
12 | 12 | ||
13 | #include <linux/config.h> | ||
13 | #include <linux/mm.h> | 14 | #include <linux/mm.h> |
15 | #include <linux/if_tr.h> | ||
14 | #include <linux/sysctl.h> | 16 | #include <linux/sysctl.h> |
15 | #include <linux/config.h> | ||
16 | 17 | ||
17 | #ifdef CONFIG_TR | 18 | #ifdef CONFIG_TR |
18 | extern int sysctl_tr_rif_timeout; | 19 | extern int sysctl_tr_rif_timeout; |
diff --git a/net/802/tr.c b/net/802/tr.c index a755e880f4ba..1bb7dc1b85cd 100644 --- a/net/802/tr.c +++ b/net/802/tr.c | |||
@@ -251,10 +251,11 @@ void tr_source_route(struct sk_buff *skb,struct trh_hdr *trh,struct net_device * | |||
251 | unsigned int hash; | 251 | unsigned int hash; |
252 | struct rif_cache *entry; | 252 | struct rif_cache *entry; |
253 | unsigned char *olddata; | 253 | unsigned char *olddata; |
254 | unsigned long flags; | ||
254 | static const unsigned char mcast_func_addr[] | 255 | static const unsigned char mcast_func_addr[] |
255 | = {0xC0,0x00,0x00,0x04,0x00,0x00}; | 256 | = {0xC0,0x00,0x00,0x04,0x00,0x00}; |
256 | 257 | ||
257 | spin_lock_bh(&rif_lock); | 258 | spin_lock_irqsave(&rif_lock, flags); |
258 | 259 | ||
259 | /* | 260 | /* |
260 | * Broadcasts are single route as stated in RFC 1042 | 261 | * Broadcasts are single route as stated in RFC 1042 |
@@ -323,7 +324,7 @@ printk("source routing for %02X:%02X:%02X:%02X:%02X:%02X\n",trh->daddr[0], | |||
323 | else | 324 | else |
324 | slack = 18 - ((ntohs(trh->rcf) & TR_RCF_LEN_MASK)>>8); | 325 | slack = 18 - ((ntohs(trh->rcf) & TR_RCF_LEN_MASK)>>8); |
325 | olddata = skb->data; | 326 | olddata = skb->data; |
326 | spin_unlock_bh(&rif_lock); | 327 | spin_unlock_irqrestore(&rif_lock, flags); |
327 | 328 | ||
328 | skb_pull(skb, slack); | 329 | skb_pull(skb, slack); |
329 | memmove(skb->data, olddata, sizeof(struct trh_hdr) - slack); | 330 | memmove(skb->data, olddata, sizeof(struct trh_hdr) - slack); |
@@ -337,10 +338,11 @@ printk("source routing for %02X:%02X:%02X:%02X:%02X:%02X\n",trh->daddr[0], | |||
337 | static void tr_add_rif_info(struct trh_hdr *trh, struct net_device *dev) | 338 | static void tr_add_rif_info(struct trh_hdr *trh, struct net_device *dev) |
338 | { | 339 | { |
339 | unsigned int hash, rii_p = 0; | 340 | unsigned int hash, rii_p = 0; |
341 | unsigned long flags; | ||
340 | struct rif_cache *entry; | 342 | struct rif_cache *entry; |
341 | 343 | ||
342 | 344 | ||
343 | spin_lock_bh(&rif_lock); | 345 | spin_lock_irqsave(&rif_lock, flags); |
344 | 346 | ||
345 | /* | 347 | /* |
346 | * Firstly see if the entry exists | 348 | * Firstly see if the entry exists |
@@ -378,7 +380,7 @@ printk("adding rif_entry: addr:%02X:%02X:%02X:%02X:%02X:%02X rcf:%04X\n", | |||
378 | if(!entry) | 380 | if(!entry) |
379 | { | 381 | { |
380 | printk(KERN_DEBUG "tr.c: Couldn't malloc rif cache entry !\n"); | 382 | printk(KERN_DEBUG "tr.c: Couldn't malloc rif cache entry !\n"); |
381 | spin_unlock_bh(&rif_lock); | 383 | spin_unlock_irqrestore(&rif_lock, flags); |
382 | return; | 384 | return; |
383 | } | 385 | } |
384 | 386 | ||
@@ -420,7 +422,7 @@ printk("updating rif_entry: addr:%02X:%02X:%02X:%02X:%02X:%02X rcf:%04X\n", | |||
420 | } | 422 | } |
421 | entry->last_used=jiffies; | 423 | entry->last_used=jiffies; |
422 | } | 424 | } |
423 | spin_unlock_bh(&rif_lock); | 425 | spin_unlock_irqrestore(&rif_lock, flags); |
424 | } | 426 | } |
425 | 427 | ||
426 | /* | 428 | /* |
@@ -430,9 +432,9 @@ printk("updating rif_entry: addr:%02X:%02X:%02X:%02X:%02X:%02X rcf:%04X\n", | |||
430 | static void rif_check_expire(unsigned long dummy) | 432 | static void rif_check_expire(unsigned long dummy) |
431 | { | 433 | { |
432 | int i; | 434 | int i; |
433 | unsigned long next_interval = jiffies + sysctl_tr_rif_timeout/2; | 435 | unsigned long flags, next_interval = jiffies + sysctl_tr_rif_timeout/2; |
434 | 436 | ||
435 | spin_lock_bh(&rif_lock); | 437 | spin_lock_irqsave(&rif_lock, flags); |
436 | 438 | ||
437 | for(i =0; i < RIF_TABLE_SIZE; i++) { | 439 | for(i =0; i < RIF_TABLE_SIZE; i++) { |
438 | struct rif_cache *entry, **pentry; | 440 | struct rif_cache *entry, **pentry; |
@@ -454,7 +456,7 @@ static void rif_check_expire(unsigned long dummy) | |||
454 | } | 456 | } |
455 | } | 457 | } |
456 | 458 | ||
457 | spin_unlock_bh(&rif_lock); | 459 | spin_unlock_irqrestore(&rif_lock, flags); |
458 | 460 | ||
459 | mod_timer(&rif_timer, next_interval); | 461 | mod_timer(&rif_timer, next_interval); |
460 | 462 | ||
@@ -485,7 +487,7 @@ static struct rif_cache *rif_get_idx(loff_t pos) | |||
485 | 487 | ||
486 | static void *rif_seq_start(struct seq_file *seq, loff_t *pos) | 488 | static void *rif_seq_start(struct seq_file *seq, loff_t *pos) |
487 | { | 489 | { |
488 | spin_lock_bh(&rif_lock); | 490 | spin_lock_irq(&rif_lock); |
489 | 491 | ||
490 | return *pos ? rif_get_idx(*pos - 1) : SEQ_START_TOKEN; | 492 | return *pos ? rif_get_idx(*pos - 1) : SEQ_START_TOKEN; |
491 | } | 493 | } |
@@ -516,7 +518,7 @@ static void *rif_seq_next(struct seq_file *seq, void *v, loff_t *pos) | |||
516 | 518 | ||
517 | static void rif_seq_stop(struct seq_file *seq, void *v) | 519 | static void rif_seq_stop(struct seq_file *seq, void *v) |
518 | { | 520 | { |
519 | spin_unlock_bh(&rif_lock); | 521 | spin_unlock_irq(&rif_lock); |
520 | } | 522 | } |
521 | 523 | ||
522 | static int rif_seq_show(struct seq_file *seq, void *v) | 524 | static int rif_seq_show(struct seq_file *seq, void *v) |