mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-09 13:49:24 -04:00
Merge "msm: veth_ipa: Throughput improvements"
This commit is contained in:
commit
ce85b5823f
1 changed files with 24 additions and 25 deletions
|
|
@ -1772,38 +1772,29 @@ static netdev_tx_t veth_ipa_start_xmit
|
|||
|
||||
if (unlikely(netif_queue_stopped(net))) {
|
||||
VETH_IPA_ERROR("interface queue is stopped\n");
|
||||
goto out;
|
||||
status = NETDEV_TX_BUSY;
|
||||
goto fail_tx_packet;
|
||||
}
|
||||
|
||||
if (unlikely(veth_ipa_ctx->state != VETH_IPA_CONNECTED_AND_UP))
|
||||
return NETDEV_TX_BUSY;
|
||||
|
||||
#ifdef VETH_PM_ENB
|
||||
ret = resource_request(veth_ipa_ctx);
|
||||
|
||||
if (ret) {
|
||||
VETH_IPA_DEBUG("Waiting to resource\n");
|
||||
if (atomic_read(&veth_ipa_ctx->outstanding_pkts) >=
|
||||
veth_ipa_ctx->outstanding_high) {
|
||||
VETH_IPA_DEBUG("outstanding high (%d)- stopping\n",
|
||||
veth_ipa_ctx->outstanding_high);
|
||||
netif_stop_queue(net);
|
||||
goto resource_busy;
|
||||
status = NETDEV_TX_BUSY;
|
||||
goto fail_tx_packet;
|
||||
}
|
||||
|
||||
/*
|
||||
* if (atomic_read(&veth_ipa_ctx->outstanding_pkts) >=
|
||||
* veth_ipa_ctx->outstanding_high) {
|
||||
* VETH_IPA_DEBUG("outstanding high (%d)- stopping\n",
|
||||
* veth_ipa_ctx->outstanding_high);
|
||||
* netif_stop_queue(net);
|
||||
* status = NETDEV_TX_BUSY;
|
||||
* goto out;
|
||||
* }
|
||||
*/
|
||||
if (veth_ipa_ctx->is_vlan_mode)
|
||||
if (unlikely(skb->protocol != htons(ETH_P_8021Q)))
|
||||
VETH_IPA_DEBUG(
|
||||
"ether_type != ETH_P_8021Q && vlan, prot = 0x%X\n",
|
||||
skb->protocol);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
ret = ipa_tx_dp(IPA_CLIENT_ETHERNET_CONS, skb, NULL);
|
||||
|
||||
|
|
@ -1818,9 +1809,8 @@ static netdev_tx_t veth_ipa_start_xmit
|
|||
goto out;
|
||||
|
||||
fail_tx_packet:
|
||||
return status;
|
||||
out:
|
||||
|
||||
status = NETDEV_TX_OK;
|
||||
return status;
|
||||
|
||||
}
|
||||
|
|
@ -1860,13 +1850,22 @@ static void veth_ipa_packet_receive_notify
|
|||
return;
|
||||
}
|
||||
|
||||
if (evt != IPA_RECEIVE) {
|
||||
VETH_IPA_ERROR(
|
||||
"%s: A none IPA_RECEIVE event in VETH_ipa_receive\n",
|
||||
__func__);
|
||||
if (evt == IPA_WRITE_DONE) {
|
||||
atomic_dec(&veth_ipa_ctx->outstanding_pkts);
|
||||
if
|
||||
(netif_queue_stopped(veth_ipa_ctx->net) &&
|
||||
netif_carrier_ok(veth_ipa_ctx->net) &&
|
||||
atomic_read(&veth_ipa_ctx->outstanding_pkts) <
|
||||
(veth_ipa_ctx->outstanding_low)) {
|
||||
netif_wake_queue(veth_ipa_ctx->net);
|
||||
}
|
||||
kfree_skb(skb);
|
||||
return;
|
||||
}
|
||||
if (evt != IPA_WRITE_DONE && evt != IPA_RECEIVE) {
|
||||
VETH_IPA_ERROR("Non TX_complete or Receive Event");
|
||||
return;
|
||||
}
|
||||
|
||||
skb->dev = veth_ipa_ctx->net;
|
||||
skb->protocol = eth_type_trans(skb, veth_ipa_ctx->net);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue