If the ip address tables hasn't changed, there is no need to remove
them only to be added back again.

Lets fix it.
Reviewed-by: Ajaykumar Hotchandani <ajaykumar.hotchand...@oracle.com>
Signed-off-by: Santosh Shilimkar <ssant...@kernel.org>
Signed-off-by: Santosh Shilimkar <santosh.shilim...@oracle.com>
---
 net/rds/ib_rdma.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/net/rds/ib_rdma.c b/net/rds/ib_rdma.c
index 657ba9f..e49c956 100644
--- a/net/rds/ib_rdma.c
+++ b/net/rds/ib_rdma.c
@@ -151,12 +151,17 @@ int rds_ib_update_ipaddr(struct rds_ib_device *rds_ibdev, 
__be32 ipaddr)
        struct rds_ib_device *rds_ibdev_old;
 
        rds_ibdev_old = rds_ib_get_device(ipaddr);
-       if (rds_ibdev_old) {
+       if (!rds_ibdev_old)
+               return rds_ib_add_ipaddr(rds_ibdev, ipaddr);
+
+       if (rds_ibdev_old != rds_ibdev) {
                rds_ib_remove_ipaddr(rds_ibdev_old, ipaddr);
                rds_ib_dev_put(rds_ibdev_old);
+               return rds_ib_add_ipaddr(rds_ibdev, ipaddr);
        }
+       rds_ib_dev_put(rds_ibdev_old);
 
-       return rds_ib_add_ipaddr(rds_ibdev, ipaddr);
+       return 0;
 }
 
 void rds_ib_add_conn(struct rds_ib_device *rds_ibdev, struct rds_connection 
*conn)
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to