Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d3bb52b0 authored by Al Viro's avatar Al Viro Committed by David S. Miller
Browse files

endianness annotations drivers/net/bonding/



Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent dd96df2c
Loading
Loading
Loading
Loading
+9 −33
Original line number Diff line number Diff line
@@ -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;
	}
+10 −10
Original line number Diff line number Diff line
@@ -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
+9 −10
Original line number Diff line number Diff line
@@ -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;
+2 −2
Original line number Diff line number Diff line
@@ -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 */
+11 −11
Original line number Diff line number Diff line
@@ -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 @@ 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_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;
		}
	}
Loading