On Fri, Feb 02, 2024 at 02:50:58PM -0600, Samudrala, Sridhar wrote: > > > On 2/2/2024 2:23 PM, Joe Damato wrote: > >On Fri, Feb 02, 2024 at 11:58:28AM -0800, Jakub Kicinski wrote: > >>On Fri, 2 Feb 2024 11:33:33 -0800 Joe Damato wrote: > >>>On Fri, Feb 02, 2024 at 10:22:39AM -0800, Jakub Kicinski wrote: > >>>>On Fri, 2 Feb 2024 11:23:28 -0600 Samudrala, Sridhar wrote: > >>>>>I think you should be able to get this functionality via the netdev-genl > >>>>>API to get napi parameters. It returns ifindex as one of the parameters > >>>>>and you should able to get the name from ifindex. > >>>>> > >>>>>$ ./cli.py --spec netdev.yaml --do napi-get --json='{"id": 593}' > >>>>>{'id': 593, 'ifindex': 12, 'irq': 291, 'pid': 3727} > >>>> > >>>>FWIW we also have a C library to access those. Out of curiosity what's > >>>>the programming language you'd use in user space, Joe? > >>> > >>>I am using C from user space. > >> > >>Ah, great! Here comes the advert.. :) > >> > >> make -C tools/net/ynl/ > >> > >>will generate the C lib for you. tools/net/ynl/generated/netdev-user.h > >>will have the full API. There are some samples in > >>tools/net/ynl/samples/. And basic info also here: > >>https://docs.kernel.org/next/userspace-api/netlink/intro-specs.html#ynl-lib > >> > >>You should be able to convert Sridhar's cli.py into an equivalent > >>in C in ~10 LoC. > >> > >>>Curious what you think about > >>>SIOCGIFNAME_BY_NAPI_ID, Jakub? I think it would be very useful, but not > >>>sure if such an extension would be accepted. I can send an RFC, if you'd > >>>like to take a look and consider it. I know you are busy and I don't want > >>>to add too much noise to the list if I can help it :) > >> > >>Nothing wrong with it in particular, but we went with the netlink API > >>because all the objects are related. There are interrupts, NAPI > >>instances, queues, page pools etc. and we need to show all sort of > >>attributes, capabilities, stats as well as the linking. So getsockopts > >>may not scale, or we'd need to create a monster mux getsockopt? > >>Plus with some luck the netlink API will send you notifications of > >>things changing. > > > >Yes this all makes sense. The notification on changes would be excellent, > >especially if NAPI IDs get changed for some reason (e.g. the queue count > >is adjusted or the queues are rebuilt by the driver for some reason like a > >timeout, etc). > > > >I think the issue I'm solving with SIOCGIFNAME_BY_NAPI_ID is related, but > >different. > > > >In my case, SIOCGIFNAME_BY_NAPI_ID identifies which NIC a specific fd from > >accept arrived from. > > > >AFAICT, the netlink API wouldn't be able to help me answer that question. I > >could use SIOCGIFNAME_BY_NAPI_ID to tell me which NIC the fd is from and > >then use netlink to figure out which CPU to bind to (for example), but I > >think SIOCGIFNAME_BY_NAPI_ID is still needed. > > The napi-get netlink api takes napi_id and returns ifindex, irq and pid > associated with the napi id. You can then pass ifindex to the SIOCGIFNAME > ioctl to get the interface name. So it is definitely possible without the > need for the new SIOCGIFNAME_BY_NAPI_ID Ah, I see. OK. In that case, I won't bother with the RFC for SIOCGIFNAME_BY_NAPI_ID. I'll give your suggestion a try next week after I make the driver changes needed to support it.