Cannot get com20020 arcnet driver to work on Siemens IPC727E PC

From: Chris Dams
Date: Wed Oct 13 2021 - 06:21:49 EST


Dear All,

I am having trouble getting the sohard arcnet card ARC-PCIe working on
specifically
Siemens PCs of type IPC7272E. It works when I use a Dell Optiplex PC
in the sense
that I can get packet communication going in this case. A colleague
confirmed that it
is possible to get arcnet packet communication with older Siemens PCs
but not with the
IPC727E model. It has also been confirmed that it is possible to have arcnet
communication using windows on the Siemens IPC7272E.

This card uses the com20020_pci driver. When things don't work ip addr shows

10: arc0-0: <NO-CARRIER,BROADCAST,UP> mtu 508 qdisc fq_codel state DOWN
group default qlen 100 link/arcnet f0 brd 00 permaddr ff

When they do work the NO-CARRIER state is not present, instead it
shows 'BROADCAST,UP,LOWER_UP'.

I have been debugging this and it appears that the card thinks it is
being reconnected
all the time. There is an interrupt a bit more frequently than once a
second and the
status code that is read out in the function arcnet_interrupt (file
drivers/net/arcnet/arcnet.c) contains the bit 0x4 indicating that it
is reconfigured
(status & lp->intmask & RECONflag is true). A more elaborate logging
with log lines
that I added myself can be found below this email. Logging has been added to
the functions arcnet_interrupt, com20020_setmask, com20020_command,
and com20020_status. The logging shows what happens when I try to
bring up the card
using the commands 'ip link set arc0-0 addr <nodenr>' and 'ip link
set dev arc0-0 up'
I am using the same card and coax cable in the case that works as in the case
that does not. Also, it has been tried with a different coax cable.

Does anyone have an idea how this could be solved and/or debugged further?

Kind Regards,
Chris Dams


Siemens PC:
[ 344.277960] arcnet:com20020: CD: read status 8065
[ 344.277962] arcnet:com20020: CD: giving command 16
[ 344.277970] arcnet:com20020: CD: setting mask to 0
[ 344.277975] arcnet:com20020: CD: setting mask to 84
[ 345.117128] arcnet: CD: handling interrupt
[ 345.117139] arcnet:com20020: CD: read status 8065
[ 345.117141] arcnet:com20020: CD: giving command 16
[ 345.117149] arcnet:com20020: CD: setting mask to 0
[ 345.117153] arcnet:com20020: CD: setting mask to 84
[ 345.246614] arcnet:com20020: CD: setting mask to 0
[ 345.246619] arcnet:com20020: CD: giving command 1
[ 345.246622] arcnet:com20020: CD: giving command 2
[ 413.618118] arcnet:com20020: CD: read status b2e1
[ 413.618120] arcnet:com20020: CD: setting mask to 0
[ 413.618126] arcnet:com20020: CD: setting mask to 84
[ 413.618153] arcnet: CD: handling interrupt
[ 413.618158] arcnet:com20020: CD: read status 2e1
[ 413.618160] arcnet:com20020: CD: giving command 84
[ 413.618168] arcnet:com20020: CD: read status 261
[ 413.618170] arcnet:com20020: CD: setting mask to 0
[ 413.618174] arcnet:com20020: CD: setting mask to 84
[ 413.642237] arcnet: CD: handling interrupt
[ 413.642246] arcnet:com20020: CD: read status 8265
[ 413.642248] arcnet:com20020: CD: giving command 16
[ 413.642257] arcnet:com20020: CD: setting mask to 0
[ 413.642261] arcnet:com20020: CD: setting mask to 84
(last 5 lines repeated forever after this)

