[PATCH v3 3/4] ipq40xx: fix compatibility with linux-atm tools

Martin Schiller ms at dev.tdt.de
Mon Jan 13 23:34:51 PST 2025


On 2025-01-13 23:27, Sergey Ryazanov wrote:
> Hi Andre, Martin,
> 
> On 13.01.2025 14:17, Andre Heider wrote:
>> On 13/01/2025 9:17 am, Martin Schiller wrote:
>>> On 2025-01-12 15:09, Sergey Ryazanov wrote:
>>>> atm_qos struct should be the same both for user and kernel spaces. 
>>>> Via
>>>> the __SO_ENCODE() macro it is used to define the SO_ATMQOS socket 
>>>> IOC.
>>>> 
>>>> During the VRX518 support introduction, the atm_trafprm sturct 
>>>> nested
>>>> into the atm_qos stucture was update with newer fields that are
>>>> referenced by the ATM TC layer of the VRX518 TC driver. These new 
>>>> fields
>>>> are intended to communicate information for extra traffic classes
>>>> supported by the driver. But we are still using vanilla kernel 
>>>> headers
>>>> to build the toolchain. Due to the atm.h header incoherency 
>>>> br2684ctl
>>>> from linux-atm tools is incapable to configure the ATM bridge 
>>>> netdev:
>>>> 
>>>>   br2684ctl: Interface "dsl0" created sucessfully
>>>>   br2684ctl: Communicating over ATM 0.1.2, encapsulation: LLC
>>>>   br2684ctl: setsockopt SO_ATMQOS 22 <-- EINVAL errno
>>>>   br2684ctl: Fatal: failed to connect on socket; File descriptor in 
>>>> bad state
>>> 
>>> Hmmm... I have fixed this problem in the past by including the
>>> "user_headers". See commit e53ed6af8744 (“linux-atm: use target 
>>> specific
>>> kernel headers”) [1]. Felix suggested this to me in [2].
>>> Does this no longer work?
>> 
>> Good question, I didn't know about that patch.
> 
> Me too. As it was mentioned in cover letter, I've faced the ATM bridge
> issue on the latest stable release - 23.05.5. And the e53ed6af87
> ("linux-atm: use target specific kernel headers") commit was
> introduced after the branching and was never backported:
> 
> $ git log --oneline -n3 master package/network/utils/linux-atm/
> 3e024022c3 linux-atm: fix build with GCC 14
> e53ed6af87 linux-atm: use target specific kernel headers
> 9aa3d5b345 linux-atm: Include linux/sockios.h for SIOCGSTAMP
> 
> $ git log --oneline -n2 openwrt-23.05 package/network/utils/linux-atm/
> 9aa3d5b345 linux-atm: Include linux/sockios.h for SIOCGSTAMP
> 806354ab53 linux-atm: Fix compile warning
> 
> I developed the extra fields disabling patch for the stable release
> and then rebased. And then in V3 extended it to drop the Lantiq's ATM
> hacks entirely.
> 
> BTW, I checked the Martin's fix in the latest master just now. It
> works and picks the correct atm.h from the patched kernel.
> 
>> At least on ipq40xx there's nothing writing the custom classes to qos- 
>>  >txtp.traffic_class, it's all just code that reads and checks for 
>> those, so it's basically useless and dead code. This removal here 
>> allows us to drop the atm.h patch.
> 
> I checked the git history, it looks like since 2007 only Lantiq's
> legacy driver (now ltq-atm) and various compat patches (now
> MIPS-lantiq-add-atm-hack.patch) are referencing
> ATM_VBR_NRT/ATM_VBR_RT/ATM_UBR_PLUS/ATM_GFR.
> 
> We have two options now. (a) Keep the Lantiq's hack in the tree for
> both platform and keep the include path amend in linux-atm. (b)
> proceed with this patch and probably backport it to v23 and v24. And
> with a follow up patch remove the corresponding ATM hacks from Lantiq
> and eventually from linux-atm.
> 
>> If that's the case too for lantiq, we could apply the same logic there 
>> and make linux-atm shared again?
> 
> Yep. I like the plan 'b' for cleaning the tree from vendor's hacks,
> stop spreading them to other targets and simplifying maintenance.

I think it would be good if we remove this from the lantiq target as 
well. The fewer patches, the better.

> 
>> In any case, this set still works on my ipq40xx device and vdsl seems 
>> to work just fine!
> 
> Have you gave a change to this series, Andre?
> 
> --
> Sergey



More information about the openwrt-devel mailing list