diff --git a/include/mISDNif.h b/include/mISDNif.h
index 8e065d2..c8588cd 100644
--- a/include/mISDNif.h
+++ b/include/mISDNif.h
@@ -46,7 +46,7 @@
 #define MISDN_RELEASE		20
 
 /* primitives for information exchange
- * generell format
+ * general format
  * <16  bit  0 >
  * <8  bit command>
  *    BIT 8 = 1 LAYER private
@@ -65,7 +65,7 @@
 #define MISDN_CMDMASK		0xff00
 #define MISDN_LAYERMASK		0x00ff
 
-/* generell commands */
+/* general commands */
 #define OPEN_CHANNEL		0x0100
 #define CLOSE_CHANNEL		0x0200
 #define CONTROL_CHANNEL		0x0300
@@ -110,7 +110,7 @@
 #define DL_UNITDATA_IND		0x3108
 #define DL_INFORMATION_IND	0x0008
 
-/* intern layer 2 managment */
+/* intern layer 2 management */
 #define MDL_ASSIGN_REQ		0x1804
 #define MDL_ASSIGN_IND		0x1904
 #define MDL_REMOVE_REQ		0x1A04
diff --git a/include/osmocom/bsc/a_reset.h b/include/osmocom/bsc/a_reset.h
index a09972e..46a392f 100644
--- a/include/osmocom/bsc/a_reset.h
+++ b/include/osmocom/bsc/a_reset.h
@@ -25,7 +25,7 @@
 /* Create and start state machine which handles the reset/reset-ack procedure */
 void a_reset_alloc(struct bsc_msc_data *msc, const char *name, void *cb);
 
-/* Confirm that we sucessfully received a reset acknowlege message */
+/* Confirm that we successfully received a reset acknowledge message */
 void a_reset_ack_confirm(struct bsc_msc_data *msc);
 
 /* Report a failed connection */
diff --git a/include/osmocom/bsc/abis_rsl.h b/include/osmocom/bsc/abis_rsl.h
index 4ccfd14..f7db779 100644
--- a/include/osmocom/bsc/abis_rsl.h
+++ b/include/osmocom/bsc/abis_rsl.h
@@ -60,7 +60,7 @@
 /* Siemens vendor-specific RSL extensions */
 int rsl_siemens_mrpci(struct gsm_lchan *lchan, struct rsl_mrpci *mrpci);
 
-/* ip.access specfic RSL extensions */
+/* ip.access specific RSL extensions */
 struct msgb *rsl_make_ipacc_mdcx(const struct gsm_lchan *lchan, uint32_t dest_ip, uint16_t dest_port);
 int rsl_tx_ipacc_crcx(const struct gsm_lchan *lchan);
 int rsl_tx_ipacc_mdcx(const struct gsm_lchan *lchan);
diff --git a/include/osmocom/bsc/acc_ramp.h b/include/osmocom/bsc/acc_ramp.h
index efb12b0..31fc74f 100644
--- a/include/osmocom/bsc/acc_ramp.h
+++ b/include/osmocom/bsc/acc_ramp.h
@@ -71,7 +71,7 @@
 	/*!
 	 * Ramping step interval in seconds.
 	 * This value depends on the current BTS channel load average, unless
-	 * it has been overriden by VTY configuration.
+	 * it has been overridden by VTY configuration.
 	 */
 	unsigned int step_interval_sec;
 	bool step_interval_is_fixed;
diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h
index 23aacd6..fe626b1 100644
--- a/include/osmocom/bsc/gsm_data.h
+++ b/include/osmocom/bsc/gsm_data.h
@@ -273,7 +273,7 @@
 		/* for advanced ping/pong */
 		int send_ping;
 
-		/* SCCP connection realted */
+		/* SCCP connection related */
 		struct bsc_msc_data *msc;
 
 		/* Sigtran connection ID */
@@ -1010,7 +1010,7 @@
 	/* Geographical location of the BTS */
 	struct llist_head loc_list;
 
-	/* number of ths BTS in network */
+	/* number of this BTS in network */
 	uint8_t nr;
 	/* human readable name / description */
 	char *description;
@@ -1084,7 +1084,7 @@
 	 * receival of empty SI disabling unsupported SI. see OS#3707. */
 	bool si_unused_send_empty;
 