Dell PC:
[ 3541.586119] arcnet: CD: handling interrupt
[ 3541.586132] arcnet:com20020: CD: read status 7261
[ 3541.586134] arcnet:com20020: CD: setting mask to 0
[ 3541.586140] arcnet:com20020: CD: setting mask to 84
[ 3541.948623] arcnet: CD: handling interrupt
[ 3541.948638] arcnet:com20020: CD: read status 7261
[ 3541.948641] arcnet:com20020: CD: setting mask to 0
[ 3541.948647] arcnet:com20020: CD: setting mask to 84
[ 3542.486415] arcnet:com20020: CD: setting mask to 0
[ 3542.486426] arcnet:com20020: CD: giving command 1
[ 3542.486430] arcnet:com20020: CD: giving command 2
[ 3542.508520] arcnet: CD: handling interrupt
[ 3542.508531] arcnet:com20020: CD: read status 72e1
[ 3542.508532] arcnet:com20020: CD: setting mask to 0
[ 3593.877876] arcnet: CD: handling interrupt
[ 3593.877890] arcnet:com20020: CD: read status 32e1
[ 3593.877894] arcnet:com20020: CD: setting mask to 0
[ 3594.389061] arcnet: CD: handling interrupt
[ 3594.389073] arcnet:com20020: CD: read status 32e1
[ 3594.389075] arcnet:com20020: CD: setting mask to 0
[ 3595.281555] arcnet: CD: handling interrupt
[ 3595.281570] arcnet:com20020: CD: read status 32e5
[ 3595.281573] arcnet:com20020: CD: setting mask to 0
[ 3595.806175] arcnet: CD: handling interrupt
[ 3595.806188] arcnet:com20020: CD: read status 32e5
[ 3595.806191] arcnet:com20020: CD: setting mask to 0
[ 3596.803438] arcnet: CD: handling interrupt
[ 3596.803453] arcnet:com20020: CD: read status 32e5
[ 3596.803456] arcnet:com20020: CD: setting mask to 0
[ 3597.375000] arcnet: CD: handling interrupt
[ 3597.375013] arcnet:com20020: CD: read status 32e5
[ 3597.375015] arcnet:com20020: CD: setting mask to 0
[ 3597.414872] arcnet: CD: handling interrupt
[ 3597.414884] arcnet:com20020: CD: read status 32e5
[ 3597.414886] arcnet:com20020: CD: setting mask to 0
[ 3597.803499] arcnet: CD: handling interrupt
[ 3597.803512] arcnet:com20020: CD: read status 32e5
[ 3597.803515] arcnet:com20020: CD: setting mask to 0
[ 3598.034631] arcnet: CD: handling interrupt
[ 3598.034643] arcnet:com20020: CD: read status 32e5
[ 3598.034645] arcnet:com20020: CD: setting mask to 0
[ 3606.347933] arcnet:com20020: CD: read status 32e5
[ 3606.347936] arcnet:com20020: CD: setting mask to 0
[ 3607.548967] arcnet:com20020: CD: read status 32e1
[ 3607.548973] arcnet:com20020: CD: setting mask to 0
[ 3607.548979] arcnet:com20020: CD: setting mask to 84
[ 3607.549012] arcnet: CD: handling interrupt
[ 3607.549023] arcnet:com20020: CD: read status 32e1
[ 3607.549026] arcnet:com20020: CD: giving command 84
[ 3607.549037] arcnet:com20020: CD: read status 261
[ 3607.549038] arcnet:com20020: CD: setting mask to 0
[ 3607.549043] arcnet:com20020: CD: setting mask to 84
[ 3607.835590] arcnet: CD: handling interrupt
[ 3607.835603] arcnet:com20020: CD: read status 7261
[ 3607.835606] arcnet:com20020: CD: setting mask to 0
[ 3607.835612] arcnet:com20020: CD: setting mask to 84
[ 3608.081450] arcnet: CD: handling interrupt
[ 3608.081464] arcnet:com20020: CD: read status 7261
[ 3608.081467] arcnet:com20020: CD: setting mask to 0
[ 3608.081473] arcnet:com20020: CD: setting mask to 84
[ 3608.392381] arcnet: CD: handling interrupt
[ 3608.392395] arcnet:com20020: CD: read status 7261
[ 3608.392398] arcnet:com20020: CD: setting mask to 0
[ 3608.392404] arcnet:com20020: CD: setting mask to 84
(last 4 lines repeated forever after this)