Netdev List
 help / color / mirror / Atom feed
* [PATCH] eth1394: endian fixes
@ 2006-05-19 13:25 Alexey Dobriyan
  2006-05-27 10:05 ` Stefan Richter
  0 siblings, 1 reply; 6+ messages in thread
From: Alexey Dobriyan @ 2006-05-19 13:25 UTC (permalink / raw)
  To: netdev; +Cc: linux1394-devel

Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
---

 drivers/ieee1394/eth1394.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

--- a/drivers/ieee1394/eth1394.c
+++ 1/drivers/ieee1394/eth1394.c
@@ -935,7 +935,7 @@ static inline u16 ether1394_parse_encap(
 		*(u32*)arp_ptr = arp1394->sip;	/* move sender IP addr */
 		arp_ptr += arp->ar_pln;		/* skip over sender IP addr */
 
-		if (arp->ar_op == 1)
+		if (arp->ar_op == htons(1))
 			/* just set ARP req target unique ID to 0 */
 			*((u64*)arp_ptr) = 0;
 		else
@@ -1395,7 +1395,7 @@ static inline void ether1394_arp_to_1394
 /* We need to encapsulate the standard header with our own. We use the
  * ethernet header's proto for our own. */
 static inline unsigned int ether1394_encapsulate_prep(unsigned int max_payload,
-						      int proto,
+						      __be16 proto,
 						      union eth1394_hdr *hdr,
 						      u16 dg_size, u16 dgl)
 {
@@ -1626,7 +1626,7 @@ static int ether1394_tx (struct sk_buff 
 	gfp_t kmflags = in_interrupt() ? GFP_ATOMIC : GFP_KERNEL;
 	struct eth1394hdr *eth;
 	struct eth1394_priv *priv = netdev_priv(dev);
-	int proto;
+	__be16 proto;
 	unsigned long flags;
 	nodeid_t dest_node;
 	eth1394_tx_type tx_type;


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] eth1394: endian fixes
  2006-05-19 13:25 [PATCH] eth1394: endian fixes Alexey Dobriyan
@ 2006-05-27 10:05 ` Stefan Richter
  2006-05-27 16:12   ` Alexey Dobriyan
  2006-05-27 16:40   ` Stephen Hemminger
  0 siblings, 2 replies; 6+ messages in thread
From: Stefan Richter @ 2006-05-27 10:05 UTC (permalink / raw)
  To: Alexey Dobriyan; +Cc: netdev, linux1394-devel

