Commit 00bcd522 authored by Harvey Harrison's avatar Harvey Harrison Committed by David S. Miller

isdn: use %pI4, remove get_{u8/u16/u32} and put_{u8/u16/u32} inlines

They would have been better named as get_be16, put_be16, etc.
as they were hiding an endian shift inside.

They don't add much over explicitly coding the byteshifting
and gcc sometimes has a problem with builtin_constant_p inside
inline functions, so it may do a better job of byteswapping
at compile time rather than runtime.
Signed-off-by: default avatarHarvey Harrison <harvey.harrison@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 524ad0a7
...@@ -890,15 +890,15 @@ isdn_net_log_skb(struct sk_buff * skb, isdn_net_local * lp) ...@@ -890,15 +890,15 @@ isdn_net_log_skb(struct sk_buff * skb, isdn_net_local * lp)
proto = ETH_P_IP; proto = ETH_P_IP;
switch (lp->p_encap) { switch (lp->p_encap) {
case ISDN_NET_ENCAP_IPTYP: case ISDN_NET_ENCAP_IPTYP:
proto = ntohs(*(unsigned short *) &buf[0]); proto = ntohs(*(__be16 *)&buf[0]);
p = &buf[2]; p = &buf[2];
break; break;
case ISDN_NET_ENCAP_ETHER: case ISDN_NET_ENCAP_ETHER:
proto = ntohs(*(unsigned short *) &buf[12]); proto = ntohs(*(__be16 *)&buf[12]);
p = &buf[14]; p = &buf[14];
break; break;
case ISDN_NET_ENCAP_CISCOHDLC: case ISDN_NET_ENCAP_CISCOHDLC:
proto = ntohs(*(unsigned short *) &buf[2]); proto = ntohs(*(__be16 *)&buf[2]);
p = &buf[4]; p = &buf[4];
break; break;
#ifdef CONFIG_ISDN_PPP #ifdef CONFIG_ISDN_PPP
...@@ -942,18 +942,12 @@ isdn_net_log_skb(struct sk_buff * skb, isdn_net_local * lp) ...@@ -942,18 +942,12 @@ isdn_net_log_skb(struct sk_buff * skb, isdn_net_local * lp)
strcpy(addinfo, " IDP"); strcpy(addinfo, " IDP");
break; break;
} }
printk(KERN_INFO printk(KERN_INFO "OPEN: %pI4 -> %pI4%s\n",
"OPEN: %d.%d.%d.%d -> %d.%d.%d.%d%s\n", p + 12, p + 16, addinfo);
p[12], p[13], p[14], p[15],
p[16], p[17], p[18], p[19],
addinfo);
break; break;
case ETH_P_ARP: case ETH_P_ARP:
printk(KERN_INFO printk(KERN_INFO "OPEN: ARP %pI4 -> *.*.*.* ?%pI4\n",
"OPEN: ARP %d.%d.%d.%d -> *.*.*.* ?%d.%d.%d.%d\n", p + 14, p + 24);
p[14], p[15], p[16], p[17],
p[24], p[25], p[26], p[27]);
break; break;
} }
} }
...@@ -1539,15 +1533,16 @@ isdn_net_ciscohdlck_slarp_send_keepalive(unsigned long data) ...@@ -1539,15 +1533,16 @@ isdn_net_ciscohdlck_slarp_send_keepalive(unsigned long data)
p = skb_put(skb, 4 + 14); p = skb_put(skb, 4 + 14);
/* cisco header */ /* cisco header */
p += put_u8 (p, CISCO_ADDR_UNICAST); *(u8 *)(p + 0) = CISCO_ADDR_UNICAST;
p += put_u8 (p, CISCO_CTRL); *(u8 *)(p + 1) = CISCO_CTRL;
p += put_u16(p, CISCO_TYPE_SLARP); *(__be16 *)(p + 2) = cpu_to_be16(CISCO_TYPE_SLARP);
/* slarp keepalive */ /* slarp keepalive */
p += put_u32(p, CISCO_SLARP_KEEPALIVE); *(__be32 *)(p + 4) = cpu_to_be32(CISCO_SLARP_KEEPALIVE);
p += put_u32(p, lp->cisco_myseq); *(__be32 *)(p + 8) = cpu_to_be32(lp->cisco_myseq);
p += put_u32(p, lp->cisco_yourseq); *(__be32 *)(p + 12) = cpu_to_be32(lp->cisco_yourseq);
p += put_u16(p, 0xffff); // reliablity, always 0xffff *(__be16 *)(p + 16) = cpu_to_be16(0xffff); // reliablity, always 0xffff
p += 18;
isdn_net_write_super(lp, skb); isdn_net_write_super(lp, skb);
...@@ -1569,15 +1564,16 @@ isdn_net_ciscohdlck_slarp_send_request(isdn_net_local *lp) ...@@ -1569,15 +1564,16 @@ isdn_net_ciscohdlck_slarp_send_request(isdn_net_local *lp)
p = skb_put(skb, 4 + 14); p = skb_put(skb, 4 + 14);
/* cisco header */ /* cisco header */
p += put_u8 (p, CISCO_ADDR_UNICAST); *(u8 *)(p + 0) = CISCO_ADDR_UNICAST;
p += put_u8 (p, CISCO_CTRL); *(u8 *)(p + 1) = CISCO_CTRL;
p += put_u16(p, CISCO_TYPE_SLARP); *(__be16 *)(p + 2) = cpu_to_be16(CISCO_TYPE_SLARP);
/* slarp request */ /* slarp request */
p += put_u32(p, CISCO_SLARP_REQUEST); *(__be32 *)(p + 4) = cpu_to_be32(CISCO_SLARP_REQUEST);
p += put_u32(p, 0); // address *(__be32 *)(p + 8) = cpu_to_be32(0); // address
p += put_u32(p, 0); // netmask *(__be32 *)(p + 12) = cpu_to_be32(0); // netmask
p += put_u16(p, 0); // unused *(__be16 *)(p + 16) = cpu_to_be16(0); // unused
p += 18;
isdn_net_write_super(lp, skb); isdn_net_write_super(lp, skb);
} }
...@@ -1634,16 +1630,17 @@ isdn_net_ciscohdlck_slarp_send_reply(isdn_net_local *lp) ...@@ -1634,16 +1630,17 @@ isdn_net_ciscohdlck_slarp_send_reply(isdn_net_local *lp)
p = skb_put(skb, 4 + 14); p = skb_put(skb, 4 + 14);
/* cisco header */ /* cisco header */
p += put_u8 (p, CISCO_ADDR_UNICAST); *(u8 *)(p + 0) = CISCO_ADDR_UNICAST;
p += put_u8 (p, CISCO_CTRL); *(u8 *)(p + 1) = CISCO_CTRL;
p += put_u16(p, CISCO_TYPE_SLARP); *(__be16 *)(p + 2) = cpu_to_be16(CISCO_TYPE_SLARP);
/* slarp reply, send own ip/netmask; if values are nonsense remote /* slarp reply, send own ip/netmask; if values are nonsense remote
* should think we are unable to provide it with an address via SLARP */ * should think we are unable to provide it with an address via SLARP */
p += put_u32(p, CISCO_SLARP_REPLY); *(__be32 *)(p + 4) = cpu_to_be32(CISCO_SLARP_REPLY);
p += put_u32(p, addr); // address *(__be32 *)(p + 8) = cpu_to_be32(addr); // address
p += put_u32(p, mask); // netmask *(__be32 *)(p + 12) = cpu_to_be32(mask); // netmask
p += put_u16(p, 0); // unused *(__be16 *)(p + 16) = cpu_to_be16(0); // unused
p += 18;
isdn_net_write_super(lp, skb); isdn_net_write_super(lp, skb);
} }
...@@ -1664,7 +1661,8 @@ isdn_net_ciscohdlck_slarp_in(isdn_net_local *lp, struct sk_buff *skb) ...@@ -1664,7 +1661,8 @@ isdn_net_ciscohdlck_slarp_in(isdn_net_local *lp, struct sk_buff *skb)
return; return;
p = skb->data; p = skb->data;
p += get_u32(p, &code); code = be32_to_cpup((__be32 *)p);
p += 4;
switch (code) { switch (code) {
case CISCO_SLARP_REQUEST: case CISCO_SLARP_REQUEST:
...@@ -1699,9 +1697,10 @@ isdn_net_ciscohdlck_slarp_in(isdn_net_local *lp, struct sk_buff *skb) ...@@ -1699,9 +1697,10 @@ isdn_net_ciscohdlck_slarp_in(isdn_net_local *lp, struct sk_buff *skb)
lp->cisco_keepalive_period); lp->cisco_keepalive_period);
} }
lp->cisco_last_slarp_in = jiffies; lp->cisco_last_slarp_in = jiffies;
p += get_u32(p, &my_seq); my_seq = be32_to_cpup((__be32 *)(p + 0));
p += get_u32(p, &your_seq); your_seq = be32_to_cpup((__be32 *)(p + 4));
p += get_u16(p, &unused); unused = be16_to_cpup((__be16 *)(p + 8));
p += 10;
lp->cisco_yourseq = my_seq; lp->cisco_yourseq = my_seq;
lp->cisco_mineseen = your_seq; lp->cisco_mineseen = your_seq;
break; break;
...@@ -1720,9 +1719,10 @@ isdn_net_ciscohdlck_receive(isdn_net_local *lp, struct sk_buff *skb) ...@@ -1720,9 +1719,10 @@ isdn_net_ciscohdlck_receive(isdn_net_local *lp, struct sk_buff *skb)
goto out_free; goto out_free;
p = skb->data; p = skb->data;
p += get_u8 (p, &addr); addr = *(u8 *)(p + 0);
p += get_u8 (p, &ctrl); ctrl = *(u8 *)(p + 1);
p += get_u16(p, &type); type = be16_to_cpup((__be16 *)(p + 2));
p += 4;
skb_pull(skb, 4); skb_pull(skb, 4);
if (addr != CISCO_ADDR_UNICAST && addr != CISCO_ADDR_BROADCAST) { if (addr != CISCO_ADDR_UNICAST && addr != CISCO_ADDR_BROADCAST) {
...@@ -1910,9 +1910,10 @@ static int isdn_net_header(struct sk_buff *skb, struct net_device *dev, ...@@ -1910,9 +1910,10 @@ static int isdn_net_header(struct sk_buff *skb, struct net_device *dev,
case ISDN_NET_ENCAP_CISCOHDLC: case ISDN_NET_ENCAP_CISCOHDLC:
case ISDN_NET_ENCAP_CISCOHDLCK: case ISDN_NET_ENCAP_CISCOHDLCK:
p = skb_push(skb, 4); p = skb_push(skb, 4);
p += put_u8 (p, CISCO_ADDR_UNICAST); *(u8 *)(p + 0) = CISCO_ADDR_UNICAST;
p += put_u8 (p, CISCO_CTRL); *(u8 *)(p + 1) = CISCO_CTRL;
p += put_u16(p, type); *(__be16 *)(p + 2) = cpu_to_be16(type);
p += 4;
len = 4; len = 4;
break; break;
#ifdef CONFIG_ISDN_X25 #ifdef CONFIG_ISDN_X25
......
...@@ -145,46 +145,3 @@ static __inline__ void isdn_net_rm_from_bundle(isdn_net_local *lp) ...@@ -145,46 +145,3 @@ static __inline__ void isdn_net_rm_from_bundle(isdn_net_local *lp)
spin_unlock_irqrestore(&master_lp->netdev->queue_lock, flags); spin_unlock_irqrestore(&master_lp->netdev->queue_lock, flags);
} }
static inline int
put_u8(unsigned char *p, u8 x)
{
*p = x;
return 1;
}
static inline int
put_u16(unsigned char *p, u16 x)
{
*((u16 *)p) = htons(x);
return 2;
}
static inline int
put_u32(unsigned char *p, u32 x)
{
*((u32 *)p) = htonl(x);
return 4;
}
static inline int
get_u8(unsigned char *p, u8 *x)
{
*x = *p;
return 1;
}
static inline int
get_u16(unsigned char *p, u16 *x)
{
*x = ntohs(*((u16 *)p));
return 2;
}
static inline int
get_u32(unsigned char *p, u32 *x)
{
*x = ntohl(*((u32 *)p));
return 4;
}
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