iw_cxgb4: use listening ep tos when accepting new connections
If the parent listening endpoint has a service type set, then use that when setting up the connection. This allows server-side applications to mandate the tos for passive side connections via rdma_set_service_type() on the listening endpoints. Signed-off-by: Steve Wise <swise@opengridcomputing.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
This commit is contained in:
parent
926ba19b35
commit
7235ea227e
@ -2476,7 +2476,7 @@ static int pass_accept_req(struct c4iw_dev *dev, struct sk_buff *skb)
|
|||||||
u16 peer_mss = ntohs(req->tcpopt.mss);
|
u16 peer_mss = ntohs(req->tcpopt.mss);
|
||||||
int iptype;
|
int iptype;
|
||||||
unsigned short hdrs;
|
unsigned short hdrs;
|
||||||
u8 tos = PASS_OPEN_TOS_G(ntohl(req->tos_stid));
|
u8 tos;
|
||||||
|
|
||||||
parent_ep = (struct c4iw_ep *)get_ep_from_stid(dev, stid);
|
parent_ep = (struct c4iw_ep *)get_ep_from_stid(dev, stid);
|
||||||
if (!parent_ep) {
|
if (!parent_ep) {
|
||||||
@ -2490,6 +2490,11 @@ static int pass_accept_req(struct c4iw_dev *dev, struct sk_buff *skb)
|
|||||||
goto reject;
|
goto reject;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (parent_ep->com.cm_id->tos_set)
|
||||||
|
tos = parent_ep->com.cm_id->tos;
|
||||||
|
else
|
||||||
|
tos = PASS_OPEN_TOS_G(ntohl(req->tos_stid));
|
||||||
|
|
||||||
cxgb_get_4tuple(req, parent_ep->com.dev->rdev.lldi.adapter_type,
|
cxgb_get_4tuple(req, parent_ep->com.dev->rdev.lldi.adapter_type,
|
||||||
&iptype, local_ip, peer_ip, &local_port, &peer_port);
|
&iptype, local_ip, peer_ip, &local_port, &peer_port);
|
||||||
|
|
||||||
@ -2509,7 +2514,7 @@ static int pass_accept_req(struct c4iw_dev *dev, struct sk_buff *skb)
|
|||||||
ntohs(peer_port), peer_mss);
|
ntohs(peer_port), peer_mss);
|
||||||
dst = cxgb_find_route6(&dev->rdev.lldi, get_real_dev,
|
dst = cxgb_find_route6(&dev->rdev.lldi, get_real_dev,
|
||||||
local_ip, peer_ip, local_port, peer_port,
|
local_ip, peer_ip, local_port, peer_port,
|
||||||
PASS_OPEN_TOS_G(ntohl(req->tos_stid)),
|
tos,
|
||||||
((struct sockaddr_in6 *)
|
((struct sockaddr_in6 *)
|
||||||
&parent_ep->com.local_addr)->sin6_scope_id);
|
&parent_ep->com.local_addr)->sin6_scope_id);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user