Commit 784dcfa5 authored by Mark Gray's avatar Mark Gray Committed by David S. Miller
Browse files

openvswitch: fix alignment issues

parent e4252cb6
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -89,8 +89,8 @@ enum ovs_datapath_attr {
	OVS_DP_ATTR_USER_FEATURES,	/* OVS_DP_F_*  */
	OVS_DP_ATTR_PAD,
	OVS_DP_ATTR_MASKS_CACHE_SIZE,
	OVS_DP_ATTR_PER_CPU_PIDS,   /* Netlink PIDS to receive upcalls in per-cpu
				     * dispatch mode
	OVS_DP_ATTR_PER_CPU_PIDS,   /* Netlink PIDS to receive upcalls in
				     * per-cpu dispatch mode
				     */
	__OVS_DP_ATTR_MAX
};
+4 −2
Original line number Diff line number Diff line
@@ -924,9 +924,11 @@ static int output_userspace(struct datapath *dp, struct sk_buff *skb,
			break;

		case OVS_USERSPACE_ATTR_PID:
			if (dp->user_features & OVS_DP_F_DISPATCH_UPCALL_PER_CPU)
			if (dp->user_features &
			    OVS_DP_F_DISPATCH_UPCALL_PER_CPU)
				upcall.portid =
				   ovs_dp_get_upcall_portid(dp, smp_processor_id());
				  ovs_dp_get_upcall_portid(dp,
							   smp_processor_id());
			else
				upcall.portid = nla_get_u32(a);
			break;
+10 −6
Original line number Diff line number Diff line
@@ -244,7 +244,8 @@ void ovs_dp_process_packet(struct sk_buff *skb, struct sw_flow_key *key)
		upcall.cmd = OVS_PACKET_CMD_MISS;

		if (dp->user_features & OVS_DP_F_DISPATCH_UPCALL_PER_CPU)
			upcall.portid = ovs_dp_get_upcall_portid(dp, smp_processor_id());
			upcall.portid =
			    ovs_dp_get_upcall_portid(dp, smp_processor_id());
		else
			upcall.portid = ovs_vport_find_upcall_portid(p, skb);

@@ -1636,13 +1637,16 @@ u32 ovs_dp_get_upcall_portid(const struct datapath *dp, uint32_t cpu_id)
	if (dp_nlsk_pids) {
		if (cpu_id < dp_nlsk_pids->n_pids) {
			return dp_nlsk_pids->pids[cpu_id];
		} else if (dp_nlsk_pids->n_pids > 0 && cpu_id >= dp_nlsk_pids->n_pids) {
			/* If the number of netlink PIDs is mismatched with the number of
			 * CPUs as seen by the kernel, log this and send the upcall to an
			 * arbitrary socket (0) in order to not drop packets
		} else if (dp_nlsk_pids->n_pids > 0 &&
			   cpu_id >= dp_nlsk_pids->n_pids) {
			/* If the number of netlink PIDs is mismatched with
			 * the number of CPUs as seen by the kernel, log this
			 * and send the upcall to an arbitrary socket (0) in
			 * order to not drop packets
			 */
			pr_info_ratelimited("cpu_id mismatch with handler threads");
			return dp_nlsk_pids->pids[cpu_id % dp_nlsk_pids->n_pids];
			return dp_nlsk_pids->pids[cpu_id %
						  dp_nlsk_pids->n_pids];
		} else {
			return 0;
		}