This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/AM3352:多播数据的双 EMAC 问题

Guru**** 2540720 points
Other Parts Discussed in Thread: AM3352

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/615102/linux-am3352-dual-emac-issue-with-multicast-data

器件型号:AM3352

工具/软件:Linux

您好!

我很难正确获取网络组件。

我使用的平台是采用 AM3352处理器的 Variscite 的 VAR-SOM-AM33模块。 它配置为具有2个网络接口。

它运行基于 https://git.ti.com/ti-linux-kernel/ti-linux-kernel/commits/linux-4.4.y 4.4.19标签的 Linux 内核

我的问题是、我无法接收网络接口子网中没有 IT 源地址的多播网络数据包。 以下是示例:

AM3352作为网络接口配置为169.254.10.6/16、并配置套接字以接收组224.5.6.7上的多播流量并将其绑定到端口45014。 如果在网络上发送的多播数据包将169.254.10.99作为源 IP 地址、则我可以毫无问题地接收数据包。 如果源地址为10.190.10.5、我不会接收任何数据包。

内部开关中是否有要更改的配置以使其正常工作?

这是用于创建套接字和接收数据的代码

{
int sock = socket (PF_iNet、SOCK_DGRAM、IPPROTO_UDP);

Int ON = 1;
setsockopt (sock、SOCKETOPTTIONLEVEL_Socket、SOCKETOPTTIONNAME_REUSEADDR、(char*)& ON、 sizeof (on));

int addrLen = sizeof (struct sockaddr_in);
struct sockaddr_in addr;
addr.sin_family = AF_iNet;
addr.sin_addr.s_addr = INADDR_ANY;
addr.sin_port = htons (unsigned short) 45016);

bind (sock、addr、addrLen);

struct ip_mreq mreq;
mreq.imr_multiaddr.s_addr = inet_addr ("224.5.6.7");
mreq.imr_interface.s_adsock = inet_addr ("169.254.10.6");
setsockopt (dr、SOCKETOPTLEVSocket、 SOCKETOPTTIONNAME_REUSEADDR、(char*)&mreq、sizeof (mreq));

字节 aTmpData[2048];
int bytesRx = recv (sock、aTmpData、2048、0);
} 

下面是 DTS 文件中与网络相关的部分:

&Mac{
pinctrl-names ="default"、"sleep";
pinctrl-0 =<&cpsw_default>;
pinctrl-1 =<&cpsw_sleep>;
dual_emac =<1>;
状态="确定";
}

;达芬奇_MDIO{
pinctrl-names ="默认"、"睡眠";
pinctrl-0=<&Davinc_MDIO_default>;
pinctrl-1 =<&Davinc_MDIO_SLEEP>;
状态="确定";

phy1:PHY@1{
reg =<1>;
/* Micrel、reset-regs;*/
};

phy7:PHY@7{
reg =<4>;
RXC-skim-ps =<3000>;
rxdv-skime-ps =<0>;
txc-skim-ps =<3000>;
txen-skim-ps =<0>;
rxd0-skie-ps =<0>;
rxd1-skie-ps =<0>;
rxd2-skie-ps =<0>;
rxd3-skie-ps =<0>;
txd0-skim-ps =<0>;
txd1-skim-ps =<0>;
Txd2-skim-ps =<0>;
txd3-skim-ps =<0>;
};
}

;&cpsw_emac0{
phy_id =<&Davinci_mdio>、<1>;
phy-mode ="RMII";
dual_emac_res_vlan =<1>;
};

&cpsw_emac1{
phy_id =<&Davinci_mdio>、<4>;
phy-mode ="RGMII-txid";
dual_EMAC_res_vlan =<2>;
};

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。