提交 d3bb52b0 编写于 作者: A Al Viro 提交者: David S. Miller

endianness annotations drivers/net/bonding/

Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
Signed-off-by: NJeff Garzik <jeff@garzik.org>
上级 dd96df2c
...@@ -101,7 +101,6 @@ static u16 __get_link_speed(struct port *port); ...@@ -101,7 +101,6 @@ static u16 __get_link_speed(struct port *port);
static u8 __get_duplex(struct port *port); static u8 __get_duplex(struct port *port);
static inline void __initialize_port_locks(struct port *port); static inline void __initialize_port_locks(struct port *port);
//conversions //conversions
static void __htons_lacpdu(struct lacpdu *lacpdu);
static u16 __ad_timer_to_ticks(u16 timer_type, u16 Par); static u16 __ad_timer_to_ticks(u16 timer_type, u16 Par);
...@@ -420,26 +419,6 @@ static inline void __initialize_port_locks(struct port *port) ...@@ -420,26 +419,6 @@ static inline void __initialize_port_locks(struct port *port)
} }
//conversions //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 * __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) ...@@ -827,11 +806,11 @@ static inline void __update_lacpdu_from_port(struct port *port)
* lacpdu->actor_information_length initialized * 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_system = port->actor_system;
lacpdu->actor_key = port->actor_oper_port_key; lacpdu->actor_key = htons(port->actor_oper_port_key);
lacpdu->actor_port_priority = port->actor_port_priority; lacpdu->actor_port_priority = htons(port->actor_port_priority);
lacpdu->actor_port = port->actor_port_number; lacpdu->actor_port = htons(port->actor_port_number);
lacpdu->actor_state = port->actor_oper_port_state; lacpdu->actor_state = port->actor_oper_port_state;
/* lacpdu->reserved_3_1 initialized /* lacpdu->reserved_3_1 initialized
...@@ -839,11 +818,11 @@ static inline void __update_lacpdu_from_port(struct port *port) ...@@ -839,11 +818,11 @@ static inline void __update_lacpdu_from_port(struct port *port)
* lacpdu->partner_information_length initialized * 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_system = port->partner_oper_system;
lacpdu->partner_key = port->partner_oper_key; lacpdu->partner_key = htons(port->partner_oper_key);
lacpdu->partner_port_priority = port->partner_oper_port_priority; lacpdu->partner_port_priority = htons(port->partner_oper_port_priority);
lacpdu->partner_port = port->partner_oper_port_number; lacpdu->partner_port = htons(port->partner_oper_port_number);
lacpdu->partner_state = port->partner_oper_port_state; lacpdu->partner_state = port->partner_oper_port_state;
/* lacpdu->reserved_3_2 initialized /* lacpdu->reserved_3_2 initialized
...@@ -855,9 +834,6 @@ static inline void __update_lacpdu_from_port(struct port *port) ...@@ -855,9 +834,6 @@ static inline void __update_lacpdu_from_port(struct port *port)
* terminator_length initialized * terminator_length initialized
* reserved_50[50] 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) ...@@ -1834,7 +1810,7 @@ static void ad_initialize_lacpdu(struct lacpdu *lacpdu)
} }
lacpdu->tlv_type_collector_info = 0x03; lacpdu->tlv_type_collector_info = 0x03;
lacpdu->collector_information_length= 0x10; 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++) { for (index=0; index<=11; index++) {
lacpdu->reserved_12[index]=0; lacpdu->reserved_12[index]=0;
} }
......
...@@ -108,7 +108,7 @@ typedef enum { ...@@ -108,7 +108,7 @@ typedef enum {
typedef struct ad_header { typedef struct ad_header {
struct mac_addr destination_address; struct mac_addr destination_address;
struct mac_addr source_address; struct mac_addr source_address;
u16 length_type; __be16 length_type;
} ad_header_t; } ad_header_t;
// Link Aggregation Control Protocol(LACP) data unit structure(43.4.2.2 in the 802.3ad standard) // Link Aggregation Control Protocol(LACP) data unit structure(43.4.2.2 in the 802.3ad standard)
...@@ -117,25 +117,25 @@ typedef struct lacpdu { ...@@ -117,25 +117,25 @@ typedef struct lacpdu {
u8 version_number; u8 version_number;
u8 tlv_type_actor_info; // = actor information(type/length/value) u8 tlv_type_actor_info; // = actor information(type/length/value)
u8 actor_information_length; // = 20 u8 actor_information_length; // = 20
u16 actor_system_priority; __be16 actor_system_priority;
struct mac_addr actor_system; struct mac_addr actor_system;
u16 actor_key; __be16 actor_key;
u16 actor_port_priority; __be16 actor_port_priority;
u16 actor_port; __be16 actor_port;
u8 actor_state; u8 actor_state;
u8 reserved_3_1[3]; // = 0 u8 reserved_3_1[3]; // = 0
u8 tlv_type_partner_info; // = partner information u8 tlv_type_partner_info; // = partner information
u8 partner_information_length; // = 20 u8 partner_information_length; // = 20
u16 partner_system_priority; __be16 partner_system_priority;
struct mac_addr partner_system; struct mac_addr partner_system;
u16 partner_key; __be16 partner_key;
u16 partner_port_priority; __be16 partner_port_priority;
u16 partner_port; __be16 partner_port;
u8 partner_state; u8 partner_state;
u8 reserved_3_2[3]; // = 0 u8 reserved_3_2[3]; // = 0
u8 tlv_type_collector_info; // = collector information u8 tlv_type_collector_info; // = collector information
u8 collector_information_length; // = 16 u8 collector_information_length; // = 16
u16 collector_max_delay; __be16 collector_max_delay;
u8 reserved_12[12]; u8 reserved_12[12];
u8 tlv_type_terminator; // = terminator u8 tlv_type_terminator; // = terminator
u8 terminator_length; // = 0 u8 terminator_length; // = 0
......
...@@ -87,20 +87,20 @@ static const int alb_delta_in_ticks = HZ / ALB_TIMER_TICKS_PER_SEC; ...@@ -87,20 +87,20 @@ static const int alb_delta_in_ticks = HZ / ALB_TIMER_TICKS_PER_SEC;
struct learning_pkt { struct learning_pkt {
u8 mac_dst[ETH_ALEN]; u8 mac_dst[ETH_ALEN];
u8 mac_src[ETH_ALEN]; u8 mac_src[ETH_ALEN];
u16 type; __be16 type;
u8 padding[ETH_ZLEN - ETH_HLEN]; u8 padding[ETH_ZLEN - ETH_HLEN];
}; };
struct arp_pkt { struct arp_pkt {
u16 hw_addr_space; __be16 hw_addr_space;
u16 prot_addr_space; __be16 prot_addr_space;
u8 hw_addr_len; u8 hw_addr_len;
u8 prot_addr_len; u8 prot_addr_len;
u16 op_code; __be16 op_code;
u8 mac_src[ETH_ALEN]; /* sender hardware address */ 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 */ u8 mac_dst[ETH_ALEN]; /* target hardware address */
u32 ip_dst; /* target IP address */ __be32 ip_dst; /* target IP address */
}; };
#pragma pack() #pragma pack()
...@@ -582,7 +582,7 @@ static void rlb_req_update_slave_clients(struct bonding *bond, struct slave *sla ...@@ -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 */ /* 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 alb_bond_info *bond_info = &(BOND_ALB_INFO(bond));
struct rlb_client_info *client_info; struct rlb_client_info *client_info;
...@@ -1267,7 +1267,7 @@ int bond_alb_xmit(struct sk_buff *skb, struct net_device *bond_dev) ...@@ -1267,7 +1267,7 @@ int bond_alb_xmit(struct sk_buff *skb, struct net_device *bond_dev)
struct ethhdr *eth_data; struct ethhdr *eth_data;
struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond)); struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond));
struct slave *tx_slave = NULL; struct slave *tx_slave = NULL;
static const u32 ip_bcast = 0xffffffff; static const __be32 ip_bcast = htonl(0xffffffff);
int hash_size = 0; int hash_size = 0;
int do_tx_balance = 1; int do_tx_balance = 1;
u32 hash_index = 0; u32 hash_index = 0;
...@@ -1311,8 +1311,7 @@ int bond_alb_xmit(struct sk_buff *skb, struct net_device *bond_dev) ...@@ -1311,8 +1311,7 @@ int bond_alb_xmit(struct sk_buff *skb, struct net_device *bond_dev)
hash_size = sizeof(ipv6_hdr(skb)->daddr); hash_size = sizeof(ipv6_hdr(skb)->daddr);
break; break;
case ETH_P_IPX: case ETH_P_IPX:
if (ipx_hdr(skb)->ipx_checksum != if (ipx_hdr(skb)->ipx_checksum != IPX_NO_CHECKSUM) {
__constant_htons(IPX_NO_CHECKSUM)) {
/* something is wrong with this packet */ /* something is wrong with this packet */
do_tx_balance = 0; do_tx_balance = 0;
break; break;
......
...@@ -60,8 +60,8 @@ struct tlb_client_info { ...@@ -60,8 +60,8 @@ struct tlb_client_info {
* ------------------------------------------------------------------------- * -------------------------------------------------------------------------
*/ */
struct rlb_client_info { struct rlb_client_info {
u32 ip_src; /* the server IP address */ __be32 ip_src; /* the server IP address */
u32 ip_dst; /* the client IP address */ __be32 ip_dst; /* the client IP address */
u8 mac_dst[ETH_ALEN]; /* the client MAC address */ u8 mac_dst[ETH_ALEN]; /* the client MAC address */
u32 next; /* The next Hash table entry index */ u32 next; /* The next Hash table entry index */
u32 prev; /* The previous Hash table entry index */ u32 prev; /* The previous Hash table entry index */
......
...@@ -144,7 +144,7 @@ static struct proc_dir_entry *bond_proc_dir = NULL; ...@@ -144,7 +144,7 @@ static struct proc_dir_entry *bond_proc_dir = NULL;
#endif #endif
extern struct rw_semaphore bonding_rwsem; 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 arp_ip_count = 0;
static int bond_mode = BOND_MODE_ROUNDROBIN; static int bond_mode = BOND_MODE_ROUNDROBIN;
static int xmit_hashtype= BOND_XMIT_POLICY_LAYER2; static int xmit_hashtype= BOND_XMIT_POLICY_LAYER2;
...@@ -2226,7 +2226,7 @@ void bond_mii_monitor(struct net_device *bond_dev) ...@@ -2226,7 +2226,7 @@ void bond_mii_monitor(struct net_device *bond_dev)
} }
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_device *idev;
struct in_ifaddr *ifa; struct in_ifaddr *ifa;
...@@ -2269,7 +2269,7 @@ static int bond_has_ip(struct bonding *bond) ...@@ -2269,7 +2269,7 @@ static int bond_has_ip(struct bonding *bond)
return 0; 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; struct vlan_entry *vlan, *vlan_next;
...@@ -2293,7 +2293,7 @@ static int bond_has_this_ip(struct bonding *bond, u32 ip) ...@@ -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 * switches in VLAN mode (especially if ports are configured as
* "native" to a VLAN) might not pass non-tagged frames. * "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; struct sk_buff *skb;
...@@ -2321,7 +2321,7 @@ static void bond_arp_send(struct net_device *slave_dev, int arp_op, u32 dest_ip, ...@@ -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) static void bond_arp_send_all(struct bonding *bond, struct slave *slave)
{ {
int i, vlan_id, rv; int i, vlan_id, rv;
u32 *targets = bond->params.arp_targets; __be32 *targets = bond->params.arp_targets;
struct vlan_entry *vlan, *vlan_next; struct vlan_entry *vlan, *vlan_next;
struct net_device *vlan_dev; struct net_device *vlan_dev;
struct flowi fl; struct flowi fl;
...@@ -2426,10 +2426,10 @@ static void bond_send_gratuitous_arp(struct bonding *bond) ...@@ -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; int i;
u32 *targets = bond->params.arp_targets; __be32 *targets = bond->params.arp_targets;
targets = bond->params.arp_targets; targets = bond->params.arp_targets;
for (i = 0; (i < BOND_MAX_ARP_TARGETS) && targets[i]; i++) { 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 ...@@ -2451,7 +2451,7 @@ static int bond_arp_rcv(struct sk_buff *skb, struct net_device *dev, struct pack
struct slave *slave; struct slave *slave;
struct bonding *bond; struct bonding *bond;
unsigned char *arp_ptr; unsigned char *arp_ptr;
u32 sip, tip; __be32 sip, tip;
if (dev->nd_net != &init_net) if (dev->nd_net != &init_net)
goto out; goto out;
...@@ -3427,14 +3427,14 @@ static int bond_xmit_hash_policy_l34(struct sk_buff *skb, ...@@ -3427,14 +3427,14 @@ static int bond_xmit_hash_policy_l34(struct sk_buff *skb,
{ {
struct ethhdr *data = (struct ethhdr *)skb->data; struct ethhdr *data = (struct ethhdr *)skb->data;
struct iphdr *iph = ip_hdr(skb); struct iphdr *iph = ip_hdr(skb);
u16 *layer4hdr = (u16 *)((u32 *)iph + iph->ihl); __be16 *layer4hdr = (__be16 *)((u32 *)iph + iph->ihl);
int layer4_xor = 0; int layer4_xor = 0;
if (skb->protocol == __constant_htons(ETH_P_IP)) { if (skb->protocol == __constant_htons(ETH_P_IP)) {
if (!(iph->frag_off & __constant_htons(IP_MF|IP_OFFSET)) && if (!(iph->frag_off & __constant_htons(IP_MF|IP_OFFSET)) &&
(iph->protocol == IPPROTO_TCP || (iph->protocol == IPPROTO_TCP ||
iph->protocol == IPPROTO_UDP)) { iph->protocol == IPPROTO_UDP)) {
layer4_xor = htons((*layer4hdr ^ *(layer4hdr + 1))); layer4_xor = ntohs((*layer4hdr ^ *(layer4hdr + 1)));
} }
return (layer4_xor ^ return (layer4_xor ^
((ntohl(iph->saddr ^ iph->daddr)) & 0xffff)) % count; ((ntohl(iph->saddr ^ iph->daddr)) & 0xffff)) % count;
...@@ -4521,7 +4521,7 @@ static int bond_check_params(struct bond_params *params) ...@@ -4521,7 +4521,7 @@ static int bond_check_params(struct bond_params *params)
arp_ip_target[arp_ip_count]); arp_ip_target[arp_ip_count]);
arp_interval = 0; arp_interval = 0;
} else { } 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; arp_target[arp_ip_count] = ip;
} }
} }
......
...@@ -682,16 +682,16 @@ static ssize_t bonding_store_arp_targets(struct device *d, ...@@ -682,16 +682,16 @@ static ssize_t bonding_store_arp_targets(struct device *d,
struct device_attribute *attr, struct device_attribute *attr,
const char *buf, size_t count) const char *buf, size_t count)
{ {
u32 newtarget; __be32 newtarget;
int i = 0, done = 0, ret = count; int i = 0, done = 0, ret = count;
struct bonding *bond = to_bond(d); struct bonding *bond = to_bond(d);
u32 *targets; __be32 *targets;
targets = bond->params.arp_targets; targets = bond->params.arp_targets;
newtarget = in_aton(buf + 1); newtarget = in_aton(buf + 1);
/* look for adds */ /* look for adds */
if (buf[0] == '+') { if (buf[0] == '+') {
if ((newtarget == 0) || (newtarget == INADDR_BROADCAST)) { if ((newtarget == 0) || (newtarget == htonl(INADDR_BROADCAST))) {
printk(KERN_ERR DRV_NAME printk(KERN_ERR DRV_NAME
": %s: invalid ARP target %u.%u.%u.%u specified for addition\n", ": %s: invalid ARP target %u.%u.%u.%u specified for addition\n",
bond->dev->name, NIPQUAD(newtarget)); bond->dev->name, NIPQUAD(newtarget));
...@@ -727,7 +727,7 @@ static ssize_t bonding_store_arp_targets(struct device *d, ...@@ -727,7 +727,7 @@ static ssize_t bonding_store_arp_targets(struct device *d,
} }
else if (buf[0] == '-') { else if (buf[0] == '-') {
if ((newtarget == 0) || (newtarget == INADDR_BROADCAST)) { if ((newtarget == 0) || (newtarget == htonl(INADDR_BROADCAST))) {
printk(KERN_ERR DRV_NAME printk(KERN_ERR DRV_NAME
": %s: invalid ARP target %d.%d.%d.%d specified for removal\n", ": %s: invalid ARP target %d.%d.%d.%d specified for removal\n",
bond->dev->name, NIPQUAD(newtarget)); bond->dev->name, NIPQUAD(newtarget));
......
...@@ -132,7 +132,7 @@ struct bond_params { ...@@ -132,7 +132,7 @@ struct bond_params {
int downdelay; int downdelay;
int lacp_fast; int lacp_fast;
char primary[IFNAMSIZ]; char primary[IFNAMSIZ];
u32 arp_targets[BOND_MAX_ARP_TARGETS]; __be32 arp_targets[BOND_MAX_ARP_TARGETS];
}; };
struct bond_parm_tbl { struct bond_parm_tbl {
...@@ -142,7 +142,7 @@ struct bond_parm_tbl { ...@@ -142,7 +142,7 @@ struct bond_parm_tbl {
struct vlan_entry { struct vlan_entry {
struct list_head vlan_list; struct list_head vlan_list;
u32 vlan_ip; __be32 vlan_ip;
unsigned short vlan_id; unsigned short vlan_id;
}; };
...@@ -193,7 +193,7 @@ struct bonding { ...@@ -193,7 +193,7 @@ struct bonding {
struct list_head bond_list; struct list_head bond_list;
struct dev_mc_list *mc_list; struct dev_mc_list *mc_list;
int (*xmit_hash_policy)(struct sk_buff *, struct net_device *, int); int (*xmit_hash_policy)(struct sk_buff *, struct net_device *, int);
u32 master_ip; __be32 master_ip;
u16 flags; u16 flags;
struct ad_bond_info ad_info; struct ad_bond_info ad_info;
struct alb_bond_info alb_info; struct alb_bond_info alb_info;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册