Skip to content

Commit

Permalink
flow_dissector: add tipc support
Browse files Browse the repository at this point in the history
The flows are hashed on the sending node address, which allows us
to spread out the TIPC link processing to RPS enabled cores. There
is no point to include the destination address in the hash as that
will always be the same for all inbound links. We have experimented
with a 3-tuple hash over [srcnode, sport, dport], but this showed to
give slightly lower performance because of increased lock contention
when the same link was handled by multiple cores.

Signed-off-by: Ying Xue <ying.xue@windriver.com>
Signed-off-by: Erik Hugne <erik.hugne@ericsson.com>
Reviewed-by: Jon Maloy <jon.maloy@ericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Erik Hugne authored and David S. Miller committed Jan 27, 2015
1 parent 3fa9cac commit 08bfc9c
Showing 1 changed file with 14 additions and 0 deletions.
14 changes: 14 additions & 0 deletions net/core/flow_dissector.c
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,20 @@ bool __skb_flow_dissect(const struct sk_buff *skb, struct flow_keys *flow,
return false;
}
}
case htons(ETH_P_TIPC): {
struct {
__be32 pre[3];
__be32 srcnode;
} *hdr, _hdr;
hdr = __skb_header_pointer(skb, nhoff, sizeof(_hdr), data, hlen, &_hdr);
if (!hdr)
return false;
flow->src = hdr->srcnode;
flow->dst = 0;
flow->n_proto = proto;
flow->thoff = (u16)nhoff;
return true;
}
case htons(ETH_P_FCOE):
flow->thoff = (u16)(nhoff + FCOE_HEADER_LEN);
/* fall through */
Expand Down

0 comments on commit 08bfc9c

Please sign in to comment.