Commit 23c76eb7 authored by Subash Abhinov Kasiviswanathan's avatar Subash Abhinov Kasiviswanathan Committed by David S. Miller

net: qualcomm: rmnet: Handle command packets with checksum trailer

When using the MAPv4 packet format in conjunction with MAP commands,
a dummy DL checksum trailer will be appended to the packet. Before
this packet is sent out as an ACK, the DL checksum trailer needs to be
removed.
Signed-off-by: default avatarSubash Abhinov Kasiviswanathan <subashab@codeaurora.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent bbd21b24
...@@ -58,11 +58,24 @@ static u8 rmnet_map_do_flow_control(struct sk_buff *skb, ...@@ -58,11 +58,24 @@ static u8 rmnet_map_do_flow_control(struct sk_buff *skb,
} }
static void rmnet_map_send_ack(struct sk_buff *skb, static void rmnet_map_send_ack(struct sk_buff *skb,
unsigned char type) unsigned char type,
struct rmnet_port *port)
{ {
struct rmnet_map_control_command *cmd; struct rmnet_map_control_command *cmd;
int xmit_status; int xmit_status;
if (port->data_format & RMNET_INGRESS_FORMAT_MAP_CKSUMV4) {
if (skb->len < sizeof(struct rmnet_map_header) +
RMNET_MAP_GET_LENGTH(skb) +
sizeof(struct rmnet_map_dl_csum_trailer)) {
kfree_skb(skb);
return;
}
skb_trim(skb, skb->len -
sizeof(struct rmnet_map_dl_csum_trailer));
}
skb->protocol = htons(ETH_P_MAP); skb->protocol = htons(ETH_P_MAP);
cmd = RMNET_MAP_GET_CMD_START(skb); cmd = RMNET_MAP_GET_CMD_START(skb);
...@@ -100,5 +113,5 @@ void rmnet_map_command(struct sk_buff *skb, struct rmnet_port *port) ...@@ -100,5 +113,5 @@ void rmnet_map_command(struct sk_buff *skb, struct rmnet_port *port)
break; break;
} }
if (rc == RMNET_MAP_COMMAND_ACK) if (rc == RMNET_MAP_COMMAND_ACK)
rmnet_map_send_ack(skb, rc); rmnet_map_send_ack(skb, rc, port);
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment