rx_buff_list_lock, hdd_roc_req_q_lock, lim_frame_register_lock.
Adding lock stats print upon spinlock & mutex destroy. Without
the destroy api invoked the lock stats are not printed.
Change-Id: I26cad72e3f55b9ff5f1383d617859ff2b30d74f7
CRs-Fixed: 1100552
Fix to avoid deinit of tso seg list and tso num seg list
during pdev detach if the lists are not initialized during
pdev post attach.
Currently, if htt_attach() fails as part of ol_txrx_post_pdev_attach(),
then it immediately returns from the function and not initializes
tso seg lists and during pdev_detach(), host tries to de-initialize
tso seg list and end up in a crash.
CRs-Fixed: 1113347
Change-Id: I91e077496a15a69edb9d41574f846bc3d1b73b31
Converged pdev_detach is responsible for freeing the context.
Legacy api needs to conform. Now the removal of the pdev from
the cds context needs to be done with the api that does not free
the context.
Change-Id: I4430a3bae1658e4e1accc457a572c67c9ce6f58f
CRs-Fixed: 2000089
Add support to unmap tso segment when host receives
ol_tx_comletion_handler for a particular tso segment.
Host unmap all the fragments of corresponding tso segment
except 0th fragment.
0th fragment of each tso segment now points to EIT header
which is common across all the segments. So 0th fragment cannot
be unmapped until host receives tx completion for last tso segment.
Also, now with introduction of tso, skb map-unmap is not required
anymore for tcp packets as host anyway does map-unmap of each
tso segment before sending it.
CRs-Fixed: 1106688
Change-Id: I572c7dcd2d29cb19b398e13e0fe7ce6f88ee1641
In case of intra-bss forwarding, tx-path consumes all the tx descriptors
and pause netif queues. As a result, there would be some left for stack
triggered packets such as ARP packets which leads to ref STA disconnection.
To avoid this, reserved a pool of descriptors(OL_TX_NON_FWD_RESERVE = 100)
for high priority packets such as ARP/EAPOL etc and drop the packets
to be forwarded in host itself.
CRs-Fixed: 1095203
Change-Id: I7d473118ef3d986f79aa5b7a47286235d7adcab4
After control path scheduler componentization CDS message queue
APIs are no longer used hence remove obsolete CDS mq APIs from CDS
module.
Change-Id: I7d83783d9fd126bb8b17a5c3292eac91c0966280
CRs-Fixed: 1114375
Race condiiton is observed as deregistration of 32 tx/rx packetdump
feature and packetdump callback call is happening at the same time
causing NULL pointer dereference.
Use local variable to store packetdump callback to avoid this race
condition.
Change-Id: Id4246d85e3816c0a3b8d0d0c1ef21e5ff053b608
CRs-Fixed: 1112126
Currently ol_txrx.c generates warnings when compiled with the GCC
-Wmissing-prototypes switch because it does not include a header file
which exports a prototype for the following functions:
ol_txrx_set_curchan()
ol_txrx_get_vdev_struct_mac_addr()
ol_txrx_get_pdev_from_vdev()
ol_txrx_print_level_set()
ol_txrx_fw_stats_cfg()
ol_txrx_aggr_cfg()
What is interesting about these functions is that they currently are
unused. An "issue report" has been opened for each of these functions
so that the proper disposition can be determined by the Data Path
team. As a WAR so that the -Wmissing-prototypes switch can be enabled
until such time as the issues are correctly resolved, enclose each
function in conditional compilation which will exclude the functions
from the build.
Change-Id: I6220c5ff2c6c3cd40ad33d13bc5c504c75c52018
CRs-Fixed: 1113082
We want to enable the compiler's -Wmissing-prototypes switch, but
there is existing code in ol_txrx.c which is generating warnings
because not all public APIs have prototypes defined. Define the
missing prototypes for all public functions, and make static all
functions which are only referenced internally to ol_txrx.c.
Change-Id: I0acb51d0d9b5f76ef9754ab9cdc0b9fa8fa70097
CRs-Fixed: 1113061
Currently ol_txrx.c generates warnings when compiled with the GCC
-Wmissing-prototypes switch because it does not include a header file
which exports a prototype for ol_txrx_soc_attach(). Currently the "dp
soc attach" APIs are defined in a strange manner, and there is not a
prototype which dp_main.c can include. So as a WAR define the
prototype internal to ol_txrx.c itself.
Of course the whole point of -Wmissing-prototypes is to prevent
mismatches between callers of an interface and the implementation of
an interface, and this WAR explicitly bypasses that protection. This
WAR should be superceded in the future by a proper registration
mechanism where the architecture-specific DP implementation attaches
to the Converged Data Path (CDP).
Change-Id: I5d090a6cd54be7808ffb9f542c135edcfe9d0b42
CRs-Fixed: 1110919
Fix to add TSO magic cookie and freelist flag to last tso element during
ol_tso_seg_list_init() to avoid any crash during WIFI OFF.
CRs-Fixed: 1111760
Change-Id: I4504a7f4e9ecfe99337a4f544bc2d3cc8a8c3a27
Add a field in qdf_tso_seg_t. This cookie helps to check
double memory free or memory corruption case.
When double mem free hits, it will result into QDF_BUG.
Change-Id: I3c60f2603bce23b47224ae9a5d88881c2fbb8e01
CRs-Fixed: 1102423
API cds_flush_cache_rx_queue() is added as part of propagation
from qcacld-2.0. This function does not belong in CDS but
instead belongs in TXRX because corresponding function in
qcacld-2.0 is tl_shim_flush_cache_rx_queue() which is a datapath
function.
CRs-Fixed: 1106306
Change-Id: I6ca10fa9ebb7ad7cdc0b54ff7ed2cc0595b7d82d
qcacld-2.0 to qcacld-3.0 propagation
In certain situation, allocated Tx buffer count could be an arbitrary
number, so not power of two. This could violate F/W ring buffer count
requirement. If allocated Tx buffer count is not power of two, round
down it to the nearest power of two.
The same change is also applicable for INI parameters IpaUcTxBufCount
and IpaUcRxIndRingCount.
Change-Id: I7c119886a669c79adbc7bd9b2c1c1d93de41cf72
CRs-Fixed: 973723
Add null check while accessing pdev and hif pointers from cds_get_context
API in OL layer.
CRs-Fixed: 1096535
Change-Id: I2e3e7e04f1dcc9248fe173b7cdfc8d8704d0d1d9
Use a flag fw_create_pending flag to compensate for the extra
peer reference count only once for the first peer map event. It
will avoid duplicate compensation of ref count and untimely peer
delete.
CRs-Fixed: 1092503
Change-Id: I8b32290ad1bc4a834a3edb68e25b212eee2951c1
qcacld-2.0 to qcacld-3.0 propagation
In MDM ap+ap case, sometimes kernel issues two skb but has same mem
address of skb head and driver tx desc id is stored in skb head, so the
first id will be overwrote by the second one. Will hit crash when handle
the tx_desc.
The solution is storing tx desc id in sk_buff to avoid the case that two
skb has same tx desc id.
Change-Id: I2186a06ad3ec929683292c4c052904a18427cc64
CRs-Fixed: 951208
Modified the ol_txrx_soc_attach function definition to accept scn
handle parameter which is useful for making function calls
necessary for multi-radio support.
Change-Id: I842d2f184923f019e086f5c6d9b758624a20c8ae
Sometimes TXRX_PRINT is taking more time to process as
some other printks' are already in progress. As this TXRX_PRINT is
inside spinlock, so when some other core is also competing for
this spinlock, that core keeps iterating in a loop. After some
time spinlock bug is triggered as it is suspected that this core
is locked on this spinlock.
To fix this, move the TXRX_PRINT outside spinlock so that the other
core don't have to wait to acquire spinlock due to this TXRX_PRINT.
CRs-Fixed: 1107213
Change-Id: Ie6f8a7c8f9731883c2440641b8b9542f9d40c4a9
Include missing header file to fix the undefined API compilation
error and removed unused variable.
CRs-Fixed: 1107859
Change-Id: I4dcf1b0bb19662ba2c1f3af197ca34b656be7d9a
We want to enable the compiler's -Wmissing-prototypes switch, but
there is existing code in ol_tx_queue.c which is generating warnings
because not all public APIs have prototypes defined. Define the
missing prototypes for:
ol_txrx_vdev_flush()
ol_txrx_vdev_pause()
ol_txrx_vdev_unpause()
ol_tx_throttle_set_level()
ol_tx_throttle_init_period()
In addition make the following private since they are now only called
internally to ol_tx_queue.c:
ol_tx_pdev_peer_bal_timer()
ol_tx_queue_log_alloc()
ol_tx_queue_display()
Change-Id: I4a3d767c650eefc39c3bf51ce102c8b5de391ec5
CRs-Fixed: 1104127
We want to enable the compiler's -Wmissing-prototypes switch, but
there is existing code which is generating warnings because not all
public APIs have prototypes defined. Define the missing prototype for
ol_txrx_flow_control_cb().
Change-Id: Ifb7fff891b237e6202cc96afd3ab2e21bc4f13aa
CRs-Fixed: 1104126
We want to enable the compiler's -Wmissing-prototypes switch, but
there is existing code in ol_tx.c which is generating warnings because
not all public APIs have prototypes defined. Define the missing
prototypes for:
ol_tx_send_ipa_data_frame()
ol_tx_non_std()
ol_txrx_mgmt_tx_cb_set()
ol_txrx_mgmt_send_ext()
In addition make the following private since they are now only called
internally to ol_tx.c:
ol_tx_non_std_ll()
ol_tx_non_std_hl()
Change-Id: I29f334de30ab492f2ef6c422352d11c059e40f1b
CRs-Fixed: 1104125
We want to enable the compiler's -Wmissing-prototypes switch, but
there is existing code in ol_cfg.c which is generating warnings
because not all public APIs have prototypes defined. Define the
missing prototypes for the following:
ol_pdev_cfg_attach()
ol_set_cfg_rx_fwd_disabled()
ol_set_cfg_packet_log_enabled()
Change-Id: I787d4d7954751cda2878229d1d8967e1c168f95c
CRs-Fixed: 1104124
Currently the qcacld-3.0 driver does not build cleanly when compiled
with the gcc -Wmissing-prototypes switch. One set of warnings is due
to the QCA_COMPUTE_TX_DELAY APIs not being exported properly. Address
the warnings by properly exporting these functions.
Change-Id: Ib0f8a43a4575caf5714709e7fab659aa0b6f3009
CRs-Fixed: 1103659
Currently the qcacld-3.0 driver does not build cleanly when compiled
with the gcc -Wmissing-prototypes switch. One set of warnings is due
to ol_tx_set_flow_control_parameters() not being exported properly.
Address the warnings by properly exporting this function.
Change-Id: Iec79c1684c74312fa121349c1d7f721666bf904a
CRs-Fixed: 1103127
We want to enable the compiler's -Wmissing-prototypes switch, but
there is existing code that is generating warnings. Fix all warnings
in core/dp/txrx.
Change-Id: Ib6ad0a6414456e2b4c6b881b94d716843cdf24cc
CRs-Fixed: 1091496
We want to enable the compiler's -Wmissing-prototypes switch, but
there is existing code that is generating warnings. Fix all warnings
in core/dp/htt.
Change-Id: I189ca782bdcae7d8d3a6f54acd1baf15f3f300f6
CRs-Fixed: 1091016
The following HTT debug functions are not being used:
htt_rx_print_rx_indication()
htt_rx_hash_dump_table()
Delete these obsolete functions.
Change-Id: I8f47cd9706749acdb55736edd1876813bb3177fb
CRs-Fixed: 1091016
Use QDF_BUG to create a crash dump when peer attach operation detects
that the peer already exists even after waiting for 500 ms. It will
detect failure to complete peer delete operation in firmware and
missing peer unmap events.
Crash dump is enabled only when compiled with PANIC_ON_BUG, otherwise
it will print a warning.
CRs-Fixed: 1075798
Change-Id: I0131f4f706bc76feb86894975ff9f3c30f873b9b
This reverts Change-Id I2aec7253511d2ca7b08ca77d858a46f9c01d4e9d
Adding support for dumping 32 tx/rx packets during connection
by reverting above change as "exceeding skb buffer size and
leading to crash" issue is resolved with this change.
Change-Id: I951355776461706bb52eeee0527819377e7b7857
CRs-Fixed: 1097280
In some cases, this TXRX_PRINT is taking more time to process as
some other printks' are already in progress. As this printk is
inside spinlock, so when some other core is also competiting for
this spinlock, that core keeps iterating in a loop. After some
time spinlock bug is triggered as it is suspected that this core
is locked on this spinlock.
This fix moves the TXRX_PRINT outside spinlock so that the other
core don't have to wait to acquire spinlock due to this printk.
Change-Id: Ie0fa7addd4f2a1272a4d5e287635b6a0f016ba97
CRs-Fixed: 1095406
Log rx frag/tkip mic error packet in packetlog as per
rx frag indication message from firmware.
Change-Id: I4670c070e5affc5bf5b9f5ded23721e464a45737
CRs-Fixed: 1074043
Fix a race condition where the HTT peer map event is received before
the peer object is allocated in the data path.
CRs-Fixed: 1089662
Change-Id: I3931e6dbae3ec3a68d446c245432549fa635a97e
Fix improper naming and exporting of dump_pkt() by:
1) adding ol_txrx prefix in the api
2) adding prototype of api to ol_txrx.h and removing the local
prototype for the api from core/dp/txrx/ol_tx_desc.c
CRs-Fixed: 1093667
Change-Id: I14e547223f8c96f10897aa6dc5c9781018a4d986
qcacld-2.0 to qcacld-3.0 propagation
Add sanity check for tx desc to avoid crash if firmware report the invalid
msdu id to the host.
Change-Id: I5a339e81f3de882b5f7cc42b0628ea4738141c58
CRs-Fixed: 1071620
Remove legacy apis call from out side of data path.
Replace legacy apis to cdp apis.
Introduce cdp apis wrappers.
dp module.
Change-Id: I345abb70b6ddd7f5768cea2d933e0023c5742b4a
CRs-fixed: 1075736
Make changes for per per Rx context LRO manager, this addresses
all parallel Rx concurrency issues. There by removes all the contention.
Change-Id: I3609bcdb67e0046fac5a22bba9cb6a5eb4bcbe84
CRs-Fixed: 1079320
qcacld-2.0 to qcacld-3.0 propagation
Fail to allocate local peer id when connecting the last 32th station in
AP+AP mode. The reason is the OL_TXRX_NUM_LOCAL_PEER_IDS is defined to 33,
but each AP's peer will occupy one ID. So the remainder are not enough,
change this macro to 34 will fix this issue.
Change-Id: Ie5b63b6885fd7f2d4f941b6ffad43cbac57040e5
CRs-Fixed: 1085367
This reverts Change-Id Icd08475c3f81aa182c902b8e8defbdb904c5509d
Above change was exceeding skb buffer size and leading to crash.
For now removing the support for dump Tx/Rx packets during connection.
Change-Id: I2aec7253511d2ca7b08ca77d858a46f9c01d4e9d
CRs-Fixed: 1083912
Fix 32 bit compilation issues due to improper shift operation.
Also make bitwise operations compatible with 32-bit.
CRs-Fixed: 1085499
Change-Id: Ifceefb52cfc5b89ca3e1eb0b428b34a5f7f792dc
qcacld-2.0 to qcacld-3.0 propagation
Add packet length check for HTT_T2H_MSG_TYPE_RX_FRAG_IND message.
Do not clone the RX frag buffer in the ol_rx_fraglist_insert, and all
buffer will be freed by ol_rx_frag_indication_handler or upper layer to
avoid double free issue.
Change-Id: I977ed9109a476a092dfb298386625a707bc98191
CRs-Fixed: 1039135
When firmware sends WMI_ROAM_REASON_HO_FAILED event to host,
it has already deleted the peer. Host should not send peer
and vdev cleanup commands to firmware.
Add disassoc_reason field to roamCmd to indicate that CSR wants to
disconnect because of ROAM_HO_FAIL. Copy that information to PE
session, send it to WMA using WMA_DELETE_BSS_HO_FAIL_REQ.
Add wma_delete_bss_ho_fail() to take care of driver state cleanup
without sending commands to firmware.
CRs-Fixed: 1083649
Change-Id: Icdd7571214ea5510c0cdbc44c69d6b5060f5892c
Recently the following change removed the only reference to function
ol_txrx_ipa_uc_fw_op_event_handler():
Change-Id Iae45c059006592293ea61d04be89b1477daae514
"qcacld-3.0: Fix HTT_T2H_MSG_TYPE_WDI_IPA_OP_RESPONSE handler"
Since the function is now obsolete, remove it.
Change-Id: I10d8ee7ef9a97d1eb5283e08c786826005fbd335
CRs-Fixed: 1075151