Commit 912cbe3c authored by Linus Torvalds's avatar Linus Torvalds

Merge master.kernel.org:/pub/scm/linux/kernel/git/acme/net-2.6

parents 0f3278d1 52ab4ac2
...@@ -239,9 +239,9 @@ X!Ilib/string.c ...@@ -239,9 +239,9 @@ X!Ilib/string.c
<title>Network device support</title> <title>Network device support</title>
<sect1><title>Driver Support</title> <sect1><title>Driver Support</title>
!Enet/core/dev.c !Enet/core/dev.c
</sect1> !Enet/ethernet/eth.c
<sect1><title>8390 Based Network Cards</title> !Einclude/linux/etherdevice.h
!Edrivers/net/8390.c !Enet/core/wireless.c
</sect1> </sect1>
<sect1><title>Synchronous PPP</title> <sect1><title>Synchronous PPP</title>
!Edrivers/net/wan/syncppp.c !Edrivers/net/wan/syncppp.c
......
...@@ -48,8 +48,10 @@ static inline void eth_copy_and_sum (struct sk_buff *dest, ...@@ -48,8 +48,10 @@ static inline void eth_copy_and_sum (struct sk_buff *dest,
} }
/** /**
* is_zero_ether_addr - Determine if give Ethernet address is all * is_zero_ether_addr - Determine if give Ethernet address is all zeros.
* zeros. * @addr: Pointer to a six-byte array containing the Ethernet address
*
* Return true if the address is all zeroes.
*/ */
static inline int is_zero_ether_addr(const u8 *addr) static inline int is_zero_ether_addr(const u8 *addr)
{ {
...@@ -57,9 +59,7 @@ static inline int is_zero_ether_addr(const u8 *addr) ...@@ -57,9 +59,7 @@ static inline int is_zero_ether_addr(const u8 *addr)
} }
/** /**
* is_multicast_ether_addr - Determine if the given Ethernet address is a * is_multicast_ether_addr - Determine if the Ethernet address is a multicast.
* multicast address.
*
* @addr: Pointer to a six-byte array containing the Ethernet address * @addr: Pointer to a six-byte array containing the Ethernet address
* *
* Return true if the address is a multicast address. * Return true if the address is a multicast address.
...@@ -69,10 +69,15 @@ static inline int is_multicast_ether_addr(const u8 *addr) ...@@ -69,10 +69,15 @@ static inline int is_multicast_ether_addr(const u8 *addr)
return ((addr[0] != 0xff) && (0x01 & addr[0])); return ((addr[0] != 0xff) && (0x01 & addr[0]));
} }
/**
* is_broadcast_ether_addr - Determine if the Ethernet address is broadcast
* @addr: Pointer to a six-byte array containing the Ethernet address
*
* Return true if the address is the broadcast address.
*/
static inline int is_broadcast_ether_addr(const u8 *addr) static inline int is_broadcast_ether_addr(const u8 *addr)
{ {
return ((addr[0] == 0xff) && (addr[1] == 0xff) && (addr[2] == 0xff) && return (addr[0] & addr[1] & addr[2] & addr[3] & addr[4] & addr[5]) == 0xff;
(addr[3] == 0xff) && (addr[4] == 0xff) && (addr[5] == 0xff));
} }
/** /**
...@@ -108,14 +113,14 @@ static inline void random_ether_addr(u8 *addr) ...@@ -108,14 +113,14 @@ static inline void random_ether_addr(u8 *addr)
/** /**
* compare_ether_addr - Compare two Ethernet addresses * compare_ether_addr - Compare two Ethernet addresses
* @addr1: Pointer to a six-byte array containing the Ethernet address * @addr1: Pointer to a six-byte array containing the Ethernet address
* @addr2 Pointer other six-byte array containing the Ethernet address * @addr2: Pointer other six-byte array containing the Ethernet address
* *
* Compare two ethernet addresses, returns 0 if equal * Compare two ethernet addresses, returns 0 if equal
*/ */
static inline unsigned compare_ether_addr(const u8 *_a, const u8 *_b) static inline unsigned compare_ether_addr(const u8 *addr1, const u8 *addr2)
{ {
const u16 *a = (const u16 *) _a; const u16 *a = (const u16 *) addr1;
const u16 *b = (const u16 *) _b; const u16 *b = (const u16 *) addr2;
BUILD_BUG_ON(ETH_ALEN != 6); BUILD_BUG_ON(ETH_ALEN != 6);
return ((a[0] ^ b[0]) | (a[1] ^ b[1]) | (a[2] ^ b[2])) != 0; return ((a[0] ^ b[0]) | (a[1] ^ b[1]) | (a[2] ^ b[2])) != 0;
......
...@@ -213,6 +213,10 @@ int skb_copy_datagram_iovec(const struct sk_buff *skb, int offset, ...@@ -213,6 +213,10 @@ int skb_copy_datagram_iovec(const struct sk_buff *skb, int offset,
{ {
int i, err, fraglen, end = 0; int i, err, fraglen, end = 0;
struct sk_buff *next = skb_shinfo(skb)->frag_list; struct sk_buff *next = skb_shinfo(skb)->frag_list;
if (!len)
return 0;
next_skb: next_skb:
fraglen = skb_headlen(skb); fraglen = skb_headlen(skb);
i = -1; i = -1;
......
...@@ -1908,8 +1908,11 @@ int ip_mc_msfilter(struct sock *sk, struct ip_msfilter *msf, int ifindex) ...@@ -1908,8 +1908,11 @@ int ip_mc_msfilter(struct sock *sk, struct ip_msfilter *msf, int ifindex)
sock_kfree_s(sk, newpsl, IP_SFLSIZE(newpsl->sl_max)); sock_kfree_s(sk, newpsl, IP_SFLSIZE(newpsl->sl_max));
goto done; goto done;
} }
} else } else {
newpsl = NULL; newpsl = NULL;
(void) ip_mc_add_src(in_dev, &msf->imsf_multiaddr,
msf->imsf_fmode, 0, NULL, 0);
}
psl = pmc->sflist; psl = pmc->sflist;
if (psl) { if (psl) {
(void) ip_mc_del_src(in_dev, &msf->imsf_multiaddr, pmc->sfmode, (void) ip_mc_del_src(in_dev, &msf->imsf_multiaddr, pmc->sfmode,
......
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
*/ */
static int fast_convergence = 1; static int fast_convergence = 1;
static int max_increment = 32; static int max_increment = 16;
static int low_window = 14; static int low_window = 14;
static int beta = 819; /* = 819/1024 (BICTCP_BETA_SCALE) */ static int beta = 819; /* = 819/1024 (BICTCP_BETA_SCALE) */
static int low_utilization_threshold = 153; static int low_utilization_threshold = 153;
......
...@@ -2163,7 +2163,7 @@ static int addrconf_ifdown(struct net_device *dev, int how) ...@@ -2163,7 +2163,7 @@ static int addrconf_ifdown(struct net_device *dev, int how)
/* Step 5: netlink notification of this interface */ /* Step 5: netlink notification of this interface */
idev->tstamp = jiffies; idev->tstamp = jiffies;
inet6_ifinfo_notify(RTM_NEWLINK, idev); inet6_ifinfo_notify(RTM_DELLINK, idev);
/* Shot the device (if unregistered) */ /* Shot the device (if unregistered) */
......
...@@ -545,8 +545,10 @@ int ip6_mc_msfilter(struct sock *sk, struct group_filter *gsf) ...@@ -545,8 +545,10 @@ int ip6_mc_msfilter(struct sock *sk, struct group_filter *gsf)
sock_kfree_s(sk, newpsl, IP6_SFLSIZE(newpsl->sl_max)); sock_kfree_s(sk, newpsl, IP6_SFLSIZE(newpsl->sl_max));
goto done; goto done;
} }
} else } else {
newpsl = NULL; newpsl = NULL;
(void) ip6_mc_add_src(idev, group, gsf->gf_fmode, 0, NULL, 0);
}
psl = pmc->sflist; psl = pmc->sflist;
if (psl) { if (psl) {
(void) ip6_mc_del_src(idev, group, pmc->sfmode, (void) ip6_mc_del_src(idev, group, pmc->sfmode,
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment