endianness annotations drivers/net/bonding/
authorAl Viro <viro@zeniv.linux.org.uk>
Thu, 23 Aug 2007 00:06:58 +0000 (20:06 -0400)
committerDavid S. Miller <davem@sunset.davemloft.net>
Wed, 10 Oct 2007 23:51:56 +0000 (16:51 -0700)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/net/bonding/bond_3ad.c
drivers/net/bonding/bond_3ad.h
drivers/net/bonding/bond_alb.c
drivers/net/bonding/bond_alb.h
drivers/net/bonding/bond_main.c
drivers/net/bonding/bond_sysfs.c
drivers/net/bonding/bonding.h

index 94bd739..7a045a3 100644 (file)
@@ -101,7 +101,6 @@ static u16 __get_link_speed(struct port *port);
 static u8 __get_duplex(struct port *port);
 static inline void __initialize_port_locks(struct port *port);
 //conversions
-static void __htons_lacpdu(struct lacpdu *lacpdu);
 static u16 __ad_timer_to_ticks(u16 timer_type, u16 Par);
 
 
@@ -420,26 +419,6 @@ static inline void __initialize_port_locks(struct port *port)
 }
 
 //conversions
-/**
- * __htons_lacpdu - convert the contents of a LACPDU to network byte order
- * @lacpdu: the speicifed lacpdu
- *
- * For each multi-byte field in the lacpdu, convert its content
- */
-static void __htons_lacpdu(struct lacpdu *lacpdu)
-{
-       if (lacpdu) {
-               lacpdu->actor_system_priority =   htons(lacpdu->actor_system_priority);
-               lacpdu->actor_key =               htons(lacpdu->actor_key);
-               lacpdu->actor_port_priority =     htons(lacpdu->actor_port_priority);
-               lacpdu->actor_port =              htons(lacpdu->actor_port);
-               lacpdu->partner_system_priority = htons(lacpdu->partner_system_priority);
-               lacpdu->partner_key =             htons(lacpdu->partner_key);
-               lacpdu->partner_port_priority =   htons(lacpdu->partner_port_priority);
-               lacpdu->partner_port =            htons(lacpdu->partner_port);
-               lacpdu->collector_max_delay =     htons(lacpdu->collector_max_delay);
-       }
-}
 
 /**
  * __ad_timer_to_ticks - convert a given timer type to AD module ticks
@@ -827,11 +806,11 @@ static inline void __update_lacpdu_from_port(struct port *port)
         * lacpdu->actor_information_length  initialized
         */
 
-       lacpdu->actor_system_priority = port->actor_system_priority;
+       lacpdu->actor_system_priority = htons(port->actor_system_priority);
        lacpdu->actor_system = port->actor_system;
-       lacpdu->actor_key = port->actor_oper_port_key;
-       lacpdu->actor_port_priority = port->actor_port_priority;
-       lacpdu->actor_port = port->actor_port_number;
+       lacpdu->actor_key = htons(port->actor_oper_port_key);
+       lacpdu->actor_port_priority = htons(port->actor_port_priority);
+       lacpdu->actor_port = htons(port->actor_port_number);
        lacpdu->actor_state = port->actor_oper_port_state;
 
        /* lacpdu->reserved_3_1              initialized
@@ -839,11 +818,11 @@ static inline void __update_lacpdu_from_port(struct port *port)
         * lacpdu->partner_information_length initialized
         */
 
-       lacpdu->partner_system_priority = port->partner_oper_system_priority;
+       lacpdu->partner_system_priority = htons(port->partner_oper_system_priority);
        lacpdu->partner_system = port->partner_oper_system;
-       lacpdu->partner_key = port->partner_oper_key;
-       lacpdu->partner_port_priority = port->partner_oper_port_priority;
-       lacpdu->partner_port = port->partner_oper_port_number;
+       lacpdu->partner_key = htons(port->partner_oper_key);
+       lacpdu->partner_port_priority = htons(port->partner_oper_port_priority);
+       lacpdu->partner_port = htons(port->partner_oper_port_number);
        lacpdu->partner_state = port->partner_oper_port_state;
 
        /* lacpdu->reserved_3_2              initialized
@@ -855,9 +834,6 @@ static inline void __update_lacpdu_from_port(struct port *port)
         * terminator_length                 initialized
         * reserved_50[50]                   initialized
         */
