Skip to content

Commit

Permalink
RDMA/core: Let protocol specific function typecast sockaddr structure
Browse files Browse the repository at this point in the history
Current code typecasts destination address using extra variable but uses
source address as is.

Even though the compiler optimizes such code well, just let each protocol
specific function typecast for src and dest both and have symmetric code.

Signed-off-by: Parav Pandit <parav@mellanox.com>
Reviewed-by: Daniel Jurgens <danielj@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
  • Loading branch information
Parav Pandit authored and Jason Gunthorpe committed Sep 12, 2018
1 parent f89b7df commit 89c5691
Showing 1 changed file with 15 additions and 16 deletions.
31 changes: 15 additions & 16 deletions drivers/infiniband/core/addr.c
Original file line number Diff line number Diff line change
Expand Up @@ -372,11 +372,15 @@ static int fetch_ha(const struct dst_entry *dst, struct rdma_dev_addr *dev_addr,
return dst_fetch_ha(dst, dev_addr, daddr);
}

static int addr4_resolve(struct sockaddr_in *src_in,
const struct sockaddr_in *dst_in,
static int addr4_resolve(struct sockaddr *src_sock,
const struct sockaddr *dst_sock,
struct rdma_dev_addr *addr,
struct rtable **prt)
{
struct sockaddr_in *src_in = (struct sockaddr_in *)src_sock;
const struct sockaddr_in *dst_in =
(const struct sockaddr_in *)dst_sock;

__be32 src_ip = src_in->sin_addr.s_addr;
__be32 dst_ip = dst_in->sin_addr.s_addr;
struct rtable *rt;
Expand Down Expand Up @@ -408,11 +412,14 @@ static int addr4_resolve(struct sockaddr_in *src_in,
}

#if IS_ENABLED(CONFIG_IPV6)
static int addr6_resolve(struct sockaddr_in6 *src_in,
const struct sockaddr_in6 *dst_in,
static int addr6_resolve(struct sockaddr *src_sock,
const struct sockaddr *dst_sock,
struct rdma_dev_addr *addr,
struct dst_entry **pdst)
{
struct sockaddr_in6 *src_in = (struct sockaddr_in6 *)src_sock;
const struct sockaddr_in6 *dst_in =
(const struct sockaddr_in6 *)dst_sock;
struct flowi6 fl6;
struct dst_entry *dst;
struct rt6_info *rt;
Expand Down Expand Up @@ -445,8 +452,8 @@ static int addr6_resolve(struct sockaddr_in6 *src_in,
return 0;
}
#else
static int addr6_resolve(struct sockaddr_in6 *src_in,
const struct sockaddr_in6 *dst_in,
static int addr6_resolve(struct sockaddr *src_sock,
const struct sockaddr *dst_sock,
struct rdma_dev_addr *addr,
struct dst_entry **pdst)
{
Expand Down Expand Up @@ -496,11 +503,8 @@ static int addr_resolve(struct sockaddr *src_in,

if (src_in->sa_family == AF_INET) {
struct rtable *rt = NULL;
const struct sockaddr_in *dst_in4 =
(const struct sockaddr_in *)dst_in;

ret = addr4_resolve((struct sockaddr_in *)src_in,
dst_in4, addr, &rt);
ret = addr4_resolve(src_in, dst_in, addr, &rt);
if (ret)
return ret;

Expand All @@ -516,12 +520,7 @@ static int addr_resolve(struct sockaddr *src_in,

ip_rt_put(rt);
} else {
const struct sockaddr_in6 *dst_in6 =
(const struct sockaddr_in6 *)dst_in;

ret = addr6_resolve((struct sockaddr_in6 *)src_in,
dst_in6, addr,
&dst);
ret = addr6_resolve(src_in, dst_in, addr, &dst);
if (ret)
return ret;

Expand Down

0 comments on commit 89c5691

Please sign in to comment.