RDMA/rxe: Move the definitions for rxe_av.network_type to uAPI
RXE was wrongly using an internal kernel enum as part of its uAPI, split
this out into a dedicated uAPI enum just for RXE. It only uses the IPv4
and IPv6 values.
This was exposed by changing the internal kernel enum definition which
broke RXE.
Fixes: 1c15b4f2a4
("RDMA/core: Modify enum ib_gid_type and enum rdma_network_type")
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
This commit is contained in:
parent
e0477b34d9
commit
e0d696d201
@ -133,14 +133,14 @@ static struct dst_entry *rxe_find_route(struct net_device *ndev,
|
|||||||
if (dst)
|
if (dst)
|
||||||
dst_release(dst);
|
dst_release(dst);
|
||||||
|
|
||||||
if (av->network_type == RDMA_NETWORK_IPV4) {
|
if (av->network_type == RXE_NETWORK_TYPE_IPV4) {
|
||||||
struct in_addr *saddr;
|
struct in_addr *saddr;
|
||||||
struct in_addr *daddr;
|
struct in_addr *daddr;
|
||||||
|
|
||||||
saddr = &av->sgid_addr._sockaddr_in.sin_addr;
|
saddr = &av->sgid_addr._sockaddr_in.sin_addr;
|
||||||
daddr = &av->dgid_addr._sockaddr_in.sin_addr;
|
daddr = &av->dgid_addr._sockaddr_in.sin_addr;
|
||||||
dst = rxe_find_route4(ndev, saddr, daddr);
|
dst = rxe_find_route4(ndev, saddr, daddr);
|
||||||
} else if (av->network_type == RDMA_NETWORK_IPV6) {
|
} else if (av->network_type == RXE_NETWORK_TYPE_IPV6) {
|
||||||
struct in6_addr *saddr6;
|
struct in6_addr *saddr6;
|
||||||
struct in6_addr *daddr6;
|
struct in6_addr *daddr6;
|
||||||
|
|
||||||
@ -442,7 +442,7 @@ struct sk_buff *rxe_init_packet(struct rxe_dev *rxe, struct rxe_av *av,
|
|||||||
if (IS_ERR(attr))
|
if (IS_ERR(attr))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (av->network_type == RDMA_NETWORK_IPV4)
|
if (av->network_type == RXE_NETWORK_TYPE_IPV6)
|
||||||
hdr_len = ETH_HLEN + sizeof(struct udphdr) +
|
hdr_len = ETH_HLEN + sizeof(struct udphdr) +
|
||||||
sizeof(struct iphdr);
|
sizeof(struct iphdr);
|
||||||
else
|
else
|
||||||
@ -469,7 +469,7 @@ struct sk_buff *rxe_init_packet(struct rxe_dev *rxe, struct rxe_av *av,
|
|||||||
skb->dev = ndev;
|
skb->dev = ndev;
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
|
|
||||||
if (av->network_type == RDMA_NETWORK_IPV4)
|
if (av->network_type == RXE_NETWORK_TYPE_IPV4)
|
||||||
skb->protocol = htons(ETH_P_IP);
|
skb->protocol = htons(ETH_P_IP);
|
||||||
else
|
else
|
||||||
skb->protocol = htons(ETH_P_IPV6);
|
skb->protocol = htons(ETH_P_IPV6);
|
||||||
|
@ -39,6 +39,11 @@
|
|||||||
#include <linux/in.h>
|
#include <linux/in.h>
|
||||||
#include <linux/in6.h>
|
#include <linux/in6.h>
|
||||||
|
|
||||||
|
enum {
|
||||||
|
RXE_NETWORK_TYPE_IPV4 = 1,
|
||||||
|
RXE_NETWORK_TYPE_IPV6 = 2,
|
||||||
|
};
|
||||||
|
|
||||||
union rxe_gid {
|
union rxe_gid {
|
||||||
__u8 raw[16];
|
__u8 raw[16];
|
||||||
struct {
|
struct {
|
||||||
@ -57,6 +62,7 @@ struct rxe_global_route {
|
|||||||
|
|
||||||
struct rxe_av {
|
struct rxe_av {
|
||||||
__u8 port_num;
|
__u8 port_num;
|
||||||
|
/* From RXE_NETWORK_TYPE_* */
|
||||||
__u8 network_type;
|
__u8 network_type;
|
||||||
__u8 dmac[6];
|
__u8 dmac[6];
|
||||||
struct rxe_global_route grh;
|
struct rxe_global_route grh;
|
||||||
|
Loading…
Reference in New Issue
Block a user