-	/* ip.accesss Unit ID's have Site/BTS/TRX layout */
+	/* ip.access Unit ID's have Site/BTS/TRX layout */
 	union {
 		struct {
 			uint16_t site_id;
@@ -1251,7 +1251,7 @@
 	struct llist_head local_neighbors;
 
 	/* BTS-specific overrides for timer values from struct gsm_network. */
-	uint8_t T3122;	/* ASSIGMENT REJECT wait indication */
+	uint8_t T3122;	/* ASSIGNMENT REJECT wait indication */
 	bool T3113_dynamic; /* Calculate T3113 timeout dynamically based on BTS channel config and load */
 
 	/* Periodic channel load measurements are used to maintain T3122. */
@@ -1411,7 +1411,7 @@
 	[BTS_CTR_CODEC_V1_HR] =			{"codec:hr", "Count the usage of HR codec by channel mode requested."},
 
 	[BTS_CTR_PAGING_ATTEMPTED] = 		{"paging:attempted", "Paging attempts for a subscriber."},
-	[BTS_CTR_PAGING_ALREADY] = 		{"paging:already", "Paging attempts ignored as subsciber was already being paged."},
+	[BTS_CTR_PAGING_ALREADY] = 		{"paging:already", "Paging attempts ignored as subscriber was already being paged."},
 	[BTS_CTR_PAGING_RESPONDED] = 		{"paging:responded", "Paging attempts with successful paging response."},
 	[BTS_CTR_PAGING_EXPIRED] = 		{"paging:expired", "Paging Request expired because of timeout T3113."},
 	[BTS_CTR_CHAN_ACT_TOTAL] =		{"chan_act:total", "Total number of Channel Activations."},
@@ -1476,7 +1476,7 @@
 	[BSC_CTR_ASSIGNMENT_NO_CHANNEL] = 	{"assignment:no_channel", "Failure to allocate lchan for Assignment."},
 	[BSC_CTR_ASSIGNMENT_TIMEOUT] = 		{"assignment:timeout", "Assignment timed out."},
 	[BSC_CTR_ASSIGNMENT_FAILED] = 		{"assignment:failed", "Received Assignment Failure message."},
-	[BSC_CTR_ASSIGNMENT_ERROR] = 		{"assignment:error", "Assigment failed for other reason."},
+	[BSC_CTR_ASSIGNMENT_ERROR] = 		{"assignment:error", "Assignment failed for other reason."},
 
 	[BSC_CTR_HANDOVER_ATTEMPTED] = 		{"handover:attempted", "Intra-BSC handover attempts."},
 	[BSC_CTR_HANDOVER_COMPLETED] = 		{"handover:completed", "Intra-BSC handover completed."},
@@ -1484,7 +1484,7 @@
 	[BSC_CTR_HANDOVER_NO_CHANNEL] = 	{"handover:no_channel", "Failure to allocate lchan for HO."},
 	[BSC_CTR_HANDOVER_TIMEOUT] = 		{"handover:timeout", "Handover timed out."},
 	[BSC_CTR_HANDOVER_FAILED] = 		{"handover:failed", "Received Handover Fail messages."},
-	[BSC_CTR_HANDOVER_ERROR] = 		{"handover:error", "Re-assigment failed for other reason."},
+	[BSC_CTR_HANDOVER_ERROR] = 		{"handover:error", "Re-assignment failed for other reason."},
 
 	[BSC_CTR_INTER_BSC_HO_OUT_ATTEMPTED] =	{"interbsc_ho_out:attempted",
 						 "Attempts to handover to remote BSS."},
@@ -1630,7 +1630,7 @@
 
 extern void *tall_bsc_ctx;
 
-/* this actaully refers to the IPA transport, not the BTS model */
+/* this actually refers to the IPA transport, not the BTS model */
 static inline int is_ipaccess_bts(struct gsm_bts *bts)
 {
 	switch (bts->type) {
diff --git a/include/osmocom/bsc/meas_feed.h b/include/osmocom/bsc/meas_feed.h
index 1849a89..353278e 100644
--- a/include/osmocom/bsc/meas_feed.h
+++ b/include/osmocom/bsc/meas_feed.h
@@ -20,7 +20,7 @@
 	uint8_t lchan_type;
 	/* The physical channel type, enum gsm_phys_chan_config */
 	uint8_t pchan_type;
-	/* number of ths BTS in network */
+	/* number of this BTS in network */
 	uint8_t bts_nr;
 	/* number of this TRX in the BTS */
 	uint8_t trx_nr;
diff --git a/include/osmocom/bsc/osmo_bsc_reset.h b/include/osmocom/bsc/osmo_bsc_reset.h
index 578f763..fb66df0 100644
--- a/include/osmocom/bsc/osmo_bsc_reset.h
+++ b/include/osmocom/bsc/osmo_bsc_reset.h
@@ -21,7 +21,7 @@
 /* Create and start state machine which handles the reset/reset-ack procedure */
 void start_reset_fsm(struct bsc_msc_data *msc);
 
-/* Confirm that we sucessfully received a reset acknowlege message */
+/* Confirm that we successfully received a reset acknowledge message */
 void reset_ack_confirm(struct bsc_msc_data *msc);
 
 /* Report a failed connection */
diff --git a/include/osmocom/bsc/osmo_bsc_sigtran.h b/include/osmocom/bsc/osmo_bsc_sigtran.h
index b934d51..dc86fad 100644
--- a/include/osmocom/bsc/osmo_bsc_sigtran.h
+++ b/include/osmocom/bsc/osmo_bsc_sigtran.h
@@ -33,7 +33,7 @@
 /* Send data to MSC */
 int osmo_bsc_sigtran_send(struct gsm_subscriber_connection *conn, struct msgb *msg);
 
-/* Initalize osmo sigtran backhaul */
+/* Initialize osmo sigtran backhaul */
 int osmo_bsc_sigtran_init(struct llist_head *mscs);
 
 /* Close all open sigtran connections and channels */
diff --git a/include/osmocom/bsc/penalty_timers.h b/include/osmocom/bsc/penalty_timers.h
index 3aae8a0..f5d1778 100644
--- a/include/osmocom/bsc/penalty_timers.h
+++ b/include/osmocom/bsc/penalty_timers.h
@@ -10,7 +10,7 @@
  * returns an empty struct penalty_timers.  */
 struct penalty_timers *penalty_timers_init(void *ctx);
 
-/* Add a penalty timer for an arbitary object.
+/* Add a penalty timer for an arbitrary object.
  * Note: the ownership of for_object remains with the caller; it is handled as a mere void* value, so
  * invalid pointers can be handled without problems, while common sense dictates that invalidated
  * pointers (freed objects) should probably be removed from this list. More importantly, the pointer must
