@@ -4385,12 +4385,9 @@ struct netdev_adjacent {
4385
4385
4386
4386
static struct netdev_adjacent * __netdev_find_adj (struct net_device * dev ,
4387
4387
struct net_device * adj_dev ,
4388
- bool upper )
4388
+ struct list_head * dev_list )
4389
4389
{
4390
4390
struct netdev_adjacent * adj ;
4391
- struct list_head * dev_list ;
4392
-
4393
- dev_list = upper ? & dev -> upper_dev_list : & dev -> lower_dev_list ;
4394
4391
4395
4392
list_for_each_entry (adj , dev_list , list ) {
4396
4393
if (adj -> dev == adj_dev )
@@ -4402,13 +4399,13 @@ static struct netdev_adjacent *__netdev_find_adj(struct net_device *dev,
4402
4399
static inline struct netdev_adjacent * __netdev_find_upper (struct net_device * dev ,
4403
4400
struct net_device * udev )
4404
4401
{
4405
- return __netdev_find_adj (dev , udev , true );
4402
+ return __netdev_find_adj (dev , udev , & dev -> upper_dev_list );
4406
4403
}
4407
4404
4408
4405
static inline struct netdev_adjacent * __netdev_find_lower (struct net_device * dev ,
4409
4406
struct net_device * ldev )
4410
4407
{
4411
- return __netdev_find_adj (dev , ldev , false );
4408
+ return __netdev_find_adj (dev , ldev , & dev -> lower_dev_list );
4412
4409
}
4413
4410
4414
4411
/**
@@ -4514,12 +4511,12 @@ EXPORT_SYMBOL(netdev_master_upper_dev_get_rcu);
4514
4511
4515
4512
static int __netdev_adjacent_dev_insert (struct net_device * dev ,
4516
4513
struct net_device * adj_dev ,
4517
- bool neighbour , bool master ,
4518
- bool upper )
4514
+ struct list_head * dev_list ,
4515
+ bool neighbour , bool master )
4519
4516
{
4520
4517
struct netdev_adjacent * adj ;
4521
4518
4522
- adj = __netdev_find_adj (dev , adj_dev , upper );
4519
+ adj = __netdev_find_adj (dev , adj_dev , dev_list );
4523
4520
4524
4521
if (adj ) {
4525
4522
BUG_ON (neighbour );
@@ -4538,19 +4535,14 @@ static int __netdev_adjacent_dev_insert(struct net_device *dev,
4538
4535
4539
4536
dev_hold (adj_dev );
4540
4537
pr_debug ("dev_hold for %s, because of %s link added from %s to %s\n" ,
4541
- adj_dev -> name , upper ? "upper" : "lower" , dev -> name ,
4542
- adj_dev -> name );
4538
+ adj_dev -> name , dev_list == & dev -> upper_dev_list ?
4539
+ "upper" : "lower" , dev -> name , adj_dev -> name );
4543
4540
4544
- if (!upper ) {
4545
- list_add_tail_rcu (& adj -> list , & dev -> lower_dev_list );
4546
- return 0 ;
4547
- }
4548
-
4549
- /* Ensure that master upper link is always the first item in list. */
4541
+ /* Ensure that master link is always the first item in list. */
4550
4542
if (master )
4551
- list_add_rcu (& adj -> list , & dev -> upper_dev_list );
4543
+ list_add_rcu (& adj -> list , dev_list );
4552
4544
else
4553
- list_add_tail_rcu (& adj -> list , & dev -> upper_dev_list );
4545
+ list_add_tail_rcu (& adj -> list , dev_list );
4554
4546
4555
4547
return 0 ;
4556
4548
}
@@ -4559,27 +4551,25 @@ static inline int __netdev_upper_dev_insert(struct net_device *dev,
4559
4551
struct net_device * udev ,
4560
4552
bool master , bool neighbour )
4561
4553
{
4562
- return __netdev_adjacent_dev_insert (dev , udev , neighbour , master ,
4563
- true );
4554
+ return __netdev_adjacent_dev_insert (dev , udev , & dev -> upper_dev_list ,
4555
+ neighbour , master );
4564
4556
}
4565
4557
4566
4558
static inline int __netdev_lower_dev_insert (struct net_device * dev ,
4567
4559
struct net_device * ldev ,
4568
4560
bool neighbour )
4569
4561
{
4570
- return __netdev_adjacent_dev_insert (dev , ldev , neighbour , false ,
4571
- false);
4562
+ return __netdev_adjacent_dev_insert (dev , ldev , & dev -> lower_dev_list ,
4563
+ neighbour , false);
4572
4564
}
4573
4565
4574
4566
void __netdev_adjacent_dev_remove (struct net_device * dev ,
4575
- struct net_device * adj_dev , bool upper )
4567
+ struct net_device * adj_dev ,
4568
+ struct list_head * dev_list )
4576
4569
{
4577
4570
struct netdev_adjacent * adj ;
4578
4571
4579
- if (upper )
4580
- adj = __netdev_find_upper (dev , adj_dev );
4581
- else
4582
- adj = __netdev_find_lower (dev , adj_dev );
4572
+ adj = __netdev_find_adj (dev , adj_dev , dev_list );
4583
4573
4584
4574
if (!adj )
4585
4575
BUG ();
@@ -4591,22 +4581,22 @@ void __netdev_adjacent_dev_remove(struct net_device *dev,
4591
4581
4592
4582
list_del_rcu (& adj -> list );
4593
4583
pr_debug ("dev_put for %s, because of %s link removed from %s to %s\n" ,
4594
- adj_dev -> name , upper ? "upper" : "lower" , dev -> name ,
4595
- adj_dev -> name );
4584
+ adj_dev -> name , dev_list == & dev -> upper_dev_list ?
4585
+ "upper" : "lower" , dev -> name , adj_dev -> name );
4596
4586
dev_put (adj_dev );
4597
4587
kfree_rcu (adj , rcu );
4598
4588
}
4599
4589
4600
4590
static inline void __netdev_upper_dev_remove (struct net_device * dev ,
4601
4591
struct net_device * udev )
4602
4592
{
4603
- return __netdev_adjacent_dev_remove (dev , udev , true );
4593
+ return __netdev_adjacent_dev_remove (dev , udev , & dev -> upper_dev_list );
4604
4594
}
4605
4595
4606
4596
static inline void __netdev_lower_dev_remove (struct net_device * dev ,
4607
4597
struct net_device * ldev )
4608
4598
{
4609
- return __netdev_adjacent_dev_remove (dev , ldev , false );
4599
+ return __netdev_adjacent_dev_remove (dev , ldev , & dev -> lower_dev_list );
4610
4600
}
4611
4601
4612
4602
int __netdev_adjacent_dev_insert_link (struct net_device * dev ,
0 commit comments