linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] net: hinic: Update the range of MTU from 256 to 9600
@ 2022-10-12  8:29 Cai Huoqing
  2022-10-12  9:25 ` shaozhengchao
  2022-10-12 15:49 ` Jakub Kicinski
  0 siblings, 2 replies; 5+ messages in thread
From: Cai Huoqing @ 2022-10-12  8:29 UTC (permalink / raw)
  To: leonro
  Cc: caihuoqing, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Qiao Ma, Zhengchao Shao, Christophe JAILLET,
	Gustavo A. R. Silva, netdev, linux-kernel

From: caihuoqing <caihuoqing@baidu.com>

Hinic hardware only support MTU from 256 to 9600, so set
the max_mtu and min_mtu.

And not need to add the validity judgment when set mtu,
because the judgment is made in net/core: dev_validate_mtu

Signed-off-by: caihuoqing <caihuoqing@baidu.com>
---
 drivers/net/ethernet/huawei/hinic/hinic_dev.h  |  3 +++
 drivers/net/ethernet/huawei/hinic/hinic_main.c |  3 ++-
 drivers/net/ethernet/huawei/hinic/hinic_port.c | 17 +----------------
 3 files changed, 6 insertions(+), 17 deletions(-)

diff --git a/drivers/net/ethernet/huawei/hinic/hinic_dev.h b/drivers/net/ethernet/huawei/hinic/hinic_dev.h
index a4fbf44f944c..2bbc94c0a9c1 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_dev.h
+++ b/drivers/net/ethernet/huawei/hinic/hinic_dev.h
@@ -22,6 +22,9 @@
 
 #define LP_PKT_CNT		64
 
