Skip to contentSkip to conversation

firewire net: Export fwnet_peerinfo structure for ieee1394-specific peer information in ARP/NDP.

RFC PATCH In review YOSHIFUJI Hideaki 2 participants 2 messages Jan 12, 2013

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

RFC PATCH 3/6 firewire net: Export fwnet_peerinfo structure for ieee1394-specific peer information in ARP/NDP.

Peer information consists of max_rec, spd and unicast_FIFO and the wire format is shared between IPv4 (RFC2734) and IPv6 (RFC3146).

CC Stephan Gatzka <[email protected]>
CC Stefan Richter <[email protected]>
---
 drivers/firewire/net.c |   24 ++++++++++++------------
 include/net/firewire.h |   11 +++++++++++
 2 files changed, 23 insertions(+), 12 deletions(-)
 create mode 100644 include/net/firewire.h
drivers/firewire/net.c +12 -12
index e7a711f5..bd2d0de 100644
@@ -28,6 +28,7 @@
 
 #include <asm/unaligned.h>
 #include <net/arp.h>
+#include <net/firewire.h>
 
 /* rx limits */
 #define FWNET_MAX_FRAGMENTS		30 /* arbitrary, > TX queue depth */
@@ -68,10 +69,8 @@ struct rfc2734_arp {
 	/* Above is exactly the same format as struct arphdr */
 
 	__be64 s_uniq_id;	/* Sender's 64bit EUI			*/
-	u8 max_rec;		/* Sender's max packet size		*/
-	u8 sspd;		/* Sender's max speed			*/
-	__be16 fifo_hi;		/* hi 16bits of sender's FIFO addr	*/
-	__be32 fifo_lo;		/* lo 32bits of sender's FIFO addr	*/
+	struct fwnet_peerinfo info;
+
 	__be32 sip;		/* Sender's IP Address			*/
 	__be32 tip;		/* IP Address of requested hw addr	*/
 } __packed;
@@ -547,17 +546,18 @@ static int fwnet_finish_incoming_packet(struct net_device *net,
 		arp1394   = (struct rfc2734_arp *)skb->data;
 		arp       = (struct arphdr *)skb->data;
 		arp_ptr   = (unsigned char *)(arp + 1);
+
 		peer_guid = get_unaligned_be64(&arp1394->s_uniq_id);
-		fifo_addr = (u64)get_unaligned_be16(&arp1394->fifo_hi) << 32
-				| get_unaligned_be32(&arp1394->fifo_lo);
+		fifo_addr = (u64)get_unaligned_be16(&arp1394->info.fifo_hi) << 32
+				| get_unaligned_be32(&arp1394->info.fifo_lo);
 
-		sspd = arp1394->sspd;
+		sspd = arp1394->info.sspd;
 		/* Sanity check.  OS X 10.3 PPC reportedly sends 131. */
 		if (sspd > SCODE_3200) {
 			dev_notice(&net->dev, "sspd %x out of range\n", sspd);
 			sspd = SCODE_3200;
 		}
-		max_payload = fwnet_max_payload(arp1394->max_rec, sspd);
+		max_payload = fwnet_max_payload(arp1394->info.max_rec, sspd);
 
 		spin_lock_irqsave(&dev->lock, flags);
 		peer = fwnet_peer_find_by_guid(dev, peer_guid);
@@ -1348,13 +1348,13 @@ static netdev_tx_t fwnet_tx(struct sk_buff *skb, struct net_device *net)
 		ipaddr = get_unaligned((__be32 *)(arp_ptr + FWNET_ALEN));
 
 		arp1394->hw_addr_len    = RFC2734_HW_ADDR_LEN;
-		arp1394->max_rec        = dev->card->max_receive;
-		arp1394->sspd		= dev->card->link_speed;
+		arp1394->info.max_rec	= dev->card->max_receive;
+		arp1394->info.sspd	= dev->card->link_speed;
 
 		put_unaligned_be16(dev->local_fifo >> 32,
-				   &arp1394->fifo_hi);
+				   &arp1394->info.fifo_hi);
 		put_unaligned_be32(dev->local_fifo & 0xffffffff,
-				   &arp1394->fifo_lo);
+				   &arp1394->info.fifo_lo);
 		put_unaligned(ipaddr, &arp1394->sip);
 	}
 
include/net/firewire.h new file +11 -0
new file mode 100644
index 0000000..5e12b52
@@ -0,0 +1,11 @@
+#ifndef _NET_FIREWIRE_H
+#define _NET_FIREWIRE_H
+
+struct fwnet_peerinfo {
+	u8 max_rec;		/* Sender's max packet size		*/
+	u8 sspd;		/* Sender's max speed			*/
+	__be16 fifo_hi;		/* hi 16bits of sender's FIFO addr	*/
+	__be32 fifo_lo;		/* lo 32bits of sender's FIFO addr	*/
+} __packed;
+
+#endif
Signature · 1 line
1.7.9.5
#1 lore raw

On Jan 12 YOSHIFUJI Hideaki wrote:
[...]

Quoted 4 lines
include/net/firewire.h new file +1 -0
@@ -0,0 +1,11 @@
+#ifndef _NET_FIREWIRE_H

include/net/firewire.h line 11

Quoted 10 lines
include/net/firewire.h new file +10 -0
+#define _NET_FIREWIRE_H
+
+struct fwnet_peerinfo {
+	u8 max_rec;		/* Sender's max packet size		*/
+	u8 sspd;		/* Sender's max speed			*/
+	__be16 fifo_hi;		/* hi 16bits of sender's FIFO addr	*/
+	__be32 fifo_lo;		/* lo 32bits of sender's FIFO addr	*/
+} __packed;
+
+#endif

If it is deemed necessary to put definitions of on-the-wire formats of the RFC 2734 or RFC 3146 encapsulations into include/net/, then fine by me.

Signature · 3 lines
Stefan Richter
-=====-===-= ---= -==--
http://arcgraph.de/sr/