libcxgb,iw_cxgb4,cxgbit: add cxgb_get_4tuple()
Add cxgb_get_4tuple() in libcxgb_cm.c to remove it's duplicate definitions from cxgb4/cm.c and cxgbit/cxgbit_cm.c. Signed-off-by: Varun Prakash <varun@chelsio.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -49,6 +49,7 @@
|
||||
|
||||
#include <rdma/ib_addr.h>
|
||||
|
||||
#include <libcxgb_cm.h>
|
||||
#include "iw_cxgb4.h"
|
||||
#include "clip_tbl.h"
|
||||
|
||||
@@ -2518,42 +2519,6 @@ static void reject_cr(struct c4iw_dev *dev, u32 hwtid, struct sk_buff *skb)
|
||||
return;
|
||||
}
|
||||
|
||||
static void get_4tuple(struct cpl_pass_accept_req *req, enum chip_type type,
|
||||
int *iptype, __u8 *local_ip, __u8 *peer_ip,
|
||||
__be16 *local_port, __be16 *peer_port)
|
||||
{
|
||||
int eth_len = (CHELSIO_CHIP_VERSION(type) <= CHELSIO_T5) ?
|
||||
ETH_HDR_LEN_G(be32_to_cpu(req->hdr_len)) :
|
||||
T6_ETH_HDR_LEN_G(be32_to_cpu(req->hdr_len));
|
||||
int ip_len = (CHELSIO_CHIP_VERSION(type) <= CHELSIO_T5) ?
|
||||
IP_HDR_LEN_G(be32_to_cpu(req->hdr_len)) :
|
||||
T6_IP_HDR_LEN_G(be32_to_cpu(req->hdr_len));
|
||||
struct iphdr *ip = (struct iphdr *)((u8 *)(req + 1) + eth_len);
|
||||
struct ipv6hdr *ip6 = (struct ipv6hdr *)((u8 *)(req + 1) + eth_len);
|
||||
struct tcphdr *tcp = (struct tcphdr *)
|
||||
((u8 *)(req + 1) + eth_len + ip_len);
|
||||
|
||||
if (ip->version == 4) {
|
||||
PDBG("%s saddr 0x%x daddr 0x%x sport %u dport %u\n", __func__,
|
||||
ntohl(ip->saddr), ntohl(ip->daddr), ntohs(tcp->source),
|
||||
ntohs(tcp->dest));
|
||||
*iptype = 4;
|
||||
memcpy(peer_ip, &ip->saddr, 4);
|
||||
memcpy(local_ip, &ip->daddr, 4);
|
||||
} else {
|
||||
PDBG("%s saddr %pI6 daddr %pI6 sport %u dport %u\n", __func__,
|
||||
ip6->saddr.s6_addr, ip6->daddr.s6_addr, ntohs(tcp->source),
|
||||
ntohs(tcp->dest));
|
||||
*iptype = 6;
|
||||
memcpy(peer_ip, ip6->saddr.s6_addr, 16);
|
||||
memcpy(local_ip, ip6->daddr.s6_addr, 16);
|
||||
}
|
||||
*peer_port = tcp->source;
|
||||
*local_port = tcp->dest;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
static int pass_accept_req(struct c4iw_dev *dev, struct sk_buff *skb)
|
||||
{
|
||||
struct c4iw_ep *child_ep = NULL, *parent_ep;
|
||||
@@ -2582,8 +2547,8 @@ static int pass_accept_req(struct c4iw_dev *dev, struct sk_buff *skb)
|
||||
goto reject;
|
||||
}
|
||||
|
||||
get_4tuple(req, parent_ep->com.dev->rdev.lldi.adapter_type, &iptype,
|
||||
local_ip, peer_ip, &local_port, &peer_port);
|
||||
cxgb_get_4tuple(req, parent_ep->com.dev->rdev.lldi.adapter_type,
|
||||
&iptype, local_ip, peer_ip, &local_port, &peer_port);
|
||||
|
||||
/* Find output route */
|
||||
if (iptype == 4) {
|
||||
|
Reference in New Issue
Block a user