wkleję cytat z odpowiedzią z hp o karcie marvell
"I finally got a reply from HP with some details on the situation with the Marvell chipset and their wifi drivers. Full information is below.
Indie, the summary from HP is basically "Have the developer special-case their code to deal with the values returned by the Marvell...we are too damned lazy to make a fix that would help everyone anytime soon, wait for the next ROM-update if we ever release one."
After doing some investigation, we discovered what the likely culprit is a difference in the format the Marvell driver provides the channel information.
Obtaining the channel information is commonly done by querying the WLAN driver for a data structure called OID_802_11_CONFIGURATION
This data structure contains the following items (from
http://msdn.microsoft.com/en-us/library/ms799408.aspx)
Structure: OID_802_11_CONFIGURATION
Length
Specifies the length of the NDIS_802_11_CONFIGURATION structure in bytes.
BeaconPeriod
Specifies the interval between beacon message transmissions. This value is specified in Kµsec (1024 µsec).
ATIMWindow
Specifies the announcement traffic information message (ATIM) window in Kµsec (1024 µsec). The ATIM window is a short time period immediately after the transmission of each beacon in an IBSS configuration. During the ATIM window, any station can indicate the need to transfer data to another station during the following data-transmission window.
DSConfig
Specifies the frequency of the selected channel in kHz.
FHConfig
Specifies the frequency-hopping configuration in an NDIS_802_11_CONFIGURATION_FH structure.
The important item is DSConfig. Normally the WLAN driver returns DSConfig in kHZ (such as "2412000" for channel 1). The developer then uses another calculation to convert frequency to the corresponding channel. For example (taken from source code samples found on the net):
“pBSSIDInfo
.Channel=(pItem->Configuration.DSConfig - 2407000)/5000”
or “…configuration.DSConfig - 2412000)/5000 ) + 1;”
These example lines of code would leave you with a value of 1-11 for the channel at the end of the calculation.
Marvell’s implementation appears to return the frequency in mHZ, so that DSConfig would return a value of “2412” for channel 1. If an application is hard-coded to expect the value in kHZ, it likely returns an out-of-range value after performing further calculations to get the channel. With Marvell products, to obtain the correct channel you’d have to make a simple change to the calculation, such as “(pBSSIDInfo.Channel=(pItem->Configuration.DSConfig - 2407) / 5)”.
Our engineers are aware of it, but in all honesty, I don’t see them pursuing a standalone driver release just for this specific issue alone. Something like this (if it can be corrected) would likely be rolled in with other small fixes as part of a larger WLAN driver update if released in the future. If you’re looking for a fix in the short term for WiFiFoFum or similar application, I’d recommend letting the application developer know about the difference in how Marvell returns the value of DSConfig and see if they can adjust in their code."
bo to ten sam układ, trzeba doczytać tylko wątek...