All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/9] staging: ks7010: cleanups
@ 2016-06-17  8:46 Wolfram Sang
  2016-06-17  8:46 ` [PATCH 1/9] staging: ks7010: remove cfg file handling Wolfram Sang
                   ` (8 more replies)
  0 siblings, 9 replies; 10+ messages in thread
From: Wolfram Sang @ 2016-06-17  8:46 UTC (permalink / raw)
  To: driverdev-devel; +Cc: Wolfram Sang

So, here is a set of cleanups for the ks7010 driver. Biggest one is the removal
of the config file handling. But also some other improvements while playing
around with the driver. Please have a look, comment, apply. A branch can be
found here:

git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git staging/ks7010

Thanks,

   Wolfram

Wolfram Sang (9):
  staging: ks7010: remove cfg file handling
  staging: ks7010: function declaration should be in a header file
  staging: ks7010: collect all includes and sort them
  staging: ks7010: export sdio ids
  staging: ks7010: unify naming to ks7010
  staging: ks7010: sdio: remove forward declarations
  staging: ks7010: bail out when registering netdevice fails
  staging: ks7010: report interface as wlan not eth
  staging: ks7010: drop private handler for driver version

 drivers/staging/ks7010/Makefile        |   3 +-
 drivers/staging/ks7010/TODO            |   1 -
 drivers/staging/ks7010/ks7010_config.c | 500 ---------------------------------
 drivers/staging/ks7010/ks7010_sdio.c   | 192 ++++++-------
 drivers/staging/ks7010/ks7010_sdio.h   |   3 +-
 drivers/staging/ks7010/ks79xx.cfg      | 116 --------
 drivers/staging/ks7010/ks_wlan.h       |   4 +-
 drivers/staging/ks7010/ks_wlan_ioctl.h |   2 +-
 drivers/staging/ks7010/ks_wlan_net.c   |  15 +-
 9 files changed, 104 insertions(+), 732 deletions(-)
 delete mode 100644 drivers/staging/ks7010/ks7010_config.c
 delete mode 100644 drivers/staging/ks7010/ks79xx.cfg

-- 
2.8.1

_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 1/9] staging: ks7010: remove cfg file handling
  2016-06-17  8:46 [PATCH 0/9] staging: ks7010: cleanups Wolfram Sang
