]>
Commit | Line | Data |
---|---|---|
df1b7722 GKH |
1 | From foo@baz Mon Apr 9 13:58:16 CEST 2018 |
2 | From: Shiraz Saleem <shiraz.saleem@intel.com> | |
3 | Date: Fri, 22 Dec 2017 09:46:59 -0600 | |
4 | Subject: i40iw: Fix sequence number for the first partial FPDU | |
5 | ||
6 | From: Shiraz Saleem <shiraz.saleem@intel.com> | |
7 | ||
8 | ||
9 | [ Upstream commit df8b13a1b23356d01dfc4647a5629cdb0f4ce566 ] | |
10 | ||
11 | Partial FPDU processing is broken as the sequence number | |
12 | for the first partial FPDU is wrong due to incorrect | |
13 | Q2 buffer offset. The offset should be 64 rather than 16. | |
14 | ||
15 | Fixes: 786c6adb3a94 ("i40iw: add puda code") | |
16 | Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com> | |
17 | Signed-off-by: Jason Gunthorpe <jgg@mellanox.com> | |
18 | Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> | |
19 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | |
20 | --- | |
21 | drivers/infiniband/hw/i40iw/i40iw_d.h | 1 + | |
22 | drivers/infiniband/hw/i40iw/i40iw_puda.c | 2 +- | |
23 | 2 files changed, 2 insertions(+), 1 deletion(-) | |
24 | ||
25 | --- a/drivers/infiniband/hw/i40iw/i40iw_d.h | |
26 | +++ b/drivers/infiniband/hw/i40iw/i40iw_d.h | |
27 | @@ -93,6 +93,7 @@ | |
28 | #define RDMA_OPCODE_MASK 0x0f | |
29 | #define RDMA_READ_REQ_OPCODE 1 | |
30 | #define Q2_BAD_FRAME_OFFSET 72 | |
31 | +#define Q2_FPSN_OFFSET 64 | |
32 | #define CQE_MAJOR_DRV 0x8000 | |
33 | ||
34 | #define I40IW_TERM_SENT 0x01 | |
35 | --- a/drivers/infiniband/hw/i40iw/i40iw_puda.c | |
36 | +++ b/drivers/infiniband/hw/i40iw/i40iw_puda.c | |
37 | @@ -1376,7 +1376,7 @@ static void i40iw_ieq_handle_exception(s | |
38 | u32 *hw_host_ctx = (u32 *)qp->hw_host_ctx; | |
39 | u32 rcv_wnd = hw_host_ctx[23]; | |
40 | /* first partial seq # in q2 */ | |
41 | - u32 fps = qp->q2_buf[16]; | |
42 | + u32 fps = *(u32 *)(qp->q2_buf + Q2_FPSN_OFFSET); | |
43 | struct list_head *rxlist = &pfpdu->rxlist; | |
44 | struct list_head *plist; | |
45 |