From patchwork Mon Dec 12 15:07:16 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wolfgang Grandegger X-Patchwork-Id: 130760 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 743471007D1 for ; Tue, 13 Dec 2011 02:07:25 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751203Ab1LLPHU (ORCPT ); Mon, 12 Dec 2011 10:07:20 -0500 Received: from ngcobalt02.manitu.net ([217.11.48.102]:45389 "EHLO ngcobalt02.manitu.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750790Ab1LLPHS (ORCPT ); Mon, 12 Dec 2011 10:07:18 -0500 Received: from [10.0.30.2] (p4FD63084.dip.t-dialin.net [79.214.48.132]) (authenticated as wg with PLAIN) by ngcobalt02.manitu.net (8.10.2/8.10.2) with ESMTP id pBCF7Jg17640; Mon, 12 Dec 2011 16:07:19 +0100 X-manitu-Original-Sender-IP: 79.214.48.132 X-manitu-Original-Receiver-Name: ngcobalt02.manitu.net Message-ID: <4EE618A4.80104@grandegger.com> Date: Mon, 12 Dec 2011 16:07:16 +0100 From: Wolfgang Grandegger User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.23) Gecko/20110922 Thunderbird/3.1.15 MIME-Version: 1.0 To: netdev@vger.kernel.org CC: linux-can@vger.kernel.org Subject: [PATCH net-next] can: cc770: store echo skb before starting the transfer X-Enigmail-Version: 1.1.1 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org On slow systems and high CAN bitrates, the error message "can_put_echo_skb: BUG! echo_skb is occupied!" did show up because can_put_echo_skb() was called after starting the transfer. Signed-off-by: Wolfgang Grandegger --- drivers/net/can/cc770/cc770.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/drivers/net/can/cc770/cc770.c b/drivers/net/can/cc770/cc770.c index 7668967..c30f0e6 100644 --- a/drivers/net/can/cc770/cc770.c +++ b/drivers/net/can/cc770/cc770.c @@ -440,12 +440,14 @@ static netdev_tx_t cc770_start_xmit(struct sk_buff *skb, struct net_device *dev) for (i = 0; i < dlc; i++) cc770_write_reg(priv, msgobj[mo].data[i], cf->data[i]); + /* Store echo skb before starting the transfer */ + can_put_echo_skb(skb, dev, 0); + cc770_write_reg(priv, msgobj[mo].ctrl1, RMTPND_RES | TXRQST_SET | CPUUPD_RES | NEWDAT_UNC); stats->tx_bytes += dlc; - can_put_echo_skb(skb, dev, 0); /* * HM: We had some cases of repeated IRQs so make sure the