Alexey Dobriyan wrote on 2006-05-16:
> Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
...
> @@ -935,7 +935,7 @@ static inline u16 ether1394_parse_encap(
>  		*(u32*)arp_ptr = arp1394->sip;	/* move sender IP addr */
>  		arp_ptr += arp->ar_pln;		/* skip over sender IP addr */
>  
> -		if (arp->ar_op == 1)
> +		if (arp->ar_op == htons(1))
>  			/* just set ARP req target unique ID to 0 */
>  			*((u64*)arp_ptr) = 0;
>  		else

I suggest __constant_htons(ARPOP_REQUEST).

> @@ -1395,7 +1395,7 @@ static inline void ether1394_arp_to_1394
>  /* We need to encapsulate the standard header with our own. We use the
>   * ethernet header's proto for our own. */
>  static inline unsigned int ether1394_encapsulate_prep(unsigned int max_payload,
> -						      int proto,
> +						      __be16 proto,
>  						      union eth1394_hdr *hdr,
>  						      u16 dg_size, u16 dgl)
>  {
> @@ -1626,7 +1626,7 @@ static int ether1394_tx (struct sk_buff 
>  	gfp_t kmflags = in_interrupt() ? GFP_ATOMIC : GFP_KERNEL;
>  	struct eth1394hdr *eth;
>  	struct eth1394_priv *priv = netdev_priv(dev);
> -	int proto;
> +	__be16 proto;
>  	unsigned long flags;
>  	nodeid_t dest_node;
>  	eth1394_tx_type tx_type;

Alexey, I am afraid none of the current 1394 developers is actively 
using eth1394. Did you have the chance to test your patch on different 
platforms and with different peer OSs/platforms?

Also, did someone of the netdev guys already forward the patch (since we 
1394 people are slow and eth1394 is marked unmaintained)? If not, I 
could send it along with a few other 1394 patches to akpm soon.
-- 
Stefan Richter
-=====-=-==- -=-= ==-==
http://arcgraph.de/sr/

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] eth1394: endian fixes
  2006-05-27 10:05 ` Stefan Richter
@ 2006-05-27 16:12   ` Alexey Dobriyan
  2006-06-10 16:46     ` Stefan Richter
  2006-05-27 16:40   ` Stephen Hemminger
  1 sibling, 1 reply; 6+ messages in thread
From: Alexey Dobriyan @ 2006-05-27 16:12 UTC (permalink / raw)
  To: Stefan Richter; +Cc: netdev, linux1394-devel

On Sat, May 27, 2006 at 12:05:40PM +0200, Stefan Richter wrote:
> Alexey Dobriyan wrote on 2006-05-16:
> >Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
> ...
> >@@ -935,7 +935,7 @@ static inline u16 ether1394_parse_encap(
> > 		*(u32*)arp_ptr = arp1394->sip;	/* move sender IP addr */
> > 		arp_ptr += arp->ar_pln;		/* skip over sender IP addr 
> > 		*/
> > 
> >-		if (arp->ar_op == 1)
> >+		if (arp->ar_op == htons(1))
> > 			/* just set ARP req target unique ID to 0 */
> > 			*((u64*)arp_ptr) = 0;
> > 		else
> 
> I suggest __constant_htons(ARPOP_REQUEST).

OK. htons(ARPOP_REQUEST) should be enough. __constant_* really needed in
initializators. Updated patch below.

> Alexey, I am afraid none of the current 1394 developers is actively
> using eth1394. Did you have the chance to test your patch on different
> platforms and with different peer OSs/platforms?

Unfortunately not.

> Also, did someone of the netdev guys already forward the patch (since we
> 1394 people are slow and eth1394 is marked unmaintained)? If not, I
> could send it along with a few other 1394 patches to akpm soon.

[PATCH] eth1394: endian fixes

Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
---

 drivers/ieee1394/eth1394.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

--- a/drivers/ieee1394/eth1394.c
+++ 1/drivers/ieee1394/eth1394.c
@@ -935,7 +935,7 @@ static inline u16 ether1394_parse_encap(
 		*(u32*)arp_ptr = arp1394->sip;	/* move sender IP addr */
 		arp_ptr += arp->ar_pln;		/* skip over sender IP addr */
 
-		if (arp->ar_op == 1)
+		if (arp->ar_op == htons(ARPOP_REQUEST))
 			/* just set ARP req target unique ID to 0 */
 			*((u64*)arp_ptr) = 0;
 		else
@@ -1395,7 +1395,7 @@ static inline void ether1394_arp_to_1394
 /* We need to encapsulate the standard header with our own. We use the
  * ethernet header's proto for our own. */
 static inline unsigned int ether1394_encapsulate_prep(unsigned int max_payload,
-						      int proto,
+						      __be16 proto,
 						      union eth1394_hdr *hdr,
 						      u16 dg_size, u16 dgl)
 {
@@ -1626,7 +1626,7 @@ static int ether1394_tx (struct sk_buff 
 	gfp_t kmflags = in_interrupt() ? GFP_ATOMIC : GFP_KERNEL;
 	struct eth1394hdr *eth;
 	struct eth1394_priv *priv = netdev_priv(dev);
-	int proto;
+	__be16 proto;
 	unsigned long flags;
 	nodeid_t dest_node;
 	eth1394_tx_type tx_type;


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] eth1394: endian fixes
  2006-05-27 10:05 ` Stefan Richter
  2006-05-27 16:12   ` Alexey Dobriyan
@ 2006-05-27 16:40   ` Stephen Hemminger
  2006-06-10 21:44     ` [PATCH 2.6.17-rc6-mm2] eth1394: replace __constant_htons by htons Stefan Richter
  1 sibling, 1 reply; 6+ messages in thread
From: Stephen Hemminger @ 2006-05-27 16:40 UTC (permalink / raw)
  To: Stefan Richter; +Cc: Alexey Dobriyan, netdev, linux1394-devel

On Sat, 27 May 2006 12:05:40 +0200
Stefan Richter <stefanr@s5r6.in-berlin.de> wrote:

> Alexey Dobriyan wrote on 2006-05-16:
> > Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
> ...
> > @@ -935,7 +935,7 @@ static inline u16 ether1394_parse_encap(
> >  		*(u32*)arp_ptr = arp1394->sip;	/* move sender IP addr */
> >  		arp_ptr += arp->ar_pln;		/* skip over sender IP addr */
> >  
> > -		if (arp->ar_op == 1)
> > +		if (arp->ar_op == htons(1))
> >  			/* just set ARP req target unique ID to 0 */
> >  			*((u64*)arp_ptr) = 0;
> >  		else
> 
> I suggest __constant_htons(ARPOP_REQUEST).

No. That is only for initializers and switch cases. Otherwise, it
adds unnecessary verbosity.  The htons() does the right thing automatically.

> 
> > @@ -1395,7 +1395,7 @@ static inline void ether1394_arp_to_1394
> >  /* We need to encapsulate the standard header with our own. We use the
> >   * ethernet header's proto for our own. */
> >  static inline unsigned int ether1394_encapsulate_prep(unsigned int max_payload,
> > -						      int proto,
> > +						      __be16 proto,
> >  						      union eth1394_hdr *hdr,
> >  						      u16 dg_size, u16 dgl)
> >  {
> > @@ -1626,7 +1626,7 @@ static int ether1394_tx (struct sk_buff 
> >  	gfp_t kmflags = in_interrupt() ? GFP_ATOMIC : GFP_KERNEL;
> >  	struct eth1394hdr *eth;
> >  	struct eth1394_priv *priv = netdev_priv(dev);
> > -	int proto;
> > +	__be16 proto;
> >  	unsigned long flags;
> >  	nodeid_t dest_node;
> >  	eth1394_tx_type tx_type;
> 
> Alexey, I am afraid none of the current 1394 developers is actively 
> using eth1394. Did you have the chance to test your patch on different 
> platforms and with different peer OSs/platforms?
> 
> Also, did someone of the netdev guys already forward the patch (since we 
> 1394 people are slow and eth1394 is marked unmaintained)? If not, I 
> could send it along with a few other 1394 patches to akpm soon.
> -- 
> Stefan Richter
> -=====-=-==- -=-= ==-==
> http://arcgraph.de/sr/
> -
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] eth1394: endian fixes
  2006-05-27 16:12   ` Alexey Dobriyan
@ 2006-06-10 16:46     ` Stefan Richter
  0 siblings, 0 replies; 6+ messages in thread
From: Stefan Richter @ 2006-06-10 16:46 UTC (permalink / raw)
  To: Alexey Dobriyan; +Cc: netdev, linux1394-devel

Alexey Dobriyan wrote on 2006-05-27:
> On Sat, May 27, 2006 at 12:05:40PM +0200, Stefan Richter wrote:
>> Did you have the chance to test your patch on different
>> platforms and with different peer OSs/platforms?
> 
> Unfortunately not.

The patch works OK on an x86/Linux host with x86/WinXP peer and 
ppc32/OSX peer. Thanks,
-- 
Stefan Richter
-=====-=-==- -==- -=-=-
http://arcgraph.de/sr/

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 2.6.17-rc6-mm2] eth1394: replace __constant_htons by htons
  2006-05-27 16:40   ` Stephen Hemminger
@ 2006-06-10 21:44     ` Stefan Richter
  0 siblings, 0 replies; 6+ messages in thread
From: Stefan Richter @ 2006-06-10 21:44 UTC (permalink / raw)
  To: linux1394-devel; +Cc: netdev, Alexey Dobriyan

...and __constant_ntohs, __constant_ntohl, __constant_cpu_to_be32 too
where possible.  Htons and friends are resolved to constants in these
places anyway.  Also fix an endianess glitch in a log message, spotted
by Alexey Dobriyan.

Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
---
 drivers/ieee1394/eth1394.c |   23 +++++++++++------------
 1 files changed, 11 insertions(+), 12 deletions(-)

Index: linux-2.6.17-rc6-mm2/drivers/ieee1394/eth1394.c
===================================================================
--- linux-2.6.17-rc6-mm2.orig/drivers/ieee1394/eth1394.c	2006-06-10 21:18:28.000000000 +0200
+++ linux-2.6.17-rc6-mm2/drivers/ieee1394/eth1394.c	2006-06-10 21:33:59.000000000 +0200
@@ -770,7 +770,7 @@ static int ether1394_rebuild_header(stru
 	default:
 		ETH1394_PRINT(KERN_DEBUG, dev->name,
 			      "unable to resolve type %04x addresses.\n",
-			      eth->h_proto);
+			      ntohs(eth->h_proto));
 		break;
 	}
 
@@ -792,9 +792,8 @@ static int ether1394_header_cache(struct
 						      (16 - ETH1394_HLEN));
 	struct net_device *dev = neigh->dev;
 
-	if (type == __constant_htons(ETH_P_802_3)) {
+	if (type == htons(ETH_P_802_3))
 		return -1;
-	}
 
 	eth->h_proto = type;
 	memcpy(eth->h_dest, neigh->ha, dev->addr_len);
@@ -883,7 +882,7 @@ static inline u16 ether1394_parse_encap(
 	/* If this is an ARP packet, convert it. First, we want to make
 	 * use of some of the fields, since they tell us a little bit
 	 * about the sending machine.  */
-	if (ether_type == __constant_htons (ETH_P_ARP)) {
+	if (ether_type == htons(ETH_P_ARP)) {
 		struct eth1394_arp *arp1394 = (struct eth1394_arp*)skb->data;
 		struct arphdr *arp = (struct arphdr *)skb->data;
 		unsigned char *arp_ptr = (unsigned char *)(arp + 1);
@@ -939,8 +938,8 @@ static inline u16 ether1394_parse_encap(
 	}
 
 	/* Now add the ethernet header. */
-	if (dev->hard_header (skb, dev, __constant_ntohs (ether_type),
-			      &dest_hw, NULL, skb->len) >= 0)
+	if (dev->hard_header(skb, dev, ntohs(ether_type), &dest_hw, NULL,
+			     skb->len) >= 0)
 		ret = ether1394_type_trans(skb, dev);
 
 	return ret;
@@ -1509,8 +1508,8 @@ static inline void ether1394_prep_gasp_p
 	p->data = ((quadlet_t*)skb->data) - 2;
 	p->data[0] = cpu_to_be32((priv->host->node_id << 16) |
 				 ETHER1394_GASP_SPECIFIER_ID_HI);
-	p->data[1] = __constant_cpu_to_be32((ETHER1394_GASP_SPECIFIER_ID_LO << 24) |
-					    ETHER1394_GASP_VERSION);
+	p->data[1] = cpu_to_be32((ETHER1394_GASP_SPECIFIER_ID_LO << 24) |
+				 ETHER1394_GASP_VERSION);
 
 	/* Setting the node id to ALL_NODES (not LOCAL_BUS | ALL_NODES)
 	 * prevents hpsb_send_packet() from setting the speed to an arbitrary
@@ -1665,9 +1664,9 @@ static int ether1394_tx (struct sk_buff 
 	/* Set the transmission type for the packet.  ARP packets and IP
 	 * broadcast packets are sent via GASP. */
 	if (memcmp(eth->h_dest, dev->broadcast, ETH1394_ALEN) == 0 ||
-	    proto == __constant_htons(ETH_P_ARP) ||
-	    (proto == __constant_htons(ETH_P_IP) &&
-	     IN_MULTICAST(__constant_ntohl(skb->nh.iph->daddr)))) {
+	    proto == htons(ETH_P_ARP) ||
+	    (proto == htons(ETH_P_IP) &&
+	     IN_MULTICAST(ntohl(skb->nh.iph->daddr)))) {
 		tx_type = ETH1394_GASP;
 		dest_node = LOCAL_BUS | ALL_NODES;
 		max_payload = priv->bc_maxpayload - ETHER1394_GASP_OVERHEAD;
@@ -1699,7 +1698,7 @@ static int ether1394_tx (struct sk_buff 
 	}
 
 	/* If this is an ARP packet, convert it */
-	if (proto == __constant_htons (ETH_P_ARP))
+	if (proto == htons(ETH_P_ARP))
 		ether1394_arp_to_1394arp (skb, dev);
 
 	ptask->hdr.words.word1 = 0;

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2006-06-10 21:44 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-05-19 13:25 [PATCH] eth1394: endian fixes Alexey Dobriyan
2006-05-27 10:05 ` Stefan Richter
2006-05-27 16:12   ` Alexey Dobriyan
2006-06-10 16:46     ` Stefan Richter
2006-05-27 16:40   ` Stephen Hemminger
2006-06-10 21:44     ` [PATCH 2.6.17-rc6-mm2] eth1394: replace __constant_htons by htons Stefan Richter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox