From b8383d50ea49cf3d25674c3347a59881aa0f930b Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 10 Oct 2013 17:02:16 -0700 Subject: [PATCH] 3.4-stable patches added patches: can-flexcan-fix-flexcan_chip_start-on-imx6.patch ib_srpt-always-set-response-for-task-management.patch ib_srpt-destroy-cm_id-before-destroying-qp.patch p54usb-add-usb-id-for-corega-wlusb2gtst-usb-adapter.patch rtlwifi-align-private-space-in-rtl_priv-struct.patch --- ...excan-fix-flexcan_chip_start-on-imx6.patch | 54 +++++++++++++++++++ ...ays-set-response-for-task-management.patch | 53 ++++++++++++++++++ ...t-destroy-cm_id-before-destroying-qp.patch | 53 ++++++++++++++++++ ...id-for-corega-wlusb2gtst-usb-adapter.patch | 30 +++++++++++ ...ign-private-space-in-rtl_priv-struct.patch | 35 ++++++++++++ queue-3.4/series | 5 ++ 6 files changed, 230 insertions(+) create mode 100644 queue-3.4/can-flexcan-fix-flexcan_chip_start-on-imx6.patch create mode 100644 queue-3.4/ib_srpt-always-set-response-for-task-management.patch create mode 100644 queue-3.4/ib_srpt-destroy-cm_id-before-destroying-qp.patch create mode 100644 queue-3.4/p54usb-add-usb-id-for-corega-wlusb2gtst-usb-adapter.patch create mode 100644 queue-3.4/rtlwifi-align-private-space-in-rtl_priv-struct.patch diff --git a/queue-3.4/can-flexcan-fix-flexcan_chip_start-on-imx6.patch b/queue-3.4/can-flexcan-fix-flexcan_chip_start-on-imx6.patch new file mode 100644 index 00000000000..4a99563b0a5 --- /dev/null +++ b/queue-3.4/can-flexcan-fix-flexcan_chip_start-on-imx6.patch @@ -0,0 +1,54 @@ +From 0d1862ea1a5bb876cf05555a7307080cb75bf379 Mon Sep 17 00:00:00 2001 +From: Marc Kleine-Budde +Date: Fri, 27 Sep 2013 12:15:05 +0200 +Subject: can: flexcan: fix flexcan_chip_start() on imx6 + +From: Marc Kleine-Budde + +commit 0d1862ea1a5bb876cf05555a7307080cb75bf379 upstream. + +In the flexcan_chip_start() function first the flexcan core is going through +the soft reset sequence, then the RX FIFO is enabled. + +With the hardware is put into FIFO mode, message buffers 1...7 are reserved by +the FIFO engine. The remaining message buffers are in reset default values. +This patch removes the bogus initialization of the message buffers, as it +causes an imprecise external abort on imx6. + +Reported-by: Lothar Waßmann +Tested-by: Lothar Waßmann +Signed-off-by: Marc Kleine-Budde +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/can/flexcan.c | 12 ------------ + 1 file changed, 12 deletions(-) + +--- a/drivers/net/can/flexcan.c ++++ b/drivers/net/can/flexcan.c +@@ -667,7 +667,6 @@ static int flexcan_chip_start(struct net + { + struct flexcan_priv *priv = netdev_priv(dev); + struct flexcan_regs __iomem *regs = priv->base; +- unsigned int i; + int err; + u32 reg_mcr, reg_ctrl; + +@@ -733,17 +732,6 @@ static int flexcan_chip_start(struct net + netdev_dbg(dev, "%s: writing ctrl=0x%08x", __func__, reg_ctrl); + flexcan_write(reg_ctrl, ®s->ctrl); + +- for (i = 0; i < ARRAY_SIZE(regs->cantxfg); i++) { +- flexcan_write(0, ®s->cantxfg[i].can_ctrl); +- flexcan_write(0, ®s->cantxfg[i].can_id); +- flexcan_write(0, ®s->cantxfg[i].data[0]); +- flexcan_write(0, ®s->cantxfg[i].data[1]); +- +- /* put MB into rx queue */ +- flexcan_write(FLEXCAN_MB_CNT_CODE(0x4), +- ®s->cantxfg[i].can_ctrl); +- } +- + /* acceptance mask/acceptance code (accept everything) */ + flexcan_write(0x0, ®s->rxgmask); + flexcan_write(0x0, ®s->rx14mask); diff --git a/queue-3.4/ib_srpt-always-set-response-for-task-management.patch b/queue-3.4/ib_srpt-always-set-response-for-task-management.patch new file mode 100644 index 00000000000..a8810d0dbdb --- /dev/null +++ b/queue-3.4/ib_srpt-always-set-response-for-task-management.patch @@ -0,0 +1,53 @@ +From c807f64340932e19f0d2ac9b30c8381e1f60663a Mon Sep 17 00:00:00 2001 +From: Jack Wang +Date: Mon, 30 Sep 2013 10:09:05 +0200 +Subject: ib_srpt: always set response for task management + +From: Jack Wang + +commit c807f64340932e19f0d2ac9b30c8381e1f60663a upstream. + +The SRP specification requires: + + "Response data shall be provided in any SRP_RSP response that is sent in + response to an SRP_TSK_MGMT request (see 6.7). The information in the + RSP_CODE field (see table 24) shall indicate the completion status of + the task management function." + +So fix this to avoid the SRP initiator interprets task management functions +that succeeded as failed. + +Signed-off-by: Jack Wang +Signed-off-by: Nicholas Bellinger +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/infiniband/ulp/srpt/ib_srpt.c | 10 ++++------ + 1 file changed, 4 insertions(+), 6 deletions(-) + +--- a/drivers/infiniband/ulp/srpt/ib_srpt.c ++++ b/drivers/infiniband/ulp/srpt/ib_srpt.c +@@ -1610,7 +1610,7 @@ static int srpt_build_tskmgmt_rsp(struct + int resp_data_len; + int resp_len; + +- resp_data_len = (rsp_code == SRP_TSK_MGMT_SUCCESS) ? 0 : 4; ++ resp_data_len = 4; + resp_len = sizeof(*srp_rsp) + resp_data_len; + + srp_rsp = ioctx->ioctx.buf; +@@ -1622,11 +1622,9 @@ static int srpt_build_tskmgmt_rsp(struct + + atomic_xchg(&ch->req_lim_delta, 0)); + srp_rsp->tag = tag; + +- if (rsp_code != SRP_TSK_MGMT_SUCCESS) { +- srp_rsp->flags |= SRP_RSP_FLAG_RSPVALID; +- srp_rsp->resp_data_len = cpu_to_be32(resp_data_len); +- srp_rsp->data[3] = rsp_code; +- } ++ srp_rsp->flags |= SRP_RSP_FLAG_RSPVALID; ++ srp_rsp->resp_data_len = cpu_to_be32(resp_data_len); ++ srp_rsp->data[3] = rsp_code; + + return resp_len; + } diff --git a/queue-3.4/ib_srpt-destroy-cm_id-before-destroying-qp.patch b/queue-3.4/ib_srpt-destroy-cm_id-before-destroying-qp.patch new file mode 100644 index 00000000000..8ce55049543 --- /dev/null +++ b/queue-3.4/ib_srpt-destroy-cm_id-before-destroying-qp.patch @@ -0,0 +1,53 @@ +From 0b41d6ca616ddeb3b6c0a80e8770b6f53cd42806 Mon Sep 17 00:00:00 2001 +From: Nicholas Bellinger +Date: Wed, 18 Sep 2013 12:48:27 -0700 +Subject: ib_srpt: Destroy cm_id before destroying QP. + +From: Nicholas Bellinger + +commit 0b41d6ca616ddeb3b6c0a80e8770b6f53cd42806 upstream. + +This patch fixes a bug where ib_destroy_cm_id() was incorrectly being called +after srpt_destroy_ch_ib() had destroyed the active QP. + +This would result in the following failed SRP_LOGIN_REQ messages: + +Received SRP_LOGIN_REQ with i_port_id 0x0:0x2590ffff1762bd, t_port_id 0x2c903009f8f40:0x2c903009f8f40 and it_iu_len 260 on port 1 (guid=0xfe80000000000000:0x2c903009f8f41) +Received SRP_LOGIN_REQ with i_port_id 0x0:0x2590ffff1758f9, t_port_id 0x2c903009f8f40:0x2c903009f8f40 and it_iu_len 260 on port 2 (guid=0xfe80000000000000:0x2c903009f8f42) +Received SRP_LOGIN_REQ with i_port_id 0x0:0x2590ffff175941, t_port_id 0x2c903009f8f40:0x2c903009f8f40 and it_iu_len 260 on port 2 (guid=0xfe80000000000000:0x2c90300a3cfb2) +Received SRP_LOGIN_REQ with i_port_id 0x0:0x2590ffff176299, t_port_id 0x2c903009f8f40:0x2c903009f8f40 and it_iu_len 260 on port 1 (guid=0xfe80000000000000:0x2c90300a3cfb1) +mlx4_core 0000:84:00.0: command 0x19 failed: fw status = 0x9 +rejected SRP_LOGIN_REQ because creating a new RDMA channel failed. +Received SRP_LOGIN_REQ with i_port_id 0x0:0x2590ffff176299, t_port_id 0x2c903009f8f40:0x2c903009f8f40 and it_iu_len 260 on port 1 (guid=0xfe80000000000000:0x2c90300a3cfb1) +mlx4_core 0000:84:00.0: command 0x19 failed: fw status = 0x9 +rejected SRP_LOGIN_REQ because creating a new RDMA channel failed. +Received SRP_LOGIN_REQ with i_port_id 0x0:0x2590ffff176299, t_port_id 0x2c903009f8f40:0x2c903009f8f40 and it_iu_len 260 on port 1 (guid=0xfe80000000000000:0x2c90300a3cfb1) + +Reported-by: Navin Ahuja +Signed-off-by: Nicholas Bellinger +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/infiniband/ulp/srpt/ib_srpt.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/infiniband/ulp/srpt/ib_srpt.c ++++ b/drivers/infiniband/ulp/srpt/ib_srpt.c +@@ -2373,6 +2373,8 @@ static void srpt_release_channel_work(st + transport_deregister_session(ch->sess); + ch->sess = NULL; + ++ ib_destroy_cm_id(ch->cm_id); ++ + srpt_destroy_ch_ib(ch); + + srpt_free_ioctx_ring((struct srpt_ioctx **)ch->ioctx_ring, +@@ -2383,8 +2385,6 @@ static void srpt_release_channel_work(st + list_del(&ch->list); + spin_unlock_irq(&sdev->spinlock); + +- ib_destroy_cm_id(ch->cm_id); +- + if (ch->release_done) + complete(ch->release_done); + diff --git a/queue-3.4/p54usb-add-usb-id-for-corega-wlusb2gtst-usb-adapter.patch b/queue-3.4/p54usb-add-usb-id-for-corega-wlusb2gtst-usb-adapter.patch new file mode 100644 index 00000000000..eebe8b1228d --- /dev/null +++ b/queue-3.4/p54usb-add-usb-id-for-corega-wlusb2gtst-usb-adapter.patch @@ -0,0 +1,30 @@ +From 1e43692cdb7cc445d6347d8a5207d9cef0c71434 Mon Sep 17 00:00:00 2001 +From: Christian Lamparter +Date: Tue, 24 Sep 2013 21:56:46 +0200 +Subject: p54usb: add USB ID for Corega WLUSB2GTST USB adapter + +From: Christian Lamparter + +commit 1e43692cdb7cc445d6347d8a5207d9cef0c71434 upstream. + +Added USB ID for Corega WLUSB2GTST USB adapter. + +Reported-by: Joerg Kalisch +Signed-off-by: Christian Lamparter +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/wireless/p54/p54usb.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/net/wireless/p54/p54usb.c ++++ b/drivers/net/wireless/p54/p54usb.c +@@ -83,6 +83,7 @@ static struct usb_device_id p54u_table[] + {USB_DEVICE(0x06a9, 0x000e)}, /* Westell 802.11g USB (A90-211WG-01) */ + {USB_DEVICE(0x06b9, 0x0121)}, /* Thomson SpeedTouch 121g */ + {USB_DEVICE(0x0707, 0xee13)}, /* SMC 2862W-G version 2 */ ++ {USB_DEVICE(0x07aa, 0x0020)}, /* Corega WLUSB2GTST USB */ + {USB_DEVICE(0x0803, 0x4310)}, /* Zoom 4410a */ + {USB_DEVICE(0x083a, 0x4521)}, /* Siemens Gigaset USB Adapter 54 version 2 */ + {USB_DEVICE(0x083a, 0x4531)}, /* T-Com Sinus 154 data II */ diff --git a/queue-3.4/rtlwifi-align-private-space-in-rtl_priv-struct.patch b/queue-3.4/rtlwifi-align-private-space-in-rtl_priv-struct.patch new file mode 100644 index 00000000000..e5f798f6b29 --- /dev/null +++ b/queue-3.4/rtlwifi-align-private-space-in-rtl_priv-struct.patch @@ -0,0 +1,35 @@ +From 60ce314d1750fef843e9db70050e09e49f838b69 Mon Sep 17 00:00:00 2001 +From: Larry Finger +Date: Wed, 18 Sep 2013 21:21:35 -0500 +Subject: rtlwifi: Align private space in rtl_priv struct + +From: Larry Finger + +commit 60ce314d1750fef843e9db70050e09e49f838b69 upstream. + +The private array at the end of the rtl_priv struct is not aligned. +On ARM architecture, this causes an alignment trap and is fixed by aligning +that array with __align(sizeof(void *)). That should properly align that +space according to the requirements of all architectures. + +Reported-by: Jason Andrews +Tested-by: Jason Andrews +Signed-off-by: Larry Finger +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/wireless/rtlwifi/wifi.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/net/wireless/rtlwifi/wifi.h ++++ b/drivers/net/wireless/rtlwifi/wifi.h +@@ -1638,7 +1638,7 @@ struct rtl_priv { + that it points to the data allocated + beyond this structure like: + rtl_pci_priv or rtl_usb_priv */ +- u8 priv[0]; ++ u8 priv[0] __aligned(sizeof(void *)); + }; + + #define rtl_priv(hw) (((struct rtl_priv *)(hw)->priv)) diff --git a/queue-3.4/series b/queue-3.4/series index 2006b536c81..efc249a0f5c 100644 --- a/queue-3.4/series +++ b/queue-3.4/series @@ -33,3 +33,8 @@ sparc64-fix-not-sra-ed-o5-in-32-bit-traced-syscall.patch sparc32-fix-exit-flag-passed-from-traced-sys_sigreturn.patch kernel-kmod.c-check-for-null-in-call_usermodehelper_exec.patch usb-serial-option-ignore-card-reader-interface-on-huawei-e1750.patch +ib_srpt-destroy-cm_id-before-destroying-qp.patch +ib_srpt-always-set-response-for-task-management.patch +rtlwifi-align-private-space-in-rtl_priv-struct.patch +p54usb-add-usb-id-for-corega-wlusb2gtst-usb-adapter.patch +can-flexcan-fix-flexcan_chip_start-on-imx6.patch -- 2.47.3