firewire net: Export fwnet_peerinfo structure for ieee1394-specific peer information in ARP/NDP.
Subsystems (3)
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]>
Signed-off-by YOSHIFUJI Hideaki <[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
@@ -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
@@ -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
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/