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

Bernhard Schmidt bschmidt at freebsd.org
Wed Sep 7 13:30:53 UTC 2011

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)
@@ -2502,9 +2502,7 @@ 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;
 	case IWN5000_PHY_CALIB_LO:



More information about the freebsd-current mailing list