From patchwork Fri May 9 02:03:47 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Byungho An X-Patchwork-Id: 347287 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 3C56C1400F5 for ; Fri, 9 May 2014 12:03:58 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932117AbaEICDw (ORCPT ); Thu, 8 May 2014 22:03:52 -0400 Received: from mailout1.samsung.com ([203.254.224.24]:25241 "EHLO mailout1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754355AbaEICDt (ORCPT ); Thu, 8 May 2014 22:03:49 -0400 Received: from epcpsbgr4.samsung.com (u144.gpu120.samsung.co.kr [203.254.230.144]) by mailout1.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0N5A00LZIB2B5520@mailout1.samsung.com>; Fri, 09 May 2014 11:03:47 +0900 (KST) Received: from epcpsbgm1.samsung.com ( [203.254.230.49]) by epcpsbgr4.samsung.com (EPCPMTA) with SMTP id 7E.00.09952.3873C635; Fri, 09 May 2014 11:03:47 +0900 (KST) X-AuditID: cbfee690-b7fcd6d0000026e0-70-536c3783b849 Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm1.samsung.com (EPCPMTA) with SMTP id 88.40.27725.3873C635; Fri, 09 May 2014 11:03:47 +0900 (KST) Received: from DObh74an01 ([12.36.166.149]) by mmp1.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0N5A00E3RB27TW20@mmp1.samsung.com>; Fri, 09 May 2014 11:03:47 +0900 (KST) From: Byungho An To: 'netdev' , linux-samsung-soc@vger.kernel.org Cc: davem@davemloft.net, "'ks.giri'" , "'vipul.pandya'" Subject: [PATCH 2/3] net: sxgbe: Added tail point update Date: Fri, 09 May 2014 11:03:47 +0900 Message-id: <003c01cf6b2a$e9dac1e0$bd9045a0$%an@samsung.com> MIME-version: 1.0 Content-type: text/plain; charset=us-ascii Content-transfer-encoding: 7bit X-Mailer: Microsoft Office Outlook 12.0 Thread-index: Ac9rKunL1hiu1308SYucg424IBqTLw== Content-language: ko X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrCIsWRmVeSWpSXmKPExsVy+t8zQ91m85xgg/U7FSzmnG9hsZh/dAeT xYzz+5gsji0Qs9i24AKzA6vHlpU3mTz6tqxi9Pi8SS6AOYrLJiU1J7MstUjfLoErY9a002wF x2Uqfv/pYm1gfCTexcjJISFgIrHm3B4WCFtM4sK99WxdjFwcQgLLGCXap15lhym6vvo8VGIR o8T9U6+YIJzfjBJP7z0Ha2cTUJNonnmZDcQWEfCQuLFwLzOIzSyQKbF9dyNYjbCAhcSEq+vB prIIqEqsfXYNaBAHB6+AjcTnrdYgYV4BQYkfk++xQLRqSazfeZwJwpaX2LzmLTNIuYSAusSj v7oQm/Qklv5rhyoXkdj34h0jyGkSAtvYJVq3TmaDWCUg8W3yIRaIXlmJTQeYIf6SlDi44gbL BEaxWUg2z0KyeRaSzbOQrFjAyLKKUTS1ILmgOCm9yESvODG3uDQvXS85P3cTIyTGJuxgvHfA +hBjMtD6icxSosn5wBjNK4k3NDYzsjA1MTU2Mrc0I01YSZxX7VFSkJBAemJJanZqakFqUXxR aU5q8SFGJg5OqQbGyQ98dIVM9km5b49nUslXPCBlezNWMkFz71/lGVvyZXsWTTn73r+j68s6 zQg+lRa35/PqPP/5Gs5ZF1I2u3/5+r/bzve8/d3HeuXz+gOs1/bv6Dl1asOPrHMXdjg/FqnJ /ffDSrJh39f8OUyf3kitDqlqZua0LxIt3LP81j4VNuk7rZVHvZfNUWIpzkg01GIuKk4EABeV KGfHAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprIKsWRmVeSWpSXmKPExsVy+t9jAd1m85xgg44WGYs551tYLOYf3cFk MeP8PiaLYwvELLYtuMDswOqxZeVNJo++LasYPT5vkgtgjmpgtMlITUxJLVJIzUvOT8nMS7dV 8g6Od443NTMw1DW0tDBXUshLzE21VXLxCdB1y8wBWqmkUJaYUwoUCkgsLlbSt8M0ITTETdcC pjFC1zckCK7HyAANJKxjzJg17TRbwXGZit9/ulgbGB+JdzFyckgImEhcX32eDcIWk7hwbz2Q zcUhJLCIUeL+qVdMEM5vRomn956zgFSxCahJNM+8DNYhIuAhcWPhXmYQm1kgU2L77kawGmEB C4kJV9ezg9gsAqoSa59dAxrEwcErYCPxeas1SJhXQFDix+R7LBCtWhLrdx5ngrDlJTavecsM Ui4hoC7x6K8uxCY9iaX/2qHKRST2vXjHOIFRYBaSSbOQTJqFZNIsJC0LGFlWMYqmFiQXFCel 5xrqFSfmFpfmpesl5+duYgRH8DOpHYwrGywOMQpwMCrx8L6Ykh0sxJpYVlyZe4hRgoNZSYT3 jn5OsBBvSmJlVWpRfnxRaU5q8SHGZKA/JzJLiSbnA5NLXkm8obGJmZGlkZmFkYm5OWnCSuK8 B1qtA4UE0hNLUrNTUwtSi2C2MHFwSjUwqspsYEjrf9z3ySvdZ/Wn6VOv6ueEXt20nFVDuD1o bo3u0n9T59zuYZu3IZFphm7pgS+/Dtk6cilHaTnZXKxce23WQoVDDhf3P7nSs/He3XPLT988 eKPgvVOZ60U2Q0WG0x+vbrePVHnHOk2sMPpoj3b9V5kdW9xvsE895vH0tWDqk125EXsyXyix FGckGmoxFxUnAgAIOYzvJAMAAA== DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This patch adds tail point update function for rx path after rx_refill function. It indicate tail point to rx dma. Signed-off-by: Byungho An --- drivers/net/ethernet/samsung/sxgbe/sxgbe_dma.c | 14 +++++++++++++- drivers/net/ethernet/samsung/sxgbe/sxgbe_dma.h | 4 ++++ drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c | 5 +++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/samsung/sxgbe/sxgbe_dma.c b/drivers/net/ethernet/samsung/sxgbe/sxgbe_dma.c index 49240c9..249b0e0 100644 --- a/drivers/net/ethernet/samsung/sxgbe/sxgbe_dma.c +++ b/drivers/net/ethernet/samsung/sxgbe/sxgbe_dma.c @@ -112,7 +112,7 @@ static void sxgbe_dma_channel_init(void __iomem *ioaddr, int cha_num, dma_addr = dma_rx + ((r_rsize - 1) * SXGBE_DESC_SIZE_BYTES); writel(lower_32_bits(dma_addr), - ioaddr + SXGBE_DMA_CHA_RXDESC_LADD_REG(cha_num)); + ioaddr + SXGBE_DMA_CHA_RXDESC_TAILPTR_REG(cha_num)); /* program the ring sizes */ writel(t_rsize - 1, ioaddr + SXGBE_DMA_CHA_TXDESC_RINGLEN_REG(cha_num)); writel(r_rsize - 1, ioaddr + SXGBE_DMA_CHA_RXDESC_RINGLEN_REG(cha_num)); @@ -370,6 +370,17 @@ static void sxgbe_enable_tso(void __iomem *ioaddr, u8 chan_num) writel(ctrl, ioaddr + SXGBE_DMA_CHA_TXCTL_REG(chan_num)); } +static void sxgbe_dma_update_rxdesc_tail_ptr(void __iomem *ioaddr, u8 chan_num, + dma_addr_t dma_rx_phy, int cur_rx, + int rxsize) +{ + u32 reg_val; + + reg_val = (dma_rx_phy & 0xFFFFFFFF) + ((cur_rx % rxsize) * + SXGBE_DESC_SIZE_BYTES); + writel(reg_val, ioaddr + SXGBE_DMA_CHA_RXDESC_TAILPTR_REG(chan_num)); +} + static const struct sxgbe_dma_ops sxgbe_dma_ops = { .init = sxgbe_dma_init, .cha_init = sxgbe_dma_channel_init, @@ -386,6 +397,7 @@ static const struct sxgbe_dma_ops sxgbe_dma_ops = { .rx_dma_int_status = sxgbe_rx_dma_int_status, .rx_watchdog = sxgbe_dma_rx_watchdog, .enable_tso = sxgbe_enable_tso, + .update_rxdesc_tail_ptr = sxgbe_dma_update_rxdesc_tail_ptr, }; const struct sxgbe_dma_ops *sxgbe_get_dma_ops(void) diff --git a/drivers/net/ethernet/samsung/sxgbe/sxgbe_dma.h b/drivers/net/ethernet/samsung/sxgbe/sxgbe_dma.h index 843fa9b..a06e01e 100644 --- a/drivers/net/ethernet/samsung/sxgbe/sxgbe_dma.h +++ b/drivers/net/ethernet/samsung/sxgbe/sxgbe_dma.h @@ -43,6 +43,10 @@ struct sxgbe_dma_ops { void (*rx_watchdog)(void __iomem *ioaddr, u32 riwt); /* Enable TSO for each DMA channel */ void (*enable_tso)(void __iomem *ioaddr, u8 chan_num); + void (*update_rxdesc_tail_ptr)(void __iomem *ioaddr, u8 chan_num, + dma_addr_t dma_rx, int r_rentry, + int r_rsize); + }; const struct sxgbe_dma_ops *sxgbe_get_dma_ops(void); diff --git a/drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c b/drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c index 93bf151..7dc3449 100644 --- a/drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c +++ b/drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c @@ -1521,6 +1521,7 @@ static int sxgbe_rx(struct sxgbe_priv_data *priv, int limit) skb_put(skb, frame_len); skb->ip_summed = checksum; + skb->protocol = eth_type_trans(skb, priv->dev); if (checksum == CHECKSUM_NONE) netif_receive_skb(skb); else @@ -1530,6 +1531,10 @@ static int sxgbe_rx(struct sxgbe_priv_data *priv, int limit) } sxgbe_rx_refill(priv); + priv->hw->dma->update_rxdesc_tail_ptr(priv->ioaddr, qnum, + priv->rxq[qnum]->dma_rx_phy, + priv->rxq[qnum]->cur_rx, + priv->dma_rx_size); return count; }