rndis_wlan: fix support for bcm4320a
Jussi Kivilinna [Fri, 22 May 2009 08:58:36 +0000 (11:58 +0300)]
Old variant of bcm4320 doesn't handle setting configuration parameters
correctly. One symptom is that MAC gets partially overwritten when any
config parameters are set. This patch disables config-params for bcm4320a
(and generic rndis-wlan).

Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

drivers/net/wireless/rndis_wlan.c

index 52fc647..addd7a5 100644 (file)
@@ -2275,7 +2275,17 @@ end:
 }
 
 
-static int bcm4320_early_init(struct usbnet *usbdev)
+static int bcm4320a_early_init(struct usbnet *usbdev)
+{
+       /* bcm4320a doesn't handle configuration parameters well. Try
+        * set any and you get partially zeroed mac and broken device.
+        */
+
+       return 0;
+}
+
+
+static int bcm4320b_early_init(struct usbnet *usbdev)
 {
        struct rndis_wext_private *priv = get_rndis_wext_priv(usbdev);
        char buf[8];
@@ -2515,7 +2525,7 @@ static const struct driver_info   bcm4320b_info = {
        .rx_fixup =     rndis_rx_fixup,
        .tx_fixup =     rndis_tx_fixup,
        .reset =        rndis_wext_reset,
-       .early_init =   bcm4320_early_init,
+       .early_init =   bcm4320b_early_init,
        .link_change =  rndis_wext_link_change,
 };
 
@@ -2528,7 +2538,7 @@ static const struct driver_info   bcm4320a_info = {
        .rx_fixup =     rndis_rx_fixup,
        .tx_fixup =     rndis_tx_fixup,
        .reset =        rndis_wext_reset,
-       .early_init =   bcm4320_early_init,
+       .early_init =   bcm4320a_early_init,
        .link_change =  rndis_wext_link_change,
 };
 
@@ -2541,7 +2551,7 @@ static const struct driver_info rndis_wext_info = {
        .rx_fixup =     rndis_rx_fixup,
        .tx_fixup =     rndis_tx_fixup,
        .reset =        rndis_wext_reset,
-       .early_init =   bcm4320_early_init,
+       .early_init =   bcm4320a_early_init,
        .link_change =  rndis_wext_link_change,
 };