projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
IPoIB: improve IPv4/IPv6 to IB mcast mapping functions
[powerpc.git]
/
include
/
net
/
ip.h
diff --git
a/include/net/ip.h
b/include/net/ip.h
index
840dd91
..
50c8889
100644
(file)
--- a/
include/net/ip.h
+++ b/
include/net/ip.h
@@
-266,20
+266,22
@@
static inline void ip_eth_mc_map(__be32 naddr, char *buf)
* Leave P_Key as 0 to be filled in by driver.
*/
* Leave P_Key as 0 to be filled in by driver.
*/
-static inline void ip_ib_mc_map(__be32 naddr, char *buf)
+static inline void ip_ib_mc_map(__be32 naddr, c
onst unsigned char *broadcast, c
har *buf)
{
__u32 addr;
{
__u32 addr;
+ unsigned char scope = broadcast[5] & 0xF;
+
buf[0] = 0; /* Reserved */
buf[1] = 0xff; /* Multicast QPN */
buf[2] = 0xff;
buf[3] = 0xff;
addr = ntohl(naddr);
buf[4] = 0xff;
buf[0] = 0; /* Reserved */
buf[1] = 0xff; /* Multicast QPN */
buf[2] = 0xff;
buf[3] = 0xff;
addr = ntohl(naddr);
buf[4] = 0xff;
- buf[5] = 0x1
2; /* link local scope
*/
+ buf[5] = 0x1
0 | scope; /* scope from broadcast address
*/
buf[6] = 0x40; /* IPv4 signature */
buf[7] = 0x1b;
buf[6] = 0x40; /* IPv4 signature */
buf[7] = 0x1b;
- buf[8] =
0;
/* P_Key */
- buf[9] =
0
;
+ buf[8] =
broadcast[8];
/* P_Key */
+ buf[9] =
broadcast[9]
;
buf[10] = 0;
buf[11] = 0;
buf[12] = 0;
buf[10] = 0;
buf[11] = 0;
buf[12] = 0;