Linux 网卡消失了,怎么办?

Linux 网卡消失了,怎么办?,第1张

原因:设置错误导致。解决方法:重新正确启动来解决此问题。

如下参考:

1.您可以选择使用CRT工具连接到Linux命令行接口,开放接口如图所示。

2.输入服务网络重启代码,启动网卡

3.也可以选择连接到命令行界面,输入ifconfig查看网卡的基本信息。

4.然后通过输入ifconfigeth3来卸载eth3网卡。

5.完成前面的步骤后,选择输入ifconfigeth3up,然后重新加载eth3网卡。

6.最后,您可以连接到命令行接口。进入ifdowneth3。输入ifupeth3重新加载网卡eth3。

转:

ifconfig 显示接收丢包,一般来说是驱动申请不到足够的内存来存放收到的包

接收丢包统计在数据结构net_device_stats的下面这个字段中

unsigned long rx_dropped /* no space in linux buffers */

所以既不是硬件问题(否则根本收不到包),也不是arp攻击(驱动不管上层协议类型的),有可能是内存不够,但是不能确定,楼主可以查一下你网卡的驱动程序确认下

void __bzero (void *s, size_t len)

/*

将s的前len字节设为0

思路:先对齐到4的倍数的地址上,对前面的几B直接赋。然后,每次赋个32B,剩余凑不够32B的,

每次赋4B,剩余凑不够4B的,直接赋

*/

void __bzero (void *s, size_t len)

{

long int dstp = (long int) s

const op_t zero = 0

if (len >= 8)

{

size_t xlen

// 处理前面的几B,直到地址为4的倍数,然后可以每次4B

// 这样做的原因与结构体对齐的原因一样,是为提高读写数据的效率

// 由于len >= 8 ,OPSIZ=4,所以不必担心len==0

while (dstp % OPSIZ != 0) // #define op_t unsigned long int

// #define OPSIZ (sizeof(op_t))

// IA-32下是32

{

((byte *) dstp)[0] = 0

dstp += 1

len -= 1

}

// 下面是典型的循环展开以提高效率,每次32B

// 若每次赋一个4B,程序会由于跳转太多而打断cpu流水线,降低效率

// http://www.lysator.liu.se/c/duffs-device.html

// 关键字:Duff's Device

xlen = len / (OPSIZ * 8)

while (xlen != 0)

{

((op_t *) dstp)[0] = zero

((op_t *) dstp)[1] = zero

((op_t *) dstp)[2] = zero

((op_t *) dstp)[3] = zero

((op_t *) dstp)[4] = zero

((op_t *) dstp)[5] = zero

((op_t *) dstp)[6] = zero

((op_t *) dstp)[7] = zero

dstp += 8 * OPSIZ

xlen -= 1

}

len %= OPSIZ * 8 // 剩余的凑不足8 op_t 的

xlen = len / OPSIZ

while (xlen != 0) // 每次填4B

{

((op_t *) dstp)[0] = zero

dstp += OPSIZ

xlen -= 1

}

len %= OPSIZ

}

while (len != 0)// 剩余不够4B的,直接赋值

{

((byte *) dstp)[0] = 0

dstp += 1

len -= 1

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8798612.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-21
下一篇2023-04-21

发表评论

登录后才能评论

评论列表(0条)

    保存