@ 2016-06-17  8:46 ` Wolfram Sang
  2016-06-17  8:46 ` [PATCH 2/9] staging: ks7010: function declaration should be in a header file Wolfram Sang
                   ` (7 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: Wolfram Sang @ 2016-06-17  8:46 UTC (permalink / raw)
  To: driverdev-devel; +Cc: Wolfram Sang

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: Wolfram Sang <wsa@the-dreams.de>
---
 drivers/staging/ks7010/Makefile        |   3 +-
 drivers/staging/ks7010/TODO            |   1 -
 drivers/staging/ks7010/ks7010_config.c | 500 ---------------------------------
 drivers/staging/ks7010/ks7010_sdio.c   |  49 ++--
 drivers/staging/ks7010/ks7010_sdio.h   |   1 -
 drivers/staging/ks7010/ks79xx.cfg      | 116 --------
 drivers/staging/ks7010/ks_wlan.h       |   1 -
 7 files changed, 33 insertions(+), 638 deletions(-)
 delete mode 100644 drivers/staging/ks7010/ks7010_config.c
 delete mode 100644 drivers/staging/ks7010/ks79xx.cfg

diff --git a/drivers/staging/ks7010/Makefile b/drivers/staging/ks7010/Makefile
index f6a2cc8fd0276d..69fcf8d655c751 100644
--- a/drivers/staging/ks7010/Makefile
+++ b/drivers/staging/ks7010/Makefile
@@ -1,5 +1,4 @@
 obj-$(CONFIG_KS7010) += ks7010.o
 
 ccflags-y 	     += -DKS_WLAN_DEBUG=0
-ks7010-y	     := michael_mic.o ks_hostif.o ks_wlan_net.o \
-					ks7010_sdio.o ks7010_config.o
+ks7010-y	     := michael_mic.o ks_hostif.o ks_wlan_net.o ks7010_sdio.o
diff --git a/drivers/staging/ks7010/TODO b/drivers/staging/ks7010/TODO
index 5cbb4ca999747e..2938d35be5bbfc 100644
--- a/drivers/staging/ks7010/TODO
+++ b/drivers/staging/ks7010/TODO
@@ -26,7 +26,6 @@ Now the TODOs:
 - fix codechecker warnings (checkpatch, sparse, smatch). But PLEASE make sure
   that you are not only silencing the warning but really fixing code. You
   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
 - check what other upstream wireless mechanisms can be used instead of the
   custom ones here
diff --git a/drivers/staging/ks7010/ks7010_config.c b/drivers/staging/ks7010/ks7010_config.c
deleted file mode 100644
index 4b495cbef48165..00000000000000
--- a/drivers/staging/ks7010/ks7010_config.c
+++ /dev/null
@@ -1,500 +0,0 @@
-#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);
-}
diff --git a/drivers/staging/ks7010/ks7010_sdio.c b/drivers/staging/ks7010/ks7010_sdio.c
index c340254cc895a0..d4cce78106a736 100644
--- a/drivers/staging/ks7010/ks7010_sdio.c
+++ b/drivers/staging/ks7010/ks7010_sdio.c
@@ -807,15 +807,10 @@ static int ks79xx_upload_firmware(struct ks_wlan_private *priv,
 		goto error_out0;
 	}
 
-	if (request_firmware
-	    (&fw_entry, priv->reg.rom_file,
-	     &priv->ks_wlan_hw.sdio_card->func->dev) != 0) {
-		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);
+	retval = request_firmware(&fw_entry, ROM_FILE, &priv->ks_wlan_hw.sdio_card->func->dev);
+	if (retval)
+		return retval;
+
 	length = fw_entry->size;
 
 	/* Load Program */
@@ -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_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,
 			     const struct sdio_device_id *device)
 {
@@ -1069,14 +1091,7 @@ static int ks7910_sdio_probe(struct sdio_func *func,
 	hostif_init(priv);
 	ks_wlan_net_start(netdev);
 
-	/* Read config file */
-	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;
-	}
+	ks7010_init_defaults(priv);
 
 	/* Upload firmware */
 	ret = ks79xx_upload_firmware(priv, card);	/* firmware load */
diff --git a/drivers/staging/ks7010/ks7010_sdio.h b/drivers/staging/ks7010/ks7010_sdio.h
index 987cfa724b9757..815ecf808171b6 100644
--- a/drivers/staging/ks7010/ks7010_sdio.h
+++ b/drivers/staging/ks7010/ks7010_sdio.h
@@ -142,7 +142,6 @@ struct rx_device {
 	spinlock_t rx_dev_lock;
 };
 #define	ROM_FILE "ks7010sd.rom"
-#define	CFG_FILE "ks79xx.cfg"
 #define	KS_WLAN_DRIVER_VERSION_INFO  "ks7010 sdio linux 007"
 
 #endif /* _KS7010_SDIO_H */
diff --git a/drivers/staging/ks7010/ks79xx.cfg b/drivers/staging/ks7010/ks79xx.cfg
deleted file mode 100644
index 0f2d24d4e66a89..00000000000000
--- a/drivers/staging/ks7010/ks79xx.cfg
+++ /dev/null
@@ -1,116 +0,0 @@
-#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"
-#
diff --git a/drivers/staging/ks7010/ks_wlan.h b/drivers/staging/ks7010/ks_wlan.h
index c42d99c6bc1fb2..019c43031d3b3c 100644
--- a/drivers/staging/ks7010/ks_wlan.h
+++ b/drivers/staging/ks7010/ks_wlan.h
@@ -73,7 +73,6 @@ struct ks_wlan_parameter {
 	uint16_t phy_type;	/* 11b/11g/11bg mode type */
 	uint16_t cts_mode;	/* for 11g/11bg mode cts mode */
 	uint16_t phy_info_timer;	/* phy information timer */
-	char rom_file[256];
 };
 
 enum {
-- 
2.8.1

_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 2/9] staging: ks7010: function declaration should be in a header file
  2016-06-17  8:46 [PATCH 0/9] staging: ks7010: cleanups Wolfram Sang
  2016-06-17  8:46 ` [PATCH 1/9] staging: ks7010: remove cfg file handling Wolfram Sang
@ 2016-06-17  8:46 ` Wolfram Sang
  2016-06-17  8:46 ` [PATCH 3/9] staging: ks7010: collect all includes and sort them Wolfram Sang
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: Wolfram Sang @ 2016-06-17  8:46 UTC (permalink / raw)
  To: driverdev-devel; +Cc: Wolfram Sang

Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
---
 drivers/staging/ks7010/ks7010_sdio.c | 3 ---
 drivers/staging/ks7010/ks_wlan.h     | 3 +++
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/staging/ks7010/ks7010_sdio.c b/drivers/staging/ks7010/ks7010_sdio.c
index d4cce78106a736..714f933a7d85e7 100644
--- a/drivers/staging/ks7010/ks7010_sdio.c
+++ b/drivers/staging/ks7010/ks7010_sdio.c
@@ -958,9 +958,6 @@ static struct sdio_driver ks7010_sdio_driver = {
 	.remove = ks7910_sdio_remove,
 };
 
