Re: 回复: [edk2-devel] [PATCH] UsbNetworkPkg: add USB network devices support

RichardHo [何明忠] via groups.io richardho=ami.com at groups.io
Fri Sep 23 05:54:24 UTC 2022


Hi Liming,

RNDIS specification is not defines this.
We're follow the ECM (5.4 Ethernet Networking Functional Descriptor) and NCM (5.2.1 NCM Functional Descriptor)specification to implement RNDIS driver.

If RNDIS device has other way to know the networking functional information.
We could implement the code to GetUsbHeaderFunDescriptor, GetUsbUnionFunDescriptor, and GetUsbRndisFunDescriptor routine.

Thanks,
Richard

-----Original Message-----
From: gaoliming <gaoliming at byosoft.com.cn>
Sent: 2022年9月23日 1:03 PM
To: devel at edk2.groups.io; RichardHo [何明忠] <RichardHo at ami.com>; 'Rebecca Cran' <rebecca at quicinc.com>
Cc: 'Andrew Fish' <afish at apple.com>; 'Leif Lindholm' <quic_llindhol at quicinc.com>; 'Michael D Kinney' <michael.d.kinney at intel.com>; 'Michael Kubacki' <michael.kubacki at microsoft.com>; 'Zhiguang Liu' <zhiguang.liu at intel.com>; TonyLo [羅金松] <TonyLo at ami.com>
Subject: [EXTERNAL] 回复: [edk2-devel] [PATCH] UsbNetworkPkg: add USB network devices support


**CAUTION: The e-mail below is from an external source. Please exercise caution before opening attachments, clicking links, or following guidance.**

Richard:
  We also verify USB RNDIS module with open BMC. It reports USB RNDIS device descriptor type is USB_DESC_TYPE_INTERFACE (0x04). It is not supported by Rndis module.

  But in UsbNetworkPkg\Include\Protocol\UsbEthernetProtocol.h, it defines CS_INTERFACE as 0x24. Rndis module only supports this descriptor type.

  So, I want to confirm which specification defines device descriptor type
0x24 and its related structure HEADER_FUN_DESCRIPTOR/ UNION_FUN_DESCRIPTOR/ ETHERNET_FUN_DESCRIPTOR.

