根据NUC980的数据手册,在网口发送描述符的地址中,前两个字节为发送缓冲区地址的低16位,后两个字节为发送缓冲区地址的高16位。因此,在设置发送描述符时,只需要保证发送缓冲区地址的低两个字节为 0 即可,无需进行额外的对齐操作。
这意味着,如果您的协议栈要求IP数据段4字节对齐,则可以将发送缓冲区分为两个部分:前面的部分进行4字节对齐后,后面的部分不需要对齐。然后,将前后两个部分的地址分别拼接,填入发送描述符中的缓冲区地址即可。
接收缓冲区的地址没有要求4字节对齐,这是因为在接收数据时,网口会首先读取以太网帧头部分的数据(包括目的MAC地址、源MAC地址、以及帧类型/长度),以确定接收数据的长度,并且在接收数据后,网口会将数据拷贝到指定的接收缓冲区中,因此不需要对接收缓冲区进行额外的对齐操作。
根据NUC980的数据手册,在网口发送描述符的地址中,前两个字节为发送缓冲区地址的低16位,后两个字节为发送缓冲区地址的高16位。因此,在设置发送描述符时,只需要保证发送缓冲区地址的低两个字节为 0 即可,无需进行额外的对齐操作。
这意味着,如果您的协议栈要求IP数据段4字节对齐,则可以将发送缓冲区分为两个部分:前面的部分进行4字节对齐后,后面的部分不需要对齐。然后,将前后两个部分的地址分别拼接,填入发送描述符中的缓冲区地址即可。
接收缓冲区的地址没有要求4字节对齐,这是因为在接收数据时,网口会首先读取以太网帧头部分的数据(包括目的MAC地址、源MAC地址、以及帧类型/长度),以确定接收数据的长度,并且在接收数据后,网口会将数据拷贝到指定的接收缓冲区中,因此不需要对接收缓冲区进行额外的对齐操作。
举报