From 63035c128b218b2d41c9a041bdedc98b3988cc91 Mon Sep 17 00:00:00 2001 From: Ivan Priest Date: Wed, 13 Feb 2019 18:48:29 +0000 Subject: [PATCH] [NEUS7920-133]Revert "[RAMEN9610-11445][9610] wlbt : update MAC addr scheme to avoid merge conflict" This reverts commit b697b8ad545faae6442a3cf9d633bdac1cf963bb. Note MAC address can now be read from /proc in generic driver code Change-Id: I2f60e624085ccd8a2af8c28a284b1583d5e727e8 SCSC-Bug-Id: SSB-49343 Signed-off-by: Ivan Priest --- drivers/misc/samsung/scsc/mx140_file.c | 85 ------------------- drivers/misc/samsung/scsc_bt/scsc_bt_module.c | 2 +- drivers/misc/samsung/scsc_bt/scsc_bt_priv.h | 2 +- drivers/net/wireless/scsc/mgt.c | 43 +++++----- drivers/net/wireless/scsc/mgt.h | 2 - include/scsc/scsc_mx.h | 8 -- 6 files changed, 22 insertions(+), 120 deletions(-) mode change 100755 => 100644 drivers/misc/samsung/scsc/mx140_file.c diff --git a/drivers/misc/samsung/scsc/mx140_file.c b/drivers/misc/samsung/scsc/mx140_file.c old mode 100755 new mode 100644 index 182caa4e34b2..40e918e6f88a --- a/drivers/misc/samsung/scsc/mx140_file.c +++ b/drivers/misc/samsung/scsc/mx140_file.c @@ -52,8 +52,6 @@ #define MX140_FW_VARIANT_DEFAULT "mx140" -#define MX140_FW_MAC_FILE_SIZE (24) - /* Table of suffixes to append to f/w name */ struct fw_suffix { char suffix[6]; @@ -468,89 +466,6 @@ int mx140_request_file(struct scsc_mx *mx, char *path, const struct firmware **f } EXPORT_SYMBOL(mx140_request_file); -int mx140_request_proc_file(struct scsc_mx *mx, char *path, const struct firmware **firmp) -{ - struct file *f; - mm_segment_t fs; - struct kstat stat; - int r; - struct firmware *firm; - char *buf; - - SCSC_TAG_DEBUG(MX_FILE, "request proc %s\n", path); - - *firmp = NULL; - - /* Current segment. */ - fs = get_fs(); - /* Set to kernel segment. */ - set_fs(get_ds()); - - /* Check f/w bin */ - r = vfs_stat(path, &stat); - if (r != 0) { - set_fs(fs); - SCSC_TAG_ERR(MX_FILE, "vfs_stat() failed for %s\n", path); - return -ENOENT; - } - /* Revert to original segment. */ - set_fs(fs); - - /* Get memory for file contents. */ - buf = vzalloc(MX140_FW_MAC_FILE_SIZE); - if (!buf) { - SCSC_TAG_ERR(MX_FILE, "kzalloc(%d) failed for %s\n", MX140_FW_MAC_FILE_SIZE, path); - return -ENOMEM; - } - - /* Get firmware structure. */ - firm = kzalloc(sizeof(*firm), GFP_KERNEL); - if (!firm) { - vfree(buf); - SCSC_TAG_ERR(MX_FILE, "kzalloc(%zu) failed for %s\n", sizeof(*firmp), path); - return -ENOMEM; - } - - /* Open the file for reading. */ - f = filp_open(path, O_RDONLY, 0); - if (IS_ERR(f)) { - vfree(buf); - kfree(firm); - SCSC_TAG_ERR(MX_FILE, "filp_open() failed for %s with %ld\n", path, PTR_ERR(f)); - return -ENOENT; - } - - fs = get_fs(); - set_fs(get_ds()); - - r = vfs_read(f, buf, MX140_FW_MAC_FILE_SIZE, &f->f_pos); - if (r < 0) { - SCSC_TAG_ERR(MX_FILE, "error reading %s\n", path); - } - - set_fs(fs); - filp_close(f, NULL); - - if (r >= 0) { - r = 0; - /* Pass to caller. Caller will free allocated memory through - * mx140_release_file(). - */ - firm->size = MX140_FW_MAC_FILE_SIZE; - firm->data = buf; - *firmp = firm; - } else { - vfree(buf); - kfree(firm); - } - if (r < 0) - return -ENOENT; - else - return r; -} -EXPORT_SYMBOL(mx140_request_proc_file); - - int mx140_release_file(struct scsc_mx *mx, const struct firmware *firmp) { if (!firmp || !firmp->data) { diff --git a/drivers/misc/samsung/scsc_bt/scsc_bt_module.c b/drivers/misc/samsung/scsc_bt/scsc_bt_module.c index bde380a87ca2..62365edfa120 100755 --- a/drivers/misc/samsung/scsc_bt/scsc_bt_module.c +++ b/drivers/misc/samsung/scsc_bt/scsc_bt_module.c @@ -643,7 +643,7 @@ static int setup_bhcs(struct scsc_service *service, SCSC_TAG_DEBUG(BT_COMMON, "loading Bluetooth address configuration file: " SCSC_BT_ADDR "\n"); - err = mx140_request_proc_file(common_service.maxwell_core, SCSC_BT_ADDR, &firm); + err = mx140_request_file(common_service.maxwell_core, SCSC_BT_ADDR, &firm); if (err) { /* Not found - just silently ignore this */ SCSC_TAG_DEBUG(BT_COMMON, "Bluetooth address not found\n"); diff --git a/drivers/misc/samsung/scsc_bt/scsc_bt_priv.h b/drivers/misc/samsung/scsc_bt/scsc_bt_priv.h index acda5a600ae5..c2c7cc3af241 100755 --- a/drivers/misc/samsung/scsc_bt/scsc_bt_priv.h +++ b/drivers/misc/samsung/scsc_bt/scsc_bt_priv.h @@ -53,7 +53,7 @@ #define SCSC_BT_ADDR "/csa/bluetooth/.bd_addr" #define SCSC_BT_ADDR_LEN (3) #else -#define SCSC_BT_ADDR "/proc/config/bt_mac/ascii" +#define SCSC_BT_ADDR "/mnt/vendor/efs/bluetooth/bt_addr" #define SCSC_BT_ADDR_LEN (6) #endif diff --git a/drivers/net/wireless/scsc/mgt.c b/drivers/net/wireless/scsc/mgt.c index b55c129480d3..ed0d3e1d1ec1 100755 --- a/drivers/net/wireless/scsc/mgt.c +++ b/drivers/net/wireless/scsc/mgt.c @@ -194,26 +194,29 @@ void slsi_get_hw_mac_address(struct slsi_dev *sdev, u8 *addr) int r; /* read maddr_file */ - r = mx140_request_proc_file(sdev->maxwell_core, SLSI_WIFI_ADDR, &e); + if (sdev->maddr_file_name) { + scnprintf(path_name, MX_WLAN_FILE_PATH_LEN_MAX, "wlan/%s", sdev->maddr_file_name); + SLSI_DBG1(sdev, SLSI_INIT_DEINIT, "MAC address file : %s\n", path_name); - if (r != 0) - goto mac_efs; + r = mx140_file_request_device_conf(sdev->maxwell_core, &e, path_name); + if (r != 0) + goto mac_efs; - if (!e) { - SLSI_ERR(sdev, "mx140_file_request_device_conf() returned succes, but firmware was null\n"); - goto mac_efs; - } - r = sscanf(e->data, "%02X:%02X:%02X:%02X:%02X:%02X", &u[0], &u[1], &u[2], &u[3], &u[4], &u[5]); - mx140_file_release_conf(sdev->maxwell_core, e); - if (r != ETH_ALEN) { - SLSI_ERR(sdev, "%s exists, but format is incorrect (should be e.g. xx:xx:xx:xx:xx:xx)\n", SLSI_WIFI_ADDR); - goto mac_efs; + if (!e) { + SLSI_ERR(sdev, "mx140_file_request_device_conf() returned succes, but firmware was null\n"); + goto mac_efs; + } + r = sscanf(e->data, "%02X:%02X:%02X:%02X:%02X:%02X", &u[0], &u[1], &u[2], &u[3], &u[4], &u[5]); + mx140_file_release_conf(sdev->maxwell_core, e); + if (r != ETH_ALEN) { + SLSI_ERR(sdev, "%s exists, but format is incorrect (should be e.g. xx:xx:xx:xx:xx:xx)\n", path_name); + goto mac_efs; + } + for (i = 0; i < ETH_ALEN; i++) + addr[i] = u[i] & 0xff; + SLSI_INFO(sdev, "MAC address loaded from %s: %02X:%02X:%02X:%02X:%02X:%02X\n", path_name, u[0], u[1], u[2], u[3], u[4], u[5]); + return; } - for (i = 0; i < ETH_ALEN; i++) - addr[i] = u[i] & 0xff; - SLSI_INFO(sdev, "MAC address loaded from %s: %02X:%02X:%02X:%02X:%02X:%02X\n", path_name, u[0], u[1], u[2], u[3], u[4], u[5]); - return; - mac_efs: #ifdef CONFIG_SCSC_WLAN_MAC_ADDRESS_FILENAME r = mx140_request_file(sdev->maxwell_core, CONFIG_SCSC_WLAN_MAC_ADDRESS_FILENAME, &e); @@ -231,12 +234,6 @@ mac_efs: for (i = 0; i < ETH_ALEN; i++) addr[i] = u[i] & 0xff; SLSI_INFO(sdev, "MAC address loaded from %s: %02X:%02X:%02X:%02X:%02X:%02X\n", CONFIG_SCSC_WLAN_MAC_ADDRESS_FILENAME, u[0], u[1], u[2], u[3], u[4], u[5]); - - /* MAC address in efs could be invalid, try to fix it to normal address */ - if (addr[0] & 0x01) { - addr[0] = addr[0] & 0xfe; - SLSI_INFO(sdev, "MAC address invalid, fixed address: %pM", addr); - } mx140_release_file(sdev->maxwell_core, e); return; #endif diff --git a/drivers/net/wireless/scsc/mgt.h b/drivers/net/wireless/scsc/mgt.h index 694ebfcfc6d2..3a9ac0e92c9e 100755 --- a/drivers/net/wireless/scsc/mgt.h +++ b/drivers/net/wireless/scsc/mgt.h @@ -158,8 +158,6 @@ #define SLSI_RX_SEQ_NUM_MASK 0xFFF #define SLSI_RX_VIA_TDLS_LINK 0x8000 -#define SLSI_WIFI_ADDR "/proc/config/wifi_mac/ascii" - #define SET_ETHERTYPE_PATTERN_DESC(pd, ethertype) \ pd.offset = 0x0C; \ pd.mask_length = 2; \ diff --git a/include/scsc/scsc_mx.h b/include/scsc/scsc_mx.h index f5587fd2f285..f05514c518b7 100755 --- a/include/scsc/scsc_mx.h +++ b/include/scsc/scsc_mx.h @@ -307,14 +307,6 @@ void mx140_file_release_conf(struct scsc_mx *mx, const struct firmware *conf); */ int mx140_request_file(struct scsc_mx *mx, char *path, const struct firmware **firmp); -/* Read device configuration proc file into memory. - * - * Path is absolute. - * Returns pointer to data or NULL if file not found. - * Call mx140_release_file() to release the memory. - */ -int mx140_request_proc_file(struct scsc_mx *mx, char *path, const struct firmware **firmp); - /* Release configuration file memory allocated with mx140_request_file() * * If firmp is NULL, has no effect. -- 2.20.1