Commit 6ee9169b authored by Wolfram Sang's avatar Wolfram Sang Committed by Greg Kroah-Hartman

staging: ks7010: remove cfg file handling

I verified that all but two settings from the config file can be set up
also via 'iwconfig' or 'iwpriv'. The two missing are ROM_FILE and
PhyInformationTimer. ROM_FILE can be easily dropped. There is only one
known firmware floating on the net, so, the name is fix and we can make
this constant. Frankly, I don't know when PhyInformationTimer needs to
be set to non-zero. But if we need it somewhen, there is already
(currently commented out) code to add this as another private method, so
we could use that. Summa summarum: We can remove the config file
handling and the example config file. The only useful action,
initialization of the configuration struct, is now moved to the sdio
main file.
Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 0fd9da9a
obj-$(CONFIG_KS7010) += ks7010.o obj-$(CONFIG_KS7010) += ks7010.o
ccflags-y += -DKS_WLAN_DEBUG=0 ccflags-y += -DKS_WLAN_DEBUG=0
ks7010-y := michael_mic.o ks_hostif.o ks_wlan_net.o \ ks7010-y := michael_mic.o ks_hostif.o ks_wlan_net.o ks7010_sdio.o
ks7010_sdio.o ks7010_config.o
...@@ -26,7 +26,6 @@ Now the TODOs: ...@@ -26,7 +26,6 @@ Now the TODOs:
- fix codechecker warnings (checkpatch, sparse, smatch). But PLEASE make sure - fix codechecker warnings (checkpatch, sparse, smatch). But PLEASE make sure
that you are not only silencing the warning but really fixing code. You that you are not only silencing the warning but really fixing code. You
should understand the change you submit. should understand the change you submit.
- drop using a config file and use an upstream technique for configuration
- fix the 'card removal' event when card is inserted when booting - fix the 'card removal' event when card is inserted when booting
- check what other upstream wireless mechanisms can be used instead of the - check what other upstream wireless mechanisms can be used instead of the
custom ones here custom ones here
......
#include <linux/kernel.h>
#include <linux/mmc/sdio_func.h>
#include "ks_wlan.h"
#include "ks_hostif.h"
#include "ks_wlan_ioctl.h"
static int wep_on_off;
#define WEP_OFF 0
#define WEP_ON_64BIT 1
#define WEP_ON_128BIT 2
static int wep_type;
#define WEP_KEY_CHARACTER 0
#define WEP_KEY_HEX 1
static
void analyze_character_wep_key(struct ks_wlan_parameter *param,
int wep_key_index, char *value)
{
int i;
unsigned char wep_key[26], key_length;
key_length = (wep_on_off == WEP_ON_64BIT) ? 5 : 13;
/* 64bit key_length = 5; 128bit key_length = 13; */
for (i = 0; i < key_length; i++) {
wep_key[i] = value[i];
}
if (wep_key_index < 0 || wep_key_index > 3)
return;
param->wep_key[wep_key_index].size = key_length;
for (i = 0; i < (param->wep_key[wep_key_index].size); i++) {
param->wep_key[wep_key_index].val[i] = wep_key[i];
}
}
static
void analyze_hex_wep_key(struct ks_wlan_parameter *param, int wep_key_index,
char *value)
{
unsigned char wep_end[26], i, j, key_length;
key_length = (wep_on_off == WEP_ON_64BIT) ? 10 : 26;
/* 64bit key_length = 10; 128bit key_length = 26; */
for (i = 0; i < key_length; i++) {
wep_end[i] = value[i];
if (i % 2) {
/* Odd */
for (j = 0x00; j < 0x10; j++) {
if (j < 0x0a) {
if (wep_end[i] == j + 0x30)
wep_end[i] = j;
} else {
if ((wep_end[i] ==
j + 0x37) | (wep_end[i] ==
j + 0x57))
wep_end[i] = j;
}
}
} else {
/* Even */
for (j = 0x00; j < 0x10; j++) {
if (j < 0x0a) {
if (wep_end[i] == j + 0x30) {
wep_end[i] = j * 16;
}
} else {
if ((wep_end[i] ==
j + 0x37) | (wep_end[i] ==
j + 0x57))
wep_end[i] = j * 16;
}
}
}
}
for (i = 0; i < key_length / 2; i++) {
wep_end[i] = wep_end[i * 2] + wep_end[(i * 2) + 1];
}
if (wep_key_index < 0 || wep_key_index > 3)
return;
param->wep_key[wep_key_index].size = key_length / 2;
for (i = 0; i < (param->wep_key[wep_key_index].size); i++) {
param->wep_key[wep_key_index].val[i] = wep_end[i];
}
}
static
int rate_set_configuration(struct ks_wlan_private *priv, char *value)
{
int rc = 0;
priv->reg.tx_rate = TX_RATE_FIXED;
priv->reg.rate_set.size = 1;
switch (*value) {
case '1': /* 1M 11M 12M 18M */
if (*(value + 1) == '8') {
priv->reg.rate_set.body[0] = TX_RATE_18M;
} else if (*(value + 1) == '2') {
priv->reg.rate_set.body[0] = TX_RATE_12M | BASIC_RATE;
} else if (*(value + 1) == '1') {
priv->reg.rate_set.body[0] = TX_RATE_11M | BASIC_RATE;
} else {
priv->reg.rate_set.body[0] = TX_RATE_1M | BASIC_RATE;
}
break;
case '2': /* 2M 24M */
if (*(value + 1) == '4') {
priv->reg.rate_set.body[0] = TX_RATE_24M | BASIC_RATE;
} else {
priv->reg.rate_set.body[0] = TX_RATE_2M | BASIC_RATE;
}
break;
case '3': /* 36M */
priv->reg.rate_set.body[0] = TX_RATE_36M;
break;
case '4': /* 48M */
priv->reg.rate_set.body[0] = TX_RATE_48M;
break;
case '5': /* 5.5M 54M */
if (*(value + 1) == '4') {
priv->reg.rate_set.body[0] = TX_RATE_54M;
} else {
priv->reg.rate_set.body[0] = TX_RATE_5M | BASIC_RATE;
}
break;
case '6': /* 6M */
priv->reg.rate_set.body[0] = TX_RATE_6M | BASIC_RATE;
break;
case '9': /* 9M */
priv->reg.rate_set.body[0] = TX_RATE_9M;
break;
case 'K':
priv->reg.rate_set.body[6] = TX_RATE_36M;
priv->reg.rate_set.body[5] = TX_RATE_18M;
priv->reg.rate_set.body[4] = TX_RATE_24M | BASIC_RATE;
priv->reg.rate_set.body[3] = TX_RATE_12M | BASIC_RATE;
priv->reg.rate_set.body[2] = TX_RATE_6M | BASIC_RATE;
priv->reg.rate_set.body[1] = TX_RATE_11M | BASIC_RATE;
priv->reg.rate_set.body[0] = TX_RATE_2M | BASIC_RATE;
priv->reg.tx_rate = TX_RATE_FULL_AUTO;
priv->reg.rate_set.size = 7;
break;
default:
priv->reg.rate_set.body[11] = TX_RATE_54M;
priv->reg.rate_set.body[10] = TX_RATE_48M;
priv->reg.rate_set.body[9] = TX_RATE_36M;
priv->reg.rate_set.body[8] = TX_RATE_18M;
priv->reg.rate_set.body[7] = TX_RATE_9M;
priv->reg.rate_set.body[6] = TX_RATE_24M | BASIC_RATE;
priv->reg.rate_set.body[5] = TX_RATE_12M | BASIC_RATE;
priv->reg.rate_set.body[4] = TX_RATE_6M | BASIC_RATE;
priv->reg.rate_set.body[3] = TX_RATE_11M | BASIC_RATE;
priv->reg.rate_set.body[2] = TX_RATE_5M | BASIC_RATE;
priv->reg.rate_set.body[1] = TX_RATE_2M | BASIC_RATE;
priv->reg.rate_set.body[0] = TX_RATE_1M | BASIC_RATE;
priv->reg.tx_rate = TX_RATE_FULL_AUTO;
priv->reg.rate_set.size = 12;
break;
}
return rc;
}
#include <linux/firmware.h>
int ks_wlan_read_config_file(struct ks_wlan_private *priv)
{
struct {
const int key_len;
const char *key;
const char *val;
} cfg_tbl[] = {
{15, "BeaconLostCount", "20"}, /* 0 */
{7, "Channel", "1"}, /* 1 */
{17, "FragmentThreshold", "2346"}, /* 2 */
{13, "OperationMode", "Infrastructure"}, /* 3 */
{19, "PowerManagementMode", "ACTIVE"}, /* 4 */
{12, "RTSThreshold", "2347"}, /* 5 */
{4, "SSID", "default"}, /* 6 */
{6, "TxRate", "Auto"}, /* 7 */
{23, "AuthenticationAlgorithm", ""}, /* 8 */
{12, "WepKeyValue1", ""}, /* 9 */
{12, "WepKeyValue2", ""}, /* 10 */
{12, "WepKeyValue3", ""}, /* 11 */
{12, "WepKeyValue4", ""}, /* 12 */
{8, "WepIndex", "1"}, /* 13 */
{7, "WepType", "STRING"}, /* 14 */
{3, "Wep", "OFF"}, /* 15 */
{13, "PREAMBLE_TYPE", "LONG"}, /* 16 */
{8, "ScanType", "ACTIVE_SCAN"}, /* 17 */
{8, "ROM_FILE", ROM_FILE}, /* 18 */
{7, "PhyType", "BG_MODE"}, /* 19 */
{7, "CtsMode", "FALSE"}, /* 20 */
{19, "PhyInformationTimer", "0"}, /* 21 */
{0, "", ""},
};
const struct firmware *fw_entry;
struct device *dev = NULL;
char cfg_file[] = CFG_FILE;
char *cur_p, *end_p;
char wk_buff[256], *wk_p;
/* Initialize Variable */
priv->reg.operation_mode = MODE_INFRASTRUCTURE; /* Infrastructure */
priv->reg.channel = 10; /* 10 */
memset(priv->reg.bssid, 0x0, ETH_ALEN); /* BSSID */
priv->reg.ssid.body[0] = '\0'; /* SSID */
priv->reg.ssid.size = 0; /* SSID size */
priv->reg.tx_rate = TX_RATE_AUTO; /* TxRate Fully Auto */
priv->reg.preamble = LONG_PREAMBLE; /* Preamble = LONG */
priv->reg.powermgt = POWMGT_ACTIVE_MODE; /* POWMGT_ACTIVE_MODE */
priv->reg.scan_type = ACTIVE_SCAN; /* Active */
priv->reg.beacon_lost_count = 20; /* Beacon Lost Count */
priv->reg.rts = 2347UL; /* RTS Threashold */
priv->reg.fragment = 2346UL; /* Fragmentation Threashold */
strcpy(&priv->reg.rom_file[0], ROM_FILE);
priv->skb = NULL;
priv->reg.authenticate_type = AUTH_TYPE_OPEN_SYSTEM; /* AuthenticationAlgorithm */
priv->reg.privacy_invoked = 0x00; /* WEP */
priv->reg.wep_index = 0;
memset(&priv->reg.wep_key[0], 0, sizeof(priv->reg.wep_key[0]));
memset(&priv->reg.wep_key[1], 0, sizeof(priv->reg.wep_key[0]));
memset(&priv->reg.wep_key[2], 0, sizeof(priv->reg.wep_key[0]));
memset(&priv->reg.wep_key[3], 0, sizeof(priv->reg.wep_key[0]));
priv->reg.phy_type = D_11BG_COMPATIBLE_MODE;
priv->reg.cts_mode = CTS_MODE_FALSE;
priv->reg.phy_info_timer = 0;
priv->reg.rate_set.body[11] = TX_RATE_54M;
priv->reg.rate_set.body[10] = TX_RATE_48M;
priv->reg.rate_set.body[9] = TX_RATE_36M;
priv->reg.rate_set.body[8] = TX_RATE_18M;
priv->reg.rate_set.body[7] = TX_RATE_9M;
priv->reg.rate_set.body[6] = TX_RATE_24M | BASIC_RATE;
priv->reg.rate_set.body[5] = TX_RATE_12M | BASIC_RATE;
priv->reg.rate_set.body[4] = TX_RATE_6M | BASIC_RATE;
priv->reg.rate_set.body[3] = TX_RATE_11M | BASIC_RATE;
priv->reg.rate_set.body[2] = TX_RATE_5M | BASIC_RATE;
priv->reg.rate_set.body[1] = TX_RATE_2M | BASIC_RATE;
priv->reg.rate_set.body[0] = TX_RATE_1M | BASIC_RATE;
priv->reg.tx_rate = TX_RATE_FULL_AUTO;
priv->reg.rate_set.size = 12;
dev = &priv->ks_wlan_hw.sdio_card->func->dev;
/* If no cfg file, stay with the defaults */
if (request_firmware_direct(&fw_entry, cfg_file, dev))
return 0;
DPRINTK(4, "success request_firmware() file=%s size=%zu\n", cfg_file,
fw_entry->size);
cur_p = fw_entry->data;
end_p = cur_p + fw_entry->size;
*end_p = '\0';
while (cur_p < end_p) {
int i, j, len;
len = end_p - cur_p;
for (i = 0; cfg_tbl[i].key_len != 0; i++) {
if (*cur_p == '#') {
break;
}
if (len < cfg_tbl[i].key_len) {
continue;
}
if (!strncmp(cfg_tbl[i].key, cur_p, cfg_tbl[i].key_len)) {
break;
}
}
if ((*cur_p == '#') || (cfg_tbl[i].key_len == 0)) {
while (*cur_p != '\n') {
if (cur_p >= end_p) {
break;
}
cur_p++;
}
cur_p++;
} else {
cur_p += cfg_tbl[i].key_len;
if (*cur_p != '=') {
while (*cur_p != '\n') {
if (cur_p >= end_p) {
break;
}
cur_p++;
}
continue;
}
cur_p++;
for (j = 0, wk_p = cur_p; *wk_p != '\n' && wk_p < end_p;
j++, wk_p++) {
wk_buff[j] = *wk_p;
}
wk_buff[j] = '\0';
cur_p = wk_p;
DPRINTK(4, "%s=%s\n", cfg_tbl[i].key, wk_buff);
wk_p = wk_buff;
switch (i) {
case 0: /* "BeaconLostCount", "10" */
priv->reg.beacon_lost_count =
simple_strtol(wk_buff, NULL, 10);
break;
case 1: /* "Channel", "1" */
priv->reg.channel =
simple_strtol(wk_buff, NULL, 10);
break;
case 2: /* "FragmentThreshold","2346" */
j = simple_strtol(wk_buff, NULL, 10);
priv->reg.fragment = (unsigned long)j;
break;
case 3: /* "OperationMode","Infrastructure" */
switch (*wk_buff) {
case 'P':
priv->reg.operation_mode =
MODE_PSEUDO_ADHOC;
break;
case 'I':
priv->reg.operation_mode =
MODE_INFRASTRUCTURE;
break;
case '8':
priv->reg.operation_mode = MODE_ADHOC;
break;
default:
priv->reg.operation_mode =
MODE_INFRASTRUCTURE;
}
break;
case 4: /* "PowerManagementMode","POWER_ACTIVE" */
if (!strncmp(wk_buff, "SAVE1", 5)) {
priv->reg.powermgt = POWMGT_SAVE1_MODE;
} else if (!strncmp(wk_buff, "SAVE2", 5)) {
priv->reg.powermgt = POWMGT_SAVE2_MODE;
} else {
priv->reg.powermgt = POWMGT_ACTIVE_MODE;
}
break;
case 5: /* "RTSThreshold","2347" */
j = simple_strtol(wk_buff, NULL, 10);
priv->reg.rts = (unsigned long)j;
break;
case 6: /* "SSID","" */
if (*wk_p != '"')
break;
wk_p++;
for (j = 0; *wk_p != '"'; j++) {
if (wk_p == '\0') {
break;
}
priv->reg.ssid.body[j] = *wk_p++;
}
priv->reg.ssid.body[j] = '\0';
priv->reg.ssid.size = j;
wk_p++;
break;
case 7: /* "TxRate","Auto" */
rate_set_configuration(priv, wk_p);
break;
case 8: /* "AuthenticationAlgorithm","OPEN_SYSTEM" */
switch (*wk_p) {
case 'O': /* Authenticate System : Open System */
priv->reg.authenticate_type =
AUTH_TYPE_OPEN_SYSTEM;
break;
case 'S': /* Authenticate System : Shared Key */
priv->reg.authenticate_type =
AUTH_TYPE_SHARED_KEY;
break;
}
break;
case 9: /* "WepKeyValue1","" */
case 10: /* "WepKeyValue2","" */
case 11: /* "WepKeyValue3","" */
case 12: /* "WepKeyValue4","" */
if (wep_on_off != WEP_OFF) {
switch (wep_type) {
case WEP_KEY_CHARACTER:
analyze_character_wep_key
(&priv->reg, (i - 9), wk_p);
break;
case WEP_KEY_HEX:
analyze_hex_wep_key(&priv->reg,
(i - 9),
wk_p);
break;
}
}
break;
case 13: /* "WepIndex","1"->0 (So, Zero Origin) */
priv->reg.wep_index =
simple_strtol(wk_buff, NULL, 10) - 1;
break;
case 14: /* "WepType","STRING" */
if (!strncmp(wk_buff, "STRING", 6)) {
wep_type = WEP_KEY_CHARACTER;
} else {
wep_type = WEP_KEY_HEX;
}
break;
case 15: /* "Wep","OFF" */
if (!strncmp(wk_buff, "OFF", 3)) {
priv->reg.privacy_invoked = 0x00;
wep_on_off = WEP_OFF;
} else { /* 64bit or 128bit */
priv->reg.privacy_invoked = 0x01;
if (*wk_buff == '6') { /* 64bit */
wep_on_off = WEP_ON_64BIT;
} else { /* 128bit */
wep_on_off = WEP_ON_128BIT;
}
}
break;
case 16: /* "PREAMBLE_TYPE","LONG" */
if (!strncmp(wk_buff, "SHORT", 5)) {
priv->reg.preamble = SHORT_PREAMBLE;
} else { /* "LONG" */
priv->reg.preamble = LONG_PREAMBLE;
}
break;
case 17: /* "ScanType","ACTIVE_SCAN" */
if (!strncmp(wk_buff, "PASSIVE_SCAN", 12)) {
priv->reg.scan_type = PASSIVE_SCAN;
} else { /* "ACTIVE_SCAN" */
priv->reg.scan_type = ACTIVE_SCAN;
}
break;
case 18: // "ROM_FILE",ROMFILE
if (*wk_p != '"')
break;
wk_p++;
for (j = 0; *wk_p != '"'; j++) {
if (wk_p == '\0') {
break;
}
priv->reg.rom_file[j] = *wk_p++;
}
priv->reg.rom_file[j] = '\0';
wk_p++;
break;
case 19: /*"PhyType", "BG_MODE" */
if (!strncmp(wk_buff, "B_MODE", 6)) {
priv->reg.phy_type = D_11B_ONLY_MODE;
} else if (!strncmp(wk_buff, "G_MODE", 6)) {
priv->reg.phy_type = D_11G_ONLY_MODE;
} else {
priv->reg.phy_type =
D_11BG_COMPATIBLE_MODE;
}
break;
case 20: /* "CtsMode", "FALSE" */
if (!strncmp(wk_buff, "TRUE", 4)) {
priv->reg.cts_mode = CTS_MODE_TRUE;
} else {
priv->reg.cts_mode = CTS_MODE_FALSE;
}
break;
case 21: /* "PhyInformationTimer", "0" */
j = simple_strtol(wk_buff, NULL, 10);
priv->reg.phy_info_timer = (uint16_t) j;
break;
default:
break;
}
if (cur_p >= end_p) {
break;
}
cur_p++;
}
}
release_firmware(fw_entry);
DPRINTK(3,
"\n operation_mode = %d\n channel = %d\n ssid = %s\n tx_rate = %d\n \
preamble = %d\n powermgt = %d\n scan_type = %d\n beacon_lost_count = %d\n rts = %d\n \
fragment = %d\n privacy_invoked = %d\n wep_type = %d\n wep_on_off = %d\n wep_index = %d\n romfile = %s\n",
priv->reg.operation_mode, priv->reg.channel, &priv->reg.ssid.body[0], priv->reg.tx_rate, priv->reg.preamble, priv->reg.powermgt, priv->reg.scan_type, priv->reg.beacon_lost_count, priv->reg.rts, priv->reg.fragment, priv->reg.privacy_invoked, wep_type, wep_on_off,
priv->reg.wep_index, &priv->reg.rom_file[0]
);
DPRINTK(3,
"\n phy_type = %d\n cts_mode = %d\n tx_rate = %d\n phy_info_timer = %d\n",
priv->reg.phy_type, priv->reg.cts_mode, priv->reg.tx_rate,
priv->reg.phy_info_timer);
return (0);
}
...@@ -807,15 +807,10 @@ static int ks79xx_upload_firmware(struct ks_wlan_private *priv, ...@@ -807,15 +807,10 @@ static int ks79xx_upload_firmware(struct ks_wlan_private *priv,
goto error_out0; goto error_out0;
} }
if (request_firmware retval = request_firmware(&fw_entry, ROM_FILE, &priv->ks_wlan_hw.sdio_card->func->dev);
(&fw_entry, priv->reg.rom_file, if (retval)
&priv->ks_wlan_hw.sdio_card->func->dev) != 0) { return retval;
DPRINTK(1, "error request_firmware() file=%s\n",
priv->reg.rom_file);
return 1;
}
DPRINTK(4, "success request_firmware() file=%s size=%zu\n",
priv->reg.rom_file, fw_entry->size);
length = fw_entry->size; length = fw_entry->size;
/* Load Program */ /* Load Program */
...@@ -966,6 +961,33 @@ static struct sdio_driver ks7010_sdio_driver = { ...@@ -966,6 +961,33 @@ static struct sdio_driver ks7010_sdio_driver = {
extern int ks_wlan_net_start(struct net_device *dev); extern int ks_wlan_net_start(struct net_device *dev);
extern int ks_wlan_net_stop(struct net_device *dev); extern int ks_wlan_net_stop(struct net_device *dev);
static void ks7010_init_defaults(struct ks_wlan_private *priv)
{
priv->reg.tx_rate = TX_RATE_AUTO;
priv->reg.preamble = LONG_PREAMBLE;
priv->reg.powermgt = POWMGT_ACTIVE_MODE;
priv->reg.scan_type = ACTIVE_SCAN;
priv->reg.beacon_lost_count = 20;
priv->reg.rts = 2347UL;
priv->reg.fragment = 2346UL;
priv->reg.phy_type = D_11BG_COMPATIBLE_MODE;
priv->reg.cts_mode = CTS_MODE_FALSE;
priv->reg.rate_set.body[11] = TX_RATE_54M;
priv->reg.rate_set.body[10] = TX_RATE_48M;
priv->reg.rate_set.body[9] = TX_RATE_36M;
priv->reg.rate_set.body[8] = TX_RATE_18M;
priv->reg.rate_set.body[7] = TX_RATE_9M;
priv->reg.rate_set.body[6] = TX_RATE_24M | BASIC_RATE;
priv->reg.rate_set.body[5] = TX_RATE_12M | BASIC_RATE;
priv->reg.rate_set.body[4] = TX_RATE_6M | BASIC_RATE;
priv->reg.rate_set.body[3] = TX_RATE_11M | BASIC_RATE;
priv->reg.rate_set.body[2] = TX_RATE_5M | BASIC_RATE;
priv->reg.rate_set.body[1] = TX_RATE_2M | BASIC_RATE;
priv->reg.rate_set.body[0] = TX_RATE_1M | BASIC_RATE;
priv->reg.tx_rate = TX_RATE_FULL_AUTO;
priv->reg.rate_set.size = 12;
}
static int ks7910_sdio_probe(struct sdio_func *func, static int ks7910_sdio_probe(struct sdio_func *func,
const struct sdio_device_id *device) const struct sdio_device_id *device)
{ {
...@@ -1069,14 +1091,7 @@ static int ks7910_sdio_probe(struct sdio_func *func, ...@@ -1069,14 +1091,7 @@ static int ks7910_sdio_probe(struct sdio_func *func,
hostif_init(priv); hostif_init(priv);
ks_wlan_net_start(netdev); ks_wlan_net_start(netdev);
/* Read config file */ ks7010_init_defaults(priv);
ret = ks_wlan_read_config_file(priv);
if (ret) {
printk(KERN_ERR
"ks79xx: read configuration file failed !! retern code = %d\n",
ret);
goto error_free_read_buf;
}
/* Upload firmware */ /* Upload firmware */
ret = ks79xx_upload_firmware(priv, card); /* firmware load */ ret = ks79xx_upload_firmware(priv, card); /* firmware load */
......
...@@ -142,7 +142,6 @@ struct rx_device { ...@@ -142,7 +142,6 @@ struct rx_device {
spinlock_t rx_dev_lock; spinlock_t rx_dev_lock;
}; };
#define ROM_FILE "ks7010sd.rom" #define ROM_FILE "ks7010sd.rom"
#define CFG_FILE "ks79xx.cfg"
#define KS_WLAN_DRIVER_VERSION_INFO "ks7010 sdio linux 007" #define KS_WLAN_DRIVER_VERSION_INFO "ks7010 sdio linux 007"
#endif /* _KS7010_SDIO_H */ #endif /* _KS7010_SDIO_H */
#ks79xx.cfg
#KS79xx configuration file
#
#
#BeaconLostCount default 20
BeaconLostCount=20
#
#
#Ap List Scan Type default ACTIVE_SCAN ACTIVE_SCAN or PASSIVE_SCAN
ScanType=ACTIVE_SCAN
#
#
#Channel default 10 min 1 max 14
Channel=10
#
#
#FragmentThreshold default 2346 min 256 max 2346
FragmentThreshold=2346
#
#
#OperationMode default Infrastructure Pseudo-Ad-Hoc or 802.11-Ad-Hoc or Infrastructure
OperationMode=Infrastructure
#
#
#PowerManagementMode default ACTIVE ACTIVE or SAVE1 or SAVE2
PowerManagementMode=ACTIVE
#
#
#RTSThreshold default 2347 min 0 max 2347
RTSThreshold=2347
#
#
#SSID default "" max 32 character
SSID="default"
#
#
#TxRate default Auto 1, 2, 5.5, 11 ex. TxRate=1,2 TxRate=11 TxRate=Auto ...
TxRate=Auto
#
#
#Wep default OFF OFF or 64bit or 128bit
Wep=OFF
#
#
#WepType default STRING STRING or HEX
WepType=STRING
#
#
#WepIndex=1
#
#
#WepKeyValue1
# character_wep_key:64bit key_length = 5; 128bit key_length = 13
# hex_wep_key:64bit key_length = 10; 128bit key_length = 26
#
#
#WepKeyValue2
# character_wep_key:64bit key_length = 5; 128bit key_length = 13
# hex_wep_key:64bit key_length = 10; 128bit key_length = 26
#
#
#WepKeyValue3
# character_wep_key:64bit key_length = 5; 128bit key_length = 13
# hex_wep_key:64bit key_length = 10; 128bit key_length = 26
#
#
#WepKeyValue4
# character_wep_key:64bit key_length = 5; 128bit key_length = 13
# hex_wep_key:64bit key_length = 10; 128bit key_length = 26
#
#
#AuthenticationAlgorithm default OPEN_SYSTEM OPEN_SYSTEM or SHARED_KEY
AuthenticationAlgorithm=OPEN_SYSTEM
#
#
#PREAMBLE_TYPE default LONG LONG or SHORT
PREAMBLE_TYPE=SHORT
#
#
# PhyType default BG_MODE B_MODE, G_MODE or BG_MODE
PhyType=BG_MODE
#
#
# CtsMode defalut FALSE TURE or FALSE
CtsMode=FALSE
#
#
# PhyInformationTimer defalut 0 uint 100msec
PhyInformationTimer=0
#
#
#ROM_FILE default "ks7010sd.rom"
ROM_FILE="ks7010sd.rom"
#
...@@ -73,7 +73,6 @@ struct ks_wlan_parameter { ...@@ -73,7 +73,6 @@ struct ks_wlan_parameter {
uint16_t phy_type; /* 11b/11g/11bg mode type */ uint16_t phy_type; /* 11b/11g/11bg mode type */
uint16_t cts_mode; /* for 11g/11bg mode cts mode */ uint16_t cts_mode; /* for 11g/11bg mode cts mode */
uint16_t phy_info_timer; /* phy information timer */ uint16_t phy_info_timer; /* phy information timer */
char rom_file[256];
}; };
enum { enum {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment