diff --git a/tests/test_bridge.c b/tests/test_bridge.c
index 923ee82..a37fbd0 100644
--- a/tests/test_bridge.c
+++ b/tests/test_bridge.c
@@ -11,22 +11,22 @@
 #include "test-utils.h"
 
 struct mctp_binding_bridge {
-	struct mctp_binding	binding;
-	int			rx_count;
-	int			tx_count;
-	uint8_t			last_pkt_data;
+	struct mctp_binding binding;
+	int rx_count;
+	int tx_count;
+	uint8_t last_pkt_data;
 };
 
 struct test_ctx {
-	struct mctp			*mctp;
-	struct mctp_binding_bridge	*bindings[2];
+	struct mctp *mctp;
+	struct mctp_binding_bridge *bindings[2];
 };
 
 static int mctp_binding_bridge_tx(struct mctp_binding *b,
-		struct mctp_pktbuf *pkt)
+				  struct mctp_pktbuf *pkt)
 {
-	struct mctp_binding_bridge *binding = container_of(b,
-			struct mctp_binding_bridge, binding);
+	struct mctp_binding_bridge *binding =
+		container_of(b, struct mctp_binding_bridge, binding);
 
 	binding->tx_count++;
 	assert(mctp_pktbuf_size(pkt) == sizeof(struct mctp_hdr) + 1);
@@ -36,14 +36,13 @@
 }
 
 static void mctp_binding_bridge_rx(struct mctp_binding_bridge *binding,
-		uint8_t key)
+				   uint8_t key)
 {
 	struct mctp_pktbuf *pkt;
 	struct mctp_hdr *hdr;
 	uint8_t *buf;
 
-	pkt = mctp_pktbuf_alloc(&binding->binding,
-			sizeof(struct mctp_hdr) + 1);
+	pkt = mctp_pktbuf_alloc(&binding->binding, sizeof(struct mctp_hdr) + 1);
 	assert(pkt);
 
 	hdr = mctp_pktbuf_hdr(pkt);
@@ -83,9 +82,8 @@
 	ctx->bindings[0] = mctp_binding_bridge_init();
 	ctx->bindings[1] = mctp_binding_bridge_init();
 
-	mctp_bridge_busses(ctx->mctp,
-			&ctx->bindings[0]->binding,
-			&ctx->bindings[1]->binding);
+	mctp_bridge_busses(ctx->mctp, &ctx->bindings[0]->binding,
+			   &ctx->bindings[1]->binding);
 
 	mctp_binding_set_tx_enabled(&ctx->bindings[0]->binding, true);
 	mctp_binding_set_tx_enabled(&ctx->bindings[1]->binding, true);
diff --git a/tests/test_eid.c b/tests/test_eid.c
index 5c089ad..2fbbd5a 100644
--- a/tests/test_eid.c
+++ b/tests/test_eid.c
@@ -10,15 +10,15 @@
 #include "test-utils.h"
 
 struct test_ctx {
-	struct mctp			*mctp;
-	struct mctp_binding_test	*binding;
-	int				rx_count;
-	mctp_eid_t			src_eid;
+	struct mctp *mctp;
+	struct mctp_binding_test *binding;
+	int rx_count;
+	mctp_eid_t src_eid;
 };
 
-static void
-test_rx(uint8_t eid, bool tag_owner __unused, uint8_t msg_tag __unused,
-	void *data, void *msg __unused, size_t len __unused)
+static void test_rx(uint8_t eid, bool tag_owner __unused,
+		    uint8_t msg_tag __unused, void *data, void *msg __unused,
+		    size_t len __unused)
 {
 	struct test_ctx *ctx = data;
 
@@ -29,8 +29,7 @@
 	ctx->src_eid = eid;
 }
 
-static void create_packet(struct mctp_hdr *pkt,
-		mctp_eid_t src, mctp_eid_t dest)
+static void create_packet(struct mctp_hdr *pkt, mctp_eid_t src, mctp_eid_t dest)
 {
 	memset(pkt, 0, sizeof(*pkt));
 	pkt->src = src;
@@ -45,8 +44,8 @@
 	const mctp_eid_t remote_eid = 9;
 	const mctp_eid_t other_eid = 10;
 	struct {
-		struct mctp_hdr	hdr;
-		uint8_t		payload[1];
+		struct mctp_hdr hdr;
+		uint8_t payload[1];
 	} pktbuf;
 
 	mctp_test_stack_init(&ctx->mctp, &ctx->binding, local_eid);
diff --git a/tests/test_seq.c b/tests/test_seq.c
index e128457..22242ba 100644
--- a/tests/test_seq.c
+++ b/tests/test_seq.c
@@ -14,16 +14,15 @@
 #endif
 
 struct test_ctx {
-	struct mctp			*mctp;
-	struct mctp_binding_test	*binding;
-	int				rx_count;
-	uint8_t				rx_data[4];
-	size_t				rx_len;
+	struct mctp *mctp;
+	struct mctp_binding_test *binding;
+	int rx_count;
+	uint8_t rx_data[4];
+	size_t rx_len;
 };
 
-static void
-test_rx(uint8_t eid __unused, bool tag_owner __unused,
-	uint8_t msg_tag __unused, void *data, void *msg, size_t len)
+static void test_rx(uint8_t eid __unused, bool tag_owner __unused,
+		    uint8_t msg_tag __unused, void *data, void *msg, size_t len)
 {
 	struct test_ctx *ctx = data;
 
@@ -40,10 +39,10 @@
 #define SEQ(x) (x << MCTP_HDR_SEQ_SHIFT)
 
 struct test {
-	int		n_packets;
-	uint8_t		flags_seq_tags[4];
-	int		exp_rx_count;
-	size_t		exp_rx_len;
+	int n_packets;
+	uint8_t flags_seq_tags[4];
+	int exp_rx_count;
+	size_t exp_rx_len;
 } tests[] = {
 	{
 		/* single packet */
@@ -102,8 +101,8 @@
 	const mctp_eid_t local_eid = 8;
 	const mctp_eid_t remote_eid = 9;
 	struct {
-		struct mctp_hdr	hdr;
-		uint8_t		payload[1];
+		struct mctp_hdr hdr;
+		uint8_t payload[1];
 	} pktbuf;
 	int i;
 
@@ -121,8 +120,7 @@
 		pktbuf.hdr.flags_seq_tag = test->flags_seq_tags[i];
 		pktbuf.payload[0] = i;
 
-		mctp_binding_test_rx_raw(ctx->binding,
-				&pktbuf, sizeof(pktbuf));
+		mctp_binding_test_rx_raw(ctx->binding, &pktbuf, sizeof(pktbuf));
 	}
 
 	assert(ctx->rx_count == test->exp_rx_count);
@@ -136,7 +134,6 @@
 	mctp_destroy(ctx->mctp);
 }
 
-
 int main(void)
 {
 	struct test_ctx ctx;