-
-       /* Convert all non u8 parameters to Big Endian for transmit */
-       __htons_lacpdu(lacpdu);
 }
 
 //////////////////////////////////////////////////////////////////////////////////////
@@ -1834,7 +1810,7 @@ static void ad_initialize_lacpdu(struct lacpdu *lacpdu)
        }
        lacpdu->tlv_type_collector_info = 0x03;
        lacpdu->collector_information_length= 0x10;
-       lacpdu->collector_max_delay = AD_COLLECTOR_MAX_DELAY;
+       lacpdu->collector_max_delay = htons(AD_COLLECTOR_MAX_DELAY);
        for (index=0; index<=11; index++) {
                lacpdu->reserved_12[index]=0;
        }
index 6ad5ad6..862952f 100644 (file)
@@ -108,7 +108,7 @@ typedef enum {
 typedef struct ad_header {
        struct mac_addr destination_address;
        struct mac_addr source_address;
-       u16 length_type;
+       __be16 length_type;
 } ad_header_t;
 
 // Link Aggregation Control Protocol(LACP) data unit structure(43.4.2.2 in the 802.3ad standard)
@@ -117,25 +117,25 @@ typedef struct lacpdu {
        u8 version_number;
        u8 tlv_type_actor_info;       // = actor information(type/length/value)
        u8 actor_information_length; // = 20
-       u16 actor_system_priority;
+       __be16 actor_system_priority;
        struct mac_addr actor_system;
-       u16 actor_key;
-       u16 actor_port_priority;
-       u16 actor_port;
+       __be16 actor_key;
+       __be16 actor_port_priority;
+       __be16 actor_port;
        u8 actor_state;
        u8 reserved_3_1[3];          // = 0
        u8 tlv_type_partner_info;     // = partner information
        u8 partner_information_length;   // = 20
-       u16 partner_system_priority;
+       __be16 partner_system_priority;
        struct mac_addr partner_system;
-       u16 partner_key;
-       u16 partner_port_priority;
-       u16 partner_port;
+       __be16 partner_key;
+       __be16 partner_port_priority;
+       __be16 partner_port;
        u8 partner_state;
        u8 reserved_3_2[3];          // = 0
        u8 tlv_type_collector_info;       // = collector information
        u8 collector_information_length; // = 16
-       u16 collector_max_delay;
+       __be16 collector_max_delay;
        u8 reserved_12[12];
        u8 tlv_type_terminator;      // = terminator
        u8 terminator_length;        // = 0
index 419a9f8..aea2217 100644 (file)
@@ -87,20 +87,20 @@ static const int alb_delta_in_ticks = HZ / ALB_TIMER_TICKS_PER_SEC;
 struct learning_pkt {
        u8 mac_dst[ETH_ALEN];
        u8 mac_src[ETH_ALEN];
-       u16 type;
+       __be16 type;
        u8 padding[ETH_ZLEN - ETH_HLEN];
 };
 
 struct arp_pkt {
-       u16     hw_addr_space;
-       u16     prot_addr_space;
+       __be16  hw_addr_space;
+       __be16  prot_addr_space;
        u8      hw_addr_len;
        u8      prot_addr_len;
-       u16     op_code;
+       __be16  op_code;
        u8      mac_src[ETH_ALEN];      /* sender hardware address */
-       u32     ip_src;                 /* sender IP address */
+       __be32  ip_src;                 /* sender IP address */
        u8      mac_dst[ETH_ALEN];      /* target hardware address */
-       u32     ip_dst;                 /* target IP address */
+       __be32  ip_dst;                 /* target IP address */
 };
 #pragma pack()
 
@@ -582,7 +582,7 @@ static void rlb_req_update_slave_clients(struct bonding *bond, struct slave *sla
 }
 
 /* mark all clients using src_ip to be updated */
-static void rlb_req_update_subnet_clients(struct bonding *bond, u32 src_ip)
+static void rlb_req_update_subnet_clients(struct bonding *bond, __be32 src_ip)
 {
        struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond));
        struct rlb_client_info *client_info;
@@ -1267,7 +1267,7 @@ int bond_alb_xmit(struct sk_buff *skb, struct net_device *bond_dev)
        struct ethhdr *eth_data;
        struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond));
        struct slave *tx_slave = NULL;