+#define HINIC_MAX_MTU_SIZE		9600
+#define HINIC_MIN_MTU_SIZE		256
+
 enum hinic_flags {
 	HINIC_LINK_UP = BIT(0),
 	HINIC_INTF_UP = BIT(1),
diff --git a/drivers/net/ethernet/huawei/hinic/hinic_main.c b/drivers/net/ethernet/huawei/hinic/hinic_main.c
index c23ee2ddbce3..41e52f775aae 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_main.c
+++ b/drivers/net/ethernet/huawei/hinic/hinic_main.c
@@ -1189,7 +1189,8 @@ static int nic_dev_init(struct pci_dev *pdev)
 	else
 		netdev->netdev_ops = &hinicvf_netdev_ops;
 
-	netdev->max_mtu = ETH_MAX_MTU;
+	netdev->max_mtu = HINIC_MAX_MTU_SIZE;
+	netdev->min_mtu = HINIC_MIN_MTU_SIZE;
 
 	nic_dev = netdev_priv(netdev);
 	nic_dev->netdev = netdev;
diff --git a/drivers/net/ethernet/huawei/hinic/hinic_port.c b/drivers/net/ethernet/huawei/hinic/hinic_port.c
index 28ae6f1201a8..0a39c3dffa9a 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_port.c
+++ b/drivers/net/ethernet/huawei/hinic/hinic_port.c
@@ -17,9 +17,6 @@
 #include "hinic_port.h"
 #include "hinic_dev.h"
 
-#define HINIC_MIN_MTU_SIZE              256
-#define HINIC_MAX_JUMBO_FRAME_SIZE      15872
-
 enum mac_op {
 	MAC_DEL,
 	MAC_SET,
@@ -147,24 +144,12 @@ int hinic_port_get_mac(struct hinic_dev *nic_dev, u8 *addr)
  **/
 int hinic_port_set_mtu(struct hinic_dev *nic_dev, int new_mtu)
 {
-	struct net_device *netdev = nic_dev->netdev;
 	struct hinic_hwdev *hwdev = nic_dev->hwdev;
 	struct hinic_port_mtu_cmd port_mtu_cmd;
 	struct hinic_hwif *hwif = hwdev->hwif;
 	u16 out_size = sizeof(port_mtu_cmd);
 	struct pci_dev *pdev = hwif->pdev;
-	int err, max_frame;
-
-	if (new_mtu < HINIC_MIN_MTU_SIZE) {
-		netif_err(nic_dev, drv, netdev, "mtu < MIN MTU size");
-		return -EINVAL;
-	}
-
-	max_frame = new_mtu + ETH_HLEN + ETH_FCS_LEN;
-	if (max_frame > HINIC_MAX_JUMBO_FRAME_SIZE) {
-		netif_err(nic_dev, drv, netdev, "mtu > MAX MTU size");
-		return -EINVAL;
-	}
+	int err;
 
 	port_mtu_cmd.func_idx = HINIC_HWIF_FUNC_IDX(hwif);
 	port_mtu_cmd.mtu = new_mtu;
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] net: hinic: Update the range of MTU from 256 to 9600
  2022-10-12  8:29 [PATCH] net: hinic: Update the range of MTU from 256 to 9600 Cai Huoqing
@ 2022-10-12  9:25 ` shaozhengchao
  2022-10-12 10:32   ` Cai Huoqing
  2022-10-12 15:49 ` Jakub Kicinski
  1 sibling, 1 reply; 5+ messages in thread
From: shaozhengchao @ 2022-10-12  9:25 UTC (permalink / raw)
  To: Cai Huoqing, leonro
  Cc: caihuoqing, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Qiao Ma, Christophe JAILLET, Gustavo A. R. Silva,
	netdev, linux-kernel



On 2022/10/12 16:29, Cai Huoqing wrote:
> From: caihuoqing <caihuoqing@baidu.com>
> 
> Hinic hardware only support MTU from 256 to 9600, so set
> the max_mtu and min_mtu.
> 
> And not need to add the validity judgment when set mtu,
> because the judgment is made in net/core: dev_validate_mtu
> 
> Signed-off-by: caihuoqing <caihuoqing@baidu.com>
> ---
>   drivers/net/ethernet/huawei/hinic/hinic_dev.h  |  3 +++
>   drivers/net/ethernet/huawei/hinic/hinic_main.c |  3 ++-
>   drivers/net/ethernet/huawei/hinic/hinic_port.c | 17 +----------------
>   3 files changed, 6 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/net/ethernet/huawei/hinic/hinic_dev.h b/drivers/net/ethernet/huawei/hinic/hinic_dev.h
> index a4fbf44f944c..2bbc94c0a9c1 100644
> --- a/drivers/net/ethernet/huawei/hinic/hinic_dev.h
> +++ b/drivers/net/ethernet/huawei/hinic/hinic_dev.h
> @@ -22,6 +22,9 @@
>   
>   #define LP_PKT_CNT		64
>   
> +#define HINIC_MAX_MTU_SIZE		9600
> +#define HINIC_MIN_MTU_SIZE		256
> +
>   enum hinic_flags {
>   	HINIC_LINK_UP = BIT(0),
>   	HINIC_INTF_UP = BIT(1),
> diff --git a/drivers/net/ethernet/huawei/hinic/hinic_main.c b/drivers/net/ethernet/huawei/hinic/hinic_main.c
> index c23ee2ddbce3..41e52f775aae 100644
> --- a/drivers/net/ethernet/huawei/hinic/hinic_main.c
> +++ b/drivers/net/ethernet/huawei/hinic/hinic_main.c
> @@ -1189,7 +1189,8 @@ static int nic_dev_init(struct pci_dev *pdev)
>   	else
>   		netdev->netdev_ops = &hinicvf_netdev_ops;
>   
> -	netdev->max_mtu = ETH_MAX_MTU;
> +	netdev->max_mtu = HINIC_MAX_MTU_SIZE;
> +	netdev->min_mtu = HINIC_MIN_MTU_SIZE;
>   
>   	nic_dev = netdev_priv(netdev);
>   	nic_dev->netdev = netdev;
> diff --git a/drivers/net/ethernet/huawei/hinic/hinic_port.c b/drivers/net/ethernet/huawei/hinic/hinic_port.c
> index 28ae6f1201a8..0a39c3dffa9a 100644
> --- a/drivers/net/ethernet/huawei/hinic/hinic_port.c
> +++ b/drivers/net/ethernet/huawei/hinic/hinic_port.c
> @@ -17,9 +17,6 @@
>   #include "hinic_port.h"
>   #include "hinic_dev.h"
>   
> -#define HINIC_MIN_MTU_SIZE              256
> -#define HINIC_MAX_JUMBO_FRAME_SIZE      15872
> -
>   enum mac_op {
>   	MAC_DEL,
>   	MAC_SET,
> @@ -147,24 +144,12 @@ int hinic_port_get_mac(struct hinic_dev *nic_dev, u8 *addr)
>    **/
>   int hinic_port_set_mtu(struct hinic_dev *nic_dev, int new_mtu)
>   {
> -	struct net_device *netdev = nic_dev->netdev;
>   	struct hinic_hwdev *hwdev = nic_dev->hwdev;
>   	struct hinic_port_mtu_cmd port_mtu_cmd;
>   	struct hinic_hwif *hwif = hwdev->hwif;
>   	u16 out_size = sizeof(port_mtu_cmd);
>   	struct pci_dev *pdev = hwif->pdev;
> -	int err, max_frame;
> -
> -	if (new_mtu < HINIC_MIN_MTU_SIZE) {
> -		netif_err(nic_dev, drv, netdev, "mtu < MIN MTU size");
> -		return -EINVAL;
> -	}
> -
> -	max_frame = new_mtu + ETH_HLEN + ETH_FCS_LEN;
> -	if (max_frame > HINIC_MAX_JUMBO_FRAME_SIZE) {
> -		netif_err(nic_dev, drv, netdev, "mtu > MAX MTU size");
> -		return -EINVAL;
> -	}
> +	int err;
>   
>   	port_mtu_cmd.func_idx = HINIC_HWIF_FUNC_IDX(hwif);
>   	port_mtu_cmd.mtu = new_mtu;

Hi Cai:
	You cannot change the maximum supported jumbo frame size.
Because as far as I know, this is not compatible with the older
firmware version. If you change the maximum MTU, the maximum length
of packets received by the port will be affected with older fw. So
donot change it.

Zhengchao Shao

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] net: hinic: Update the range of MTU from 256 to 9600
  2022-10-12  9:25 ` shaozhengchao
@ 2022-10-12 10:32   ` Cai Huoqing
  0 siblings, 0 replies; 5+ messages in thread
From: Cai Huoqing @ 2022-10-12 10:32 UTC (permalink / raw)
  To: shaozhengchao
  Cc: leonro, caihuoqing, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni, Qiao Ma, Christophe JAILLET,
	Gustavo A. R. Silva, netdev, linux-kernel

On 12 10月 22 17:25:21, shaozhengchao wrote:
> 
> 
> On 2022/10/12 16:29, Cai Huoqing wrote:
> > From: caihuoqing <caihuoqing@baidu.com>
> > 
> > Hinic hardware only support MTU from 256 to 9600, so set
> > the max_mtu and min_mtu.
> > 
> > And not need to add the validity judgment when set mtu,
> > because the judgment is made in net/core: dev_validate_mtu
> > 
> > Signed-off-by: caihuoqing <caihuoqing@baidu.com>
> > ---
> >   drivers/net/ethernet/huawei/hinic/hinic_dev.h  |  3 +++
> >   drivers/net/ethernet/huawei/hinic/hinic_main.c |  3 ++-
> >   drivers/net/ethernet/huawei/hinic/hinic_port.c | 17 +----------------
> >   3 files changed, 6 insertions(+), 17 deletions(-)
> > 
> > diff --git a/drivers/net/ethernet/huawei/hinic/hinic_dev.h b/drivers/net/ethernet/huawei/hinic/hinic_dev.h
> > index a4fbf44f944c..2bbc94c0a9c1 100644
> > --- a/drivers/net/ethernet/huawei/hinic/hinic_dev.h
> > +++ b/drivers/net/ethernet/huawei/hinic/hinic_dev.h
> > @@ -22,6 +22,9 @@
> >   #define LP_PKT_CNT		64
> > +#define HINIC_MAX_MTU_SIZE		9600
Hi Shao, thanks for your reply.

I will change it in patch v2, like
"#define HINIC_MAX_MTU_SIZE (HINIC_MAX_JUMBO_FRAME_SIZE - ETH_HLEN - ETH_FCS_LEN)"
to compatible the old firmware (maybe some old cards).
> > +#define HINIC_MIN_MTU_SIZE		256
> > +
> >   enum hinic_flags {
> >   	HINIC_LINK_UP = BIT(0),
> >   	HINIC_INTF_UP = BIT(1),
> > diff --git a/drivers/net/ethernet/huawei/hinic/hinic_main.c b/drivers/net/ethernet/huawei/hinic/hinic_main.c
> > index c23ee2ddbce3..41e52f775aae 100644
> > --- a/drivers/net/ethernet/huawei/hinic/hinic_main.c
> > +++ b/drivers/net/ethernet/huawei/hinic/hinic_main.c
> > @@ -1189,7 +1189,8 @@ static int nic_dev_init(struct pci_dev *pdev)
> >   	else
> >   		netdev->netdev_ops = &hinicvf_netdev_ops;
> > -	netdev->max_mtu = ETH_MAX_MTU;
> > +	netdev->max_mtu = HINIC_MAX_MTU_SIZE;
> > +	netdev->min_mtu = HINIC_MIN_MTU_SIZE;
> >   	nic_dev = netdev_priv(netdev);
> >   	nic_dev->netdev = netdev;
> > diff --git a/drivers/net/ethernet/huawei/hinic/hinic_port.c b/drivers/net/ethernet/huawei/hinic/hinic_port.c
> > index 28ae6f1201a8..0a39c3dffa9a 100644
> > --- a/drivers/net/ethernet/huawei/hinic/hinic_port.c
> > +++ b/drivers/net/ethernet/huawei/hinic/hinic_port.c
> > @@ -17,9 +17,6 @@
> >   #include "hinic_port.h"
> >   #include "hinic_dev.h"
> > -#define HINIC_MIN_MTU_SIZE              256
> > -#define HINIC_MAX_JUMBO_FRAME_SIZE      15872
> > -
> >   enum mac_op {
> >   	MAC_DEL,
> >   	MAC_SET,
> > @@ -147,24 +144,12 @@ int hinic_port_get_mac(struct hinic_dev *nic_dev, u8 *addr)
> >    **/
> >   int hinic_port_set_mtu(struct hinic_dev *nic_dev, int new_mtu)
> >   {
> > -	struct net_device *netdev = nic_dev->netdev;
> >   	struct hinic_hwdev *hwdev = nic_dev->hwdev;
> >   	struct hinic_port_mtu_cmd port_mtu_cmd;
> >   	struct hinic_hwif *hwif = hwdev->hwif;
> >   	u16 out_size = sizeof(port_mtu_cmd);
> >   	struct pci_dev *pdev = hwif->pdev;
> > -	int err, max_frame;
> > -
> > -	if (new_mtu < HINIC_MIN_MTU_SIZE) {
> > -		netif_err(nic_dev, drv, netdev, "mtu < MIN MTU size");
> > -		return -EINVAL;
> > -	}
> > -
> > -	max_frame = new_mtu + ETH_HLEN + ETH_FCS_LEN;
> > -	if (max_frame > HINIC_MAX_JUMBO_FRAME_SIZE) {
> > -		netif_err(nic_dev, drv, netdev, "mtu > MAX MTU size");
> > -		return -EINVAL;
> > -	}
> > +	int err;
> >   	port_mtu_cmd.func_idx = HINIC_HWIF_FUNC_IDX(hwif);
> >   	port_mtu_cmd.mtu = new_mtu;
> 
> Hi Cai:
> 	You cannot change the maximum supported jumbo frame size.
> Because as far as I know, this is not compatible with the older
> firmware version. If you change the maximum MTU, the maximum length
> of packets received by the port will be affected with older fw. So
> donot change it.
> 
> Zhengchao Shao

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] net: hinic: Update the range of MTU from 256 to 9600
  2022-10-12  8:29 [PATCH] net: hinic: Update the range of MTU from 256 to 9600 Cai Huoqing
  2022-10-12  9:25 ` shaozhengchao
@ 2022-10-12 15:49 ` Jakub Kicinski
  2022-10-13  6:14   ` Cai Huoqing
  1 sibling, 1 reply; 5+ messages in thread
From: Jakub Kicinski @ 2022-10-12 15:49 UTC (permalink / raw)
  To: Cai Huoqing
  Cc: leonro, caihuoqing, David S. Miller, Eric Dumazet, Paolo Abeni,
	Qiao Ma, Zhengchao Shao, Christophe JAILLET, Gustavo A. R. Silva,
	netdev, linux-kernel

On Wed, 12 Oct 2022 16:29:40 +0800 Cai Huoqing wrote:
> Hinic hardware only support MTU from 256 to 9600, so set
> the max_mtu and min_mtu.

Sounds like a bug fix so please add a Fixes tag so that the patch gets
backported to stable releases.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] net: hinic: Update the range of MTU from 256 to 9600
  2022-10-12 15:49 ` Jakub Kicinski
@ 2022-10-13  6:14   ` Cai Huoqing
  0 siblings, 0 replies; 5+ messages in thread
From: Cai Huoqing @ 2022-10-13  6:14 UTC (permalink / raw)
  To: Jakub Kicinski
  Cc: leonro, caihuoqing, David S. Miller, Eric Dumazet, Paolo Abeni,
	Qiao Ma, Zhengchao Shao, Christophe JAILLET, Gustavo A. R. Silva,
	netdev, linux-kernel

On 12 10月 22 08:49:09, Jakub Kicinski wrote:
> On Wed, 12 Oct 2022 16:29:40 +0800 Cai Huoqing wrote:
> > Hinic hardware only support MTU from 256 to 9600, so set
> > the max_mtu and min_mtu.
> 
> Sounds like a bug fix so please add a Fixes tag so that the patch gets
Hi Jakub,
    Not a bug fix, after v2 reverse the value of max_mtu for Shao's comments,
this patch just simplify the code.
v2 patch here:
https://lore.kernel.org/lkml/20221013060723.7306-1-cai.huoqing@linux.dev/

Thanks,
> backported to stable releases.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2022-10-13  6:15 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-10-12  8:29 [PATCH] net: hinic: Update the range of MTU from 256 to 9600 Cai Huoqing
2022-10-12  9:25 ` shaozhengchao
2022-10-12 10:32   ` Cai Huoqing
2022-10-12 15:49 ` Jakub Kicinski
2022-10-13  6:14   ` Cai Huoqing

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).