@@ -56,7 +56,6 @@ struct addr_req {
56
56
struct sockaddr_storage src_addr ;
57
57
struct sockaddr_storage dst_addr ;
58
58
struct rdma_dev_addr * addr ;
59
- struct rdma_addr_client * client ;
60
59
void * context ;
61
60
void (* callback )(int status , struct sockaddr * src_addr ,
62
61
struct rdma_dev_addr * addr , void * context );
@@ -220,28 +219,6 @@ int rdma_addr_size_kss(struct __kernel_sockaddr_storage *addr)
220
219
}
221
220
EXPORT_SYMBOL (rdma_addr_size_kss );
222
221
223
- static struct rdma_addr_client self ;
224
-
225
- void rdma_addr_register_client (struct rdma_addr_client * client )
226
- {
227
- atomic_set (& client -> refcount , 1 );
228
- init_completion (& client -> comp );
229
- }
230
- EXPORT_SYMBOL (rdma_addr_register_client );
231
-
232
- static inline void put_client (struct rdma_addr_client * client )
233
- {
234
- if (atomic_dec_and_test (& client -> refcount ))
235
- complete (& client -> comp );
236
- }
237
-
238
- void rdma_addr_unregister_client (struct rdma_addr_client * client )
239
- {
240
- put_client (client );
241
- wait_for_completion (& client -> comp );
242
- }
243
- EXPORT_SYMBOL (rdma_addr_unregister_client );
244
-
245
222
void rdma_copy_addr (struct rdma_dev_addr * dev_addr ,
246
223
const struct net_device * dev ,
247
224
const unsigned char * dst_dev_addr )
@@ -605,14 +582,12 @@ static void process_one_req(struct work_struct *_work)
605
582
*/
606
583
cancel_delayed_work (& req -> work );
607
584
list_del_init (& req -> list );
608
- put_client (req -> client );
609
585
kfree (req );
610
586
}
611
587
spin_unlock_bh (& lock );
612
588
}
613
589
614
- int rdma_resolve_ip (struct rdma_addr_client * client ,
615
- struct sockaddr * src_addr , struct sockaddr * dst_addr ,
590
+ int rdma_resolve_ip (struct sockaddr * src_addr , struct sockaddr * dst_addr ,
616
591
struct rdma_dev_addr * addr , int timeout_ms ,
617
592
void (* callback )(int status , struct sockaddr * src_addr ,
618
593
struct rdma_dev_addr * addr , void * context ),
@@ -644,8 +619,6 @@ int rdma_resolve_ip(struct rdma_addr_client *client,
644
619
req -> addr = addr ;
645
620
req -> callback = callback ;
646
621
req -> context = context ;
647
- req -> client = client ;
648
- atomic_inc (& client -> refcount );
649
622
INIT_DELAYED_WORK (& req -> work , process_one_req );
650
623
req -> seq = (u32 )atomic_inc_return (& ib_nl_addr_request_seq );
651
624
@@ -661,7 +634,6 @@ int rdma_resolve_ip(struct rdma_addr_client *client,
661
634
break ;
662
635
default :
663
636
ret = req -> status ;
664
- atomic_dec (& client -> refcount );
665
637
goto err ;
666
638
}
667
639
return ret ;
@@ -722,7 +694,6 @@ void rdma_addr_cancel(struct rdma_dev_addr *addr)
722
694
found -> callback (- ECANCELED , (struct sockaddr * )& found -> src_addr ,
723
695
found -> addr , found -> context );
724
696
725
- put_client (found -> client );
726
697
kfree (found );
727
698
}
728
699
EXPORT_SYMBOL (rdma_addr_cancel );
@@ -761,8 +732,8 @@ int rdma_addr_find_l2_eth_by_grh(const union ib_gid *sgid,
761
732
dev_addr .net = & init_net ;
762
733
763
734
init_completion (& ctx .comp );
764
- ret = rdma_resolve_ip (& self , & sgid_addr ._sockaddr , & dgid_addr ._sockaddr ,
765
- & dev_addr , 1000 , resolve_cb , & ctx );
735
+ ret = rdma_resolve_ip (& sgid_addr ._sockaddr , & dgid_addr ._sockaddr ,
736
+ & dev_addr , 1000 , resolve_cb , & ctx );
766
737
if (ret )
767
738
return ret ;
768
739
@@ -806,14 +777,13 @@ int addr_init(void)
806
777
return - ENOMEM ;
807
778
808
779
register_netevent_notifier (& nb );
809
- rdma_addr_register_client (& self );
810
780
811
781
return 0 ;
812
782
}
813
783
814
784
void addr_cleanup (void )
815
785
{
816
- rdma_addr_unregister_client (& self );
817
786
unregister_netevent_notifier (& nb );
818
787
destroy_workqueue (addr_wq );
788
+ WARN_ON (!list_empty (& req_list ));
819
789
}
0 commit comments