[dpdk-dev] [PATCH v7 09/14] net/avf: enable ops for MTU setting
Wenzhuo Lu
wenzhuo.lu at intel.com
Wed Jan 10 14:02:01 CET 2018
From: Jingjing Wu <jingjing.wu at intel.com>
Signed-off-by: Jingjing Wu <jingjing.wu at intel.com>
---
doc/guides/nics/features/avf.ini | 1 +
drivers/net/avf/avf_ethdev.c | 30 ++++++++++++++++++++++++++++++
2 files changed, 31 insertions(+)
diff --git a/doc/guides/nics/features/avf.ini b/doc/guides/nics/features/avf.ini
index 61527d7..cf1b246 100644
--- a/doc/guides/nics/features/avf.ini
+++ b/doc/guides/nics/features/avf.ini
@@ -8,6 +8,7 @@ Speed capabilities = Y
Link status = Y
Link status event = Y
Queue start/stop = Y
+MTU update = Y
Jumbo frame = Y
Scattered Rx = Y
TSO = Y
diff --git a/drivers/net/avf/avf_ethdev.c b/drivers/net/avf/avf_ethdev.c
index 5a800ff..e4a6f35 100644
--- a/drivers/net/avf/avf_ethdev.c
+++ b/drivers/net/avf/avf_ethdev.c
@@ -64,6 +64,7 @@ static int avf_dev_rss_hash_update(struct rte_eth_dev *dev,
struct rte_eth_rss_conf *rss_conf);
static int avf_dev_rss_hash_conf_get(struct rte_eth_dev *dev,
struct rte_eth_rss_conf *rss_conf);
+static int avf_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu);
static void avf_dev_set_default_mac_addr(struct rte_eth_dev *dev,
struct ether_addr *mac_addr);
@@ -104,6 +105,7 @@ static void avf_dev_set_default_mac_addr(struct rte_eth_dev *dev,
.reta_query = avf_dev_rss_reta_query,
.rss_hash_update = avf_dev_rss_hash_update,
.rss_hash_conf_get = avf_dev_rss_hash_conf_get,
+ .mtu_set = avf_dev_mtu_set,
};
static int
@@ -796,6 +798,34 @@ static void avf_dev_set_default_mac_addr(struct rte_eth_dev *dev,
return 0;
}
+static int
+avf_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
+{
+ struct avf_info *vf = AVF_DEV_PRIVATE_TO_VF(dev->data->dev_private);
+ uint32_t frame_size = mtu + AVF_ETH_OVERHEAD;
+ int ret = 0;
+
+ if (mtu < ETHER_MIN_MTU || frame_size > AVF_FRAME_SIZE_MAX)
+ return -EINVAL;
+
+ /* mtu setting is forbidden if port is start */
+ if (dev->data->dev_started) {
+ PMD_DRV_LOG(ERR, "port must be stopped before configuration");
+ return -EBUSY;
+ }
+
+ if (frame_size > ETHER_MAX_LEN)
+ dev->data->dev_conf.rxmode.offloads |=
+ DEV_RX_OFFLOAD_JUMBO_FRAME;
+ else
+ dev->data->dev_conf.rxmode.offloads &=
+ ~DEV_RX_OFFLOAD_JUMBO_FRAME;
+
+ dev->data->dev_conf.rxmode.max_rx_pkt_len = frame_size;
+
+ return ret;
+}
+
static void
avf_dev_set_default_mac_addr(struct rte_eth_dev *dev,
struct ether_addr *mac_addr)
--
1.9.3
More information about the dev
mailing list