Merge rsync://rsync.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
This commit is contained in:
commit
020f46a39e
6 changed files with 31 additions and 26 deletions
|
@ -1,6 +1,8 @@
|
||||||
#ifndef __LINUX_ATALK_H__
|
#ifndef __LINUX_ATALK_H__
|
||||||
#define __LINUX_ATALK_H__
|
#define __LINUX_ATALK_H__
|
||||||
|
|
||||||
|
#include <asm/byteorder.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* AppleTalk networking structures
|
* AppleTalk networking structures
|
||||||
*
|
*
|
||||||
|
|
|
@ -151,7 +151,7 @@
|
||||||
#include <asm/timex.h>
|
#include <asm/timex.h>
|
||||||
|
|
||||||
|
|
||||||
#define VERSION "pktgen v2.61: Packet Generator for packet performance testing.\n"
|
#define VERSION "pktgen v2.62: Packet Generator for packet performance testing.\n"
|
||||||
|
|
||||||
/* #define PG_DEBUG(a) a */
|
/* #define PG_DEBUG(a) a */
|
||||||
#define PG_DEBUG(a)
|
#define PG_DEBUG(a)
|
||||||
|
@ -1921,6 +1921,11 @@ static struct sk_buff *fill_packet_ipv4(struct net_device *odev,
|
||||||
struct iphdr *iph;
|
struct iphdr *iph;
|
||||||
struct pktgen_hdr *pgh = NULL;
|
struct pktgen_hdr *pgh = NULL;
|
||||||
|
|
||||||
|
/* Update any of the values, used when we're incrementing various
|
||||||
|
* fields.
|
||||||
|
*/
|
||||||
|
mod_cur_headers(pkt_dev);
|
||||||
|
|
||||||
skb = alloc_skb(pkt_dev->cur_pkt_size + 64 + 16, GFP_ATOMIC);
|
skb = alloc_skb(pkt_dev->cur_pkt_size + 64 + 16, GFP_ATOMIC);
|
||||||
if (!skb) {
|
if (!skb) {
|
||||||
sprintf(pkt_dev->result, "No memory");
|
sprintf(pkt_dev->result, "No memory");
|
||||||
|
@ -1934,11 +1939,6 @@ static struct sk_buff *fill_packet_ipv4(struct net_device *odev,
|
||||||
iph = (struct iphdr *)skb_put(skb, sizeof(struct iphdr));
|
iph = (struct iphdr *)skb_put(skb, sizeof(struct iphdr));
|
||||||
udph = (struct udphdr *)skb_put(skb, sizeof(struct udphdr));
|
udph = (struct udphdr *)skb_put(skb, sizeof(struct udphdr));
|
||||||
|
|
||||||
/* Update any of the values, used when we're incrementing various
|
|
||||||
* fields.
|
|
||||||
*/
|
|
||||||
mod_cur_headers(pkt_dev);
|
|
||||||
|
|
||||||
memcpy(eth, pkt_dev->hh, 12);
|
memcpy(eth, pkt_dev->hh, 12);
|
||||||
*(u16*)ð[12] = __constant_htons(ETH_P_IP);
|
*(u16*)ð[12] = __constant_htons(ETH_P_IP);
|
||||||
|
|
||||||
|
@ -2192,7 +2192,12 @@ static struct sk_buff *fill_packet_ipv6(struct net_device *odev,
|
||||||
int datalen;
|
int datalen;
|
||||||
struct ipv6hdr *iph;
|
struct ipv6hdr *iph;
|
||||||
struct pktgen_hdr *pgh = NULL;
|
struct pktgen_hdr *pgh = NULL;
|
||||||
|
|
||||||
|
/* Update any of the values, used when we're incrementing various
|
||||||
|
* fields.
|
||||||
|
*/
|
||||||
|
mod_cur_headers(pkt_dev);
|
||||||
|
|
||||||
skb = alloc_skb(pkt_dev->cur_pkt_size + 64 + 16, GFP_ATOMIC);
|
skb = alloc_skb(pkt_dev->cur_pkt_size + 64 + 16, GFP_ATOMIC);
|
||||||
if (!skb) {
|
if (!skb) {
|
||||||
sprintf(pkt_dev->result, "No memory");
|
sprintf(pkt_dev->result, "No memory");
|
||||||
|
@ -2206,17 +2211,9 @@ static struct sk_buff *fill_packet_ipv6(struct net_device *odev,
|
||||||
iph = (struct ipv6hdr *)skb_put(skb, sizeof(struct ipv6hdr));
|
iph = (struct ipv6hdr *)skb_put(skb, sizeof(struct ipv6hdr));
|
||||||
udph = (struct udphdr *)skb_put(skb, sizeof(struct udphdr));
|
udph = (struct udphdr *)skb_put(skb, sizeof(struct udphdr));
|
||||||
|
|
||||||
|
|
||||||
/* Update any of the values, used when we're incrementing various
|
|
||||||
* fields.
|
|
||||||
*/
|
|
||||||
mod_cur_headers(pkt_dev);
|
|
||||||
|
|
||||||
|
|
||||||
memcpy(eth, pkt_dev->hh, 12);
|
memcpy(eth, pkt_dev->hh, 12);
|
||||||
*(u16*)ð[12] = __constant_htons(ETH_P_IPV6);
|
*(u16*)ð[12] = __constant_htons(ETH_P_IPV6);
|
||||||
|
|
||||||
|
|
||||||
datalen = pkt_dev->cur_pkt_size-14-
|
datalen = pkt_dev->cur_pkt_size-14-
|
||||||
sizeof(struct ipv6hdr)-sizeof(struct udphdr); /* Eth + IPh + UDPh */
|
sizeof(struct ipv6hdr)-sizeof(struct udphdr); /* Eth + IPh + UDPh */
|
||||||
|
|
||||||
|
|
|
@ -448,7 +448,6 @@ config IP_TCPDIAG_IPV6
|
||||||
config TCP_CONG_ADVANCED
|
config TCP_CONG_ADVANCED
|
||||||
bool "TCP: advanced congestion control"
|
bool "TCP: advanced congestion control"
|
||||||
depends on INET
|
depends on INET
|
||||||
default y
|
|
||||||
---help---
|
---help---
|
||||||
Support for selection of various TCP congestion control
|
Support for selection of various TCP congestion control
|
||||||
modules.
|
modules.
|
||||||
|
@ -549,7 +548,7 @@ config TCP_CONG_SCALABLE
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
config TCP_CONG_BIC
|
config TCP_CONG_BIC
|
||||||
boolean
|
tristate
|
||||||
depends on !TCP_CONG_ADVANCED
|
depends on !TCP_CONG_ADVANCED
|
||||||
default y
|
default y
|
||||||
|
|
||||||
|
|
|
@ -2059,7 +2059,7 @@ ip_vs_copy_service(struct ip_vs_service_entry *dst, struct ip_vs_service *src)
|
||||||
dst->addr = src->addr;
|
dst->addr = src->addr;
|
||||||
dst->port = src->port;
|
dst->port = src->port;
|
||||||
dst->fwmark = src->fwmark;
|
dst->fwmark = src->fwmark;
|
||||||
strcpy(dst->sched_name, src->scheduler->name);
|
strlcpy(dst->sched_name, src->scheduler->name, sizeof(dst->sched_name));
|
||||||
dst->flags = src->flags;
|
dst->flags = src->flags;
|
||||||
dst->timeout = src->timeout / HZ;
|
dst->timeout = src->timeout / HZ;
|
||||||
dst->netmask = src->netmask;
|
dst->netmask = src->netmask;
|
||||||
|
@ -2080,6 +2080,7 @@ __ip_vs_get_service_entries(const struct ip_vs_get_services *get,
|
||||||
list_for_each_entry(svc, &ip_vs_svc_table[idx], s_list) {
|
list_for_each_entry(svc, &ip_vs_svc_table[idx], s_list) {
|
||||||
if (count >= get->num_services)
|
if (count >= get->num_services)
|
||||||
goto out;
|
goto out;
|
||||||
|
memset(&entry, 0, sizeof(entry));
|
||||||
ip_vs_copy_service(&entry, svc);
|
ip_vs_copy_service(&entry, svc);
|
||||||
if (copy_to_user(&uptr->entrytable[count],
|
if (copy_to_user(&uptr->entrytable[count],
|
||||||
&entry, sizeof(entry))) {
|
&entry, sizeof(entry))) {
|
||||||
|
@ -2094,6 +2095,7 @@ __ip_vs_get_service_entries(const struct ip_vs_get_services *get,
|
||||||
list_for_each_entry(svc, &ip_vs_svc_fwm_table[idx], f_list) {
|
list_for_each_entry(svc, &ip_vs_svc_fwm_table[idx], f_list) {
|
||||||
if (count >= get->num_services)
|
if (count >= get->num_services)
|
||||||
goto out;
|
goto out;
|
||||||
|
memset(&entry, 0, sizeof(entry));
|
||||||
ip_vs_copy_service(&entry, svc);
|
ip_vs_copy_service(&entry, svc);
|
||||||
if (copy_to_user(&uptr->entrytable[count],
|
if (copy_to_user(&uptr->entrytable[count],
|
||||||
&entry, sizeof(entry))) {
|
&entry, sizeof(entry))) {
|
||||||
|
@ -2304,12 +2306,12 @@ do_ip_vs_get_ctl(struct sock *sk, int cmd, void __user *user, int *len)
|
||||||
memset(&d, 0, sizeof(d));
|
memset(&d, 0, sizeof(d));
|
||||||
if (ip_vs_sync_state & IP_VS_STATE_MASTER) {
|
if (ip_vs_sync_state & IP_VS_STATE_MASTER) {
|
||||||
d[0].state = IP_VS_STATE_MASTER;
|
d[0].state = IP_VS_STATE_MASTER;
|
||||||
strcpy(d[0].mcast_ifn, ip_vs_master_mcast_ifn);
|
strlcpy(d[0].mcast_ifn, ip_vs_master_mcast_ifn, sizeof(d[0].mcast_ifn));
|
||||||
d[0].syncid = ip_vs_master_syncid;
|
d[0].syncid = ip_vs_master_syncid;
|
||||||
}
|
}
|
||||||
if (ip_vs_sync_state & IP_VS_STATE_BACKUP) {
|
if (ip_vs_sync_state & IP_VS_STATE_BACKUP) {
|
||||||
d[1].state = IP_VS_STATE_BACKUP;
|
d[1].state = IP_VS_STATE_BACKUP;
|
||||||
strcpy(d[1].mcast_ifn, ip_vs_backup_mcast_ifn);
|
strlcpy(d[1].mcast_ifn, ip_vs_backup_mcast_ifn, sizeof(d[1].mcast_ifn));
|
||||||
d[1].syncid = ip_vs_backup_syncid;
|
d[1].syncid = ip_vs_backup_syncid;
|
||||||
}
|
}
|
||||||
if (copy_to_user(user, &d, sizeof(d)) != 0)
|
if (copy_to_user(user, &d, sizeof(d)) != 0)
|
||||||
|
|
|
@ -839,10 +839,10 @@ int start_sync_thread(int state, char *mcast_ifn, __u8 syncid)
|
||||||
|
|
||||||
ip_vs_sync_state |= state;
|
ip_vs_sync_state |= state;
|
||||||
if (state == IP_VS_STATE_MASTER) {
|
if (state == IP_VS_STATE_MASTER) {
|
||||||
strcpy(ip_vs_master_mcast_ifn, mcast_ifn);
|
strlcpy(ip_vs_master_mcast_ifn, mcast_ifn, sizeof(ip_vs_master_mcast_ifn));
|
||||||
ip_vs_master_syncid = syncid;
|
ip_vs_master_syncid = syncid;
|
||||||
} else {
|
} else {
|
||||||
strcpy(ip_vs_backup_mcast_ifn, mcast_ifn);
|
strlcpy(ip_vs_backup_mcast_ifn, mcast_ifn, sizeof(ip_vs_backup_mcast_ifn));
|
||||||
ip_vs_backup_syncid = syncid;
|
ip_vs_backup_syncid = syncid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -315,8 +315,8 @@ err:
|
||||||
static void netlink_remove(struct sock *sk)
|
static void netlink_remove(struct sock *sk)
|
||||||
{
|
{
|
||||||
netlink_table_grab();
|
netlink_table_grab();
|
||||||
nl_table[sk->sk_protocol].hash.entries--;
|
if (sk_del_node_init(sk))
|
||||||
sk_del_node_init(sk);
|
nl_table[sk->sk_protocol].hash.entries--;
|
||||||
if (nlk_sk(sk)->groups)
|
if (nlk_sk(sk)->groups)
|
||||||
__sk_del_bind_node(sk);
|
__sk_del_bind_node(sk);
|
||||||
netlink_table_ungrab();
|
netlink_table_ungrab();
|
||||||
|
@ -429,7 +429,12 @@ retry:
|
||||||
err = netlink_insert(sk, pid);
|
err = netlink_insert(sk, pid);
|
||||||
if (err == -EADDRINUSE)
|
if (err == -EADDRINUSE)
|
||||||
goto retry;
|
goto retry;
|
||||||
return 0;
|
|
||||||
|
/* If 2 threads race to autobind, that is fine. */
|
||||||
|
if (err == -EBUSY)
|
||||||
|
err = 0;
|
||||||
|
|
||||||
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int netlink_capable(struct socket *sock, unsigned int flag)
|
static inline int netlink_capable(struct socket *sock, unsigned int flag)
|
||||||
|
|
Loading…
Reference in a new issue