A Linux kernel USB alrendszerébe eUSB2 dupla izochron IN sávszélesség támogatás érkezik

Greg Kroah-Hartman beolvasztotta a kernelbe Sakari Ailus patchsorozatát, amely az eUSB2 Double Isochronous IN Bandwidth kiterjesztés támogatását hozza el a Linux USB stack számára. Az új képesség az „USB 2.0 Double Isochronous IN Bandwidth” ECN előírásait követi, és lehetővé teszi, hogy a modern, integrált USB2 webkamerák a korábbiaknál kétszeres adatmennyiséget továbbítsanak. Ezeket az eszközöket a bcdUSB 0x0220 érték és egy új kísérő endpoint-deszkriptor alapján lehet azonosítani, amely a normál isochron leíróban nulla packet size mellett jelenik meg. A Linux kernelben ehhez korábban már bekerült az alapvető leíró-elemzés, a mostani sorozat pedig a UVC, az USB core és az xHCI driverek szintjén valósítja meg a teljes támogatást.

A Linux kernel USB alrendszerébe eUSB2 dupla izochron IN sávszélesség támogatás érkezik

Fejlesztői módosítások

A változtatások a rendszer több pontját érintik. A UVC driverben a maximális bytes-per-interval érték számítását új központi függvény váltja ki, amely képes kezelni az eUSB2 sajátosságait, a kód ennek megfelelően 16 bitesről 32 bites típusokra áll át. Az USB core-ban új API jelent meg, a usb_endpoint_max_periodic_payload, amely isochron és interrupt endpointokra képes a maximális payload meghatározására, beleértve az eUSB2 dupla sávszélességét is.

Ezzel együtt bevezetésre került egy ellenőrző függvény is, amely kimondottan az eUSB2 IN endpointok felismerésére szolgál. Az xHCI host driverben több helyen módosították az endpoint-kezelést: új ellenőrzések kerültek be, amelyek megakadályozzák a nem támogatott konfigurációk beállítását, a mult és burst mezők kezelése pedig kiegészült az eUSB2 szabályokkal. A kód tisztább lett azáltal, hogy a régi, ezzel párhuzamos funkciókat és makrókat kivezették, a duplikált számításokat központi függvények váltották ki.

Hatása a kernelben és a várható előnyök

A beolvasztott kernel patchsorozat összesen tizenkét fájlt érintett, 137 sor új kóddal és 80 sor törlésével. Az üzemeltetők és felhasználók oldalán az újítás kézzelfogható előnyt hoz: a következő generációs integrált USB2 webkamerák a Linux alatt is kihasználhatják a szabvány adta kétszeres átviteli lehetőséget. Ez különösen a nagyfelbontású videófolyamoknál és több adatcsatornát használó eszközöknél jelenthet javulást. A fejlesztők számára a mostani átalakítás hosszú távon is egyszerűsíti a kódot, mivel a különféle driverek helyett egységes függvények végzik az endpointokhoz kapcsolódó számításokat. Az eUSB2 támogatás így időben érkezett a 6.18-as kernel ciklus előtt, amely várhatóan az év végére készül el, és hosszú távú támogatást is kap majd.

Gábor a Pingvinbázis alapítója és főszerkesztője, több mint 20 éves tapasztalattal rendelkezik a Linux rendszerek és az Open Source szoftverek területén. Jártas a Python, és a PHP nyelvben, valamint a BASH scriptelésben is.