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? 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 -- BernhardReceived on Wed Sep 07 2011 - 11:30:53 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:17 UTC