diff --git a/channels/chan_brcm.c b/channels/chan_brcm.c
index 9e9ae5a4f831efa0fc518dee33f46d7fcf3b3ac4..a5c3970197c0532b3890a59a02d9a6c0dd0fbca2 100644
--- a/channels/chan_brcm.c
+++ b/channels/chan_brcm.c
@@ -791,7 +791,12 @@ static int brcm_call(struct ast_channel *chan, const char *dest, int timeout)
 
 	p = sub->parent;
 	sub_peer = brcm_subchannel_get_peer(sub);
-	if (brcm_in_call(p) &&                          // a call is established
+	if (line_config[p->line_id].do_not_disturb) {
+		ast_debug(1, "Do not disturbed\n");
+		ast_channel_hangupcause_set(chan, AST_CAUSE_CALL_REJECTED);
+		ast_queue_control(chan, AST_CAUSE_CALL_REJECTED);
+	}
+	else if (brcm_in_call(p) &&                          // a call is established
 			line_config[p->line_id].callwaiting &&  // call waiting active
 			!sub_peer->cw_rejected) {      // a previous call has not been rejected using R0
 		ast_debug(1, "Call waiting\n");
@@ -2673,6 +2678,7 @@ static void brcm_show_pvts(struct ast_cli_args *a)
 		ast_cli(a->fd, "Ast JitterBuf impl  : %s\n", global_jbconf.impl);
 		ast_cli(a->fd, "Ast JitterBuf max   : %ld\n", global_jbconf.max_size);
 		ast_cli(a->fd, "Call waiting        : %s\n", s->callwaiting ? "on" : "off");
+		ast_cli(a->fd, "Do not disturb      : %s\n", s->do_not_disturb ? "on" : "off");
 		ast_cli(a->fd, "CLIR                : %s\n", s->clir ? "on" : "off");
 
 		ast_cli(a->fd, "Dialtone            : ");
@@ -3021,6 +3027,7 @@ static line_settings line_settings_create(void)
 		.hangup_xfer = 0,
 		.dialtone_timeoutmsec = 20000,
 		.callwaiting = 1,
+		.do_not_disturb = 0,
 		.clir = 0,
 	};
 	return line_conf;
@@ -3064,6 +3071,9 @@ static void line_settings_load(line_settings *line_config, struct ast_variable *
 		else if (!strcasecmp(v->name, "callwaiting")) {
 			line_config->callwaiting = ast_true(v->value)?1:0;
 		}
+		else if (!strcasecmp(v->name, "do_not_disturb")) {
+			line_config->do_not_disturb = ast_true(v->value)?1:0;
+		}
 		else if (!strcasecmp(v->name, "clir")) {
 			line_config->clir = ast_true(v->value)?1:0;
 		}
diff --git a/channels/chan_brcm.h b/channels/chan_brcm.h
index 1b77b097549649c69b94c550ce4910eca129deff..695cd4c7bd3e0c955c5eab6cb039a2d31ccc5940 100644
--- a/channels/chan_brcm.h
+++ b/channels/chan_brcm.h
@@ -206,6 +206,7 @@ typedef struct {
 	int hangup_xfer;
 	int dialtone_timeoutmsec;
 	int callwaiting;
+	int do_not_disturb;
 	int clir;
 } line_settings;