diff options
Diffstat (limited to 'net/802/tr.c')
-rw-r--r-- | net/802/tr.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/net/802/tr.c b/net/802/tr.c index 1eaa3d19d8bf..afd8385c0c9c 100644 --- a/net/802/tr.c +++ b/net/802/tr.c | |||
@@ -340,9 +340,10 @@ static void tr_add_rif_info(struct trh_hdr *trh, struct net_device *dev) | |||
340 | unsigned int hash, rii_p = 0; | 340 | unsigned int hash, rii_p = 0; |
341 | unsigned long flags; | 341 | unsigned long flags; |
342 | struct rif_cache *entry; | 342 | struct rif_cache *entry; |
343 | 343 | unsigned char saddr0; | |
344 | 344 | ||
345 | spin_lock_irqsave(&rif_lock, flags); | 345 | spin_lock_irqsave(&rif_lock, flags); |
346 | saddr0 = trh->saddr[0]; | ||
346 | 347 | ||
347 | /* | 348 | /* |
348 | * Firstly see if the entry exists | 349 | * Firstly see if the entry exists |
@@ -395,7 +396,6 @@ printk("adding rif_entry: addr:%02X:%02X:%02X:%02X:%02X:%02X rcf:%04X\n", | |||
395 | entry->rcf = trh->rcf & htons((unsigned short)~TR_RCF_BROADCAST_MASK); | 396 | entry->rcf = trh->rcf & htons((unsigned short)~TR_RCF_BROADCAST_MASK); |
396 | memcpy(&(entry->rseg[0]),&(trh->rseg[0]),8*sizeof(unsigned short)); | 397 | memcpy(&(entry->rseg[0]),&(trh->rseg[0]),8*sizeof(unsigned short)); |
397 | entry->local_ring = 0; | 398 | entry->local_ring = 0; |
398 | trh->saddr[0]|=TR_RII; /* put the routing indicator back for tcpdump */ | ||
399 | } | 399 | } |
400 | else | 400 | else |
401 | { | 401 | { |
@@ -422,6 +422,7 @@ printk("updating rif_entry: addr:%02X:%02X:%02X:%02X:%02X:%02X rcf:%04X\n", | |||
422 | } | 422 | } |
423 | entry->last_used=jiffies; | 423 | entry->last_used=jiffies; |
424 | } | 424 | } |
425 | trh->saddr[0]=saddr0; /* put the routing indicator back for tcpdump */ | ||
425 | spin_unlock_irqrestore(&rif_lock, flags); | 426 | spin_unlock_irqrestore(&rif_lock, flags); |
426 | } | 427 | } |
427 | 428 | ||