Skip to content

Commit

Permalink
[IPV4]: Avoid common branch mispredictions in ip_rcv_finish()
Browse files Browse the repository at this point in the history
Signed-off-by: Thomas Graf <tgraf@suug.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Thomas Graf authored and David S. Miller committed Aug 29, 2005
1 parent d245407 commit 3e192be
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions net/ipv4/ip_input.c
Original file line number Diff line number Diff line change
Expand Up @@ -333,24 +333,24 @@ static inline int ip_rcv_options(struct sk_buff *skb)

static inline int ip_rcv_finish(struct sk_buff *skb)
{
struct net_device *dev = skb->dev;
struct iphdr *iph = skb->nh.iph;
int err;

/*
* Initialise the virtual path cache for the packet. It describes
* how the packet travels inside Linux networking.
*/
if (skb->dst == NULL) {
if ((err = ip_route_input(skb, iph->daddr, iph->saddr, iph->tos, dev))) {
if (likely(skb->dst == NULL)) {
int err = ip_route_input(skb, iph->daddr, iph->saddr, iph->tos,
skb->dev);
if (unlikely(err)) {
if (err == -EHOSTUNREACH)
IP_INC_STATS_BH(IPSTATS_MIB_INADDRERRORS);
goto drop;
}
}

#ifdef CONFIG_NET_CLS_ROUTE
if (skb->dst->tclassid) {
if (unlikely(skb->dst->tclassid)) {
struct ip_rt_acct *st = ip_rt_acct + 256*smp_processor_id();
u32 idx = skb->dst->tclassid;
st[idx&0xFF].o_packets++;
Expand Down

0 comments on commit 3e192be

Please sign in to comment.