commit 6a417d903b9add7c8ab2b71ac11c85c46671e020 Author: Steve Wise Date: Thu Jul 31 11:25:22 2014 -0500 Spin release 1.3.5. Signed-off-by: Steve Wise commit 52ecbea1b908d3b449022e2d75ebe0ca3885bcf2 Author: Steve Wise Date: Thu Jul 31 11:14:05 2014 -0500 libcxb4: use wc_wmb() instead of wmb(). The user mode RDMA macro for wmb() is not sufficient to provide the fencing needed. This was causing corrupted packets when running multiple WD-UDP sockperf processes. The correct "sfence" instruction is provided with the wc_wmb() macro. See /usr/include/infiniband/arch.h. Note: The kernel implementation of wmb() is sufficient. This is a libcxgb4 issue only... Signed-off-by: Steve Wise commit 242c29715372bf6999aa343a5aad5654da3ecf3a Author: Steve Wise Date: Wed Jun 18 10:17:00 2014 -0500 Spin release 1.3.4 Signed-off-by: Steve Wise commit 2d54f4c5604cae24caac493aaf6d8b0907ac2ed2 Author: Steve Wise Date: Wed Jun 18 10:16:52 2014 -0500 Support the query_qp() verb Signed-off-by: Steve Wise commit f80159d12148774646ad65d03cd070f6d5f86eb4 Author: Steve Wise Date: Mon Jun 9 15:20:47 2014 -0500 Account for the full qid range. The total qid range is should really be based on the max_cq attribute. Signed-off-by: Steve Wise commit 5aaf5e7277a1c12964aac11a4cff94520717e805 Author: Yann Droneaud Date: Mon May 5 12:59:23 2014 -0500 kernel abi: adds explicit padding in struct c4iw_alloc_ucontext_resp i386 ABI disagree with most other ABIs regarding alignment of data type larger than 4 bytes: on most ABIs a padding must be added at end of the structures, while it is not required on i386. Such ABI disagreement will make an x86_64 kernel try to write past the struct c4iw_alloc_ucontext_resp buffer provided by an i386 userspace binary. As struct c4iw_alloc_ucontext_resp is likely on stack, see function c4iw_alloc_context(), side effects are expected. On kernel side, this structure was modified for kernel v3.15-rc1 by following commit: Commit 05eb23893c2cf9502a9cec0c32e7f1d1ed2895c8 Author: Steve Wise Date: Fri Mar 14 21:52:08 2014 +0530 cxgb4/iw_cxgb4: Doorbell Drop Avoidance Bug Fixes If boundary check is implemented on kernel side, the x86_64 kernel will instead refuse to write past the i386 userspace provided buffer and the uverbs will fail. To fix these issues, this patch adds an explicit padding at end of structure so that i386 and others ABI share the same structure layout. This patch makes c4iw_alloc_context() check for a value in the padding field to detect newer kernel using the field for a future purpose (only activated in debug). With this patch, libcxgb4 will work against older kernel and newer patched kernel. Link: http://marc.info/?i=cover.1399216475.git.ydroneaud@opteya.com Signed-off-by: Yann Droneaud Signed-off-by: Steve Wise commit 5c65bf17913949368db8802656dc7dbc291271ed Author: Yann Droneaud Date: Mon May 5 12:59:23 2014 -0500 kernel abi: adds explicit padding in struct c4iw_create_cq_resp i386 ABI disagree with most other ABIs regarding alignment of data type larger than 4 bytes: on most ABIs a padding must be added at end of the structures, while it is not required on i386. Such ABI disagreement will make an x86_64 kernel try to write past the struct c4iw_create_cq_resp buffer provided by an i386 userspace binary. As struct c4iw_create_cq_resp is likely on stack, see function c4iw_create_cq(), side effects are expected. On kernel side, this structure was added for kernel v2.6.35-rc1 by following commit. Commit cfdda9d764362ab77b11a410bb928400e6520d57 Author: Steve Wise Date: Wed Apr 21 15:30:06 2010 -0700 RDMA/cxgb4: Add driver for Chelsio T4 RNIC If boundary check is implemented on kernel side, the x86_64 kernel will refuse to write past the i386 userspace provided buffer and the uverbs will fail. To fix these issues, this patch adds an explicit padding at end of structure so that i386 and others ABI share the same structure layout. This patch makes c4iw_create_cq() check for a value in the padding field to detect newer kernel using the field for a future purpose (only activated in debug). With this patch, libcxgb4 will work against older kernel and newer patched kernel. Link: http://marc.info/?i=cover.1399216475.git.ydroneaud@opteya.com Signed-off-by: Yann Droneaud Signed-off-by: Steve Wise commit 4f334446f63e3a34006f504f7c89075423c412b4 Author: Steve Wise Date: Tue Mar 11 11:47:19 2014 -0500 Spin release 1.3.3. Signed-off-by: Steve Wise commit 98cea522707232b99ff5c07dd9f57937aa8a7d91 Author: Steve Wise Date: Tue Mar 11 11:44:16 2014 -0500 Zero the status_page_size before calling get_context. Signed-off-by: Steve Wise commit a373e16a94524e20492301b0e97f53930133739b Author: Steve Wise Date: Tue Feb 18 12:07:19 2014 -0600 Spin release 1.3.2. Signed-off-by: Steve Wise commit a2f25730971e8b76033e283f03e79ef4c5dbc4bc Author: Steve Wise Date: Tue Feb 18 11:29:50 2014 -0600 Fixed compilation error with debug enabled. Signed-off-by: Steve Wise commit f484e0f4c5a4cb249f86a050efd659be37a51204 Author: Steve Wise Date: Tue Feb 18 11:24:06 2014 -0600 Use V_PIDX_T5() for T5 devices in ring_db funcs. Signed-off-by: Steve Wise commit 32b74074808da51e5918295bfc63d347548478a0 Author: Steve Wise Date: Tue Feb 18 11:24:05 2014 -0600 Call wc_wmb() needed after DB writes. Need to do an sfence after botht he WC and regular PIDX DB write. Otherwise the host might reorder things and cause work request corruption (seen with NFSRDMA). Signed-off-by: Steve Wise commit c078eed091a32b930f5bbdf0a12a3be0d0a79cf0 Author: Steve Wise Date: Tue Feb 18 11:23:57 2014 -0600 Call rmb() after reading valid gen bit. Some HW platforms can reorder read operations, so we must rmb() after we see a valid gen bit in a CQE but before we read any other fields from the CQE. Signed-off-by: Steve Wise commit 7b482dcdbbd187fd8372f744157ac2b323d32f45 Author: Steve Wise Date: Tue Feb 18 11:12:06 2014 -0600 Update copyrights. Signed-off-by: Steve Wise commit f74316373c0b2a2bd2872ae38f7be516a10503c9 Author: Steve Wise Date: Tue Feb 18 11:12:06 2014 -0600 Refresh t4 fw/hw reg files. Signed-off-by: Steve Wise commit 1b8434f22deb30f700246dd2f474eaa2512e4867 Author: Steve Wise Date: Tue Feb 18 11:12:03 2014 -0600 Add common device id table and chip types. This will make it easier to merge in new devices. commit 18e5bc32bbe7e19eb9ea5a34d8b2f7d1e6355105 Author: Steve Wise Date: Tue Feb 18 10:25:33 2014 -0600 Remove dead SIM code. Signed-off-by: Steve Wise commit c8c793385de1d3e9c1edeb7b13cbc964049b8362 Author: Steve Wise Date: Tue Feb 18 10:23:05 2014 -0600 Remove dead raw qp code. Signed-off-by: Steve Wise commit 9302c092d46e4c40cbf6b2189aeda08e5ca3fea4 Author: Steve Wise Date: Tue Feb 18 10:17:52 2014 -0600 iw_cxgb4/libcxgb4: swsq "signaled" state needs to mind sq_sig_all. When a qp is created, the ULP can request that all sq wrs be signaled. The swsqe entries need to take this into account when marking the entry as signaled. This bug will cause read request CQEs to be silently discarded, and can cause flush problems because the swsqe entry will be mismarked for qps created with sq_sig_all set in the qp init attributes. Signed-off-by: Steve Wise commit 48c6633d4a6510a8c1832ac800f45c2099eb28b4 Author: Steve Wise Date: Tue Feb 18 10:17:52 2014 -0600 never consume a pending wr in sq flush. There is a race when moving a QP from RTS->CLOSING where a SQ work request could be posted after the FW receives the RDMA_RI/FINI WR. The SQ work request will never get processed, and should be completed with FLUSHED status. Function c4iw_flush_sq(), however was dropping the oldest SQ work request when in CLOSING or IDLE states, instead of completing the pending work request. If that oldest pending work request was actually complete and has a CQE in the CQ, then when that CQE is proceessed in poll_cq, we'll BUG_ON() due to the inconsistent SQ/CQ state. This is a very small timing hole and has only been hit once so far. c4iw_flush_sq() MUST always flush all non-completed WRs with FLUSHED status regardless of the QP state. Signed-off-by: Steve Wise commit 1a3a3e8e8da7463e59b74d5c5396e7bd5e303cd4 Author: Steve Wise Date: Tue Feb 18 10:11:35 2014 -0600 unmap status page when freeing the context. Signed-off-by: Steve Wise commit 81e83780e44af2ff25c2572b15fe7e8b8cc6e134 Author: Steve Wise Date: Tue Feb 18 10:05:54 2014 -0600 DB Drop Avoidance, Version 2. Add support for the device status page mapped per device that is used to enable/disable user db usage. Signed-off-by: Steve Wise commit 5830447cef866432c4d3e65f7e58c51a0c687798 Author: Steve Wise Date: Tue Feb 18 09:40:39 2014 -0600 Fix DEBUG code in c4iw_flush_hw_cq(). Signed-off-by: Steve Wise commit 127bc437797ca34e14b261fa653c1d0524d07272 Author: Steve Wise Date: Tue Feb 18 09:40:38 2014 -0600 T4 onchip workaround: do the 16 4B MA writes just before DB ring. This is a merge of sw repo changesets 1576, 2149, and 2246. Signed-off-by: Steve Wise commit ac38281728d12a91725aa67e0273dc26976598fb Author: Steve Wise Date: Fri Jul 19 09:37:10 2013 -0500 Spin release 1.3.1. Signed-off-by: Steve Wise commit 272fcac194318e13f563b46463726cc03ae83dbe Author: Steve Wise Date: Fri Jul 19 09:36:35 2013 -0500 Update copyright. Signed-off-by: Steve Wise commit ba3183d18168f764700ded52651033a79d2a9a86 Author: Steve Wise Date: Mon Jun 10 14:10:02 2013 -0500 get rid of hard coded queue iqs. Since we now get the number of queues available from the driver, we shouldn't be using the hard coded defines anymore. Signed-off-by: Steve Wise commit 2095e0a04bc5357da1b9d346e00d52cf7c236cf6 Author: Steve Wise Date: Mon Jun 10 14:09:35 2013 -0500 update configure.in Signed-off-by: Steve Wise commit a7a4de4f37a60ffbd8addd8f9ab5505adb86c63f Author: Steve Wise Date: Mon Jun 10 14:09:34 2013 -0500 Mind the sq_sig_all/sq_sig_type QP attributes. Signed-off-by: Steve Wise commit 4a485c8dc1c7c70ab85c708bb4c530eef385424d Author: Steve Wise Date: Mon Jun 10 14:09:34 2013 -0500 always do GTS write if cidx_inc == M_CIDXINC. When polling, we do a GTS update if the accumulated cidx_inc == the cq depth / 16. This works around a T4 bug. However, if the cq is large enough, cq depth / 16 exceeds the size of the field in the GTS word. So we also need to update if cidx_inc hits M_CIDXINC to avoid overflowing the field. Signed-off-by: Steve Wise commit a276f65add45933cf8b16bb09361786cf1932c4b Author: Steve Wise Date: Mon Jun 10 14:09:34 2013 -0500 fixed bug where sq.udb was getting overwritten. There was an erroneous statement in create_rc_qp() which caused the sq.udb va to be overwritten with the rq.udb va only for on-chip queues. This error only affected unmapping of that mapped va when destroying a qp. In the presence of multiple threads creating/destroying qps, the erroneously unmapped va could have been assigned to another qp mapping. This causes intermittent seg faults as libcxgb4 tries to access memory that has been unmapped in error. Signed-off-by: Steve Wise commit 1cb6249cf722e265d8e2364de0ee5b0d59a8e4cd Author: Steve Wise Date: Mon Jun 10 14:09:34 2013 -0500 flush problem with unsignaled wrs. c4iw_flush_sq() should only flush wrs that have not already been flushed. Since we already track where in the sq we've flushed via sq.cidx_flush, just start at that point and flush any remaining. This bug only caused a problem in the presence of unsignaled work requests. Signed-off-by: Steve Wise commit 4132e3434d8ffc2b92055649f42c56be77111216 Author: Steve Wise Date: Mon Jun 10 14:09:31 2013 -0500 clean up queue dump logic. Signed-off-by: Steve Wise commit a5e390613548f1dc62d9fe142b6a30a943fc56cf Author: Steve Wise Date: Tue Jun 4 12:09:21 2013 -0500 accounting for unsignled sq wrs fails to deal with wrap. When determining how many wrs are completed with a signaled cqe, correctly deal with queue wraps. Signed-off-by: Steve Wise commit 0c1906cec82443e2323dc69dd5c23ae4314087c0 Author: Steve Wise Date: Tue Jun 4 12:09:19 2013 -0500 Handle qp flushes with pending sw cqes. The flush and out of order completion logic has a bug: If out of order completions are flushed but not yet polled by the consumer and the qp is then flushed, we end up inserting duplicate completions. Signed-off-by: Steve Wise commit 26a19bf6d020dbaab8c6cf13396b39a64f952dba Author: Steve Wise Date: Tue Jun 4 11:57:00 2013 -0500 fixed false uninitialized var warning. Signed-off-by: Steve Wise commit 119e11e72d20a07a806c3385b8cfa6de93f7d114 Author: Steve Wise Date: Thu Mar 28 15:15:39 2013 -0500 Spin release 1.3.0 Signed-off-by: Steve Wise commit a4a0d3fe768ffa33a75ab3df4bd8c678e7f7180b Author: Steve Wise Date: Thu Mar 28 15:15:38 2013 -0500 Remove aclocal.m4. Signed-off-by: Steve Wise commit 3c22ddca7cf627d62d06b0ff374fa04192a8cc4c Author: Steve Wise Date: Thu Mar 28 15:15:37 2013 -0500 libcxgb4: unmap the correct udb/ugts address. The various db and gts variables holding the mapped bar2 pointer get incremented at creation time as a normal part of object creation. However this causes the wrong address to get unmapped when the object is destroyed. The result is a mapping leak because the munmap() fails. So align them back to their proper page boundary when calling munmap(). Singed-off-by: Steve Wise commit 9b2d3af5735e4067b83cde79e08a37142e8fb895 Author: Steve Wise Date: Thu Mar 28 15:15:35 2013 -0500 Query device to get the max supported stags, qps, and cqs. Signed-off-by: Steve Wise commit e8a595da9129d650caf162b7103368af03e07fcc Author: Steve Wise Date: Thu Mar 28 15:15:33 2013 -0500 Add T5 support. This commit is composed of a series of patches to enable T5 support. I folded them into one commit for simplicity. Plus intermittent patches caused problems/regressions/etc, so its cleaner to have 1 commit to enable the new device. Signed-off-by: Vipul Pandya Signed-off-by: Steve Wise commit 7cb73aba54eb47d6902c9a3f952c0e37500cac8f Author: Steve Wise Date: Mon Mar 4 10:28:32 2013 -0600 zero out r3 and r4 fields of fw_ri_send_wr messages. Signed-off-by: Steve Wise commit f61c762e82b3e6e1c27496eecaf2bf8d00f009e3 Author: Steve Wise Date: Mon Mar 4 10:21:39 2013 -0600 Add new T4 device IDs. Signed-off-by: Steve Wise commit c66a627e1e964bad794e9dc40e9a39dc6977aa1e Author: Steve Wise Date: Mon Mar 4 10:08:59 2013 -0600 flush bug can cause application crash This fixes a problem in the flush logic that could occur if the current position is near the end of the queue and the 'count' being retired plus this position was greater than the queue size. In this case the index wasn't being wrapped and the associated swcqe pointer would point past the end of the CQ. Asserts were added to check other possible wrap-error paths. This bug was causing mbw to occasionally crash when flushing the qp. Signed-off-by: Steve Wise commit c5cdab8ad79cecc996d735011b210729fcc95ecd Author: Steve Wise Date: Mon Mar 4 10:08:58 2013 -0600 Silently eat unsignaled read response cqes. Terminator HW always generates read response cqes. We need to silently eat them vs returning them to the user. The perftest benchmark ib_read_bw relies on unsignaled work requests and will crash with this fix. Signed-off-by: Steve Wise commit 1eefdaae19110deae2c20a08ea53cab451fc00bb Author: Steve Wise Date: Fri Feb 8 13:51:37 2013 -0600 Remove useless dma_addr_t define. Signed-off-by: Steve Wise commit c551f4632cfcd284ad82d1d9b36d1449d109a5de Author: Steve Wise Date: Fri Feb 8 13:51:00 2013 -0600 Disable strict aliasing warnings. Signed-off-by: Steve Wise commit 695a5a4be21f44d49999c83e6ac0699ce90d97c7 Author: Steve Wise Date: Wed Nov 9 09:50:32 2011 -0600 Spin release 1.2.0. Signed-off-by: Steve Wise commit 721cfb11ca5697d017bc60167805aea9bbb13ba0 Author: Vipul Pandya Date: Mon Nov 7 15:08:45 2011 +0530 libcxgb4: Reset flush_cidx before incrementing cidx. Signed-off-by: Vipul Pandya commit db4fe38c7ee2b3ad9dc8c33f2b54f0c8cdf8b4d2 Author: Vipul Pandya Date: Mon Nov 7 15:06:29 2011 +0530 libcxgb4: Fix multi-flush logic path....again Signed-off-by: Vipul Pandya commit 19198bdc2f7feb05babcc2a544ae8b48e4943c41 Author: Vipul Pandya Date: Mon Nov 7 15:02:57 2011 +0530 libcxgb4: Reset cidx_flush if a active queue starts getting hw cqes Signed-off-by: Vipul Pandya commit 98545f3a8cbe1670efad080cf908db42269f76ff Author: Vipul Pandya Date: Mon Nov 7 14:56:44 2011 +0530 libcxgb4: Support for flushing a CQ bound to multiple QPs Signed-off-by: Vipul Pandya commit 86ba968706b3dc8cb232a303201bb03a2d919c88 Author: Vipul Pandya Date: Mon Nov 7 13:06:43 2011 +0530 libcxgb4: Checks iw_cxgb4 ABI version to know door bell drop recovery support Store iw_cxgb4 ABI version in a global state. Read that global state in t4_wq_db_enabled to know if iw_cxgb4 driver supports door bell drop recovery. Signed-off-by: Vipul Pandya commit 2b6563ed5b377dac56c218b809d387089d70312d Author: Vipul Pandya Date: Sun Oct 23 16:50:16 2011 +0530 libcxgb4: fixed compilation warnings Signed-off-by: Vipul Pandya commit c5c120969c22a04d34adc566085192afc99d0db9 Author: Vipul Pandya Date: Fri Oct 21 19:05:20 2011 +0530 libcxgb4: Bug Fix#4410 - Fix 3 segfaults This patch fixes 3 segfaults with below signatures: ---- 1) Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x7ffff7fef710 (LWP 22624)] 0x00007ffff75613e4 in create_read_req_cqe (wq=0x7fffe800ada0, hw_cqe=0x7ffff7fc7880, read_cqe=0x7ffff7fee860) at src/cq.c:162 162 read_cqe->u.rdma.u.scqe.cidx = wq->sq.oldest_read->idx; (gdb) bt hw_cqe=0x7ffff7fc7880, read_cqe=0x7ffff7fee860) at src/cq.c:162 attr=0x7ffff7feeae0, attr_mask=1) at src/verbs.c:691 src/verbs.c:721 2) Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x7ffff6e07710 (LWP 22218)] 0x00007ffff71563e4 in create_read_req_cqe (wq=0x7fffe800ada0, hw_cqe=0x7ffff7fc7880, read_cqe=0x7ffff6e02b70) at src/cq.c:162 162 read_cqe->u.rdma.u.scqe.cidx = wq->sq.oldest_read->idx; (gdb) bt hw_cqe=0x7ffff7fc7880, read_cqe=0x7ffff6e02b70) at src/cq.c:162 src/verbs.c:887 3) (gdb) bt wc=0x7ffff51378d0) at src/cq.c:776 evd_ptr=, wc_ptr=) at /usr/include/infiniband/verbs.h:957 ---- Signed-off-by: Vipul Pandya commit 075adec1159606303b40f4b29ef3cea7ab780ac2 Author: Vipul Pandya Date: Fri Oct 21 18:59:16 2011 +0530 libcxgb4: return -ENOSYS in c4iw_resize_cq(). I fixed a "bug" in c4iw_resize_cq() in an earlier commit which regressed us. c4iw_resize_cq() was returning 0 always even though we don't support resizing the CQ. So I change libcxgb4 to return whatever errno is returned by the kernel driver. However, because the driver didn't set the uverbs capabilities for resize_cq, uverbs returned EINVAL. The OMPI code checks for -ENOSYS and handles providers that don't support it. If, however, ibv_resize_cq() returns any other error, OMPI bails out. So we need to return -ENOSYS. I didn't see this error, however, running NP192 OMPI/IMB all night long. So it must only try to resize for small jobs and thus I missed the regression. Signed-off-by: Vipul Pandya commit 320285a3a3a93a614e24a78f7a68780d7791e3c5 Author: Vipul Pandya Date: Fri Oct 21 18:53:47 2011 +0530 libcxgb4: Don't flush unsignaled WRs if the QP closed normally - add query_qp support in driver to query the qp state before flushing. - fixed flush logic (again). - don't flush unsignaled WRs is QP had a normal close. - support up to 64K QIDs. Signed-off-by: Vipul Pandya commit 4c98bebe97aeef1c5cda2f071eb9c1d4fa29c37e Author: Vipul Pandya Date: Fri Oct 21 17:58:38 2011 +0530 libcxgb4: Correctly flush unsignaled WRs followed by a signaled WR. The cq flush logic was not accounting for unsignaled SQ WRs followed by a signaled WR. The result was too many flushed CQEs causing application faults or assert() failures in libcxgb4 because the SQ state is corrupted. Signed-off-by: Vipul Pandya commit 8196f85bdefb1511d6d834240a92fdaf815834b8 Author: Vipul Pandya Date: Fri Oct 21 17:31:03 2011 +0530 libcxgb4: Remove auto generated ltmain.sh file. Signed-off-by: Vipul Pandya commit 230d12f42d143eeb53d8c4935ba27620c13e6165 Author: Vipul Pandya Date: Fri Oct 21 17:20:37 2011 +0530 libcxgb4: Add debug code to dump state on a stall condition. Signed-off-by: Vipul Pandya commit 2df0677b22aebb7a22d0e8ca11beb90250b363c7 Author: Vipul Pandya Date: Fri Oct 21 15:04:46 2011 +0530 libcxgb4: don't write host idx values when wq is in error. This fixes a regression introduced by the db recovery changes. The host idx shadow fields at the end of the wq should only be written if the wq is not in error. Otherwise, a seg fault can occur. Signed-off-by: Vipul Pandya commit 4eaf4b9added6ca660ef2f9363b24d754185fddf Author: Vipul Pandya Date: Thu Oct 20 19:55:57 2011 +0530 libcxgb4: cq debug changes - turn on cq overflow detection by default - shadow cq->cidx in the cq status page Signed-off-by: Vipul Pandya commit b15d02248dd1029706d07fa229767d8b68d16c65 Author: Vipul Pandya Date: Thu Oct 20 19:43:07 2011 +0530 libcxgb4: DB Drop Recovery for RDMA and LLD queues. Signed-off-by: Vipul Pandya commit b2c7499eab73cf28cbd9cf86f6ea134e2450cdd3 Author: Vipul Pandya Date: Sun Oct 23 12:59:24 2011 +0530 libcxgb4: put queue idx values in status page for debug. Signed-off-by: Vipul Pandya commit 60a30673a4072b6727e7266f7782607ddcbc8de7 Author: Vipul Pandya Date: Thu Oct 20 18:07:13 2011 +0530 libcxgb4: DB Overflow Avoidance. - when user dbs are disabled, call into the kernel driver via modify_qp() to ring the dbs. Signed-off-by: Vipul Pandya commit c8651d01a2d69d83caff8c01b32be0b23624d8da Author: Steve Wise Date: Thu Mar 10 09:45:00 2011 -0600 Spin release 1.1.1. Signed-off-by: Steve Wise commit ace467085deb7327522faeb19e20e13d691f66a2 Author: Steve Wise Date: Thu Mar 10 09:34:11 2011 -0600 Flush MA FIFO for on-chip queues. Signed-off-by: Steve Wise commit 7cb87f46c1784c791d29646104ab355ed920747d Author: Steve Wise Date: Thu Mar 10 09:27:57 2011 -0600 increase the frequency of CIDX-INC updates. Heavy IMB loads reveal that my current algorithm of doing CIDX-INC GTS writes every 1/2 the CQ depth was not sufficient. This patch increases the frequency to 1/16. Signed-off-by: Steve Wise commit 7652d71daadda0c3aba9b96311ea623a1e324d77 Author: Steve Wise Date: Wed Sep 15 16:57:04 2010 -0500 Spin release 1.1.0. Signed-off-by: Steve Wise commit ed05d22592bc96987635b2c255a99663f286b812 Author: Steve Wise Date: Wed Sep 15 16:56:51 2010 -0500 Support all T4 device IDs. Signed-off-by: Steve Wise commit b051a2ea9dc7b6ffa08f955e60b331e42fec8672 Author: Steve Wise Date: Wed Sep 15 15:54:35 2010 -0500 Support ABI 0 and 1 versions of the iwarp driver. Signed-off-by: Steve Wise commit 62f1363bb716e2283f9e2b885e5f02a6d5c692d1 Author: Steve Wise Date: Wed Sep 15 14:06:17 2010 -0500 Bump the slots per SQ to 5 to allow up to 128MB fast registers. Signed-off-by: Steve Wise commit d51e041839254d656cc260dba3f26a7c9d73aa56 Author: Steve Wise Date: Wed Sep 15 14:06:16 2010 -0500 Raw QP implementation Signed-off-by: Steve Wise commit 8f55539d0b8aea70084edf31687e590cf5a57221 Author: Steve Wise Date: Wed Sep 15 14:03:55 2010 -0500 Add compile-time user mode rdma stats. Signed-off-by: Steve Wise commit 2e3531bbd91d7a6f057b3503132aef5e64adb548 Author: Steve Wise Date: Wed Sep 15 13:57:03 2010 -0500 Support on-chip SQs. Signed-off-by: Steve Wise commit 65bb173b86c2e0a9ff5f877e4d3951cb8daa6e97 Author: Steve Wise Date: Wed Sep 15 13:54:44 2010 -0500 Work around TERM CQE hw bug. Signed-off-by: Steve Wise commit 6bb37d1f72652d4ed0c1972bc673f4418cc7a856 Author: Steve Wise Date: Wed Sep 15 13:54:44 2010 -0500 Zero out padding in iSGLs. Signed-off-by: Steve Wise commit aad128404c494ec4779055b5e550c2d7de7d5ca9 Author: Steve Wise Date: Thu Jul 22 14:58:51 2010 -0500 Spin release 1.0.4 Signed-off-by: Steve Wise commit 07ac253a8a479fd59fe654baf5a94ffc1de13765 Author: Steve Wise Date: Thu Jul 22 14:57:27 2010 -0500 Do GTS/CIDX_INC writes in the poll path to avoid drops. With T4 asic, we still see the CIDX_INC overflow/drops. Signed-off-by: Steve Wise commit 3394198639f811c86ab519c43197a9b724435cb0 Author: Steve Wise Date: Thu Jul 22 14:56:53 2010 -0500 Support T420 and T440 cards. Signed-off-by: Steve Wise commit 311dd1c8ec3e38287895053dce52dfef5ed5f0b1 Author: Steve Wise Date: Fri Jun 11 10:40:53 2010 -0500 Spin release 1.0.3. Signed-off-by: Steve Wise commit a62d7cf38f7b6c731486ff969ee7e3a4238ebc3f Author: Steve Wise Date: Fri Jun 11 10:37:17 2010 -0500 Support variable sized work requests. T4 EQ entries are in multiples of 64B. Currently the RDMA SQ and RQ use fixed sized entries composed of 4 EQ entries for the SQ and 2 EQ entries for the RQ. For optimial latency with small IO, we need to change this so the HW only needs to DMA the EQ entries actually used by a given work request. Implementation: - add wq_pidx counter to track where we are in the EQ. cidx/pidx are used for the sw sq/rq tracking and flow control. - the variable part of work requests is the SGL. Add new functions to build the SGL and/or immediate data directly in the EQ memory wrapping when needed. - adjust the min burst size for the EQ contexts to 64B. commit 3be829d117a8ca7957370b09b477fe551de0cea5 Author: Steve Wise Date: Thu May 20 15:52:59 2010 -0500 Spin release 1.0.2. Signed-off-by: Steve Wise commit dc1ea232e8ece4ba53d2496befad14bd433e2e3e Author: Steve Wise Date: Thu May 20 15:48:37 2010 -0500 only insert sq qid in lookup tables. Signed-off-by: Steve Wise commit 00c60fd47b71dac42d864662567701e2618ff45d Author: Steve Wise Date: Thu May 20 15:47:37 2010 -0500 Update some driver limits. Signed-off-by: Steve Wise commit f25661e19d728a0a33a221c0646a9fce9b160f8b Author: Steve Wise Date: Thu May 20 15:46:38 2010 -0500 Fix cq arm overflow. - wrap cq->cqidx_inc based on cq size - optimize t4_arm_cq() logic Signed-off-by: Steve Wise commit 8c224aca8f1acd219010e46da538ae4c9a4f9d1a Author: Steve Wise Date: Thu May 20 15:45:54 2010 -0500 Optimize cq overflow detection. 1) save the timestamp flit in the cq when we consume a CQE 2) always compare the saved flit with the previous entry flit when reading the next CQE entry. If the flits don't compare, then we've overflowed. Signed-off-by: Steve Wise commit 0c0cfbdbeb32548994d94a6278c74e2a4f11d9ba Author: Steve Wise Date: Thu May 6 17:57:56 2010 -0500 Spin release 1.0.1. Signed-off-by: Steve Wise commit 5b9ebdfbcd6df0f02375717aff20400ac33dc47f Author: Steve Wise Date: Thu May 6 17:34:07 2010 -0500 Update code with new t4fw interface. Signed-off-by: Steve Wise commit 0116d75d8dcc2f4018d0c0074728ca7d127a5065 Author: Steve Wise Date: Thu May 6 17:32:10 2010 -0500 Refresh t4fw-interface.h Signed-off-by: Steve Wise commit ad7a3f8dea2873a3a600859cfe8eb10ad979ddb1 Author: Steve Wise Date: Thu May 6 17:30:42 2010 -0500 Avoid CQ arm overflows. There are 2 limits that need to be taken into account when arming the CQ. 1) the GTS register limits the delta idx to <= M_CIDXINC. 2) T4 HW limits it to < cq size. Update t4_arm_cq() to account for these limits. commit 2905808680aad82b4f295850551bbe15711c2f42 Author: Steve Wise Date: Thu May 6 17:30:12 2010 -0500 Poll fixes. - when synthesizing CQEs for the SWCQ, always use SQ QID. - when flushing, ignore target side read response errors. Signed-off-by: Steve Wise commit 7a7962e856eb606e25a1529bc7f2945e639042b7 Author: Steve Wise Date: Thu May 6 17:24:07 2010 -0500 Fix CQ overflow detection. CQ overflow detection needs to read the gen bit and the timestamp in one read operation. Otherwise false overflows can result. Signed-off-by: Steve Wise commit 5ca340c298c61c9019d8593ee7acdbda93fdd498 Author: Steve Wise Date: Thu May 6 17:23:53 2010 -0500 libcxgb3: create_read_req_cqe() needs to swap read length. Signed-off-by: Steve Wise commit 9bd1e60d3aea10dbe7cb9920363e485b845d85a3 Author: Steve Wise Date: Wed Apr 14 10:36:41 2010 -0500 Refresh t4fw_interface.h Signed-off-by: Steve Wise commit d6e6ae69be5edffc566178e1b7e6402d61a5a786 Author: Steve Wise Date: Fri Apr 2 16:01:31 2010 -0500 Add libcxgb4 files. Signed-off-by: Steve Wise