-extern int ks_wlan_net_start(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;
diff --git a/drivers/staging/ks7010/ks_wlan.h b/drivers/staging/ks7010/ks_wlan.h
index 019c43031d3b3c..f05dc0122fcbd1 100644
--- a/drivers/staging/ks7010/ks_wlan.h
+++ b/drivers/staging/ks7010/ks_wlan.h
@@ -499,4 +499,7 @@ struct ks_wlan_private {
 	uint wakeup_count;	/* for detect wakeup loop */
 };
 
+extern int ks_wlan_net_start(struct net_device *dev);
+extern int ks_wlan_net_stop(struct net_device *dev);
+
 #endif /* _KS_WLAN_H */
-- 
2.8.1

_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 3/9] staging: ks7010: collect all includes and sort them
  2016-06-17  8:46 [PATCH 0/9] staging: ks7010: cleanups Wolfram Sang
  2016-06-17  8:46 ` [PATCH 1/9] staging: ks7010: remove cfg file handling Wolfram Sang
  2016-06-17  8:46 ` [PATCH 2/9] staging: ks7010: function declaration should be in a header file Wolfram Sang
@ 2016-06-17  8:46 ` Wolfram Sang
  2016-06-17  8:46 ` [PATCH 4/9] staging: ks7010: export sdio ids Wolfram Sang
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: Wolfram Sang @ 2016-06-17  8:46 UTC (permalink / raw)
  To: driverdev-devel; +Cc: Wolfram Sang

Includes probably need a driver-wide clean up, but for now let's at
least group all includes from the sdio file together.

Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
---
 drivers/staging/ks7010/ks7010_sdio.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/ks7010/ks7010_sdio.c b/drivers/staging/ks7010/ks7010_sdio.c
index 714f933a7d85e7..b3c98ebaec14e2 100644
--- a/drivers/staging/ks7010/ks7010_sdio.c
+++ b/drivers/staging/ks7010/ks7010_sdio.c
@@ -10,15 +10,15 @@
  *   published by the Free Software Foundation.
  */
 
-#include <linux/workqueue.h>
-#include <asm/atomic.h>
+#include <linux/firmware.h>
 #include <linux/mmc/card.h>
 #include <linux/mmc/sdio_func.h>
+#include <linux/workqueue.h>
+#include <asm/atomic.h>
 
 #include "ks_wlan.h"
 #include "ks_wlan_ioctl.h"
 #include "ks_hostif.h"
-
 #include "ks7010_sdio.h"
 
 #define KS7010_FUNC_NUM 1
@@ -777,7 +777,6 @@ static int ks7010_sdio_data_compare(struct ks_wlan_private *priv, u32 address,
 	return rc;
 }
 
-#include <linux/firmware.h>
 static int ks79xx_upload_firmware(struct ks_wlan_private *priv,
 				  struct ks_sdio_card *card)
 {
-- 
2.8.1

_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 4/9] staging: ks7010: export sdio ids
  2016-06-17  8:46 [PATCH 0/9] staging: ks7010: cleanups Wolfram Sang
                   ` (2 preceding siblings ...)
  2016-06-17  8:46 ` [PATCH 3/9] staging: ks7010: collect all includes and sort them Wolfram Sang
@ 2016-06-17  8:46 ` Wolfram Sang
  2016-06-17  8:46 ` [PATCH 5/9] staging: ks7010: unify naming to ks7010 Wolfram Sang
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: Wolfram Sang @ 2016-06-17  8:46 UTC (permalink / raw)
  To: driverdev-devel; +Cc: Wolfram Sang

So the module will be loaded automatically on card insertion. Rename the
array while here.

Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
---
 drivers/staging/ks7010/ks7010_sdio.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/ks7010/ks7010_sdio.c b/drivers/staging/ks7010/ks7010_sdio.c
index b3c98ebaec14e2..280cbfb6aa7fbd 100644
--- a/drivers/staging/ks7010/ks7010_sdio.c
+++ b/drivers/staging/ks7010/ks7010_sdio.c
@@ -27,11 +27,12 @@
 
 static int reg_net = 0;
 
-static const struct sdio_device_id if_sdio_ids[] = {
+static const struct sdio_device_id ks7010_sdio_ids[] = {
 	{SDIO_DEVICE(SDIO_VENDOR_ID_KS_CODE_A, SDIO_DEVICE_ID_KS_7010)},
 	{SDIO_DEVICE(SDIO_VENDOR_ID_KS_CODE_B, SDIO_DEVICE_ID_KS_7010)},
 	{ /* all zero */ }
 };
+MODULE_DEVICE_TABLE(sdio, ks7010_sdio_ids);
 
 static int ks7910_sdio_probe(struct sdio_func *function,
 			     const struct sdio_device_id *device);
@@ -952,7 +953,7 @@ static void ks7010_card_init(struct ks_wlan_private *priv)
 
 static struct sdio_driver ks7010_sdio_driver = {
 	.name = "ks7910_sdio",
-	.id_table = if_sdio_ids,
+	.id_table = ks7010_sdio_ids,
 	.probe = ks7910_sdio_probe,
 	.remove = ks7910_sdio_remove,
 };
-- 
2.8.1

_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 5/9] staging: ks7010: unify naming to ks7010
  2016-06-17  8:46 [PATCH 0/9] staging: ks7010: cleanups Wolfram Sang
                   ` (3 preceding siblings ...)
  2016-06-17  8:46 ` [PATCH 4/9] staging: ks7010: export sdio ids Wolfram Sang
