Fix use of BFPR register in ether82563 driver. It fixes support of the Intel 82579LM ethernet controller. See Intel 6 Series Chipset Datasheet, ยง 21.1.1. I also checked it still worked properly on Intel 82574L. It should probably be tested on a wider range of Intel ethernet controllers, notably Intel 82579V. Reference: /n/sources/patch/applied/ether82563-bfpr Date: Fri Apr 12 21:15:52 CES 2013 Signed-off-by: djc@9grid.fr --- /sys/src/9/pc/ether82563.c Thu Apr 11 23:55:03 2013 +++ /sys/src/9/pc/ether82563.c Thu Apr 11 23:54:55 2013 @@ -388,7 +388,8 @@ typedef struct { u16int *reg; u32int *reg32; - int sz; + u16int base; + u16int lim; } Flash; enum { @@ -1526,11 +1527,11 @@ if(f.reg == nil) return -1; f.reg32 = (void*)f.reg; - f.sz = f.reg32[Bfpr]; - r = f.sz & 0x1fff; + f.base = f.reg32[Bfpr] & 0x1fff; + f.lim = f.reg32[Bfpr]>>16 & 0x1fff; if(csr32r(c, Eec) & (1<<22)) - r += c->type == i82579? 16 : 1; - r <<= 12; + f.base += f.lim+1 - f.base >> 1; + r = f.base << 12; sum = 0; for (adr = 0; adr < 0x40; adr++) {