Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4c2743f9 authored by Raghu Vatsavayi's avatar Raghu Vatsavayi Committed by David S. Miller
Browse files

liquidio: MTU limits



This patch limits the MTU  between 68 bytes and 16000 bytes.

Signed-off-by: default avatarDerek Chickles <derek.chickles@caviumnetworks.com>
Signed-off-by: default avatarSatanand Burla <satananda.burla@caviumnetworks.com>
Signed-off-by: default avatarFelix Manlunas <felix.manlunas@caviumnetworks.com>
Signed-off-by: default avatarRaghu Vatsavayi <raghu.vatsavayi@caviumnetworks.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 1e0d30fe
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -554,7 +554,7 @@ lio_ethtool_get_ringparam(struct net_device *netdev,
		tx_pending = CFG_GET_NUM_TX_DESCS_NIC_IF(conf6x, lio->ifidx);
	}

	if (lio->mtu > OCTNET_DEFAULT_FRM_SIZE) {
	if (lio->mtu > OCTNET_DEFAULT_FRM_SIZE - OCTNET_FRM_HEADER_SIZE) {
		ering->rx_pending = 0;
		ering->rx_max_pending = 0;
		ering->rx_mini_pending = 0;
+11 −10
Original line number Diff line number Diff line
@@ -2365,11 +2365,14 @@ void liquidio_link_ctrl_cmd_completion(void *nctrl_ptr)
	case OCTNET_CMD_CHANGE_MTU:
		/* If command is successful, change the MTU. */
		netif_info(lio, probe, lio->netdev, " MTU Changed from %d to %d\n",
			   netdev->mtu, nctrl->ncmd.s.param2);
			   netdev->mtu, nctrl->ncmd.s.param1);
		dev_info(&oct->pci_dev->dev, "%s MTU Changed from %d to %d\n",
			 netdev->name, netdev->mtu,
			 nctrl->ncmd.s.param2);
		netdev->mtu = nctrl->ncmd.s.param2;
			 nctrl->ncmd.s.param1);
		rtnl_lock();
		netdev->mtu = nctrl->ncmd.s.param1;
		call_netdevice_notifiers(NETDEV_CHANGEMTU, netdev);
		rtnl_unlock();
		break;

	case OCTNET_CMD_GPIO_ACCESS:
@@ -2657,18 +2660,16 @@ static int liquidio_change_mtu(struct net_device *netdev, int new_mtu)
	struct lio *lio = GET_LIO(netdev);
	struct octeon_device *oct = lio->oct_dev;
	struct octnic_ctrl_pkt nctrl;
	int max_frm_size = new_mtu + OCTNET_FRM_HEADER_SIZE;
	int ret = 0;

	/* Limit the MTU to make sure the ethernet packets are between 64 bytes
	 * and 65535 bytes
	/* Limit the MTU to make sure the ethernet packets are between 68 bytes
	 * and 16000 bytes
	 */
	if ((max_frm_size < OCTNET_MIN_FRM_SIZE) ||
	    (max_frm_size > OCTNET_MAX_FRM_SIZE)) {
	if ((new_mtu < LIO_MIN_MTU_SIZE) ||
	    (new_mtu > LIO_MAX_MTU_SIZE)) {
		dev_err(&oct->pci_dev->dev, "Invalid MTU: %d\n", new_mtu);
		dev_err(&oct->pci_dev->dev, "Valid range %d and %d\n",
			(OCTNET_MIN_FRM_SIZE - OCTNET_FRM_HEADER_SIZE),
			(OCTNET_MAX_FRM_SIZE - OCTNET_FRM_HEADER_SIZE));
			LIO_MIN_MTU_SIZE, LIO_MAX_MTU_SIZE);
		return -EINVAL;
	}

+3 −0
Original line number Diff line number Diff line
@@ -30,6 +30,9 @@
#include <linux/dma-mapping.h>
#include <linux/ptp_clock_kernel.h>

#define LIO_MAX_MTU_SIZE (OCTNET_MAX_FRM_SIZE - OCTNET_FRM_HEADER_SIZE)
#define LIO_MIN_MTU_SIZE 68

struct oct_nic_stats_resp {
	u64     rh;
	struct oct_link_stats stats;