-       static const u32 ip_bcast = 0xffffffff;
+       static const __be32 ip_bcast = htonl(0xffffffff);
        int hash_size = 0;
        int do_tx_balance = 1;
        u32 hash_index = 0;
@@ -1311,8 +1311,7 @@ int bond_alb_xmit(struct sk_buff *skb, struct net_device *bond_dev)
                hash_size = sizeof(ipv6_hdr(skb)->daddr);
                break;
        case ETH_P_IPX:
-               if (ipx_hdr(skb)->ipx_checksum !=
-                   __constant_htons(IPX_NO_CHECKSUM)) {
+               if (ipx_hdr(skb)->ipx_checksum != IPX_NO_CHECKSUM) {
                        /* something is wrong with this packet */
                        do_tx_balance = 0;
                        break;
index 28f2a2f..fd87264 100644 (file)
@@ -60,8 +60,8 @@ struct tlb_client_info {
  * -------------------------------------------------------------------------
  */
 struct rlb_client_info {
-       u32 ip_src;             /* the server IP address */
-       u32 ip_dst;             /* the client IP address */
+       __be32 ip_src;          /* the server IP address */
+       __be32 ip_dst;          /* the client IP address */
        u8  mac_dst[ETH_ALEN];  /* the client MAC address */
        u32 next;               /* The next Hash table entry index */
        u32 prev;               /* The previous Hash table entry index */
index 8f77db2..64bfec3 100644 (file)
@@ -144,7 +144,7 @@ static struct proc_dir_entry *bond_proc_dir = NULL;
 #endif
 
 extern struct rw_semaphore bonding_rwsem;
-static u32 arp_target[BOND_MAX_ARP_TARGETS] = { 0, } ;
+static __be32 arp_target[BOND_MAX_ARP_TARGETS] = { 0, } ;
 static int arp_ip_count        = 0;
 static int bond_mode   = BOND_MODE_ROUNDROBIN;
 static int xmit_hashtype= BOND_XMIT_POLICY_LAYER2;
@@ -2226,7 +2226,7 @@ out:
 }
 
 
-static u32 bond_glean_dev_ip(struct net_device *dev)
+static __be32 bond_glean_dev_ip(struct net_device *dev)
 {
        struct in_device *idev;
        struct in_ifaddr *ifa;
@@ -2269,7 +2269,7 @@ static int bond_has_ip(struct bonding *bond)
        return 0;
 }
 
-static int bond_has_this_ip(struct bonding *bond, u32 ip)
+static int bond_has_this_ip(struct bonding *bond, __be32 ip)
 {
        struct vlan_entry *vlan, *vlan_next;
 
@@ -2293,7 +2293,7 @@ static int bond_has_this_ip(struct bonding *bond, u32 ip)
  * switches in VLAN mode (especially if ports are configured as
  * "native" to a VLAN) might not pass non-tagged frames.
  */
-static void bond_arp_send(struct net_device *slave_dev, int arp_op, u32 dest_ip, u32 src_ip, unsigned short vlan_id)
+static void bond_arp_send(struct net_device *slave_dev, int arp_op, __be32 dest_ip, __be32 src_ip, unsigned short vlan_id)
 {
        struct sk_buff *skb;
 
@@ -2321,7 +2321,7 @@ static void bond_arp_send(struct net_device *slave_dev, int arp_op, u32 dest_ip,
 static void bond_arp_send_all(struct bonding *bond, struct slave *slave)
 {
        int i, vlan_id, rv;
-       u32 *targets = bond->params.arp_targets;
+       __be32 *targets = bond->params.arp_targets;
        struct vlan_entry *vlan, *vlan_next;
        struct net_device *vlan_dev;
        struct flowi fl;
@@ -2426,10 +2426,10 @@ static void bond_send_gratuitous_arp(struct bonding *bond)
        }
 }
 
-static void bond_validate_arp(struct bonding *bond, struct slave *slave, u32 sip, u32 tip)
+static void bond_validate_arp(struct bonding *bond, struct slave *slave, __be32 sip, __be32 tip)
 {
        int i;
-       u32 *targets = bond->params.arp_targets;
+       __be32 *targets = bond->params.arp_targets;
 
        targets = bond->params.arp_targets;
        for (i = 0; (i < BOND_MAX_ARP_TARGETS) && targets[i]; i++) {
@@ -2451,7 +2451,7 @@ static int bond_arp_rcv(struct sk_buff *skb, struct net_device *dev, struct pack
        struct slave *slave;
        struct bonding *bond;
        unsigned char *arp_ptr;
-       u32 sip, tip;
+       __be32 sip, tip;
 
        if (dev->nd_net != &init_net)
                goto out;
@@ -3427,14 +3427,14 @@ static int bond_xmit_hash_policy_l34(struct sk_buff *skb,
 {
        struct ethhdr *data = (struct ethhdr *)skb->data;
        struct iphdr *iph = ip_hdr(skb);
-       u16 *layer4hdr = (u16 *)((u32 *)iph + iph->ihl);
+       __be16 *layer4hdr = (__be16 *)((u32 *)iph + iph->ihl);
        int layer4_xor = 0;
 
        if (skb->protocol == __constant_htons(ETH_P_IP)) {
                if (!(iph->frag_off & __constant_htons(IP_MF|IP_OFFSET)) &&
                    (iph->protocol == IPPROTO_TCP ||
                     iph->protocol == IPPROTO_UDP)) {
-                       layer4_xor = htons((*layer4hdr ^ *(layer4hdr + 1)));
+                       layer4_xor = ntohs((*layer4hdr ^ *(layer4hdr + 1)));
                }
                return (layer4_xor ^
                        ((ntohl(iph->saddr ^ iph->daddr)) & 0xffff)) % count;
@@ -4521,7 +4521,7 @@ static int bond_check_params(struct bond_params *params)
                               arp_ip_target[arp_ip_count]);
                        arp_interval = 0;
                } else {
-                       u32 ip = in_aton(arp_ip_target[arp_ip_count]);
+                       __be32 ip = in_aton(arp_ip_target[arp_ip_count]);
                        arp_target[arp_ip_count] = ip;
                }
        }
index f109276..6f49ca7 100644 (file)
@@ -682,16 +682,16 @@ static ssize_t bonding_store_arp_targets(struct device *d,
                                         struct device_attribute *attr,
                                         const char *buf, size_t count)
 {
-       u32 newtarget;
+       __be32 newtarget;
        int i = 0, done = 0, ret = count;
        struct bonding *bond = to_bond(d);
-       u32 *targets;
+       __be32 *targets;
 
        targets = bond->params.arp_targets;
        newtarget = in_aton(buf + 1);
        /* look for adds */
        if (buf[0] == '+') {
-               if ((newtarget == 0) || (newtarget == INADDR_BROADCAST)) {
+               if ((newtarget == 0) || (newtarget == htonl(INADDR_BROADCAST))) {
                        printk(KERN_ERR DRV_NAME
                               ": %s: invalid ARP target %u.%u.%u.%u specified for addition\n",
                               bond->dev->name, NIPQUAD(newtarget));
@@ -727,7 +727,7 @@ static ssize_t bonding_store_arp_targets(struct device *d,
 
        }
        else if (buf[0] == '-') {
-               if ((newtarget == 0) || (newtarget == INADDR_BROADCAST)) {
+               if ((newtarget == 0) || (newtarget == htonl(INADDR_BROADCAST))) {
                        printk(KERN_ERR DRV_NAME
                               ": %s: invalid ARP target %d.%d.%d.%d specified for removal\n",
                               bond->dev->name, NIPQUAD(newtarget));
index 6dcbd25..2a6af7d 100644 (file)
@@ -132,7 +132,7 @@ struct bond_params {
        int downdelay;
        int lacp_fast;
        char primary[IFNAMSIZ];
-       u32 arp_targets[BOND_MAX_ARP_TARGETS];
+       __be32 arp_targets[BOND_MAX_ARP_TARGETS];
 };
 
 struct bond_parm_tbl {
@@ -142,7 +142,7 @@ struct bond_parm_tbl {
 
 struct vlan_entry {
        struct list_head vlan_list;
-       u32 vlan_ip;
+       __be32 vlan_ip;
        unsigned short vlan_id;
 };
 
@@ -193,7 +193,7 @@ struct bonding {
        struct   list_head bond_list;
        struct   dev_mc_list *mc_list;
        int      (*xmit_hash_policy)(struct sk_buff *, struct net_device *, int);
-       u32      master_ip;
+       __be32   master_ip;
        u16      flags;
        struct   ad_bond_info ad_info;
        struct   alb_bond_info alb_info;