Thanks
Liming
> -----邮件原件-----
> 发件人: devel at edk2.groups.io <devel at edk2.groups.io> 代表 RichardHo
> [何明忠] via groups.io
> 发送时间: 2022年9月7日 13:31
> 收件人: Rebecca Cran <rebecca at quicinc.com>; devel at edk2.groups.io
> 抄送: Andrew Fish <afish at apple.com>; Leif Lindholm
> <quic_llindhol at quicinc.com>; Michael D Kinney
> <michael.d.kinney at intel.com>; Michael Kubacki
> <michael.kubacki at microsoft.com>; Zhiguang Liu
> <zhiguang.liu at intel.com>; Liming Gao <gaoliming at byosoft.com.cn>;
> TonyLo [羅金松]
> <TonyLo at ami.com>
> 主题: Re: [edk2-devel] [PATCH] UsbNetworkPkg: add USB network devices
> support
>
> Hi Rebecca,
>
> We didn't check it in QEMU.
> Is QEMU report standard USB RNDIS protocol?
>
> We only test it in physical device. Below is device lists.
>
> USB RNDIS:
> AST2500    : BMC report the RNDIS device
>
> USB NCM:
> DisplayLink HIS USB3.0 Portable Dock(DisplayLink (UK) Ltd.) Vendor ID:
> 0x17E9 Product ID: 0x4301
>
> USB ECM:
> DM9621(Davicom Semiconductor, Inc.)
> Vendor ID: 0x0A46
> Product ID: 0x1269
>
> Thanks,
> Richard
>
> -----Original Message-----
> From: Rebecca Cran <rebecca at quicinc.com>
> Sent: 2022年9月6日 11:05 PM
> To: devel at edk2.groups.io; RichardHo [何明忠] <RichardHo at ami.com>
> Cc: Andrew Fish <afish at apple.com>; Leif Lindholm
> <quic_llindhol at quicinc.com>; Michael D Kinney
> <michael.d.kinney at intel.com>; Michael Kubacki
> <michael.kubacki at microsoft.com>; Zhiguang Liu
> <zhiguang.liu at intel.com>; Liming Gao <gaoliming at byosoft.com.cn>;
> TonyLo [羅金松]
> <TonyLo at ami.com>
> Subject: [EXTERNAL] Re: [edk2-devel] [PATCH] UsbNetworkPkg: add USB
> network devices support
>
>
> **CAUTION: The e-mail below is from an external source. Please
> exercise caution before opening attachments, clicking links, or following guidance.
**
>
> Is it expected that this will work with QEMU (with the usb-net fixes
> from
> https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgith
> u b.com%2Fmcb30%2Fqemu%2Ftree%2Fusbnet3&data=05%7C01%7Crich
> ardho%40ami.com%7C1dd20e124cd64659b4e908da90193dd3%7C27e97857
> e15f486cb58e86c2b3040f93%7C1%7C0%7C637980735342252066%7CUnkno
> wn%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1h
> aWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=xHRQc%2Fnv7fP
> k%2BPEVavIlfFpaXj6Gq8NiHUsRdd5HD%2Fc%3D&reserved=0),
> for example using the SBSA-REF machine for Arm or OVMF for X64?
>
> I'm adding the following parameters to QEMU:
>
> -netdev user,id=net0,net=192.168.10.0/24,dhcpstart=192.168.10.1
> -device
> usb-net,netdev=net0
>
>
> On OVMF I get the following crash when loading UsbRndis.efi after
> NetworkCommon.efi:
>
> Support(): UNDI3.1 found on handle 6550D18
> Support(): supported on 6550D18
> Start(): UNDI3.1 found
> !!!! X64 Exception Type - 06(#UD - Invalid Opcode)  CPU Apic ID -
> 00000000 !!!!
> RIP  - 00000000000B0001, CS  - 0000000000000038, RFLAGS -
> 0000000000000283 RAX  - 000000000653AF80, RCX - 00000000065DC382, RDX
> - 0000000000005441 RBX  - 00000000065D8000, RSP - 0000000007E8EA48,
> RBP - 00000000065DB001 RSI  - 0000000000000048, RDI - 0000000006CE82C0
> R8   - 0000000007E8EA60, R9  - 0000000007E8EAD0, R10 -
> 0000000007E8E804
> R11  - 0000000000000000, R12 - 8000000000000003, R13 -
> 0000000000000001
> R14  - 0000000006CEE640, R15 - 0000000000000006
> DS   - 0000000000000030, ES  - 0000000000000030, FS  -
> 0000000000000030
> GS   - 0000000000000030, SS  - 0000000000000030
> CR0  - 0000000080010033, CR2 - 0000000000000000, CR3 -
> 0000000007C01000
> CR4  - 0000000000000668, CR8 - 0000000000000000
> DR0  - 0000000000000000, DR1 - 0000000000000000, DR2 -
> 0000000000000000
> DR3  - 0000000000000000, DR6 - 00000000FFFF0FF0, DR7 -
> 0000000000000400 GDTR - 00000000079DE000 0000000000000047, LDTR -
> 0000000000000000
> IDTR - 000000000753C018 0000000000000FFF,   TR - 0000000000000000
> FXSAVE_STATE - 0000000007E8E6A0
> !!!! Can't find image information. !!!!
>
>
> On Arm, I don't get a crash but no network interface gets created.
> I've checked the QEMU RNDIS interface is working: if I boot to Linux I
> can
get
> an IP address and communicate with the outside world.
>
> --
> Rebecca Cran
>
>
> On 9/1/22 23:24, RichardHo [何明忠] via groups.io wrote:
> > UsbNetworkPkg provides network functions for USB ACM, USB NCM, and
> USB
> > RNDIS network device.
> >
> > Signed-off-by: Richard Ho <richardho at ami.com>
> > Cc: Andrew Fish <afish at apple.com>
> > Cc: Leif Lindholm <quic_llindhol at quicinc.com>
> > Cc: Michael D Kinney <michael.d.kinney at intel.com>
> > Cc: Michael Kubacki <michael.kubacki at microsoft.com>
> > Cc: Zhiguang Liu <zhiguang.liu at intel.com>
> > Cc: Liming Gao <gaoliming at byosoft.com.cn>
> > Reviewed-by: Tony Lo <tonylo at ami.com>
> > ---
> >   UsbNetworkPkg/Config/UsbNetworkPkg.inc.dsc    |    9 +
> >   .../Config/UsbNetworkPkgComponentsDxe.inc.dsc |   20 +
> >   .../Config/UsbNetworkPkgComponentsDxe.inc.fdf |   20 +
> >   .../Config/UsbNetworkPkgDefines.inc.dsc       |   23 +
> >   .../Include/Protocol/UsbEthernetProtocol.h    |  872 +++++++++
> >   UsbNetworkPkg/NetworkCommon/ComponentName.c   |  264 +++
> >   UsbNetworkPkg/NetworkCommon/DriverBinding.c   |  583 ++++++
> >   UsbNetworkPkg/NetworkCommon/DriverBinding.h   |  263 +++
> >   UsbNetworkPkg/NetworkCommon/NetworkCommon.inf |   43 +
> >   UsbNetworkPkg/NetworkCommon/PxeFunction.c     | 1734
> +++++++++++++++++
> >   UsbNetworkPkg/ReadMe.md                       |   65 +
> >   UsbNetworkPkg/ReleaseNotes.md                 |   11 +
> >   UsbNetworkPkg/UsbCdcEcm/ComponentName.c       |  170 ++
> >   UsbNetworkPkg/UsbCdcEcm/UsbCdcEcm.c           |  504 +++++
> >   UsbNetworkPkg/UsbCdcEcm/UsbCdcEcm.h           |  211 ++
> >   UsbNetworkPkg/UsbCdcEcm/UsbCdcEcm.inf         |   41 +
> >   UsbNetworkPkg/UsbCdcEcm/UsbEcmFunction.c      |  861
> ++++++++
> >   UsbNetworkPkg/UsbCdcNcm/ComponentName.c       |  170 ++
> >   UsbNetworkPkg/UsbCdcNcm/UsbCdcNcm.c           |  508 +++++
> >   UsbNetworkPkg/UsbCdcNcm/UsbCdcNcm.h           |  245 +++
> >   UsbNetworkPkg/UsbCdcNcm/UsbCdcNcm.inf         |   41 +
> >   UsbNetworkPkg/UsbCdcNcm/UsbNcmFunction.c      |  946
> +++++++++
> >   UsbNetworkPkg/UsbNetworkPkg.dec               |   32 +
> >   UsbNetworkPkg/UsbRndis/ComponentName.c        |  172 ++
> >   UsbNetworkPkg/UsbRndis/UsbRndis.c             |  848 ++++++++
> >   UsbNetworkPkg/UsbRndis/UsbRndis.h             |  569 ++++++
> >   UsbNetworkPkg/UsbRndis/UsbRndis.inf           |   41 +
> >   UsbNetworkPkg/UsbRndis/UsbRndisFunction.c     | 1587
> +++++++++++++++
> >   28 files changed, 10853 insertions(+)
> >   create mode 100644 UsbNetworkPkg/Config/UsbNetworkPkg.inc.dsc
> >   create mode 100644
> UsbNetworkPkg/Config/UsbNetworkPkgComponentsDxe.inc.dsc
> >   create mode 100644
> UsbNetworkPkg/Config/UsbNetworkPkgComponentsDxe.inc.fdf
> >   create mode 100644
> UsbNetworkPkg/Config/UsbNetworkPkgDefines.inc.dsc
> >   create mode 100644
> UsbNetworkPkg/Include/Protocol/UsbEthernetProtocol.h
> >   create mode 100644
> UsbNetworkPkg/NetworkCommon/ComponentName.c
> >   create mode 100644 UsbNetworkPkg/NetworkCommon/DriverBinding.c
> >   create mode 100644 UsbNetworkPkg/NetworkCommon/DriverBinding.h
> >   create mode 100644
> UsbNetworkPkg/NetworkCommon/NetworkCommon.inf
> >   create mode 100644 UsbNetworkPkg/NetworkCommon/PxeFunction.c
> >   create mode 100644 UsbNetworkPkg/ReadMe.md
> >   create mode 100644 UsbNetworkPkg/ReleaseNotes.md
> >   create mode 100644 UsbNetworkPkg/UsbCdcEcm/ComponentName.c
> >   create mode 100644 UsbNetworkPkg/UsbCdcEcm/UsbCdcEcm.c
> >   create mode 100644 UsbNetworkPkg/UsbCdcEcm/UsbCdcEcm.h
> >   create mode 100644 UsbNetworkPkg/UsbCdcEcm/UsbCdcEcm.inf
> >   create mode 100644 UsbNetworkPkg/UsbCdcEcm/UsbEcmFunction.c
> >   create mode 100644 UsbNetworkPkg/UsbCdcNcm/ComponentName.c
> >   create mode 100644 UsbNetworkPkg/UsbCdcNcm/UsbCdcNcm.c
> >   create mode 100644 UsbNetworkPkg/UsbCdcNcm/UsbCdcNcm.h
> >   create mode 100644 UsbNetworkPkg/UsbCdcNcm/UsbCdcNcm.inf
> >   create mode 100644 UsbNetworkPkg/UsbCdcNcm/UsbNcmFunction.c
> >   create mode 100644 UsbNetworkPkg/UsbNetworkPkg.dec
> >   create mode 100644 UsbNetworkPkg/UsbRndis/ComponentName.c
> >   create mode 100644 UsbNetworkPkg/UsbRndis/UsbRndis.c
> >   create mode 100644 UsbNetworkPkg/UsbRndis/UsbRndis.h
> >   create mode 100644 UsbNetworkPkg/UsbRndis/UsbRndis.inf
> >   create mode 100644 UsbNetworkPkg/UsbRndis/UsbRndisFunction.c
>
> -The information contained in this message may be confidential and
> proprietary to American Megatrends (AMI). This communication is
> intended
to
> be read only by the individual or entity to whom it is addressed or by
their
> designee. If the reader of this message is not the intended recipient,
> you
are
> on notice that any distribution of this message, in any form, is
> strictly prohibited. Please promptly notify the sender by reply e-mail
> or by
telephone
> at 770-246-8600, and then delete or destroy all copies of the
transmission.
>
>
> 
>



-The information contained in this message may be confidential and proprietary to American Megatrends (AMI). This communication is intended to be read only by the individual or entity to whom it is addressed or by their designee. If the reader of this message is not the intended recipient, you are on notice that any distribution of this message, in any form, is strictly prohibited. Please promptly notify the sender by reply e-mail or by telephone at 770-246-8600, and then delete or destroy all copies of the transmission.


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#94167): https://edk2.groups.io/g/devel/message/94167
Mute This Topic: https://groups.io/mt/93864664/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-




More information about the edk2-devel-archive mailing list