[v7] net/tap: Allow jumbo frames
Checks
Commit Message
eth_dev_validate_mtu, introduced in 990912e676e, validates configured
MTU plus overhead against max_rx_pktlen.
Since TAP is a virtual device, it should support as big MTU as possible.
Signed-off-by: Francesco Mancino <francesco.mancino@tutus.se>
---
drivers/net/tap/rte_eth_tap.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Comments
On Mon, 8 Aug 2022 16:49:44 +0200
Francesco Mancino <francesco.mancino@tutus.se> wrote:
> eth_dev_validate_mtu, introduced in 990912e676e, validates configured
> MTU plus overhead against max_rx_pktlen.
> Since TAP is a virtual device, it should support as big MTU as possible.
>
> Signed-off-by: Francesco Mancino <francesco.mancino@tutus.se>
dev_info->min_rx_bufsize = 0;
Thanks for your patience.
Since tap is built on top of an existing kernel network device a more
complete solution would be to query the kernel device to find out what
its MTU is.
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Thank you for the feedback.
I am sorry for the email spam, it was a learning process.
I am not sure what results we would get by querying the MTU
before configuring it, since we can (and do) set the MTU using
SIOCSIFMTU.
On 2022-08-08 17:03, Stephen Hemminger wrote:
> On Mon, 8 Aug 2022 16:49:44 +0200
> Francesco Mancino <francesco.mancino@tutus.se> wrote:
>
>> eth_dev_validate_mtu, introduced in 990912e676e, validates configured
>> MTU plus overhead against max_rx_pktlen.
>> Since TAP is a virtual device, it should support as big MTU as possible.
>>
>> Signed-off-by: Francesco Mancino <francesco.mancino@tutus.se>
> dev_info->min_rx_bufsize = 0;
>
>
> Thanks for your patience.
>
> Since tap is built on top of an existing kernel network device a more
> complete solution would be to query the kernel device to find out what
> its MTU is.
>
> Acked-by: Stephen Hemminger <stephen@networkplumber.org>
>
On Mon, 8 Aug 2022 17:38:21 +0200
Francesco Mancino <francesco.mancino@tutus.se> wrote:
> Thank you for the feedback.
>
> I am sorry for the email spam, it was a learning process.
>
> I am not sure what results we would get by querying the MTU
> before configuring it, since we can (and do) set the MTU using
> SIOCSIFMTU.
>
> On 2022-08-08 17:03, Stephen Hemminger wrote:
> > On Mon, 8 Aug 2022 16:49:44 +0200
> > Francesco Mancino <francesco.mancino@tutus.se> wrote:
> >
> >> eth_dev_validate_mtu, introduced in 990912e676e, validates configured
> >> MTU plus overhead against max_rx_pktlen.
> >> Since TAP is a virtual device, it should support as big MTU as possible.
> >>
> >> Signed-off-by: Francesco Mancino <francesco.mancino@tutus.se>
> > dev_info->min_rx_bufsize = 0;
> >
> >
> > Thanks for your patience.
> >
> > Since tap is built on top of an existing kernel network device a more
> > complete solution would be to query the kernel device to find out what
> > its MTU is.
> >
> > Acked-by: Stephen Hemminger <stephen@networkplumber.org>
> >
>
There is an attribute IFLA_MAX_MTU reported by devices over netlink.
$ ip -d li show dev enp2s0
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq state UP mode DEFAULT group default qlen 1000
link/ether d8:5e:d3:06:5d:13 brd ff:ff:ff:ff:ff:ff promiscuity 0 minmtu 68 maxmtu 9194 addrgenmode none numtxqueues 1 numrxqueues 1 gso_max_size 64000 gso_max_segs 64 gro_max_size 65536 parentbus pci parentdev 0000:02:00.0
Notice maxmtu of 9194 reported.
Tap device already has a netlink infrastructure
Interesting, did not know about that attribute.
Tested some tap devices on my machine and get a maxmtu value close to
max uint16, way bigger than RTE_ETHER_MAX_JUMBO_FRAME_LEN.
I do not know if will have time to code and test using netlink to set this limit,
for the time being i think RTE_ETHER_MAX_JUMBO_FRAME_LEN is better than the previous limit.
On 2022-08-08 18:42, Stephen Hemminger wrote:
> On Mon, 8 Aug 2022 17:38:21 +0200
> Francesco Mancino <francesco.mancino@tutus.se> wrote:
>
>> Thank you for the feedback.
>>
>> I am sorry for the email spam, it was a learning process.
>>
>> I am not sure what results we would get by querying the MTU
>> before configuring it, since we can (and do) set the MTU using
>> SIOCSIFMTU.
>>
>> On 2022-08-08 17:03, Stephen Hemminger wrote:
>>> On Mon, 8 Aug 2022 16:49:44 +0200
>>> Francesco Mancino <francesco.mancino@tutus.se> wrote:
>>>
>>>> eth_dev_validate_mtu, introduced in 990912e676e, validates configured
>>>> MTU plus overhead against max_rx_pktlen.
>>>> Since TAP is a virtual device, it should support as big MTU as possible.
>>>>
>>>> Signed-off-by: Francesco Mancino <francesco.mancino@tutus.se>
>>> dev_info->min_rx_bufsize = 0;
>>>
>>>
>>> Thanks for your patience.
>>>
>>> Since tap is built on top of an existing kernel network device a more
>>> complete solution would be to query the kernel device to find out what
>>> its MTU is.
>>>
>>> Acked-by: Stephen Hemminger <stephen@networkplumber.org>
>>>
>>
>
> There is an attribute IFLA_MAX_MTU reported by devices over netlink.
>
> $ ip -d li show dev enp2s0
> 2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq state UP mode DEFAULT group default qlen 1000
> link/ether d8:5e:d3:06:5d:13 brd ff:ff:ff:ff:ff:ff promiscuity 0 minmtu 68 maxmtu 9194 addrgenmode none numtxqueues 1 numrxqueues 1 gso_max_size 64000 gso_max_segs 64 gro_max_size 65536 parentbus pci parentdev 0000:02:00.0
>
> Notice maxmtu of 9194 reported.
>
> Tap device already has a netlink infrastructure
>
On 8/8/2022 4:03 PM, Stephen Hemminger wrote:
> On Mon, 8 Aug 2022 16:49:44 +0200
> Francesco Mancino <francesco.mancino@tutus.se> wrote:
>
>> eth_dev_validate_mtu, introduced in 990912e676e, validates configured
>> MTU plus overhead against max_rx_pktlen.
>> Since TAP is a virtual device, it should support as big MTU as possible.
>>
>> Signed-off-by: Francesco Mancino <francesco.mancino@tutus.se>
> dev_info->min_rx_bufsize = 0;
>
>
> Thanks for your patience.
>
> Since tap is built on top of an existing kernel network device a more
> complete solution would be to query the kernel device to find out what
> its MTU is.
>
> Acked-by: Stephen Hemminger <stephen@networkplumber.org>
+1 to get as it is for now, but if you have a chance, please send
'IFLA_MAX_MTU' implementation to replace current one, thanks.
Applied to dpdk-next-net/main, thanks.
@@ -1066,7 +1066,7 @@ tap_dev_info(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
dev_info->if_index = internals->if_index;
dev_info->max_mac_addrs = 1;
- dev_info->max_rx_pktlen = (uint32_t)RTE_ETHER_MAX_VLAN_FRAME_LEN;
+ dev_info->max_rx_pktlen = RTE_ETHER_MAX_JUMBO_FRAME_LEN;
dev_info->max_rx_queues = RTE_PMD_TAP_MAX_QUEUES;
dev_info->max_tx_queues = RTE_PMD_TAP_MAX_QUEUES;
dev_info->min_rx_bufsize = 0;