@ 2016-06-17  8:46 ` Wolfram Sang
  2016-06-17  8:46 ` [PATCH 6/9] staging: ks7010: sdio: remove forward declarations Wolfram Sang
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: Wolfram Sang @ 2016-06-17  8:46 UTC (permalink / raw)
  To: driverdev-devel; +Cc: Wolfram Sang

No 79xx anymore, this is confusing. Add a comment saying that old
versions were probably named 7910/79xx.

Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
---
 drivers/staging/ks7010/ks7010_sdio.c | 28 ++++++++++++++--------------
 drivers/staging/ks7010/ks7010_sdio.h |  1 +
 2 files changed, 15 insertions(+), 14 deletions(-)

diff --git a/drivers/staging/ks7010/ks7010_sdio.c b/drivers/staging/ks7010/ks7010_sdio.c
index 280cbfb6aa7fbd..8c2b62bc4d141a 100644
--- a/drivers/staging/ks7010/ks7010_sdio.c
+++ b/drivers/staging/ks7010/ks7010_sdio.c
@@ -34,9 +34,9 @@ static const struct sdio_device_id ks7010_sdio_ids[] = {
 };
 MODULE_DEVICE_TABLE(sdio, ks7010_sdio_ids);
 
-static int ks7910_sdio_probe(struct sdio_func *function,
+static int ks7010_sdio_probe(struct sdio_func *function,
 			     const struct sdio_device_id *device);
-static void ks7910_sdio_remove(struct sdio_func *function);
+static void ks7010_sdio_remove(struct sdio_func *function);
 static void ks7010_rw_function(struct work_struct *work);
 static int ks7010_sdio_read(struct ks_wlan_private *priv, unsigned int address,
 			    unsigned char *buffer, int length);
@@ -778,7 +778,7 @@ static int ks7010_sdio_data_compare(struct ks_wlan_private *priv, u32 address,
 	return rc;
 }
 
-static int ks79xx_upload_firmware(struct ks_wlan_private *priv,
+static int ks7010_upload_firmware(struct ks_wlan_private *priv,
 				  struct ks_sdio_card *card)
 {
 	unsigned int size, offset, n = 0;
@@ -952,10 +952,10 @@ static void ks7010_card_init(struct ks_wlan_private *priv)
 }
 
 static struct sdio_driver ks7010_sdio_driver = {
-	.name = "ks7910_sdio",
+	.name = "ks7010_sdio",
 	.id_table = ks7010_sdio_ids,
-	.probe = ks7910_sdio_probe,
-	.remove = ks7910_sdio_remove,
+	.probe = ks7010_sdio_probe,
+	.remove = ks7010_sdio_remove,
 };
 
 static void ks7010_init_defaults(struct ks_wlan_private *priv)
@@ -985,7 +985,7 @@ static void ks7010_init_defaults(struct ks_wlan_private *priv)
 	priv->reg.rate_set.size = 12;
 }
 
-static int ks7910_sdio_probe(struct sdio_func *func,
+static int ks7010_sdio_probe(struct sdio_func *func,
 			     const struct sdio_device_id *device)
 {
 	struct ks_wlan_private *priv;
@@ -994,7 +994,7 @@ static int ks7910_sdio_probe(struct sdio_func *func,
 	unsigned char rw_data;
 	int ret;
 
-	DPRINTK(5, "ks7910_sdio_probe()\n");
+	DPRINTK(5, "ks7010_sdio_probe()\n");
 
 	priv = NULL;
 	netdev = NULL;
@@ -1049,11 +1049,11 @@ static int ks7910_sdio_probe(struct sdio_func *func,
 	/* private memory allocate */
 	netdev = alloc_etherdev(sizeof(*priv));
 	if (netdev == NULL) {
-		printk(KERN_ERR "ks79xx : Unable to alloc new net device\n");
+		printk(KERN_ERR "ks7010 : Unable to alloc new net device\n");
 		goto error_release_irq;
 	}
 	if (dev_alloc_name(netdev, netdev->name) < 0) {
-		printk(KERN_ERR "ks79xx :  Couldn't get name!\n");
+		printk(KERN_ERR "ks7010 :  Couldn't get name!\n");
 		goto error_free_netdev;
 	}
 
@@ -1091,10 +1091,10 @@ static int ks7910_sdio_probe(struct sdio_func *func,
 	ks7010_init_defaults(priv);
 
 	/* Upload firmware */
-	ret = ks79xx_upload_firmware(priv, card);	/* firmware load */
+	ret = ks7010_upload_firmware(priv, card);	/* firmware load */
 	if (ret) {
 		printk(KERN_ERR
-		       "ks79xx: firmware load failed !! retern code = %d\n",
+		       "ks7010: firmware load failed !! retern code = %d\n",
 		       ret);
 		goto error_free_read_buf;
 	}
@@ -1151,13 +1151,13 @@ static int ks7910_sdio_probe(struct sdio_func *func,
 	return -ENODEV;
 }
 
-static void ks7910_sdio_remove(struct sdio_func *func)
+static void ks7010_sdio_remove(struct sdio_func *func)
 {
 	int ret;
 	struct ks_sdio_card *card;
 	struct ks_wlan_private *priv;
 	struct net_device *netdev;
-	DPRINTK(1, "ks7910_sdio_remove()\n");
+	DPRINTK(1, "ks7010_sdio_remove()\n");
 
 	card = sdio_get_drvdata(func);
 
diff --git a/drivers/staging/ks7010/ks7010_sdio.h b/drivers/staging/ks7010/ks7010_sdio.h
index 815ecf808171b6..e71c0978986a13 100644
--- a/drivers/staging/ks7010/ks7010_sdio.h
+++ b/drivers/staging/ks7010/ks7010_sdio.h
@@ -19,6 +19,7 @@
 /*  SDIO KeyStream vendor and device */
 #define SDIO_VENDOR_ID_KS_CODE_A	0x005b
 #define SDIO_VENDOR_ID_KS_CODE_B	0x0023
+/* Older sources suggest earlier versions were named 7910 or 79xx */
 #define SDIO_DEVICE_ID_KS_7010		0x7910
 
 /* Read Status Register */
-- 
2.8.1

_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 6/9] staging: ks7010: sdio: remove forward declarations
  2016-06-17  8:46 [PATCH 0/9] staging: ks7010: cleanups Wolfram Sang
                   ` (4 preceding siblings ...)
  2016-06-17  8:46 ` [PATCH 5/9] staging: ks7010: unify naming to ks7010 Wolfram Sang
@ 2016-06-17  8:46 ` Wolfram Sang
  2016-06-17  8:46 ` [PATCH 7/9] staging: ks7010: bail out when registering netdevice fails Wolfram Sang
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: Wolfram Sang @ 2016-06-17  8:46 UTC (permalink / raw)
  To: driverdev-devel; +Cc: Wolfram Sang

Move read/write functions to the top and driver struct to the end, so we
can remove all forward declarations.

Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
---
 drivers/staging/ks7010/ks7010_sdio.c | 100 ++++++++++++++++-------------------
 1 file changed, 46 insertions(+), 54 deletions(-)

diff --git a/drivers/staging/ks7010/ks7010_sdio.c b/drivers/staging/ks7010/ks7010_sdio.c
index 8c2b62bc4d141a..16b9d76478b172 100644
--- a/drivers/staging/ks7010/ks7010_sdio.c
+++ b/drivers/staging/ks7010/ks7010_sdio.c
@@ -34,14 +34,6 @@ static const struct sdio_device_id ks7010_sdio_ids[] = {
 };
 MODULE_DEVICE_TABLE(sdio, ks7010_sdio_ids);
 
-static int ks7010_sdio_probe(struct sdio_func *function,
-			     const struct sdio_device_id *device);
-static void ks7010_sdio_remove(struct sdio_func *function);
-static void ks7010_rw_function(struct work_struct *work);
-static int ks7010_sdio_read(struct ks_wlan_private *priv, unsigned int address,
-			    unsigned char *buffer, int length);
-static int ks7010_sdio_write(struct ks_wlan_private *priv, unsigned int address,
-			     unsigned char *buffer, int length);
 /* macro */
 
 #define inc_txqhead(priv) \
@@ -58,6 +50,45 @@ static int ks7010_sdio_write(struct ks_wlan_private *priv, unsigned int address,
 #define cnt_rxqbody(priv) \
         (((priv->rx_dev.qtail + RX_DEVICE_BUFF_SIZE) - (priv->rx_dev.qhead)) % RX_DEVICE_BUFF_SIZE )
 
+static int ks7010_sdio_read(struct ks_wlan_private *priv, unsigned int address,
+			    unsigned char *buffer, int length)
+{
+	struct ks_sdio_card *card;
+	int rc;
+
+	card = priv->ks_wlan_hw.sdio_card;
+
+	if (length == 1)	/* CMD52 */
+		*buffer = sdio_readb(card->func, address, &rc);
+	else	/* CMD53 multi-block transfer */
+		rc = sdio_memcpy_fromio(card->func, buffer, address, length);
+
+	if (rc != 0)
+		DPRINTK(1, "sdio error=%d size=%d\n", rc, length);
+
+	return rc;
+}
+
+static int ks7010_sdio_write(struct ks_wlan_private *priv, unsigned int address,
+			     unsigned char *buffer, int length)
+{
+	struct ks_sdio_card *card;
+	int rc;
+
+	card = priv->ks_wlan_hw.sdio_card;
+
+	if (length == 1)	/* CMD52 */
+		sdio_writeb(card->func, *buffer, (unsigned int)address, &rc);
+	else	/* CMD53 */
+		rc = sdio_memcpy_toio(card->func, (unsigned int)address, buffer,
+				      length);
+
+	if (rc != 0)
+		DPRINTK(1, "sdio error=%d size=%d\n", rc, length);
+
+	return rc;
+}
+
 void ks_wlan_hw_sleep_doze_request(struct ks_wlan_private *priv)
 {
 	unsigned char rw_data;
@@ -230,45 +261,6 @@ int ks_wlan_hw_power_save(struct ks_wlan_private *priv)
 	return 0;
 }
 
-static int ks7010_sdio_read(struct ks_wlan_private *priv, unsigned int address,
-			    unsigned char *buffer, int length)
-{
-	struct ks_sdio_card *card;
-	int rc;
-
-	card = priv->ks_wlan_hw.sdio_card;
-
-	if (length == 1)	/* CMD52 */
-		*buffer = sdio_readb(card->func, address, &rc);
-	else	/* CMD53 multi-block transfer */
-		rc = sdio_memcpy_fromio(card->func, buffer, address, length);
-
-	if (rc != 0)
-		DPRINTK(1, "sdio error=%d size=%d\n", rc, length);
-
-	return rc;
-}
-
-static int ks7010_sdio_write(struct ks_wlan_private *priv, unsigned int address,
-			     unsigned char *buffer, int length)
-{
-	struct ks_sdio_card *card;
-	int rc;
-
-	card = priv->ks_wlan_hw.sdio_card;
-
-	if (length == 1)	/* CMD52 */
-		sdio_writeb(card->func, *buffer, (unsigned int)address, &rc);
-	else	/* CMD53 */
-		rc = sdio_memcpy_toio(card->func, (unsigned int)address, buffer,
-				      length);
-
-	if (rc != 0)
-		DPRINTK(1, "sdio error=%d size=%d\n", rc, length);
-
-	return rc;
-}
-
 static int enqueue_txdev(struct ks_wlan_private *priv, unsigned char *p,
 			 unsigned long size,
 			 void (*complete_handler) (void *arg1, void *arg2),
@@ -951,13 +943,6 @@ static void ks7010_card_init(struct ks_wlan_private *priv)
 	}
 }
 
-static struct sdio_driver ks7010_sdio_driver = {
-	.name = "ks7010_sdio",
-	.id_table = ks7010_sdio_ids,
-	.probe = ks7010_sdio_probe,
-	.remove = ks7010_sdio_remove,
-};
-
 static void ks7010_init_defaults(struct ks_wlan_private *priv)
 {
 	priv->reg.tx_rate = TX_RATE_AUTO;
@@ -1239,6 +1224,13 @@ static void ks7010_sdio_remove(struct sdio_func *func)
 	return;
 }
 
+static struct sdio_driver ks7010_sdio_driver = {
+	.name = "ks7010_sdio",
+	.id_table = ks7010_sdio_ids,
+	.probe = ks7010_sdio_probe,
+	.remove = ks7010_sdio_remove,
+};
+
 module_driver(ks7010_sdio_driver, sdio_register_driver, sdio_unregister_driver);
 MODULE_AUTHOR("Sang Engineering, Qi-Hardware, KeyStream");
 MODULE_DESCRIPTION("Driver for KeyStream KS7010 based SDIO cards");
-- 
2.8.1

_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 7/9] staging: ks7010: bail out when registering netdevice fails
  2016-06-17  8:46 [PATCH 0/9] staging: ks7010: cleanups Wolfram Sang
                   ` (5 preceding siblings ...)
  2016-06-17  8:46 ` [PATCH 6/9] staging: ks7010: sdio: remove forward declarations Wolfram Sang
@ 2016-06-17  8:46 ` Wolfram Sang
  2016-06-17  8:46 ` [PATCH 8/9] staging: ks7010: report interface as wlan not eth Wolfram Sang
  2016-06-17  8:47 ` [PATCH 9/9] staging: ks7010: drop private handler for driver version Wolfram Sang
  8 siblings, 0 replies; 10+ messages in thread
From: Wolfram Sang @ 2016-06-17  8:46 UTC (permalink / raw)
  To: driverdev-devel; +Cc: Wolfram Sang

There is no need to continue then. Also, this enables us to remove an
ugly static variable.

Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
---
 drivers/staging/ks7010/ks7010_sdio.c | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/drivers/staging/ks7010/ks7010_sdio.c b/drivers/staging/ks7010/ks7010_sdio.c
index 16b9d76478b172..c3035b80dac7cd 100644
--- a/drivers/staging/ks7010/ks7010_sdio.c
+++ b/drivers/staging/ks7010/ks7010_sdio.c
@@ -25,8 +25,6 @@
 #define KS7010_IO_BLOCK_SIZE 512
 #define KS7010_MAX_CLOCK 25000000
 
-static int reg_net = 0;
-
 static const struct sdio_device_id ks7010_sdio_ids[] = {
 	{SDIO_DEVICE(SDIO_VENDOR_ID_KS_CODE_A, SDIO_DEVICE_ID_KS_7010)},
 	{SDIO_DEVICE(SDIO_VENDOR_ID_KS_CODE_B, SDIO_DEVICE_ID_KS_7010)},
@@ -936,8 +934,6 @@ static void ks7010_card_init(struct ks_wlan_private *priv)
 	if (priv->dev_state >= DEVICE_STATE_PREINIT) {
 		DPRINTK(1, "DEVICE READY!!\n");
 		priv->dev_state = DEVICE_STATE_READY;
-		reg_net = register_netdev(priv->net_dev);
-		DPRINTK(3, "register_netdev=%d\n", reg_net);
 	} else {
 		DPRINTK(1, "dev_state=%d\n", priv->dev_state);
 	}
@@ -1115,6 +1111,10 @@ static int ks7010_sdio_probe(struct sdio_func *func,
 	INIT_DELAYED_WORK(&priv->ks_wlan_hw.rw_wq, ks7010_rw_function);
 	ks7010_card_init(priv);
 
+	ret = register_netdev(priv->net_dev);
+	if (ret)
+		goto error_free_read_buf;
+
 	return 0;
 
  error_free_read_buf:
@@ -1196,9 +1196,7 @@ static void ks7010_sdio_remove(struct sdio_func *func)
 		hostif_exit(priv);
 		DPRINTK(1, "hostif_exit\n");
 
-		if (!reg_net)
-			unregister_netdev(netdev);
-		DPRINTK(1, "unregister_netdev\n");
+		unregister_netdev(netdev);
 
 		trx_device_exit(priv);
 		if (priv->ks_wlan_hw.read_buf) {
-- 
2.8.1

_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 8/9] staging: ks7010: report interface as wlan not eth
  2016-06-17  8:46 [PATCH 0/9] staging: ks7010: cleanups Wolfram Sang
                   ` (6 preceding siblings ...)
  2016-06-17  8:46 ` [PATCH 7/9] staging: ks7010: bail out when registering netdevice fails Wolfram Sang
@ 2016-06-17  8:46 ` Wolfram Sang
  2016-06-17  8:47 ` [PATCH 9/9] staging: ks7010: drop private handler for driver version Wolfram Sang
  8 siblings, 0 replies; 10+ messages in thread
From: Wolfram Sang @ 2016-06-17  8:46 UTC (permalink / raw)
  To: driverdev-devel; +Cc: Wolfram Sang

Until we switch to cfg80211 (if ever), we must do this manually.

Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
---
 drivers/staging/ks7010/ks7010_sdio.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/ks7010/ks7010_sdio.c b/drivers/staging/ks7010/ks7010_sdio.c
index c3035b80dac7cd..b7337fd813d59d 100644
--- a/drivers/staging/ks7010/ks7010_sdio.c
+++ b/drivers/staging/ks7010/ks7010_sdio.c
@@ -1033,7 +1033,7 @@ static int ks7010_sdio_probe(struct sdio_func *func,
 		printk(KERN_ERR "ks7010 : Unable to alloc new net device\n");
 		goto error_release_irq;
 	}
-	if (dev_alloc_name(netdev, netdev->name) < 0) {
+	if (dev_alloc_name(netdev, "wlan%d") < 0) {
 		printk(KERN_ERR "ks7010 :  Couldn't get name!\n");
 		goto error_free_netdev;
 	}
-- 
2.8.1

_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 9/9] staging: ks7010: drop private handler for driver version
  2016-06-17  8:46 [PATCH 0/9] staging: ks7010: cleanups Wolfram Sang
                   ` (7 preceding siblings ...)
  2016-06-17  8:46 ` [PATCH 8/9] staging: ks7010: report interface as wlan not eth Wolfram Sang
@ 2016-06-17  8:47 ` Wolfram Sang
  8 siblings, 0 replies; 10+ messages in thread
From: Wolfram Sang @ 2016-06-17  8:47 UTC (permalink / raw)
  To: driverdev-devel; +Cc: Wolfram Sang

We are upstream now, we don't need seperate driver versioning.

Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
---
 drivers/staging/ks7010/ks7010_sdio.h   |  1 -
 drivers/staging/ks7010/ks_wlan_ioctl.h |  2 +-
 drivers/staging/ks7010/ks_wlan_net.c   | 15 +--------------
 3 files changed, 2 insertions(+), 16 deletions(-)

diff --git a/drivers/staging/ks7010/ks7010_sdio.h b/drivers/staging/ks7010/ks7010_sdio.h
index e71c0978986a13..c72064b48bd8fe 100644
--- a/drivers/staging/ks7010/ks7010_sdio.h
+++ b/drivers/staging/ks7010/ks7010_sdio.h
@@ -143,6 +143,5 @@ struct rx_device {
 	spinlock_t rx_dev_lock;
 };
 #define	ROM_FILE "ks7010sd.rom"
-#define	KS_WLAN_DRIVER_VERSION_INFO  "ks7010 sdio linux 007"
 
 #endif /* _KS7010_SDIO_H */
diff --git a/drivers/staging/ks7010/ks_wlan_ioctl.h b/drivers/staging/ks7010/ks_wlan_ioctl.h
index f1fb2dd9a1bd3b..49369e49780874 100644
--- a/drivers/staging/ks7010/ks_wlan_ioctl.h
+++ b/drivers/staging/ks7010/ks_wlan_ioctl.h
@@ -16,7 +16,7 @@
 /* The low order bit identify a SET (0) or a GET (1) ioctl.  */
 
 /*					SIOCIWFIRSTPRIV+0 */
-#define KS_WLAN_GET_DRIVER_VERSION	SIOCIWFIRSTPRIV+1
+/* former KS_WLAN_GET_DRIVER_VERSION	SIOCIWFIRSTPRIV+1 */
 /*					SIOCIWFIRSTPRIV+2 */
 #define KS_WLAN_GET_FIRM_VERSION	SIOCIWFIRSTPRIV+3
 #ifdef WPS
diff --git a/drivers/staging/ks7010/ks_wlan_net.c b/drivers/staging/ks7010/ks_wlan_net.c
index 8ef0f111cf39b1..26dbb75da8262f 100644
--- a/drivers/staging/ks7010/ks_wlan_net.c
+++ b/drivers/staging/ks7010/ks_wlan_net.c
@@ -2199,17 +2199,6 @@ static int ks_wlan_set_mlme(struct net_device *dev,
 }
 
 /*------------------------------------------------------------------*/
-/* Private handler : get driver version */
-static int ks_wlan_get_driver_version(struct net_device *dev,
-				      struct iw_request_info *info,
-				      struct iw_point *dwrq, char *extra)
-{
-	strcpy(extra, KS_WLAN_DRIVER_VERSION_INFO);
-	dwrq->length = strlen(KS_WLAN_DRIVER_VERSION_INFO) + 1;
-	return 0;
-}
-
-/*------------------------------------------------------------------*/
 /* Private handler : get firemware version */
 static int ks_wlan_get_firmware_version(struct net_device *dev,
 					struct iw_request_info *info,
@@ -3128,8 +3117,6 @@ static int ks_wlan_hostt(struct net_device *dev, struct iw_request_info *info,
 
 static const struct iw_priv_args ks_wlan_private_args[] = {
 /*{ cmd, set_args, get_args, name[16] } */
-	{KS_WLAN_GET_DRIVER_VERSION, IW_PRIV_TYPE_NONE,
-	 IW_PRIV_TYPE_CHAR | (128 + 1), "GetDriverVer"},
 	{KS_WLAN_GET_FIRM_VERSION, IW_PRIV_TYPE_NONE,
 	 IW_PRIV_TYPE_CHAR | (128 + 1), "GetFirmwareVer"},
 #ifdef WPS
@@ -3258,7 +3245,7 @@ static const iw_handler ks_wlan_handler[] = {
 /* private_handler */
 static const iw_handler ks_wlan_private_handler[] = {
 	(iw_handler) NULL,	/*  0 */
-	(iw_handler) ks_wlan_get_driver_version,	/*  1 KS_WLAN_GET_DRIVER_VERSION */
+	(iw_handler) NULL,	/*  1, used to be: KS_WLAN_GET_DRIVER_VERSION */
 	(iw_handler) NULL,	/*  2 */
 	(iw_handler) ks_wlan_get_firmware_version,	/*  3 KS_WLAN_GET_FIRM_VERSION */
 #ifdef WPS
-- 
2.8.1

_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2016-06-17  8:47 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-17  8:46 [PATCH 0/9] staging: ks7010: cleanups Wolfram Sang
2016-06-17  8:46 ` [PATCH 1/9] staging: ks7010: remove cfg file handling Wolfram Sang
2016-06-17  8:46 ` [PATCH 2/9] staging: ks7010: function declaration should be in a header file Wolfram Sang
2016-06-17  8:46 ` [PATCH 3/9] staging: ks7010: collect all includes and sort them Wolfram Sang
2016-06-17  8:46 ` [PATCH 4/9] staging: ks7010: export sdio ids Wolfram Sang
2016-06-17  8:46 ` [PATCH 5/9] staging: ks7010: unify naming to ks7010 Wolfram Sang
2016-06-17  8:46 ` [PATCH 6/9] staging: ks7010: sdio: remove forward declarations Wolfram Sang
2016-06-17  8:46 ` [PATCH 7/9] staging: ks7010: bail out when registering netdevice fails Wolfram Sang
2016-06-17  8:46 ` [PATCH 8/9] staging: ks7010: report interface as wlan not eth Wolfram Sang
2016-06-17  8:47 ` [PATCH 9/9] staging: ks7010: drop private handler for driver version Wolfram Sang

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.