summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorHarout Hedeshian <harouth@codeaurora.org>2013-10-25 15:07:47 -0600
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-22 11:04:56 -0700
commitc514dd5ef401fdb515ecd9139d587b7b615d21e3 (patch)
tree856019cfee786e506f36b55463f45d883f57f47a /net
parent0f789efb3a122daecbb5dcf2df16f2943dd2603e (diff)
net: rmnet_data: Change aggregation copy mode for compat
Change SKB copy and delivery mode to fix certain error modes when running ingress deaggregation CRs-Fixed: 565123 Change-Id: If23cee6a0de6b189b2c528423df52555e1879bc3 Signed-off-by: Harout Hedeshian <harouth@codeaurora.org>
Diffstat (limited to 'net')
-rw-r--r--net/rmnet_data/rmnet_data_handlers.c3
-rw-r--r--net/rmnet_data/rmnet_map_data.c4
2 files changed, 4 insertions, 3 deletions
diff --git a/net/rmnet_data/rmnet_data_handlers.c b/net/rmnet_data/rmnet_data_handlers.c
index 5100db002f26..5e669cee9213 100644
--- a/net/rmnet_data/rmnet_data_handlers.c
+++ b/net/rmnet_data/rmnet_data_handlers.c
@@ -183,7 +183,8 @@ static rx_handler_result_t __rmnet_deliver_skb(struct sk_buff *skb,
case RX_HANDLER_PASS:
skb->pkt_type = PACKET_HOST;
- return RX_HANDLER_ANOTHER;
+ netif_receive_skb(skb);
+ return RX_HANDLER_CONSUMED;
}
return RX_HANDLER_PASS;
diff --git a/net/rmnet_data/rmnet_map_data.c b/net/rmnet_data/rmnet_map_data.c
index f3f65c9a3f5f..7578f459231f 100644
--- a/net/rmnet_data/rmnet_map_data.c
+++ b/net/rmnet_data/rmnet_map_data.c
@@ -85,7 +85,7 @@ struct rmnet_map_header_s *rmnet_map_add_map_header(struct sk_buff *skb,
* @config: Physical endpoint configuration of the ingress device
*
* Source skb is cloned with skb_clone(). The new skb data and tail pointers are
- * modified to contain a single MAP frame. Clone happens with GFP_KERNEL flags
+ * modified to contain a single MAP frame. Clone happens with GFP_ATOMIC flags
* set. User should keep calling deaggregate() on the source skb until 0 is
* returned, indicating that there are no more packets to deaggregate.
*
@@ -111,7 +111,7 @@ struct sk_buff *rmnet_map_deaggregate(struct sk_buff *skb,
return 0;
}
- skbn = skb_clone(skb, GFP_ATOMIC);
+ skbn = skb_copy(skb, GFP_ATOMIC);
if (!skbn)
return 0;