summaryrefslogtreecommitdiff
path: root/hif/src (follow)
Commit message (Collapse)AuthorAge
* qcacmn: add 'const' for 'section' in struct TGT_REG_TABLEYu Wang2017-03-24
| | | | | | | | | | | | | | | | To fix the following compilation error: warning: assignment discards ‘const’ qualifier from pointer target type, at: reg_table->section = ar6320v2_reg_table in ol_fw.c. It's because the register table is a const array, while reg_table->section does not point to a const. So add 'const' for 'section'. Change-Id: Idfef358817241e73d660d2730b74c2ca88e23af1 CRs-Fixed: 2017786
* qcacmn: Remove unnecessary QDF_ASSERT to avoid watchdog barkHimanshu Agarwal2017-03-23
| | | | | | | | | | | | | | | | | | When bufs needed to post in a CE ring reaches (max no. of entries - 1), assert happens to print the dumpstack in kmsg. Once this condition is reached, a work is scheduled to recover CE from this OOM condition which tries to post buffers in CE. If buf posting fails again, assert will happen and work will be scheduled again. So, if system is in low memory situation, then buf allocation and posting will fail leading to assert and work scheduling again and again in a cycle. Due to these continuous dumpstacks in kmsg as a result of QDF_ASSERT(), watchdog bark is happening. Remove QDF_ASSERT from hif_post_recv_buffers_failure() as suffcient prints and history is present to indicate the situation and so there is no need of any kind of dumpstack in kmsg. Change-Id: Ib8bafb9a9fe45c62a15c45fa8a610da2074e058c CRs-Fixed: 2021793
* qcacmn: HIF: Reduce the log spam in KmsgPoddar, Siddarth2017-03-21
| | | | | | | Move the logs to appropriate log levels to reduce the log spam in kmsg. Change-Id: I3b759274d8e4bad13f4390fd906ec487ad5cbd1e CRs-Fixed: 2019280
* qcacmn: Allocate hif_napi_info structures dynamicallyHouston Hoffman2017-03-20
| | | | | | | | | | | The hif_napi_info structure has a dummy netdev included. The dummy netdev is large. Avoiding unneeded allocation save 30kb of memory. Dynamically allocating the hif_napi_info structures also reduces the size of the contiguous memory needed for the parent structure. Change-Id: I58044e5b1d0a834b3b6d17f66d6f4b2462873f2a CRs-Fixed: 2016355
* qcacmn: Update sw index from hw for ce_sendlist_send on data path cesHouston Hoffman2017-03-20
| | | | | | | | Fix CE full error when only legacy hif_send_head api is used on a ce configured to use the fastpath logic. Change-Id: I59530a0e5ff8b62a1b97007dcd959daa03025785 CRs-Fixed: 2018893
* qcacmn: stub core_ctl_set_boost if not definedMohit Khanna2017-03-15
| | | | | | | | | | | | | In hif_napi.c, we are calling this kernel API core_ctl_set_boost. This API is only present in the kernel if the feature CONFIG_SCHED_CORE_CTL is present. In case the feature is not present in the kernel, it will result in a compilation error. Create a new internal API hif_napi_core_ctl_set_boost as a wrapper around the kernel API. The new API is stubbed in case the kernel feature is not present. Change-Id: Ia52f1110304816670efe3480da3aa78d7b2ecb9e CRs-Fixed: 2018089
* qcacmn: HIF: Reduce the log spam in kmsgSrinivas Girigowda2017-03-10
| | | | | | | Move the logs to appropriate log levels to reduce the log spam in kmsg. Change-Id: I29121bb4cc1272aa1fb88183914530dd21c64272 CRs-Fixed: 2017427
* qcacmn: Increase wmi ce rx ring sizeHouston Hoffman2017-03-08
| | | | | | | | | | In one log the rx ring is depleted in 2.4 seconds durring a prolonged period of memory contention. Double the rx ring size to allow 5 seconds before the wmi ce is oom. Change-Id: I2e9a6caeee10f317bd3d70b770fcae3ad2d96623 CRs-Fixed: 2015778
* qcacmn: Support oom recovery for rx ce'sHouston Hoffman2017-03-08
| | | | | | | | | | | | In oom condition, when an rx ce is oom, the ce would deadlock as the hw couldn't copy any messages (due to the oom) and the sw wouldn't initiate a pipe refill without a new message. When this happens submit a work to a workqueue to try and kickstart the cycle by allocating an nbuf and posting it to the ce. Change-Id: I047818145dbe230fefc447b6b034705f9b87ca70 CRs-Fixed: 2015778
* qcacmn: Add "static" to fix compilation error for HL busYingying Tang2017-02-28
| | | | | | | | Add "static" before some functions which only be used in 1 file and remove some unused functions to resolve compilation error. Change-Id: I5bf80fe2e124bf4258c9bfdc997a5423773ca474 CRs-Fixed: 2010227
* qcacmn: Improve recv buffer refill failure loggingHouston Hoffman2017-02-27
| | | | | | | | | Make it easier to identify when nbuf allocation starvation in hif is the root cause for a crash, by adding events to the hif_ce_desc_history buffer. Change-Id: Id3b919f17ee79770f5fa81b389f9a28a0670cfa2 CRs-Fixed: 2011015
* qcacmn: Remove thread unsafe ce_debug varialbesHouston Hoffman2017-02-27
| | | | | | | | The use of these static variables could lead to an skb double free. Change-Id: I42ebff2c5a713350922e21f4d581c3b8935507e3 CRs-Fixed: 2011773
* qcacmn: Increase the ring size of the IPA ringHouston Hoffman2017-02-27
| | | | | | | | | IPA team wants to allocate more buffers and the IPA ring should be able to hold them all since ipa doesn't have an error path when the copy engine is full. Change-Id: I30b8970ce59c7eb4e6a38170a56d6e00e88737fc CRs-Fixed: 2011766
* qcacmn: optimize the usage of runtime PM spinlockSarada Prasanna Garnayak2017-02-15
| | | | | | | | | | | | | | | | | Analyze the critical section of the runtime PM feature and replace the spin_lock_irqsave with spin_lock_bh. Disabling the IRQ and usage of spinlock for runtime PM debugging, logging and warning feature Is not required, remove the usage of spinlock from this context. The runtime PM APIs which is used for the prevent/allow runtime PM suspend /resume can be use spin_lock_bh instead of spin_lock_irqsave. For the runtime PM APIs add check point to identify the IRQ context, If the runtime PM APIs calling from IRQ context report WARN_ON for debugging purpose. CRs-Fixed: 1112447 Change-Id: If06970c6ac610a0128344e8c25a9cdd57b2542a3
* qcacmn: fix bus-open-failure for BUS_TYPE_SDIOYu Wang2017-02-14
| | | | | | | | | | Failed to open sdio bus for HL target, due to missing of 'break' in 'switch' case. Add 'break' for QDF_BUS_TYPE_SDIO Change-Id: I0d43a61c89828f76223c9f95f4de41a76381c7bb CRs-Fixed: 2004349
* qcacmn: Do IPA version based DMA coherent mask settingHimanshu Agarwal2017-02-14
| | | | | | | | | | | | | | In case of IPA hw version less than 3.0, only 32 bit DMA address can be handled as it is only 32 bit compliant. Because of this, setting DMA coherent mask of 37 when IPA hw version is less than 3.0, crash is happening. Do IPA version based DMA coherent mask setting such that when IPA hw version is less than 3.0, set DMA coherent mask as 32 only. Change-Id: I8dec7da47766985ab0590f885b29f345f153cd08 CRs-Fixed: 1114605
* qcacmn: Block non-wmi traffic in ce layer durring suspendHouston Hoffman2017-02-12
| | | | | | | | | | Upper layers are failing to block disallowed traffic durring suspend. Hif can enqueue the messages on the ce rings without letting hardware know they are there. When fw is ready to recieve non wmi packets, hif can inform hw of the queued packets. Change-Id: I32810d9548416021c1da4f48a4ac539f75f1d907 CRs-Fixed: 2003582
* qcacmn: Skip checking for NAPI in hif_lro_flush_cb_deregister()Manjunathappa Prakash2017-02-08
| | | | | | | | | The teardown procedure marks the NAPI mode to deactivated state before LRO manager is de-registed, so de-register LRO without checking for NAPI state. Above is the case during SSR procedure. Change-Id: Ib4ec89a2bf784a760ec67eeff7054a8733ca3cb2 CRs-Fixed: 2003475
* qcacmn: Do not copy buffer to user-space if diag read failsGovind Singh2017-02-07
| | | | | | | | | | | ATH diag procfs read is copying read_buffer to user space unconditionally, causing kernel heap information leak of uninitialized read_buffer if hif diag read fails. Do not copy buffer to user space if diag read fails to avoid information leak to user space. Change-Id: I5e07cad4f90e5e9b3c461268b8fa3635c3128b9f CRs-Fixed: 1104731
* qcacmn: Change semantics of Runtime Lock APIsPrashanth Bhatta2017-01-30
| | | | | | | | | | | | | | | Runtime PM lock init API right now returns pointer to a context but this would cause confusion to the caller if feature is not defined and dummy function return NULL as caller can't find real failure versus dummy function returning because feature not being enabled. Fix declaring a data structure in QDF layer that caller can use but it hides the internal details of HIF implementation for Runtime PM locks. CRs-fixed: 1116509 Change-Id: I4dcba604e803faa0e14fac6403610391895e382e
* qcacmn: modify HIF NAPI blacklist mechanismMohit Khanna2017-01-26
| | | | | | | | | | | | The existing HIF NAPI blacklist feature uses irq_blacklist_on(off) APIs which make a call to the userspace irq_balancer. Replace these APIs with kernel API irq_modify_status to mark (or unmark) the individual interrupts with IRQ_NO_BALANCING flag. Once marked, the msm-irq-balancer will not be able to move the CE interrupts around. Change-Id: I4d780fa8780b42a668006e13a49eb1299304e633 CRs-Fixed: 1114161
* qcacmn: Fix header include bugSrinivas Girigowda2017-01-25
| | | | | | | | | | | | | | This is a qcacld-2.0 to qcacld-3.0 propagation. In file ar9888def.h error: '_AR9888DEF_H_' is used as a header guard here, followed by #define of a different macro [-Werror,-Wheader-guard] ar9888def.h: note: 'AR9888__AR9888DEF_H_' is defined here; did you mean '_AR9888DEF_H_'? Fix the header file include guard properly. Change-Id: Ic05a829eadbf974598370c494a5cff10201ec600 CRs-Fixed: 1091052
* qcacmn: Remove redundant qdf_mem_zero callsyeshwanth sriram guntuka2017-01-25
| | | | | | | | | | | | qdf_mem_zero is called after qdf_mem_malloc to set the memory value to zero. qdf_mem_malloc uses kzalloc internally to allocate memory which sets memory to zero. Removing redundant qdf_mem_zero which are called after qdf_mem_malloc. Change-Id: I8e1faf6099f8fbc869c8af42b7511a13e66e6bed CRs-Fixed: 1079697
* qcacmn: balance spin_lock_create (lro)Houston Hoffman2017-01-23
| | | | | | | | | | | Adding lock stats print upon spinlock & mutex destroy. The spinlock destroy of the lro unloading lock in the napi context did not match the create in location. When a station adapter goes down and is brought back up, the mismatch appears. Change-Id: I137e6ffce3fb23f32a085b9fa36b065449a6d8a1 CRs-Fixed: 1111956
* qcacmn: Don't flush irq_enable register writeHouston Hoffman2017-01-23
| | | | | | | | | | | The Common subsystem shutdown is allowed after the irq_enable register is written. A race condition in host (multiple other interrupts firing on the same core). Can delay the register read and allow the common sub system to be shutdown before the read. The read would then cause an SNOC error as the register is unclocked. Change-Id: Icb90c185eabcbd63b28b02bdf5c1de2d06d3620e CRs-Fixed: 1108494
* qcacmn: Remove unnecessary NULL check before dereferencedYun Park2017-01-18
| | | | | | | | | Pointer is dereferenced after it was positively checked for NULL. Remove redundant null check for scn handle from hif_ce_get_lro_ctx API as caller of this api already has necessary null check. Change-Id: I9e46c8151dec3ff9d36292d7d306f8bf3ae61b7d CRs-Fixed: 1111505
* qcacmn: Runtime PM packets tagging after wow suspendSarada Prasanna Garnayak2017-01-12
| | | | | | | | | | | | | | | | | | | | | | | qcacld-2.0 to qcacmn propagation. Don't Tag Non-WoW packets as Runtime PM packets after wow suspend. Some WMI Commands can be send in Runtime PM context and MC thread context. Packets coming via MC Thread Context can be tagged as Runtime PM packets when runtime pm in progress. Packets should be tagged in the same caller context to avoid any race condition. Being stability issue, addressing this issue by not tagging any non-wow commands as runtime pm after wow suspend. This will ensure all the non-wow packets coming after wow_suspend flag is set as non runtime pm packets and will trigger a runtime resume. Git-commit: 4a396d80c5cc2ded75098c61426521b9b2762c17 Git-commit: 2ee4bf4791cc5db30ec03eceaf591367deffe39a CRs-Fixed: 1106496 Change-Id: I4e55733ad8403581aca0b49ce9442fc5591335c0
* qcacmn: Add new HW version for QCA9379Yingying Tang2017-01-12
| | | | | | | | | | Propagate from qcacld-2.0 to qcacmn Currently there is no QCA9379 1.1 infomation in wlan device id table. Add QCA9379 version 1.1 into device id table. CRs-Fixed: 1048598 Change-Id: Ie4b7d3e31db2f2b3cad116bb0e993f9f55a7d322
* qcacmn: remove pci_set_drvdataHouston Hoffman2017-01-04
| | | | | | | | pci_set_drvdata stores a pointer in the pci driver device structure. Since we do not use this pointer any more we do not need to set it. Change-Id: I36452aaf2a4c218a3d3891626406e4693d968bba CRs-Fixed: 1071958
* qcacmn: balance spin_lock_create (ce)Houston Hoffman2017-01-04
| | | | | | | | Adding lock stats print upon spinlock & mutex destroy. Without the destroy api invoked the lock stats are not printed. Change-Id: I50b4db8412e336fcc22514be3ae4aaa2188415a8 CRs-Fixed: 1100505
* qcacmn: balance spin_lock_create (napi)Houston Hoffman2017-01-04
| | | | | | | | Adding lock stats print upon spinlock & mutex destroy. Without the destroy api invoked the lock stats are not printed. Change-Id: Id3c432e1f6982ea47bdf1de5c15f1a3568df4eb9 CRs-Fixed: 1100505
* qcacmn: Fix to avoid skb buff leak when NBUF alloc failPoddar, Siddarth2017-01-04
| | | | | | | | | | | | | propagation from qcacld-2.0 to qcacmn. If host fail to allocate receive packet bundle buffer it will return no memory without freeing receive pkt queue. Fix is to free the receive pkt queue before returning from message handler. Also, fill the rx free list during driver load time itself with the pre allocated memory so that Tx won’t take away this memory. Change-Id: I4bf2aeb7bc85cc68cfa1314e6dbf5057665ba7ce CRs-Fixed: 1079623
* qcacmn: Harden NAPI event handlerOrhan K AKYILDIZ2016-12-16
| | | | | | | | | Make sure that NAPI event handler would handle events only after it has been initialized. Check init flag before procesing the event and emit a warning and return an error to the caller. Change-Id: I9d2b84560ee2363ecf2a570dbef0275dfb87786a CRs-Fixed: 1091678
* qcacmn: Make interrupt blacklisting robustOrhan K AKYILDIZ2016-12-07
| | | | | | | | | | | | | | | | | | | Interrupt blacklisting in kernel 4.4 happens through a user-space entity. The kernel APIs irq_blacklist_on(off) essentially send a message to the user space service(irq balancer) and therefore are not synchronous and do not guarantee that blacklisting has actually taken effect. It will be granted with some latency (userspace entity's processing delay). Make blacklisting more robust by: a) move irq (if it has been moved around after blacklist_on call has been made and not yet honored) to the designated CPU on IRQ reception b) stop cpu_isolation in blacklisting mode boost API c) modify NAPI stats to indicate blacklisting mode Change-Id: I13e478adbed1a6a66d320f69acdb012bee3dc1e8 CRs-Fixed: 1093770
* qcacmn: Add support for QCA9379 SDIO & USB boardsYingying Tang2016-12-07
| | | | | | | | | Propagate from qcacld-2.0 to qcacmn This change add the corresponding support for QCA9379 which has new chip ID. Change-Id: I252b75d9ae7b760a6a8f6931b4db753f50d3baba CRs-Fixed: 990755
* qcacmn: Remove cds from napi hot_plug_notifier functionalityHouston Hoffman2016-11-28
| | | | | | | | Instead of using cds to get the hif context in the notifier callback rely on the context_of semantics to traverse back to the hif context. Change-Id: I7d57f9dcf8c09836c34ce16a4acaa8c3bc1624b9 CRs-Fixed: 1092842
* qcacmn: Stringify HW_VERSION value when HW UNKNOWNHouston Hoffman2016-11-28
| | | | | | | | | When new hardware is not found in the lookup table for human readable hardware names, print the hex value of the hardware version info. Change-Id: If821ba04c83f2d9b54587379d92bdc1918d7a094 CRs-Fixed: 1092353
* qcacmn: Add WCN3990_V2 to hw namesHouston Hoffman2016-11-28
| | | | | | | Print out hw name WCN3990_V2.2 when soc version is 0x40010001. Change-Id: I78c8cf5cf8917174fe95b8a8eefe608363a49e49 CRs-Fixed: 1092353
* qcacmn: Fix -Wmissing-prototypes in HIFJeff Johnson2016-11-18
| | | | | | | | | We want to enable the compiler's -Wmissing-prototypes switch, but there is existing code that is generating warnings. Fix all warnings in hif. Change-Id: I342360f48f73a1e5ef42ebc4ca38366669eea0e0 CRs-Fixed: 1091702
* qcacmn: Add support for multiple instances of the host driverSamuel Ahn2016-11-18
| | | | | | | | | | | | | | Propagation from qcacld-2.0 to qca-wifi-host-cmn. If the module name is changed to something other than wlan in Makefile or Kbuild, then MULTI_IF_NAME is defined to be the module name. When MULTI_IF_NAME is defined, the names for the config files, log files, and firmware files are prepended or appended with MULTI_IF_NAME. This prevents file name collisions allowing multiple instances of this driver to be loaded with different module names. Change-Id: Id880c5fe423eb0b2a2c01677d8fa7c4a784c74df CRs-Fixed: 946520
* qcacmn: correct napi bucket calculationMohit Khanna2016-11-18
| | | | | | | | | | NAPI bucket calculation was resulting in bucket number which was out of bounds for the number of buckets. Calculate bucket index correctly and check for out of bound condition. CRs-Fixed: 1091483 Change-Id: Ieb81b2eeec546a6128c6b878db4c65ccb8b62bda
* qcacmn: Adjust buffer size for fw dumpKai Liu2016-11-18
| | | | | | | | | | qcacld-2.0 to qcacmn propagation In platform using usb interface, when fw assert, buffer alloc for fw dump is smaller than the actual fw dump size, so adjust the buffer size. Change-Id: I4706c57e8c1b684bfe164b23fc0902c376d4d80a CRs-Fixed: 1043805
* qcacmn: Use sched_clock instead of jiffies to calc yield timeMohit Khanna2016-11-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current implementation uses jiffies to calculate the yield time and yields after 2 jiffies. The problem with this is that we end up yielding anywhere between 1 - 2 jiffies as each jiffies are incremented by 10 ms intervals. Sometimes we are taking more than 2 jiffies to yield. This prevents the update of deferrable_timer if its being done at the same CPU where hif_napi_poll is executing. This may result in the CPU frequencies not being updated resulting in some fluctuations. Use sched_clock kernel API to calculate the precise yield time. Reduce the yield time to 10ms. Some stats here - How many times did we have to yield because of time (%)0.670391061 Total Number of completes 1790 Total Number of complete 0 12 - When we yielded, how much did we exceed the time limit(10ms) by (ms) Average 1.327444 Max 3.381667 Min 0.037709 - How many HTT Messages did we process when we had to yield Average 22.41667 Max 33 Min 18 - How much time did we take when we had to yield 10ms + delta above - How much time did we take when we did not yield (ms) Average 0.907641 Max 8.649 Min 0 - How many HTT Messages did we process when we did not have to yield Average 2.193476 Max 24 Min 1 Change-Id: I0d42c716ab8941b1de22a456447797c9ba5475c8 CRs-Fixed: 1089902
* qcacmn: Add NAPI statistics to dumpstatsMohit Khanna2016-11-16
| | | | | | | | | | | Currently NAPI stats are retrieved as a part of iwpriv getStats command. The buffer available for this command is limited and NAPI stats get trucncated. Add a new dumpStats parameter (9) to dump NAPI stats. Change-Id: Iaf52a3dcecac2f7b24fde2f8220fbfddc767965b CRs-Fixed: 1076563
* qcacmn: Disable NAPI before disabling the irqOrhan K AKYILDIZ2016-11-15
| | | | | | | | | Before disabling the interrupts, disable NAPI so that the softirq cannot be [re-]scheduled. Remove the affinity notification on the irq. Change-Id: I64061d2b4f2e1e6eff67416133b928faa9c0dd4c CRs-Fixed: 1089166
* qcacmn: Return error in hif start for allocation failuresHouston Hoffman2016-11-15
| | | | | | | | | | This allocation failure will likely lead to a copy engine stall and subsequent need to restart the subsystem. Abort the module start immediately to avoid a system crash or delayed subsystem restart. Change-Id: Ibe7b348dee39d35e3e7f767f17f0114d888a30f8 CRs-Fixed: 1088725
* qcacmn: Disable interrupt processing before stopping the busHouston Hoffman2016-11-15
| | | | | | | | | The interrupt free code is protected by a flag. In the normal case the interrupts are freed before the bus is stopped. Make all cases free the interrupt before hif_stop. Change-Id: I1e1dfae9ba388733eb13f2cdf90aa85b3db35b0d CRs-fixed: 1089935
* qcacmn: Free ce fastpath buffer even if handler not installedHouston Hoffman2016-11-15
| | | | | | | | | Durring a driver load failure, the fastpath buffer is allocated before the fastpath handler is installed. Change the free logic to match the allocation logic. Change-Id: Ib9731b3d06d7ac728e0f23bb32e2b74c35b9a8de CRs-Fixed: 1089933
* qcacmn: Add changes for per NAPI or per Rx CE LRO managerManjunathappa Prakash2016-11-13
| | | | | | | | Make changes for per per Rx context LRO manager, this addresses all parallel Rx concurrency issues. There by removes all the contention. Change-Id: I90604ffdf7b7fd930eee636426a4c7fc9b92c7d7 CRs-Fixed: 1079320
* qcacmn: Fix compilation error for msmcobalt_32Poddar, Siddarth2016-11-04
| | | | | | | | | In hnc_link_clusters function, few local variables left uninitialized. Initialize them with zero as they will get overwritten during the processing of the cluster for first time. CRs-Fixed: 1085510 Change-Id: I04af509bdc1a63eeb215c5ec854b55a8bc45aba9