Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (34 commits) net: Add support for SMSC LAN9530, LAN9730 and LAN89530 mlx4_en: Restoring RX buffer pointer in case of failure mlx4: Sensing link type at device initialization ipv4: Fix "Set rt->rt_iif more sanely on output routes." MAINTAINERS: add entry for Xen network backend be2net: Fix suspend/resume operation be2net: Rename some struct members for clarity pppoe: drop PPPOX_ZOMBIEs in pppoe_flush_dev dsa/mv88e6131: add support for mv88e6085 switch ipv6: Enable RFS sk_rxhash tracking for ipv6 sockets (v2) be2net: Fix a potential crash during shutdown. bna: Fix for handling firmware heartbeat failure can: mcp251x: Allow pass IRQ flags through platform data. smsc911x: fix mac_lock acquision before calling smsc911x_mac_read iwlwifi: accept EEPROM version 0x423 for iwl6000 rt2x00: fix cancelling uninitialized work rtlwifi: Fix some warnings/bugs p54usb: IDs for two new devices wl12xx: fix potential buffer overflow in testmode nvs push zd1211rw: reset rx idle timer from tasklet ...
This commit is contained in:
@@ -90,9 +90,18 @@ static int nf_ip6_reroute(struct sk_buff *skb,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int nf_ip6_route(struct dst_entry **dst, struct flowi *fl)
|
||||
static int nf_ip6_route(struct net *net, struct dst_entry **dst,
|
||||
struct flowi *fl, bool strict)
|
||||
{
|
||||
*dst = ip6_route_output(&init_net, NULL, &fl->u.ip6);
|
||||
static const struct ipv6_pinfo fake_pinfo;
|
||||
static const struct inet_sock fake_sk = {
|
||||
/* makes ip6_route_output set RT6_LOOKUP_F_IFACE: */
|
||||
.sk.sk_bound_dev_if = 1,
|
||||
.pinet6 = (struct ipv6_pinfo *) &fake_pinfo,
|
||||
};
|
||||
const void *sk = strict ? &fake_sk : NULL;
|
||||
|
||||
*dst = ip6_route_output(net, sk, &fl->u.ip6);
|
||||
return (*dst)->error;
|
||||
}
|
||||
|
||||
|
@@ -1622,6 +1622,7 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb)
|
||||
opt_skb = skb_clone(skb, GFP_ATOMIC);
|
||||
|
||||
if (sk->sk_state == TCP_ESTABLISHED) { /* Fast path */
|
||||
sock_rps_save_rxhash(sk, skb->rxhash);
|
||||
if (tcp_rcv_established(sk, skb, tcp_hdr(skb), skb->len))
|
||||
goto reset;
|
||||
if (opt_skb)
|
||||
@@ -1649,7 +1650,8 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb)
|
||||
__kfree_skb(opt_skb);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
} else
|
||||
sock_rps_save_rxhash(sk, skb->rxhash);
|
||||
|
||||
if (tcp_rcv_state_process(sk, skb, tcp_hdr(skb), skb->len))
|
||||
goto reset;
|
||||
|
@@ -505,6 +505,9 @@ int udpv6_queue_rcv_skb(struct sock * sk, struct sk_buff *skb)
|
||||
int rc;
|
||||
int is_udplite = IS_UDPLITE(sk);
|
||||
|
||||
if (!ipv6_addr_any(&inet6_sk(sk)->daddr))
|
||||
sock_rps_save_rxhash(sk, skb->rxhash);
|
||||
|
||||
if (!xfrm6_policy_check(sk, XFRM_POLICY_IN, skb))
|
||||
goto drop;
|
||||
|
||||
|
Reference in New Issue
Block a user