Regression: em driver in -CURRENT, "Invalid MAC address"

Jack Vogel jfvogel at gmail.com
Wed Aug 19 06:06:41 UTC 2009


Hmmm, that's odd, I had the validation group do a thorough test
of older adapters, and that one did not seem to have a problem,
let me see if we can repro the issue tomorrow, but, in principle I
have no problem doing this.

Jack


On Tue, Aug 18, 2009 at 7:55 PM, Sam Fourman Jr. <sfourman at gmail.com> wrote:

> On Mon, Jul 13, 2009 at 12:25 PM, Mark Atkinson<atkin901 at yahoo.com> wrote:
> > Jack Vogel wrote:
> >> In case you hadn't seen it, the code that fixes this is now checked into
> >> the tip, so the latest em driver should work for you.
> >
> > I upgraded the machine in question this morning and it appears to be
> > working, thanks!
>
>
> Jack
>
> Would you be able to commit this patch to em(4) I have several
> machines that do not work on FreeBSD 8 BETA2
> With the 82543 em(4) based card. I copied the same approach you took
> on e1000_82542.c
>
> Thank you
>
> Sam Fourman Jr.
>
>
> pciconf -v -l |grep -A4 -e "^em"
>
> em0 at pci0:14:13:0:       class=0x020000 card=0x10038086 chip=0x10018086
> rev=0x02 hdr=0x00
>    vendor     = 'Intel Corporation'
>    device     = '82543GC Gigabit Ethernet Adapter (Fiber)'
>    class      = network
>    subclass   = ethernet
>
>
>
> I tested this patch and it works on today's source tree
>
>
> **** e1000_82543.c       Wed Nov 26 17:57:23 2008
> --- /root/e1000_82543.c Tue Aug 18 21:23:00 2009
> ***************
> *** 75,80 ****
> --- 75,81 ----
>                                             u16 count);
>  static bool e1000_tbi_compatibility_enabled_82543(struct e1000_hw *hw);
>  static void e1000_set_tbi_sbp_82543(struct e1000_hw *hw, bool state);
> + static s32  e1000_read_mac_addr_82543(struct e1000_hw *hw);
>
>  /**
>   *  e1000_init_phy_params_82543 - Init PHY func ptrs.
> ***************
> *** 246,251 ****
> --- 247,254 ----
>        mac->ops.clear_vfta = e1000_clear_vfta_generic;
>        /* setting MTA */
>        mac->ops.mta_set = e1000_mta_set_82543;
> +       /* read mac address */
> +       mac->ops.read_mac_addr = e1000_read_mac_addr_82543;
>        /* turn on/off LED */
>        mac->ops.led_on = e1000_led_on_82543;
>        mac->ops.led_off = e1000_led_off_82543;
> ***************
> *** 1600,1602 ****
> --- 1603,1638 ----
>        E1000_READ_REG(hw, E1000_TSCTC);
>        E1000_READ_REG(hw, E1000_TSCTFC);
>  }
> +
> +  /**
> +   *  e1000_read_mac_addr_82543 - Read device MAC address
> +   *  @hw: pointer to the HW structure
> +   *  Same approach was taken for the 82542
> +   *
> +   *  Reads the device MAC address from the EEPROM and stores the value.
> +   **/
> + static s32 e1000_read_mac_addr_82543(struct e1000_hw *hw)
> + {
> +       s32  ret_val = E1000_SUCCESS;
> +               u16 offset, nvm_data, i;
> +
> +              DEBUGFUNC("e1000_read_mac_addr");
> +
> +                for (i = 0; i < ETH_ADDR_LEN; i += 2) {
> _______________________________________________
> freebsd-net at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscribe at freebsd.org"
>


More information about the freebsd-net mailing list