Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755007AbbDJJvX (ORCPT ); Fri, 10 Apr 2015 05:51:23 -0400 Received: from mail-by2on0061.outbound.protection.outlook.com ([207.46.100.61]:3266 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751343AbbDJJvT (ORCPT ); Fri, 10 Apr 2015 05:51:19 -0400 Authentication-Results: spf=pass (sender IP is 149.199.60.100) smtp.mailfrom=xilinx.com; atmel.com; dkim=none (message not signed) header.d=none; Date: Fri, 10 Apr 2015 11:50:58 +0200 From: Michal Simek User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 MIME-Version: 1.0 To: Harini Katakam , , , , , , , , , , CC: , , , , Subject: Re: [net-next PATCH 2/3] net: macb: Add support for jumbo frames References: <1428657441-27710-1-git-send-email-harinik@xilinx.com> <1428657441-27710-2-git-send-email-harinik@xilinx.com> In-Reply-To: <1428657441-27710-2-git-send-email-harinik@xilinx.com> Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit X-RCIS-Action: ALLOW X-TM-AS-Product-Ver: IMSS-7.1.0.1224-7.5.0.1018-21464.004 X-TM-AS-User-Approved-Sender: Yes;Yes;Yes Message-ID: <392788e2-6d6b-44c7-83eb-151d1fde0b49@BN1BFFO11FD052.protection.gbl> X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:149.199.60.100;CTRY:US;IPV:NLI;EFV:NLI;BMV:1;SFV:NSPM;SFS:(10009020)(6009001)(438002)(377454003)(199003)(479174004)(189002)(164054003)(24454002)(51704005)(76176999)(86362001)(31696002)(104016003)(1496007)(53416004)(50986999)(54356999)(23746002)(74316001)(19580395003)(19580405001)(6806004)(83506001)(50466002)(33646002)(64126003)(77156002)(62966003)(46102003)(106466001)(70736001)(2950100001)(47776003)(87936001)(2201001)(92566002)(65826006)(107986001)(921003)(23106004)(1121003);DIR:OUT;SFP:1101;SCL:1;SRVR:BN1BFFO11HUB001;H:xsj-pvapsmtpgw02;FPR:;SPF:Pass;MLV:sfv;A:1;MX:1;LANG:en; X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN1BFFO11HUB001; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(5005006)(5002010);SRVR:BN1BFFO11HUB001;BCL:0;PCL:0;RULEID:;SRVR:BN1BFFO11HUB001; X-Forefront-PRVS: 054231DC40 X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2015 09:51:16.0247 (UTC) X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c;Ip=[149.199.60.100];Helo=[xsj-pvapsmtpgw02] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN1BFFO11HUB001 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3423 Lines: 86 On 04/10/2015 11:17 AM, Harini Katakam wrote: > Check for "cdns,zynqmp-gem" compatible string and enable jumbo frame support > in NWCFG register, update descriptor length masks and registers accordingly. > Jumbo max length register should be set according to support in SoC; it is > set to 10240 for Zynq Ultrascale ZynqMPSoC. > > Signed-off-by: Harini Katakam > Reviewed-by: Punnaiah Choudary Kalluri > --- > drivers/net/ethernet/cadence/macb.c | 19 ++++++++++++++++--- > drivers/net/ethernet/cadence/macb.h | 8 ++++++++ > 2 files changed, 24 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/ethernet/cadence/macb.c b/drivers/net/ethernet/cadence/macb.c > index 448a323..85de91d 100644 > --- a/drivers/net/ethernet/cadence/macb.c > +++ b/drivers/net/ethernet/cadence/macb.c > @@ -779,7 +779,7 @@ static int gem_rx(struct macb *bp, int budget) > } > /* now everything is ready for receiving packet */ > bp->rx_skbuff[entry] = NULL; > - len = MACB_BFEXT(RX_FRMLEN, ctrl); > + len = ctrl & bp->rx_frm_len_mask; > > netdev_vdbg(bp->dev, "gem_rx %u (len %u)\n", entry, len); > > @@ -825,7 +825,7 @@ static int macb_rx_frame(struct macb *bp, unsigned int first_frag, > struct macb_dma_desc *desc; > > desc = macb_rx_desc(bp, last_frag); > - len = MACB_BFEXT(RX_FRMLEN, desc->ctrl); > + len = desc->ctrl & bp->rx_frm_len_mask; > > netdev_vdbg(bp->dev, "macb_rx_frame frags %u - %u (len %u)\n", > macb_rx_ring_wrap(first_frag), > @@ -1630,7 +1630,10 @@ static void macb_init_hw(struct macb *bp) > config |= MACB_BF(RBOF, NET_IP_ALIGN); /* Make eth data aligned */ > config |= MACB_BIT(PAE); /* PAuse Enable */ > config |= MACB_BIT(DRFCS); /* Discard Rx FCS */ > - config |= MACB_BIT(BIG); /* Receive oversized frames */ > + if (bp->isjumbo) > + config |= MACB_BIT(JFRAME); /* Enable jumbo frames */ > + else > + config |= MACB_BIT(BIG); /* Receive oversized frames */ > if (bp->dev->flags & IFF_PROMISC) > config |= MACB_BIT(CAF); /* Copy All Frames */ > else if (macb_is_gem(bp) && bp->dev->features & NETIF_F_RXCSUM) > @@ -1639,8 +1642,13 @@ static void macb_init_hw(struct macb *bp) > config |= MACB_BIT(NBC); /* No BroadCast */ > config |= macb_dbw(bp); > macb_writel(bp, NCFGR, config); > + if (bp->isjumbo && bp->jumbo_max_len) > + gem_writel(bp, JML, bp->jumbo_max_len); > bp->speed = SPEED_10; > bp->duplex = DUPLEX_HALF; > + bp->rx_frm_len_mask = MACB_RX_FRMLEN_MASK; > + if (bp->isjumbo) > + bp->rx_frm_len_mask = MACB_RX_JFRMLEN_MASK; > > macb_configure_dma(bp); > > @@ -2759,6 +2767,11 @@ static int macb_probe(struct platform_device *pdev) > bp->pclk = pclk; > bp->hclk = hclk; > bp->tx_clk = tx_clk; > + if (of_device_is_compatible(pdev->dev.of_node, "cdns,zynqmp-gem")) { > + bp->isjumbo = 1; > + bp->jumbo_max_len = GEM_ZYNQMP_JUMBO_MAX; > + } Not like this. Nicolas will look at the rest but I think you should extend "struct macb_config" and add that setup there instead of checking compatible string here. Maybe isjumbo can be hadled via caps bit already present in this structure but please wait for others. Thanks, Michal -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/