Re: "Intel Centrino Advanced-N + WiMAX 6250" doesn't work

From: Tz-Huan Huang <tzhuan_at_gmail.com>
Date: Wed, 7 Sep 2011 21:51:40 +0800
On Wed, Sep 7, 2011 at 21:30, Bernhard Schmidt <bschmidt_at_freebsd.org> wrote:
> On Wed, Sep 7, 2011 at 15:11, Tz-Huan Huang <tzhuan_at_gmail.com> wrote:
>> On Wed, Sep 7, 2011 at 20:34, Bernhard Schmidt <bschmidt_at_freebsd.org> wrote:
>>> On Wed, Sep 7, 2011 at 12:10, Kevin Lo <kevlo_at_freebsd.org> wrote:
>>>>
>>>> Please try attached patch. It seems like OpenBSD added support
>>>> for 6205, but I'm not sure if it works for 6250.
>>
>> Okay, I am re-building the kernel now,
>> will report here if any news.
>>
>>> Worth a try, but I don't think it will make a difference. I had that
>>> code once (it should even be visible on the svn history) but removed
>>> it because it isn't required, the 6005 series devices work very well
>>> without it (I'm using a 6230 (6000g2b) daily) without issues. What is
>>> import though is which calibration results are sent to the runtime
>>> firmware, I suspect there might be an issue in
>>> iwn5000_rx_calib_results() around IWN5000_PHY_CALIB_DC.
>>>
>>> I remember that someone reported the 6250 devices working once, it
>>> might be worth going over the last revisions (there where some
>>> calibration related changes) and figure out which one broke it.
>>
>> Yes, this device works fine according to this post:
>> http://forums.freebsd.org/showthread.php?t=19839
>>
>> I have scanned the source but it seems that the iwn sources changed a lot...
>
> Yeah, thanks, I start to remember..
>
> Seems like I broke 6250 support by adding support for 6005. Point is,
> the DC calibration result generated by the init firmware is too large
> (saving calibration result code=8 len=3964, compare with other
> results..) to pass over to the runtime firmware, this is where it
> chokes. The solution is to not bother about it at all and let the
> runtime firmware do the calibration again, so no need to send
> anything. Basically, Kevin's patch is correct, it should also just
> remove handling of PHY_CALIB_DC in iwn5000_rx_calib_results(), ideally
> for all >= 6000 devices.
>
> Can you try this in addition to Kevin's patch?

It works! Thank you all so much! :-)

Tz-Huan

> Index: if_iwn.c
> ===================================================================
> --- if_iwn.c    (revision 225188)
> +++ if_iwn.c    (working copy)
> _at__at_ -2502,9 +2502,7 _at__at_ iwn5000_rx_calib_results(struct iwn_softc *sc, str
>
>        switch (calib->code) {
>        case IWN5000_PHY_CALIB_DC:
> -               if ((sc->sc_flags & IWN_FLAG_INTERNAL_PA) == 0 &&
> -                   (sc->hw_type == IWN_HW_REV_TYPE_5150 ||
> -                    sc->hw_type >= IWN_HW_REV_TYPE_6000))
> +               if (sc->hw_type == IWN_HW_REV_TYPE_5150)
>                        idx = 0;
>                break;
>        case IWN5000_PHY_CALIB_LO:
>
> Thanks
>
> --
> Bernhard
>
Received on Wed Sep 07 2011 - 11:52:02 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:17 UTC