Browse Source

rmnet_core: Discard DL markers received over LL channel

DL markers received over this channel need to be silently dropped, as
processing them will interfere with the standard DL marker processing on
the default channel.

Change-Id: Id6b36c3f877bf15768e3ac0a5ea8803656375a2b
Signed-off-by: Sean Tranchetti <[email protected]>
Sean Tranchetti 4 years ago
parent
commit
9e18715d96
2 changed files with 16 additions and 0 deletions
  1. 6 0
      core/rmnet_descriptor.c
  2. 10 0
      core/rmnet_map_command.c

+ 6 - 0
core/rmnet_descriptor.c

@@ -545,6 +545,12 @@ int rmnet_frag_flow_command(struct rmnet_frag_descriptor *frag_desc,
 	if (!cmd)
 	if (!cmd)
 		return -1;
 		return -1;
 
 
+	/* Silently discard any marksers recived over the LL channel */
+	if (frag_desc->priority == 0xda1a &&
+	    (cmd->command_name == RMNET_MAP_COMMAND_FLOW_START ||
+	     cmd->command_name == RMNET_MAP_COMMAND_FLOW_END))
+		return 0;
+
 	switch (cmd->command_name) {
 	switch (cmd->command_name) {
 	case RMNET_MAP_COMMAND_FLOW_START:
 	case RMNET_MAP_COMMAND_FLOW_START:
 		rmnet_frag_process_flow_start(frag_desc, cmd, port, pkt_len);
 		rmnet_frag_process_flow_start(frag_desc, cmd, port, pkt_len);

+ 10 - 0
core/rmnet_map_command.c

@@ -243,6 +243,16 @@ int rmnet_map_flow_command(struct sk_buff *skb, struct rmnet_port *port,
 	cmd = rmnet_map_get_cmd_start(skb);
 	cmd = rmnet_map_get_cmd_start(skb);
 	command_name = cmd->command_name;
 	command_name = cmd->command_name;
 
 
+	/* Silently discard any markers on the LL channel */
+	if (skb->priority == 0xda1a &&
+	    (command_name == RMNET_MAP_COMMAND_FLOW_START ||
+	     command_name == RMNET_MAP_COMMAND_FLOW_END)) {
+		if (!rmnet_perf)
+			consume_skb(skb);
+
+		return 0;
+	}
+
 	switch (command_name) {
 	switch (command_name) {
 	case RMNET_MAP_COMMAND_FLOW_START:
 	case RMNET_MAP_COMMAND_FLOW_START:
 		rmnet_map_process_flow_start(skb, port, rmnet_perf);
 		rmnet_map_process_flow_start(skb, port, rmnet_perf);