aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarvey Harrison <harvey.harrison@gmail.com>2008-11-14 01:41:29 -0500
committerDavid S. Miller <davem@davemloft.net>2008-11-14 01:41:29 -0500
commit00bcd522ea0a62f5e2a9c6ad4924cbbd8d05b026 (patch)
treece16dea6960f9d745120941c6bd32b3ca5abe769
parent524ad0a79126efabf58d0a49eace6155ab5b4549 (diff)
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: Harvey Harrison <harvey.harrison@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/isdn/i4l/isdn_net.c91
-rw-r--r--drivers/isdn/i4l/isdn_net.h43
2 files changed, 46 insertions, 88 deletions
diff --git a/drivers/isdn/i4l/isdn_net.c b/drivers/isdn/i4l/isdn_net.c
index 60c82d7b12a8..8fff0bd100a8 100644
--- a/drivers/isdn/i4l/isdn_net.c
+++ b/drivers/isdn/i4l/isdn_net.c
@@ -890,15 +890,15 @@ isdn_net_log_skb(struct sk_buff * skb, isdn_net_local * lp)
890 proto = ETH_P_IP; 890 proto = ETH_P_IP;
891 switch (lp->p_encap) { 891 switch (lp->p_encap) {
892 case ISDN_NET_ENCAP_IPTYP: 892 case ISDN_NET_ENCAP_IPTYP:
893 proto = ntohs(*(unsigned short *) &buf[0]); 893 proto = ntohs(*(__be16 *)&buf[0]);
894 p = &buf[2]; 894 p = &buf[2];
895 break; 895 break;
896 case ISDN_NET_ENCAP_ETHER: 896 case ISDN_NET_ENCAP_ETHER:
897 proto = ntohs(*(unsigned short *) &buf[12]); 897 proto = ntohs(*(__be16 *)&buf[12]);
898 p = &buf[14]; 898 p = &buf[14];
899 break; 899 break;
900 case ISDN_NET_ENCAP_CISCOHDLC: 900 case ISDN_NET_ENCAP_CISCOHDLC:
901 proto = ntohs(*(unsigned short *) &buf[2]); 901 proto = ntohs(*(__be16 *)&buf[2]);
902 p = &buf[4]; 902 p = &buf[4];
903 break; 903 break;
904#ifdef CONFIG_ISDN_PPP 904#ifdef CONFIG_ISDN_PPP
@@ -942,18 +942,12 @@ isdn_net_log_skb(struct sk_buff * skb, isdn_net_local * lp)
942 strcpy(addinfo, " IDP"); 942 strcpy(addinfo, " IDP");
943 break; 943 break;
944 } 944 }
945 printk(KERN_INFO 945 printk(KERN_INFO "OPEN: %pI4 -> %pI4%s\n",
946 "OPEN: %d.%d.%d.%d -> %d.%d.%d.%d%s\n", 946 p + 12, p + 16, addinfo);
947
948 p[12], p[13], p[14], p[15],
949 p[16], p[17], p[18], p[19],
950 addinfo);
951 break; 947 break;
952 case ETH_P_ARP: 948 case ETH_P_ARP:
953 printk(KERN_INFO 949 printk(KERN_INFO "OPEN: ARP %pI4 -> *.*.*.* ?%pI4\n",
954 "OPEN: ARP %d.%d.%d.%d -> *.*.*.* ?%d.%d.%d.%d\n", 950 p + 14, p + 24);
955 p[14], p[15], p[16], p[17],
956 p[24], p[25], p[26], p[27]);
957 break; 951 break;
958 } 952 }
959} 953}
@@ -1539,15 +1533,16 @@ isdn_net_ciscohdlck_slarp_send_keepalive(unsigned long data)
1539 p = skb_put(skb, 4 + 14); 1533 p = skb_put(skb, 4 + 14);
1540 1534
1541 /* cisco header */ 1535 /* cisco header */
1542 p += put_u8 (p, CISCO_ADDR_UNICAST); 1536 *(u8 *)(p + 0) = CISCO_ADDR_UNICAST;
1543 p += put_u8 (p, CISCO_CTRL); 1537 *(u8 *)(p + 1) = CISCO_CTRL;
1544 p += put_u16(p, CISCO_TYPE_SLARP); 1538 *(__be16 *)(p + 2) = cpu_to_be16(CISCO_TYPE_SLARP);
1545 1539
1546 /* slarp keepalive */ 1540 /* slarp keepalive */
1547 p += put_u32(p, CISCO_SLARP_KEEPALIVE); 1541 *(__be32 *)(p + 4) = cpu_to_be32(CISCO_SLARP_KEEPALIVE);
1548 p += put_u32(p, lp->cisco_myseq); 1542 *(__be32 *)(p + 8) = cpu_to_be32(lp->cisco_myseq);
1549 p += put_u32(p, lp->cisco_yourseq); 1543 *(__be32 *)(p + 12) = cpu_to_be32(lp->cisco_yourseq);
1550 p += put_u16(p, 0xffff); // reliablity, always 0xffff 1544 *(__be16 *)(p + 16) = cpu_to_be16(0xffff); // reliablity, always 0xffff
1545 p += 18;
1551 1546
1552 isdn_net_write_super(lp, skb); 1547 isdn_net_write_super(lp, skb);
1553 1548
@@ -1569,15 +1564,16 @@ isdn_net_ciscohdlck_slarp_send_request(isdn_net_local *lp)
1569 p = skb_put(skb, 4 + 14); 1564 p = skb_put(skb, 4 + 14);
1570 1565
1571 /* cisco header */ 1566 /* cisco header */
1572 p += put_u8 (p, CISCO_ADDR_UNICAST); 1567 *(u8 *)(p + 0) = CISCO_ADDR_UNICAST;
1573 p += put_u8 (p, CISCO_CTRL); 1568 *(u8 *)(p + 1) = CISCO_CTRL;
1574 p += put_u16(p, CISCO_TYPE_SLARP); 1569 *(__be16 *)(p + 2) = cpu_to_be16(CISCO_TYPE_SLARP);
1575 1570
1576 /* slarp request */ 1571 /* slarp request */
1577 p += put_u32(p, CISCO_SLARP_REQUEST); 1572 *(__be32 *)(p + 4) = cpu_to_be32(CISCO_SLARP_REQUEST);
1578 p += put_u32(p, 0); // address 1573 *(__be32 *)(p + 8) = cpu_to_be32(0); // address
1579 p += put_u32(p, 0); // netmask 1574 *(__be32 *)(p + 12) = cpu_to_be32(0); // netmask
1580 p += put_u16(p, 0); // unused 1575 *(__be16 *)(p + 16) = cpu_to_be16(0); // unused
1576 p += 18;
1581 1577
1582 isdn_net_write_super(lp, skb); 1578 isdn_net_write_super(lp, skb);
1583} 1579}
@@ -1634,16 +1630,17 @@ isdn_net_ciscohdlck_slarp_send_reply(isdn_net_local *lp)
1634 p = skb_put(skb, 4 + 14); 1630 p = skb_put(skb, 4 + 14);
1635 1631
1636 /* cisco header */ 1632 /* cisco header */
1637 p += put_u8 (p, CISCO_ADDR_UNICAST); 1633 *(u8 *)(p + 0) = CISCO_ADDR_UNICAST;
1638 p += put_u8 (p, CISCO_CTRL); 1634 *(u8 *)(p + 1) = CISCO_CTRL;
1639 p += put_u16(p, CISCO_TYPE_SLARP); 1635 *(__be16 *)(p + 2) = cpu_to_be16(CISCO_TYPE_SLARP);
1640 1636
1641 /* slarp reply, send own ip/netmask; if values are nonsense remote 1637 /* slarp reply, send own ip/netmask; if values are nonsense remote
1642 * should think we are unable to provide it with an address via SLARP */ 1638 * should think we are unable to provide it with an address via SLARP */
1643 p += put_u32(p, CISCO_SLARP_REPLY); 1639 *(__be32 *)(p + 4) = cpu_to_be32(CISCO_SLARP_REPLY);
1644 p += put_u32(p, addr); // address 1640 *(__be32 *)(p + 8) = cpu_to_be32(addr); // address
1645 p += put_u32(p, mask); // netmask 1641 *(__be32 *)(p + 12) = cpu_to_be32(mask); // netmask
1646 p += put_u16(p, 0); // unused 1642 *(__be16 *)(p + 16) = cpu_to_be16(0); // unused
1643 p += 18;
1647 1644
1648 isdn_net_write_super(lp, skb); 1645 isdn_net_write_super(lp, skb);
1649} 1646}
@@ -1664,8 +1661,9 @@ isdn_net_ciscohdlck_slarp_in(isdn_net_local *lp, struct sk_buff *skb)
1664 return; 1661 return;
1665 1662
1666 p = skb->data; 1663 p = skb->data;
1667 p += get_u32(p, &code); 1664 code = be32_to_cpup((__be32 *)p);
1668 1665 p += 4;
1666
1669 switch (code) { 1667 switch (code) {
1670 case CISCO_SLARP_REQUEST: 1668 case CISCO_SLARP_REQUEST:
1671 lp->cisco_yourseq = 0; 1669 lp->cisco_yourseq = 0;
@@ -1699,9 +1697,10 @@ isdn_net_ciscohdlck_slarp_in(isdn_net_local *lp, struct sk_buff *skb)
1699 lp->cisco_keepalive_period); 1697 lp->cisco_keepalive_period);
1700 } 1698 }
1701 lp->cisco_last_slarp_in = jiffies; 1699 lp->cisco_last_slarp_in = jiffies;
1702 p += get_u32(p, &my_seq); 1700 my_seq = be32_to_cpup((__be32 *)(p + 0));
1703 p += get_u32(p, &your_seq); 1701 your_seq = be32_to_cpup((__be32 *)(p + 4));
1704 p += get_u16(p, &unused); 1702 unused = be16_to_cpup((__be16 *)(p + 8));
1703 p += 10;
1705 lp->cisco_yourseq = my_seq; 1704 lp->cisco_yourseq = my_seq;
1706 lp->cisco_mineseen = your_seq; 1705 lp->cisco_mineseen = your_seq;
1707 break; 1706 break;
@@ -1720,9 +1719,10 @@ isdn_net_ciscohdlck_receive(isdn_net_local *lp, struct sk_buff *skb)
1720 goto out_free; 1719 goto out_free;
1721 1720
1722 p = skb->data; 1721 p = skb->data;
1723 p += get_u8 (p, &addr); 1722 addr = *(u8 *)(p + 0);
1724 p += get_u8 (p, &ctrl); 1723 ctrl = *(u8 *)(p + 1);
1725 p += get_u16(p, &type); 1724 type = be16_to_cpup((__be16 *)(p + 2));
1725 p += 4;
1726 skb_pull(skb, 4); 1726 skb_pull(skb, 4);
1727 1727
1728 if (addr != CISCO_ADDR_UNICAST && addr != CISCO_ADDR_BROADCAST) { 1728 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 case ISDN_NET_ENCAP_CISCOHDLC: 1910 case ISDN_NET_ENCAP_CISCOHDLC:
1911 case ISDN_NET_ENCAP_CISCOHDLCK: 1911 case ISDN_NET_ENCAP_CISCOHDLCK:
1912 p = skb_push(skb, 4); 1912 p = skb_push(skb, 4);
1913 p += put_u8 (p, CISCO_ADDR_UNICAST); 1913 *(u8 *)(p + 0) = CISCO_ADDR_UNICAST;
1914 p += put_u8 (p, CISCO_CTRL); 1914 *(u8 *)(p + 1) = CISCO_CTRL;
1915 p += put_u16(p, type); 1915 *(__be16 *)(p + 2) = cpu_to_be16(type);
1916 p += 4;
1916 len = 4; 1917 len = 4;
1917 break; 1918 break;
1918#ifdef CONFIG_ISDN_X25 1919#ifdef CONFIG_ISDN_X25
diff --git a/drivers/isdn/i4l/isdn_net.h b/drivers/isdn/i4l/isdn_net.h
index be4949715d55..2a6c370ea87f 100644
--- a/drivers/isdn/i4l/isdn_net.h
+++ b/drivers/isdn/i4l/isdn_net.h
@@ -145,46 +145,3 @@ static __inline__ void isdn_net_rm_from_bundle(isdn_net_local *lp)
145 spin_unlock_irqrestore(&master_lp->netdev->queue_lock, flags); 145 spin_unlock_irqrestore(&master_lp->netdev->queue_lock, flags);
146} 146}
147 147
148static inline int
149put_u8(unsigned char *p, u8 x)
150{
151 *p = x;
152 return 1;
153}
154
155static inline int
156put_u16(unsigned char *p, u16 x)
157{
158 *((u16 *)p) = htons(x);
159 return 2;
160}
161
162static inline int
163put_u32(unsigned char *p, u32 x)
164{
165 *((u32 *)p) = htonl(x);
166 return 4;
167}
168
169static inline int
170get_u8(unsigned char *p, u8 *x)
171{
172 *x = *p;
173 return 1;
174}
175
176static inline int
177get_u16(unsigned char *p, u16 *x)
178{
179 *x = ntohs(*((u16 *)p));
180 return 2;
181}
182
183static inline int
184get_u32(unsigned char *p, u32 *x)
185{
186 *x = ntohl(*((u32 *)p));
187 return 4;
188}
189
190