From 2794baae1202b2b2da9ee58275f0770a9de28783 Mon Sep 17 00:00:00 2001
From: "Mutalik Desai, Suprasad" <suprasad.desai@intel.com>
Date: Wed, 21 Feb 2018 03:28:51 +0100
Subject: [PATCH] Merge pull request #252 in SW_PON/linux from
 bugfix/UGW_SW-22411-kernel-panic-while-sending-jumbo-frames-of-size-1576-to-3000
 to xrx500

UGW_SW-22411-kernel-panic-while-sending-jumbo-frames-of-size-1576-to-3000

* commit 'fb23f89981fbe80a0aa85aa2e03ed8ca852998a8':
  UGW_SW-22411: set the correct frame length for standard buffer and use proper API
---
 drivers/net/ethernet/lantiq/cqm/grx500/cbm.c     | 8 ++++++--
 drivers/net/ethernet/lantiq/ltq_eth_drv_xrx500.c | 2 +-
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/lantiq/cqm/grx500/cbm.c b/drivers/net/ethernet/lantiq/cqm/grx500/cbm.c
index c65c21225..9276a6fc9 100644
--- a/drivers/net/ethernet/lantiq/cqm/grx500/cbm.c
+++ b/drivers/net/ethernet/lantiq/cqm/grx500/cbm.c
@@ -748,8 +748,12 @@ void *data, u32 frag_size, gfp_t priority)
 	buf_size = (((u32)data >= g_cbm_buff.std_buf_addr) &&
 				((u32)data <= std_buff_end)) ?
 				CBM_STD_BUF_SIZE : CONFIG_CBM_JBO_PKT_SIZE;
-	if (frag_size > buf_size)
-		panic("Packet length exceeds the buffer size\n");
+	if (frag_size > buf_size) {
+		LOGF_KLOG_ERROR("frag_size = %d received in buffer = %x \n",
+							frag_size, (unsigned int)data);
+		LOGF_KLOG_ERROR("packet length exceeds the buffer size\n");
+		return NULL;
+	}
 
 	return __build_skb(data, buf_size);
 }
diff --git a/drivers/net/ethernet/lantiq/ltq_eth_drv_xrx500.c b/drivers/net/ethernet/lantiq/ltq_eth_drv_xrx500.c
index 7677bf97c..21e03cc61 100644
--- a/drivers/net/ethernet/lantiq/ltq_eth_drv_xrx500.c
+++ b/drivers/net/ethernet/lantiq/ltq_eth_drv_xrx500.c
@@ -492,7 +492,7 @@ static int ltq_enable_gsw_r_pmac_jumbo(struct net_device *dev)
 	gsw_reg_set_bit(ops, 0xd05, 0x8);
 
 	/* Set the frame length */
-	gsw_reg_set_bit(ops, 0xd06, 1728);
+	gsw_reg_set_val(ops, 0xd06, 1630);
 
 	return 0;
 }
-- 
GitLab