The udp_ip4_ind bit is set only for IPv4 UDP non-fragmented packets
so that the hardware can flip the checksum to 0xFFFF if the computed
checksum is 0 per RFC768.
However, this bit had to be set for IPv6 UDP non fragmented packets
as well per hardware requirements. Otherwise, IPv6 UDP packets
with computed checksum as 0 were transmitted by hardware and were
dropped in the network.
In addition to setting this bit for IPv6 UDP, the field is also
appropriately renamed to udp_ind as part of this change.
Change-Id: Ia00e3f364e9732b182b7aebe843beb443269fd9e
Signed-off-by: Chinmay Agarwal <chinagar@codeaurora.org>
Chinmay Agarwalauthored and Gerrit - the friendly Code Review servercommited 2020-07-23 05:24:00 -07:00
In case a small egress agg size is passed, the aggregated skb
allocated would have a negative tailroom and the skb_put maybe beyond
the actual expected boundary.
Fix this by flushing out packets immediately.
CRs-Fixed: 2382840
Change-Id: Id703a64c5b4e1d24f223b4dbe5e8929351bc02ae
Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
The worker thread can run even if the aggregation state machine
has moved on to an idle after processing packets. This results
in log spam with an invalid message.
CRs-Fixed: 2165883
Change-Id: I218ac9b20a41749adce45a0d787782d15f07c65b
Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
The delay argument in schedule_delayed_work(struct delayed_work
*dwork, unsigned long delay) API is jiffies. The system tick for
seems to be 100Hz, so the minimum time resolution for the work to
be scheduled is 10ms.
Switch to hrtimer to achieve 3 ms granularity with a current timer
of 1ms for the flush thread. A workqueue is immediately scheduled
in the same context after this timer expiry to do the tx work.
CRs-Fixed: 2157214
Change-Id: I29cbbee417e84b101ed34c0d29c2731bd52c3ec5
Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
A crash was seen when running the hrtimer solution, so revert the
change till it is resoloved. The crash occurs due to interrupts
being enabled by a later function in the call stack within
interrupt context.
[ffffff8cc22b157c] __local_bh_enable_ip+0xa8/0x114
[ffffff8cc33495d0] _raw_spin_unlock_bh+0x30/0x3c
[ffffff8cc2e57ed8] ipa3_send+0x2a0/0xaa0
[ffffff8cc2e5c544] ipa3_tx_dp+0x59c/0x990
[ffffff8cc2ea7ef0] ipa3_wwan_xmit+0x204/0x338
[ffffff8cc30f0160] dev_hard_start_xmit+0xc4/0x29c
[ffffff8cc311d0f4] sch_direct_xmit+0x100/0x1cc
[ffffff8cc30f0890] __dev_queue_xmit+0x1f4/0x704
[ffffff8cc30f0dc8] dev_queue_xmit+0x28/0x34
[ffffff8cc333285c] rmnet_map_flush_packet_queue+0xc0/0x218
[ffffff8cc2344f9c] __hrtimer_run_queues+0x158/0x36c
[ffffff8cc2345f38] hrtimer_interrupt+0xb0/0x1f4
CRs-fixed: 2147503
Change-Id: I7b3617577cbf5e166380d4361b73e2f57a4bd042
Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
The delay argument in schedule_delayed_work(struct delayed_work
*dwork, unsigned long delay) API is jiffies. The system tick for
seems to be 100Hz, so the minimum time resolution for the work to
be scheduled is 10ms.
Switch to hrtimer to achieve 1 ms granularity with a current timer
of 3ms for the flush thread.
CRs-fixed: 2147503
Change-Id: If33fea37146f91b2980e6637db71567fb5ca12a5
Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
Optimize for the IPv6 normal ping case instead of the
fragmentation scenario. Also, check for IPv6 explicitly
rather than directly disecting the packet.
CRs-Fixed: 2131879
Change-Id: Idee5c7d52972d06aee6ac6d71ebd5d1c3c875f9f
Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
ICMP packets could be potentially stuck behind aggregated traffic
if UL aggregation is enabled on rmnet_data. This results in
increased latencies during ping tests as the workqueues for these
packets are scheduled at non deterministic times.
CRs-Fixed: 2131879
Change-Id: I19208301b5674749aa2f1dee65a9226eda364c85
Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
This is a snapshot of the rmnet_data driver taken as of msm-4.4.
commit 5da00923b1544ba ("rmnet_data: Changing format specifier to
%pK").
Additionally, fix some style issues reported by checkpatch.
CRs-Fixed: 1078373
Change-Id: Idb2df22e61803e04a01db64ea5e9d1e93ae92e09
Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>