[PATCH] zd1211rw: Reject AL2230S devices

zd1211rw currently detects AL2230S-based devices as AL2230, and hence
programs the RF incorrectly. Transmit silently fails on this
misconfiguration.

After this patch, AL2230S devices are rejected with an error message, to
avoid any confusion with an apparent driver bug.

Signed-off-by: Daniel Drake <dsd@gentoo.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

authored by Daniel Drake and committed by John W. Linville ae6ead46 a21bd69e

+8 -1
+1
drivers/net/wireless/zd1211rw/zd_chip.c
··· 337 337 chip->patch_cr157 = (value >> 13) & 0x1; 338 338 chip->patch_6m_band_edge = (value >> 21) & 0x1; 339 339 chip->new_phy_layout = (value >> 31) & 0x1; 340 + chip->al2230s_bit = (value >> 7) & 0x1; 340 341 chip->link_led = ((value >> 4) & 1) ? LED1 : LED2; 341 342 chip->supports_tx_led = 1; 342 343 if (value & (1 << 24)) { /* LED scenario */
+1 -1
drivers/net/wireless/zd1211rw/zd_chip.h
··· 711 711 u16 link_led; 712 712 unsigned int pa_type:4, 713 713 patch_cck_gain:1, patch_cr157:1, patch_6m_band_edge:1, 714 - new_phy_layout:1, 714 + new_phy_layout:1, al2230s_bit:1, 715 715 is_zd1211b:1, supports_tx_led:1; 716 716 }; 717 717
+6
drivers/net/wireless/zd1211rw/zd_rf_al2230.c
··· 358 358 { 359 359 struct zd_chip *chip = zd_rf_to_chip(rf); 360 360 361 + if (chip->al2230s_bit) { 362 + dev_err(zd_chip_dev(chip), "AL2230S devices are not yet " 363 + "supported by this driver.\n"); 364 + return -ENODEV; 365 + } 366 + 361 367 rf->switch_radio_off = al2230_switch_radio_off; 362 368 if (chip->is_zd1211b) { 363 369 rf->init_hw = zd1211b_al2230_init_hw;