diff --git a/drivers/platform/msm/ipa/ipa_v2/rmnet_ipa.c b/drivers/platform/msm/ipa/ipa_v2/rmnet_ipa.c index 96003d7a16a0..520f139ee38a 100644 --- a/drivers/platform/msm/ipa/ipa_v2/rmnet_ipa.c +++ b/drivers/platform/msm/ipa/ipa_v2/rmnet_ipa.c @@ -1053,6 +1053,8 @@ static int ipa_wwan_xmit(struct sk_buff *skb, struct net_device *dev) IPAWANDBG ("SW filtering out none QMAP packet received from %s", current->comm); + dev_kfree_skb_any(skb); + dev->stats.tx_dropped++; return NETDEV_TX_OK; } @@ -1094,6 +1096,8 @@ send: if (ret) { pr_err("[%s] fatal: ipa rm timer request resource failed %d\n", dev->name, ret); + dev_kfree_skb_any(skb); + dev->stats.tx_dropped++; return -EFAULT; } /* IPA_RM checking end */ @@ -1109,7 +1113,6 @@ send: if (ret) { ret = NETDEV_TX_BUSY; - dev->stats.tx_dropped++; goto out; } diff --git a/drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c b/drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c index f134852e046e..8f6c303d2867 100644 --- a/drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c +++ b/drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c @@ -1066,6 +1066,8 @@ static int ipa3_wwan_xmit(struct sk_buff *skb, struct net_device *dev) IPAWANDBG_LOW ("SW filtering out none QMAP packet received from %s", current->comm); + dev_kfree_skb_any(skb); + dev->stats.tx_dropped++; return NETDEV_TX_OK; } @@ -1077,7 +1079,8 @@ static int ipa3_wwan_xmit(struct sk_buff *skb, struct net_device *dev) pr_err("[%s]Queue stop, send ctrl pkts\n", dev->name); goto send; } else { - pr_err("[%s]fatal: ipa_wwan_xmit stopped\n", dev->name); + pr_err("[%s]fatal: ipa3_wwan_xmit stopped\n", + dev->name); return NETDEV_TX_BUSY; } } @@ -1107,6 +1110,8 @@ send: if (ret) { pr_err("[%s] fatal: ipa rm timer request resource failed %d\n", dev->name, ret); + dev_kfree_skb_any(skb); + dev->stats.tx_dropped++; return -EFAULT; } /* IPA_RM checking end */ @@ -1122,7 +1127,6 @@ send: if (ret) { ret = NETDEV_TX_BUSY; - dev->stats.tx_dropped++; goto out; }