summaryrefslogtreecommitdiff
path: root/net
AgeCommit message (Collapse)Author
2016-03-23seemp: enhance support for malware detectionWilliam Clark
Improves the ability of a malware protection program to detect anomalies in various activities. It records task activities in a log and rates the actions according to how a typical user would use the tools. Change-Id: I976bc97f57215f173b046326b5f905522d785288 Signed-off-by: Mona Hossain <mhossain@codeaurora.org> Signed-off-by: William Clark <wclark@codeaurora.org>
2016-03-22Revert "cfg80211/mac80211: disconnect on suspend"Ganesh Kondabattini
This reverts commit 8125696991194aacb1173b6e8196d19098b44e17. The commit"cfg80211/mac80211: disconnect on suspend" forces disconnection on wlan interfaces if wake on wireless is not enabled from the user space. Wake on Wireless is enabled by default in wlan driver (CLD) and cfg80211 layer never aware of wake on wirless enabled status done in wlan driver. To avoid the disconnection while going to suspend and keep wlan driver in WOW mode by default, the commit "cfg80211/mac80211: disconnect on suspend" should be reverted. CRs-Fixed: 540571 Change-Id: I483fe0530f9f00c338680416449215af326e3df1 Signed-off-by: Ganesh Kondabattini <ganeshk@codeaurora.org>
2016-03-22Revert "cfg80211: export interface stopping function"Ahmad Kholaif
This reverts commit f04c22033c25f71617ac62bcfe75698baa17a0b8. The commit "cfg80211: export interface stopping function" exports a new cfg80211_stop_iface() function, intended for driver internal interface combination management and channel switching. The new function is used by commit "cfg80211/mac80211: disconnect on suspend" which is reverted in order to avoid the disconnection while going to suspend. Hence the commit "cfg80211: export interface stopping function" should be reverted. CRs-Fixed: 540571 Signed-off-by: Ahmad Kholaif <akholaif@codeaurora.org>
2016-03-22cfg80211: Add AP stopped interfaceSameer Thalappil
AP stopped interface can be used to indicate that the AP mode has stopped functioning, WLAN driver may have encountered errors that has forced the driver to stop the AP mode. When the driver is in P2P-Go mode, and when it goes thru automatic recovery from firmware crashes, it uses this interface to notify the userspace that the group has been deleted. CRs-Fixed: 453060 Change-Id: Ifcd8d4f0c0b26f56a56fb8560aa474297b7521d4 Signed-off-by: Sameer Thalappil <sameert@codeaurora.org>
2016-03-22cfg80211: Use new wiphy flag WIPHY_FLAG_DFS_OFFLOADAmar Singhal
When flag WIPHY_FLAG_DFS_OFFLOAD is defined, the driver would handle all the DFS related operations. Therefore the kernel needs to ignore the DFS state that it uses to block the userspace calls to the driver through cfg80211 APIs. Also it should treat the userspace calls to start radar detection as a no-op. Change-Id: I9dd2076945581ca67e54dfc96dd3dbc526c6f0a2 CRs-Fixed: 630797 Signed-off-by: Amar Singhal <asinghal@codeaurora.org> [neelanshm@codeaurora.org: Do not include the unrequired change in util.c] Signed-off-by: Neelansh Mittal <neelanshm@codeaurora.org>
2016-03-22msm: wlan: Update db.txt for regulatory supportRyan Hsu
This commit merges the following commits into one snapshot up to msm-3.18 commit e70ad0cd5efdd9dc91a77dcdac31d6132e1315c1. 8e465d5 msm: wlan: Update tx power limits of country UA 296bec0 msm: wlan: Update regulatory database for some countries c0fc361 msm: wlan: Fix the DFS region for Japan 6f1cca3 msm: wlan: Update the wifi regulatory database for TW 2c5867a msm: wlan: Modify JAPAN regulatory rules e430543 regdb: Update database with 60GHz for Japan ccce8fb msm: wlan: Correct the parsing of db.txt acf74a2 cfg80211: add space after the b/w in db.txt b2b5b4e msm: wlan: update the dfs_region to db.txt 36c64bd msm: wlan: Add country KP da5d9cb msm: wlan: Update db.txt for regulatory support. Signed-off-by: Ryan Hsu <ryanhsu@codeaurora.org>
2016-03-22mac80211: implement HS2.0 gratuitous ARP/unsolicited NA droppingJohannes Berg
Taking the gratuitous ARP/unsolicited NA detection code from mwifiex (but fixing it up to not have read-after-skb-end bugs), implement the ability for userspace to request the behaviour required by HS2.0 to drop gratuitous ARP and unsolicited NA frames when proxy ARP service is enabled on the AP. Since this behaviour is only mandatory for HS2.0 and may not always be desired, make it optional - modify cfg80211/nl80211 for that. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Git-commit: be9efdecf8ecdcc6d2221845482e7359b33a603b Git-repo : git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git Change-Id: I1e4083a2327c121073226aa6b75bb6b5b97cec00 CRs-fixed: 621827 [akholaif@codeaurora.org: only picked up the declaration and definition of cfg80211_is_gratuitous_arp_unsolicited_na()] Signed-off-by: Ahmad Kholaif <akholaif@codeaurora.org>
2016-03-22cfg80211: export regulatory_hint_user() APIMihir Shete
This is to help the hardware configured in world roaming mode to save power when not connected to any AP. CRs-Fixed: 542802 Change-Id: Ia643d0e9848dcd486832973bd6dd186edd7bd4ea Signed-off-by: Mihir Shete <smihir@codeaurora.org>
2016-03-22net: ipv6: remove duplicate declartion of structureJeevan Shriram
Remove duplicate decalaration and initialization of a structure with conflicting types. Signed-off-by: Jeevan Shriram <jshriram@codeaurora.org>
2016-03-22net/ipv6/addrconf: IPv6 tethering enhancementTianyi Gou
Added new procfs flag to toggle the automatic addition of prefix routes on a per device basis. The new flag is accept_ra_prefix_route. Defaults to 1 as to not break existing behavior. CRs-Fixed: 435320 Change-Id: If25493890c7531c27f5b2c4855afebbbbf5d072a Acked-by: Harout S. Hedeshian <harouth@qti.qualcomm.com> Signed-off-by: Tianyi Gou <tgou@codeaurora.org> [subashab@codeaurora.org: resolve trivial merge conflicts] Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
2016-03-22netfilter: xt_HARDIDLETIMER: Fix null de-referenceSusheel Yadagiri
added a null check to prevent a null pointer derefence of hard idle timer Change-Id: Id1e49d5b109d8c71947723b252f4d2b6f3ebc35f CRs-Fixed: 880124 Signed-off-by: Susheel Yadav Yadagiri <syadagir@codeaurora.org>
2016-03-22nf: IDLETIMER: Fix possible use before initialization in idletimer_resumePatrick Daly
idletimer_resume() assumes that the PM_SUSPEND_PREPARE notifier is sent before PM_POST_SUSPEND so that timer->last_suspend_time is initialized. However, it is possible for PM_POST_SUSPEND to be sent first if there is an error returned from another driver's PM_SUSPEND_PREPARE notifier. Add a flag indicating whether the current value of timer->last_suspend is valid. Detected with CONFIG_SLUB_DEBUG & CONFIG_DEBUG_SPINLOCK in arm64. The timestamp lock is held for more than a minute while set_normalized_timespec() proceses the poisoned timer->last_suspend_time argument. Change-Id: I95328b0ac85dba819ff9cef751c3d07300c232f1 Signed-off-by: Patrick Daly <pdaly@codeaurora.org>
2016-03-22netfilter: xt_HARDIDLETIMER: Fix use after free conditionPatrick Daly
Force any pending hardidletimer_tg_work() to complete before freeing the associated work struct. CRs-Fixed: 814707 Change-Id: I57b2f0dcd24f05ddb472d6007525d1722f9fe0b0 Signed-off-by: Patrick Daly <pdaly@codeaurora.org>
2016-03-22netfilter: xtables: hardidletimer target implementationBhavya Sokke Mallikarjunappa
This patch implements a hardidletimer Xtables target that can be used to identify when interfaces have been idle for a certain period of time. Timers are identified by labels and are created when a rule is set with a new label. The rules also take a timeout value (in seconds) as an option. If more than one rule uses the same timer label, the timer will be restarted whenever any of the rules get a hit. One entry for each timer is created in sysfs. This attribute contains the timer remaining for the timer to expire. The attributes are located under the xt_idletimer class: /sys/class/xt_hardidletimer/timers/<label> When the timer expires, the target module sends a sysfs notification to the userspace, which can then decide what to do (eg. disconnect to save power) Compared to xt_IDLETIMER, xt_HARDIDLETIMER can send notifications when CPU is in suspend too, to notify the timer expiry Change-Id: I1723d44e02df864d63da7550766ea7d763076de2 Signed-off-by: Bhavya Sokke Mallikarjunappa <bsokke@codeaurora.org>
2016-03-22net: sched: gracefully handle qdisc which don't support change()Harout Hedeshian
tc_qdisc_flow_control() incorrectly assumes that all queue disciplines implement the change() callback in Qdisc_ops. If the flow control function is called a queue that does not implement change(), we try to jump to a null function pointer resulting in a panic. The flow control function does require that the queue discipline support change() in order to enable/disable the queue. Now we will check if the queue to do flow control on supports the required funcionality and will WARN_ONCE and return if the requirements are not met. [<ffffffc000c5c028>] panic+0x28c [<ffffffc0000889f4>] die+0x238 [<ffffffc000088a6c>] arm64_notify_die+0x4c [<ffffffc000088d00>] bad_mode+0xa8 [<ffffffc000ab9ab8>] tc_qdisc_flow_control+0x98 [<ffffffc000c506e8>] rmnet_vnd_ioctl+0x230 [<ffffffc000aac6fc>] dev_ifsioc+0x2a0 [<ffffffc000aacde8>] dev_ioctl+0x644 [<ffffffc000a7db4c>] sock_ioctl+0x4c [<ffffffc0001af548>] do_vfs_ioctl+0x4b4 [<ffffffc0001af684>] SyS_ioctl+0x60 [<ffffffc0000854b0>] el0_svc_naked+0x24 Change-Id: I85ca324e57814b6c0eac48d2e076e861ab32c260 Signed-off-by: Harout Hedeshian <harouth@codeaurora.org>
2016-03-22net: add a per-cpu counter for the number of frames coalesced in GROHarout Hedeshian
A low cost method of determining GRO statistics is required. This change introduces a new counter which tracks whenever GRO coalesces ingress packets. The counter is per-CPU and exposed in /proc/net/softnet_stat as the last column of data. No user space impact is expected as a result of this change. However, this change should be reverted if legacy tools have problems with the new column in softnet_stat. Change-Id: I05965c0cb150947935d5977884cc4d583b37131d Signed-off-by: Harout Hedeshian <harouth@codeaurora.org> [subashab@codeaurora.org: resolve trivial merge conflicts] Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
2016-03-22net: Fail explicit bind to local reserved portsSubash Abhinov Kasiviswanathan
Reserved ports may have some special use cases which are not suitable for use by general userspace applications. Currently, ports specified in ip_local_reserved_ports will not be returned only in case of automatic port assignment. Add a boolean sysctl flag 'reserved_port_bind'. Default value is 1 which preserves the existing behavior. Setting the value to 0 will prevent userspace applications from binding to these ports even when they are explicitly requested. BUG=20663075 Change-Id: Ib1071ca5bd437cd3c4f71b56147e4858f3b9ebec Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
2016-03-22net: Indicate whether a socket is a transparent socketHarout Hedeshian
Modify the printout functions for IPv4-TCP, IPv4-UDP, IPv6-TCP, IPv6-UDP, such that the state for the socket is printed as state = state | 0x80. The actual socket state is unmodified. This change is required for the user space to determine whether a socket is a transparent socket, and to determine if the socket holder intends to consume packets locally or to forward them to an external processor. Change-Id: I2ca403b4c2c74e7ddcdbda53e4ba43613bae9c42 Signed-off-by: Harout Hedeshian <harouth@codeaurora.org> [subashab@codeaurora.org: resolve trivial merge conflicts] Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
2016-03-22net: sockev: corrected sk_family filter logicHarout Hedeshian
Commit 43e0e31e2d6e ("net: sockev: filtering non INET socket events") from Krishnan introduced incorrect conditional logic which caused the socket address families to be incorrectly filtered. This patch corrects the logic. CRs-Fixed: 830947 Cc: Krishnan Ramachandran <kramacha@qti.qualcomm.com> Acked-by: Devesh Bisht <dbisht@qti.qualcomm.com> Change-Id: I40a001a69d5aab25f7f97a7378aceae301fd762a Signed-off-by: Harout Hedeshian <harouth@codeaurora.org>
2016-03-22net: Warn for cloned packets in ingress pathSubash Abhinov Kasiviswanathan
Cloned packets arriving in ingress path can cause issues with GRO since the skb shared info is garbled. Warn once if a cloned packet is queued up to the network stack. CRs-Fixed: 823275 Change-Id: I049f04f39b3d1338838560e08c93a973de427fc0 Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org> [subashab@codeaurora.org: resolve trivial merge conflicts] Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
2016-03-22net: udp: Adjust UDP socket state for encapsulation socketsHarout Hedeshian
UDP IPv4 encapsulation sockets will have their state printed as 0xF0 binary ORed with the actual state such that they can be distinguished from regular UDP sockets in /proc/net/udp. CRs-Fixed: 821341 Change-Id: I240ab1526a4280e5e996d9577a904581684fc84a Signed-off-by: Harout Hedeshian <harouth@codeaurora.org> [subashab@codeaurora.org: resolve trivial merge conflicts] Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
2016-03-22net: sockev: filtering non INET socket eventsHarout Hedeshian
Too many socket events are generated by netlink socket. Filtering out unwanted socket events. Change-Id: I3a4d7e14843cf72d6af2d948113b27928ed01adb Acked-by: Krishnan Ramachandran <kramacha@qti.qualcomm.com> Signed-off-by: Harout Hedeshian <harouth@codeaurora.org>
2016-03-22net: socket: make sure refs are not released on fd before calling sockevHarout Hedeshian
Ensure that BIND and LISTEN syscalls do fput_light AFTER sockev notifier callback has returned. Also, increase refcount on sock->sk (if available) before invoking the notifier callback. Prevent crash due to use-after-free. [<c0891d5c>] (sockev_client_cb+0xfc/0x1e4) from [<c0a273a4>] (notifier_cal [<c0a273a4>] (notifier_call_chain+0x44/0x84) from [<c01422cc>] (__blocking [<c01422cc>] (__blocking_notifier_call_chain+0x48/0x60) from [<c01422fc>] [<c01422fc>] (blocking_notifier_call_chain+0x18/0x20) from [<c0865968>] (S [<c0865968>] (SyS_bind+0xb0/0xe8) from [<c0105ba0>] (ret_fast_syscall+0x0/ CRs-Fixed: 787283 Change-Id: I2de65929b22c58637692cf582b6b46b11713494e Signed-off-by: Harout Hedeshian <harouth@codeaurora.org>
2016-03-22net: sockev: Initial CommitHarout Hedeshian
Added module which subscribes to socket notifier events. Notifier events are then converted to a multicast netlink message for user space applications to consume. CRs-Fixed: 626021 Change-Id: Id5c6808d972b69f5f065d7fba9094e75c6ad0b2c Signed-off-by: Harout Hedeshian <harouth@codeaurora.org> [subashab@codeaurora.org: resolve trivial merge conflicts] Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
2016-03-22net: socket: Added notifier chains for socket administrative functionsHarout Hedeshian
Allows other areas in the kernel to register notifier callbacks which get invoked whenever something performs an administrative action on a socket. This patch adds hooks in socket(), bind(), listen(), accept(), shutdown(). CRs-Fixed: 626021 Change-Id: I4ae99cb2206d7c4eddba69757335c18d10143045 Signed-off-by: Harout Hedeshian <harouth@codeaurora.org> [subashab@codeaurora.org: resolve trivial merge conflicts] Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
2016-03-22net: core: add MAP support to RPS flow dissectorHarout Hedeshian
More efficiently utilize multiple cores when using MAP encoded frames. RPS flow dissector now appropriately decodes IPv4 and IPv6 frames with MAP headers prepended. CRs-Fixed: 681280 Change-Id: Ia4dde47fcc0f3436dcaa71a5160c0a59fe7ed53a Signed-off-by: Harout Hedeshian <harouth@codeaurora.org> [subashab@codeaurora.org: resolve trivial merge conflicts] Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
2016-03-22net: ipc_router: Use iov_iter accessor functionsKarthikeyan Ramasubramanian
The networking module uses iov_iter library to manage the vector buffers from user-space. Use iov_iter accessor functions to copy the data from/to the user-space vector buffers. Signed-off-by: Karthikeyan Ramasubramanian <kramasub@codeaurora.org>
2016-03-22net: ipc_router: Fix to handle the socket framework updatesKarthikeyan Ramasubramanian
Update the function signature of sendmsg and recvmsg operations. Pass the kernel socket flag to the updated socket object allocation function. Signed-off-by: Karthikeyan Ramasubramanian <kramasub@codeaurora.org>
2016-03-22net: ipc_router: Remove including unused header fileKarthikeyan Ramasubramanian
qmi_encdec.h header file is no longer required in IPC Router. Remove including that header file. Signed-off-by: Karthikeyan Ramasubramanian <kramasub@codeaurora.org>
2016-03-22net: ipc_router: Add snapshot of IPC RouterKarthikeyan Ramasubramanian
This snapshot is taken as of msm-3.18 commit e70ad0cd (Promotion of kernel.lnx.3.18-151201.) Signed-off-by: Karthikeyan Ramasubramanian <kramasub@codeaurora.org>
2016-03-22ipv6: generate random IID only for temporary addresses on RAWIP devicesHarout Hedeshian
RAWIP devices require the device IID to be used for permanent addresses only, and random IIDs to be generated for temporary addresses. Legacy user-space applications rely on this behavior CRs-Fixed: 860791 Change-Id: I007bdf8bcfdce687ad31612fed9d9c769321edb9 Signed-off-by: Harout Hedeshian <harouth@codeaurora.org>
2016-03-22msm_rmnet: merge support for RAWIP msm_rmnet deviceAbhijeet Dharmapurikar
Add to support for msm_rmnet device using ARPHRD_RAWIP. Change-Id: Ie1e5433f440b26b644cccb18083ef325129f7942 Acked-by: Andrew Richardson <randrew@qualcomm.com> Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
2016-03-22net: rmnet_data: Remove the NETIF_F_IPV6_UDP_CSUM device featureSubash Abhinov Kasiviswanathan
Commit 32dce968dd987ad ("ipv6: Allow for partial checksums on non-ufo packets) adds support for checksum offload in hardware for single UDP packets. As a result, the custom NETIF_F_IPV6_UDP_CSUM feature is no longer needed. Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
2016-03-22net: Change the current NAPI context to use latest APISubash Abhinov Kasiviswanathan
Commit 47405a253da4d8c ("percpu: Remove __this_cpu_ptr") and commit 6c51ec4d18d24b2 ("percpu: remove __get_cpu_var and __raw_get_cpu_var macros") removed __this_cpu_ptr which is needed to access current NAPI. Use this_cpu_ptr instead. Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
2016-03-22net: Add the get current NAPI context APISubash Abhinov Kasiviswanathan
Commit 69235aa80090 ("net: Remove the get current NAPI context API") removed the definition of get_current_napi_context() as rmnet_data was no longer using it. However, the rmnet_data change to use its NAPI in multiple contexts was prone to race in hotplug scenarios. Add back get_current_napi_context() and current_napi to the softnet_data struct CRs-Fixed: 966095 Change-Id: I7cf1c5e39a5ccbd7a74a096b11efd179a4d0d034 Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org> [subashab@codeaurora.org: resolve trivial merge conflicts] Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
2016-03-22net: sched: Schedule PRIO qdisc when flow control releasedTianyi Gou
The PRIO qdisc supports flow control, such that packet dequeue can be disabled based on boolean flag 'enable_flow'. When flow is re-enabled, the latency for new packets arriving at network driver is high. To reduce the delay in scheduling packets, the qdisc will now invoke __netif_schedule() to expedite dequeue. This significantly reduces the latency of packets arriving at network driver. Change-Id: Ic5fe3faf86f177300d3018b9f60974ba3811641c CRs-Fixed: 355156 Acked-by: Jimi Shah <jimis@qualcomm.com> Signed-off-by: Tianyi Gou <tgou@codeaurora.org>
2016-03-22net: tc_qdisc_flow_control returning qdisc sizeHarout Hedeshian
Changed the tc_qdisc_flow_control API to return the size of the qdisc in order to be able to collect data on the size of the qdisc before doing flow control operations. This is required to effectively diagnose the state of the queues when debugging flow control. CRs-Fixed: 657414 Change-Id: I4aff2157410e1170de2d0791757ed2e12830a2db Acked-by: Sivan Reinstein <sivanr@qti.qualcomm.com> Signed-off-by: Harout Hedeshian <harouth@codeaurora.org> [subashab@codeaurora.org: resolve trivial merge conflicts] Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
2016-03-22net_sched: Add flow control support to prio qdiscTianyi Gou
Add enable_flow flag to the prio qdisc. Packet flow is enabled by default, but can be disabled from userspace (e.g. IPROUTE2 tc tool). This allows for suspending packet dequeue on a per-qdisc basis, which is needed to supprot Quality of Service (QOS) when using WWAN modem. Change-Id: I932f296be946f1acc3b00c7d8569bbb733d33622 Acked-by: Andrew Richardson <randrew@qualcomm.com> CRs-Fixed: 283471 Signed-off-by: Tianyi Gou <tgou@codeaurora.org>
2016-03-22net: sched: export an api to enable/disable flow on schTianyi Gou
Export a function from sch_api.c that will look up desired qdisc and call it's registered change function to enable/disable flow. Change-Id: I5b6dc7a6fd2b09b796c92b3770ba83423d19c864 CRs-Fixed: 355156 Acked-by: Jimi Shah <jimis@qualcomm.com> Signed-off-by: Tianyi Gou <tgou@codeaurora.org> [subashab@codeaurora.org: resolve trivial merge conflicts] Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
2016-03-22net: rmnet_data: Remove the NAPI context for rmnet_data devicesSubash Abhinov Kasiviswanathan
Commit 28207b510dca ("net: rmnet_data: Add NAPI context for rmnet_data devices") added a NAPI struct per rmnet_data device. This was to ensure that the NAPI struct is always available even if there was a hotplug. However, this seems to be leading to some races where the NAPI struct is accessed concurrently across cores. The race here is between napi_gro_receive on one core with napi_complete running on the other accessing the same NAPI struct. If napi_gro_receive runs slightly earlier, napi_complete would see that the napi->gro_list would be non NULL in __napi_complete even though it had cleared earlier and would lead to a BUG. If napi_complete runs slightly earlier, napi_gro_receive would dereference a NULL pointer even though it had assigned an skb to napi->gro_list. Fix this by using the per cpu backlog struct as the NAPI struct for queuing packets to GRO engine. Access across cores would not be a problem in case of hotplug as they would use core specific structures. CRs-Fixed: 966095 Change-Id: I831df5b93cc6ee77355f2e98af89efcffe825bd8 Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
2016-03-22rmnet_data : Changes to support Scatter Gather and GSO.Ravinder Konka
This patch enables hardware device features such as NETIF_F_SG NETIF_F_GSO NETIF_F_GSO_UDP_TUNNEL NETIF_F_GSO_UDP_TUNNEL_CSUM. This patch also ensures to skip padding(to align length to word boundaries) for outgoing non linear skbs. This patch also adds a new ioctl interface RMNET_IOCTL_GET_SG_SUPPORT to query the physical network devices for Scatter Gather support. Change-Id: I9788d75c249ab2dac5b598dad131c0692ed84e4d Acked-by: Abhishek Chauhan <abchauha@qti.qualcomm.com> Signed-off-by: Ravinder Konka <rkonka@codeaurora.org>
2016-03-22net: rmnet_data: Add RXCSUM capability to netdevicesSubash Abhinov Kasiviswanathan
Checksum offload is supported in MAPv3/v4. Add the device feature to indicate this support. Change-Id: I89caf6d9029cd483759404542681621909de70a3 Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
2016-03-22net: rmnet_data: Stop adding pad bytes for MAPv4 uplink packetsSubash Abhinov Kasiviswanathan
Hardware does not handle pad bytes in egress packets when uplink aggregation is not enabled. This is due to the translation support added on hardware for MAPv4. Change-Id: Ic246a4548561450035d5252221032d72eff44518 Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
2016-03-22net: rmnet_data: Add support for MAPv4 data formatSubash Abhinov Kasiviswanathan
Add the MAPv4 ingress and data format handlers. MAPv4 requires the checksum for uplink TCP and UDP packets to be 1's complemented before passing the packet onto the physical netdevice. This workaround is needed due to failures seen in hardware while processing translated packets. Change-Id: Ib79382fa7e8b2bd0c1adbe68b8de75f1602df10b Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
2016-03-22net: rmnet_data: Assign network_header instead of data in mac_headerSubash Abhinov Kasiviswanathan
Commit 1a37e412a0225fc ("net: Use 16bits for *_headers fields of struct skbuff") changes the data type of mac_header from pointer to __u16. As a result, it is invalid to assign data to mac_header in architectures where NET_SKBUFF_DATA_USES_OFFSET is 0. Change-Id: I97ce04e3747983839d3908ca8111fd588c8e43a2 Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
2016-03-22net: rmnet_data: Call the GRO handler for TCP packets onlySubash Abhinov Kasiviswanathan
While running a UDP test using gro handler, there was a slight increase in MIPS observed. This is because all UDP packets passed through napi_gro_receive need to be checked if it is an encapsulated UDP packet which could actually be coalesced and processed further. As of now, clients of rmnet_data do not support this and we can save MIPS on this by passing only TCP packets through the GRO handler. All non TCP packets will directly be passed directly to the network stack. This also helps us to avoid an atomic operation unnecessarily when GRO path is not exercised. There is 1% savings in MIPS observed when using a single stream UDP DL connection at 300Mbps. Change-Id: Ie601000de21afeacfca93f23117aeb0f7cefda98 Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
2016-03-22net: rmnet_data: Remove ip type check in deaggregate handlerSubash Abhinov Kasiviswanathan
This was originally added for debug and is no longer needed. Change-Id: I9780e86ff0db31eaa13f2470c19f1424db3311b8 Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
2016-03-22net: rmnet_data: Add NAPI context for rmnet_data devicesSubash Abhinov Kasiviswanathan
This is needed so that we can pass the virtual netdevice NAPI struct to napi_gro_receive rather than relying on the current CPU NAPI context which can cause issues due to CPU hotplug. Change-Id: I41977c3a3a51212aa2fe092427b0ca924045b477 Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
2016-03-22net: rmnet_data: process MAP commands only after frame deaggregationHarout Hedeshian
It is not guaranteed that MAP commands will be in their own frame. Some commands may be embedded in a large aggregated frame of datagrams. This patch forces MAP command processing to occur after the deaggregation routing. This has the side-effect of incurring a malloc/memcpy latency penalty for each MAP command. This also introduces a side-effect where every packet after de-aggregation will need to be inspected for the cmd bit. Change-Id: Icc5ad1e7d622a35883f858c2c132c9679f43c79e Signed-off-by: Harout Hedeshian <harouth@codeaurora.org>
2016-03-22net: rmnet_data: Handle info pointer from netdevice notifierSubash Abhinov Kasiviswanathan
Commit 351638e7deeed2e ("net: pass info struct via netdevice notifier") adds support for passing a custom struct rather than a net device. BUG: KASan: out of bounds on stack in rmnet_config_notify_cb+0x11c/0x728i at addr ffffffc01232fb48 Read of size 8 by task WifiStateMachin/2268 page:ffffffbb056ce3e8 count:0 mapcount:0 mapping: (null) index:0x2 flags: 0x0() page dumped because: kasan: bad access detected CPU: 2 PID: 2268 Comm: WifiStateMachin Tainted: G W O 3.18.0-g092b7e8-dirty #6 Hardware name: Qualcomm Technologies, Inc. MSM 8996 v2 + PMI8994 MTP (DT) Call trace: [<ffffffc000089c70>] dump_backtrace+0x0/0x1c4 [<ffffffc000089e44>] show_stack+0x10/0x1c [<ffffffc0010cae0c>] dump_stack+0x74/0xc8 [<ffffffc00020e360>] kasan_report_error+0x2ac/0x3d0 [<ffffffc00020e560>] kasan_report+0x34/0x40 [<ffffffc00020d520>] __asan_load8+0x84/0x90 [<ffffffc0010ba434>] rmnet_config_notify_cb+0x118/0x728 [<ffffffc0000d1858>] notifier_call_chain+0x68/0xb4 [<ffffffc0000d1940>] raw_notifier_call_chain+0x10/0x1c [<ffffffc000e2a39c>] call_netdevice_notifiers_info+0x60/0x74 [<ffffffc000e2a418>] call_netdevice_notifiers+0x68/0x84 [<ffffffc000e367c8>] netdev_run_todo+0x100/0x348 [<ffffffc000e4545c>] rtnl_unlock+0x8/0x14 [<ffffffc000e31a4c>] unregister_netdev+0x20/0x30 [<ffffffbffc02420c>] hdd_cleanup_adapter+0x88/0x9c [wlan] [<ffffffbffc026630>] hdd_close_all_adapters+0xc4/0x128 [wlan] [<ffffffbffc02a8d4>] hdd_wlan_exit+0x660/0x744 [wlan] [<ffffffbffc02c388>] __hdd_wlan_exit+0x104/0x138 [wlan] [<ffffffbffc284410>] hif_pci_remove+0x68/0x114 [wlan] [<ffffffc0007f45c8>] cnss_wlan_unregister_driver+0xa0/0x21c [<ffffffbffc286118>] hif_unregister_driver+0x14/0x20 [wlan] [<ffffffbffc2a0288>] hdd_module_exit+0x1b4/0x218 [wlan] [<ffffffc00014f804>] SyS_delete_module+0x1f4/0x290 Memory state around the buggy address: ffffffc01232fa00: f1 f1 00 f4 f4 f4 f3 f3 f3 f3 00 00 00 00 00 00 ffffffc01232fa80: 00 00 00 00 00 00 00 00 00 00 f1 f1 f1 f1 00 f4 >ffffffc01232fb00: f4 f4 f2 f2 f2 f2 00 f4 f4 f4 f2 f2 f2 f2 00 00 ^ ffffffc01232fb80: 00 00 00 00 00 00 f3 f3 f3 f3 00 00 00 00 00 00 ffffffc01232fc00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ================================================================== Update the netdevice callback to handle this change. Also remove a redundant check for associated devices. CRs-Fixed: 865889 Change-Id: I96461807631447aef84eb3eac906057e3ce6827c Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>