diff options
Diffstat (limited to 'drivers/staging/rtl8712')
24 files changed, 265 insertions, 396 deletions
diff --git a/drivers/staging/rtl8712/TODO b/drivers/staging/rtl8712/TODO index d8dfe5bfe..847c8c41f 100644 --- a/drivers/staging/rtl8712/TODO +++ b/drivers/staging/rtl8712/TODO @@ -4,10 +4,10 @@ TODO: - switch to use MAC80211 - checkpatch.pl fixes - only a few remain -Please send any patches to Greg Kroah-Hartman <greg@kroah.com>, -Larry Finger <Larry.Finger@lwfinger.net> and -Florian Schilhabel <florian.c.schilhabel@googlemail.com>. - - - +A replacement for this driver with MAC80211 support is available +at https://github.com/chunkeey/rtl8192su +Please send any patches to Greg Kroah-Hartman <gregkh@linuxfoundation.org>, +Larry Finger <Larry.Finger@lwfinger.net>, +Florian Schilhabel <florian.c.schilhabel@googlemail.com> and +Linux Driver Project Developer List <driverdev-devel@linuxdriverproject.org>. diff --git a/drivers/staging/rtl8712/drv_types.h b/drivers/staging/rtl8712/drv_types.h index 3d64feeb8..29e47e150 100644 --- a/drivers/staging/rtl8712/drv_types.h +++ b/drivers/staging/rtl8712/drv_types.h @@ -159,6 +159,7 @@ struct _adapter { struct mp_priv mppriv; s32 bDriverStopped; s32 bSurpriseRemoved; + s32 bSuspended; u32 IsrContent; u32 ImrContent; u8 EepromAddressSize; diff --git a/drivers/staging/rtl8712/ieee80211.c b/drivers/staging/rtl8712/ieee80211.c index 974ca021c..d13b4d53c 100644 --- a/drivers/staging/rtl8712/ieee80211.c +++ b/drivers/staging/rtl8712/ieee80211.c @@ -376,7 +376,7 @@ int r8712_get_sec_ie(u8 *in_ie, uint in_len, u8 *rsn_ie, u16 *rsn_len, uint cnt; /*Search required WPA or WPA2 IE and copy to sec_ie[ ]*/ - cnt = (_TIMESTAMP_ + _BEACON_ITERVAL_ + _CAPABILITY_); + cnt = _TIMESTAMP_ + _BEACON_ITERVAL_ + _CAPABILITY_; while (cnt < in_len) { authmode = in_ie[cnt]; if ((authmode == _WPA_IE_ID_) && diff --git a/drivers/staging/rtl8712/ieee80211.h b/drivers/staging/rtl8712/ieee80211.h index d374824c4..67ab58084 100644 --- a/drivers/staging/rtl8712/ieee80211.h +++ b/drivers/staging/rtl8712/ieee80211.h @@ -12,8 +12,7 @@ * more details. * * You should have received a copy of the GNU General Public License along with - * this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA + * this program; if not, see <http://www.gnu.org/licenses/>. * * Modifications for inclusion into the Linux staging tree are * Copyright(c) 2010 Larry Finger. All rights reserved. @@ -61,7 +60,6 @@ #define IEEE_CRYPT_ERR_TX_KEY_SET_FAILED 6 #define IEEE_CRYPT_ERR_CARD_CONF_FAILED 7 - #define IEEE_CRYPT_ALG_NAME_LEN 16 #define WPA_CIPHER_NONE BIT(0) @@ -70,8 +68,6 @@ #define WPA_CIPHER_TKIP BIT(3) #define WPA_CIPHER_CCMP BIT(4) - - #define WPA_SELECTOR_LEN 4 #define RSN_HEADER_LEN 4 @@ -88,7 +84,6 @@ enum NETWORK_TYPE { WIRELESS_11BGN = (WIRELESS_11B | WIRELESS_11G | WIRELESS_11N), }; - struct ieee_param { u32 cmd; u8 sta_addr[ETH_ALEN]; @@ -161,7 +156,6 @@ struct ieee80211_hdr_3addr { u16 seq_ctl; } __packed; - struct ieee80211_hdr_qos { u16 frame_ctl; u16 duration_id; @@ -191,7 +185,6 @@ struct eapol { u16 length; } __packed; - enum eap_type { EAP_PACKET = 0, EAPOL_START, @@ -255,7 +248,6 @@ enum eap_type { #define IEEE80211_STYPE_CFPOLL 0x0060 #define IEEE80211_STYPE_CFACKPOLL 0x0070 #define IEEE80211_QOS_DATAGRP 0x0080 -#define IEEE80211_QoS_DATAGRP IEEE80211_QOS_DATAGRP #define IEEE80211_SCTL_FRAG 0x000F #define IEEE80211_SCTL_SEQ 0xFFF0 @@ -305,15 +297,15 @@ struct ieee80211_snap_hdr { #define WLAN_AUTH_CHALLENGE_LEN 128 -#define WLAN_CAPABILITY_BSS (1<<0) -#define WLAN_CAPABILITY_IBSS (1<<1) -#define WLAN_CAPABILITY_CF_POLLABLE (1<<2) -#define WLAN_CAPABILITY_CF_POLL_REQUEST (1<<3) -#define WLAN_CAPABILITY_PRIVACY (1<<4) -#define WLAN_CAPABILITY_SHORT_PREAMBLE (1<<5) -#define WLAN_CAPABILITY_PBCC (1<<6) -#define WLAN_CAPABILITY_CHANNEL_AGILITY (1<<7) -#define WLAN_CAPABILITY_SHORT_SLOT (1<<10) +#define WLAN_CAPABILITY_BSS BIT(0) +#define WLAN_CAPABILITY_IBSS BIT(1) +#define WLAN_CAPABILITY_CF_POLLABLE BIT(2) +#define WLAN_CAPABILITY_CF_POLL_REQUEST BIT(3) +#define WLAN_CAPABILITY_PRIVACY BIT(4) +#define WLAN_CAPABILITY_SHORT_PREAMBLE BIT(5) +#define WLAN_CAPABILITY_PBCC BIT(6) +#define WLAN_CAPABILITY_CHANNEL_AGILITY BIT(7) +#define WLAN_CAPABILITY_SHORT_SLOT BIT(10) /* Information Element IDs */ #define WLAN_EID_SSID 0 @@ -331,24 +323,21 @@ struct ieee80211_snap_hdr { #define IEEE80211_DATA_HDR3_LEN 24 #define IEEE80211_DATA_HDR4_LEN 30 - -#define IEEE80211_STATMASK_SIGNAL (1<<0) -#define IEEE80211_STATMASK_RSSI (1<<1) -#define IEEE80211_STATMASK_NOISE (1<<2) -#define IEEE80211_STATMASK_RATE (1<<3) +#define IEEE80211_STATMASK_SIGNAL BIT(0) +#define IEEE80211_STATMASK_RSSI BIT(1) +#define IEEE80211_STATMASK_NOISE BIT(2) +#define IEEE80211_STATMASK_RATE BIT(3) #define IEEE80211_STATMASK_WEMASK 0x7 +#define IEEE80211_CCK_MODULATION BIT(0) +#define IEEE80211_OFDM_MODULATION BIT(1) -#define IEEE80211_CCK_MODULATION (1<<0) -#define IEEE80211_OFDM_MODULATION (1<<1) - -#define IEEE80211_24GHZ_BAND (1<<0) -#define IEEE80211_52GHZ_BAND (1<<1) +#define IEEE80211_24GHZ_BAND BIT(0) +#define IEEE80211_52GHZ_BAND BIT(1) #define IEEE80211_CCK_RATE_LEN 4 #define IEEE80211_NUM_OFDM_RATESLEN 8 - #define IEEE80211_CCK_RATE_1MB 0x02 #define IEEE80211_CCK_RATE_2MB 0x04 #define IEEE80211_CCK_RATE_5MB 0x0B @@ -364,18 +353,18 @@ struct ieee80211_snap_hdr { #define IEEE80211_OFDM_RATE_54MB 0x6C #define IEEE80211_BASIC_RATE_MASK 0x80 -#define IEEE80211_CCK_RATE_1MB_MASK (1<<0) -#define IEEE80211_CCK_RATE_2MB_MASK (1<<1) -#define IEEE80211_CCK_RATE_5MB_MASK (1<<2) -#define IEEE80211_CCK_RATE_11MB_MASK (1<<3) -#define IEEE80211_OFDM_RATE_6MB_MASK (1<<4) -#define IEEE80211_OFDM_RATE_9MB_MASK (1<<5) -#define IEEE80211_OFDM_RATE_12MB_MASK (1<<6) -#define IEEE80211_OFDM_RATE_18MB_MASK (1<<7) -#define IEEE80211_OFDM_RATE_24MB_MASK (1<<8) -#define IEEE80211_OFDM_RATE_36MB_MASK (1<<9) -#define IEEE80211_OFDM_RATE_48MB_MASK (1<<10) -#define IEEE80211_OFDM_RATE_54MB_MASK (1<<11) +#define IEEE80211_CCK_RATE_1MB_MASK BIT(0) +#define IEEE80211_CCK_RATE_2MB_MASK BIT(1) +#define IEEE80211_CCK_RATE_5MB_MASK BIT(2) +#define IEEE80211_CCK_RATE_11MB_MASK BIT(3) +#define IEEE80211_OFDM_RATE_6MB_MASK BIT(4) +#define IEEE80211_OFDM_RATE_9MB_MASK BIT(5) +#define IEEE80211_OFDM_RATE_12MB_MASK BIT(6) +#define IEEE80211_OFDM_RATE_18MB_MASK BIT(7) +#define IEEE80211_OFDM_RATE_24MB_MASK BIT(8) +#define IEEE80211_OFDM_RATE_36MB_MASK BIT(9) +#define IEEE80211_OFDM_RATE_48MB_MASK BIT(10) +#define IEEE80211_OFDM_RATE_54MB_MASK BIT(11) #define IEEE80211_CCK_RATES_MASK 0x0000000F #define IEEE80211_CCK_BASIC_RATES_MASK (IEEE80211_CCK_RATE_1MB_MASK | \ @@ -401,9 +390,6 @@ struct ieee80211_snap_hdr { #define IEEE80211_NUM_CCK_RATES 4 #define IEEE80211_OFDM_SHIFT_MASK_A 4 - - - /* NOTE: This data is for statistical purposes; not all hardware provides this * information for frames received. Not setting these will not cause * any adverse affects. @@ -481,15 +467,15 @@ struct ieee80211_softmac_stats { uint swtxawake; }; -#define SEC_KEY_1 (1<<0) -#define SEC_KEY_2 (1<<1) -#define SEC_KEY_3 (1<<2) -#define SEC_KEY_4 (1<<3) -#define SEC_ACTIVE_KEY (1<<4) -#define SEC_AUTH_MODE (1<<5) -#define SEC_UNICAST_GROUP (1<<6) -#define SEC_LEVEL (1<<7) -#define SEC_ENABLED (1<<8) +#define SEC_KEY_1 BIT(0) +#define SEC_KEY_2 BIT(1) +#define SEC_KEY_3 BIT(2) +#define SEC_KEY_4 BIT(3) +#define SEC_ACTIVE_KEY BIT(4) +#define SEC_AUTH_MODE BIT(5) +#define SEC_UNICAST_GROUP BIT(6) +#define SEC_LEVEL BIT(7) +#define SEC_ENABLED BIT(8) #define SEC_LEVEL_0 0 /* None */ #define SEC_LEVEL_1 1 /* WEP 40 and 104 bit */ @@ -645,9 +631,9 @@ struct ieee80211_txb { #define MAX_WPA_IE_LEN 128 -#define NETWORK_EMPTY_ESSID (1<<0) -#define NETWORK_HAS_OFDM (1<<1) -#define NETWORK_HAS_CCK (1<<2) +#define NETWORK_EMPTY_ESSID BIT(0) +#define NETWORK_HAS_OFDM BIT(1) +#define NETWORK_HAS_CCK BIT(2) #define IEEE80211_DTIM_MBCAST 4 #define IEEE80211_DTIM_UCAST 2 @@ -699,15 +685,15 @@ enum ieee80211_state { #define DEFAULT_MAX_SCAN_AGE (15 * HZ) #define DEFAULT_FTS 2346 -#define CFG_IEEE80211_RESERVE_FCS (1<<0) -#define CFG_IEEE80211_COMPUTE_FCS (1<<1) +#define CFG_IEEE80211_RESERVE_FCS BIT(0) +#define CFG_IEEE80211_COMPUTE_FCS BIT(1) #define MAXTID 16 -#define IEEE_A (1<<0) -#define IEEE_B (1<<1) -#define IEEE_G (1<<2) -#define IEEE_MODE_MASK (IEEE_A|IEEE_B|IEEE_G) +#define IEEE_A BIT(0) +#define IEEE_B BIT(1) +#define IEEE_G BIT(2) +#define IEEE_MODE_MASK (IEEE_A | IEEE_B | IEEE_G) static inline int ieee80211_is_empty_essid(const char *essid, int essid_len) { @@ -757,7 +743,7 @@ unsigned char *r8712_get_wpa_ie(unsigned char *pie, int *rsn_ie_len, int limit); unsigned char *r8712_get_wpa2_ie(unsigned char *pie, int *rsn_ie_len, int limit); int r8712_parse_wpa_ie(u8 *wpa_ie, int wpa_ie_len, int *group_cipher, - int *pairwise_cipher); + int *pairwise_cipher); int r8712_parse_wpa2_ie(u8 *wpa_ie, int wpa_ie_len, int *group_cipher, int *pairwise_cipher); int r8712_get_sec_ie(u8 *in_ie, uint in_len, u8 *rsn_ie, u16 *rsn_len, diff --git a/drivers/staging/rtl8712/os_intfs.c b/drivers/staging/rtl8712/os_intfs.c index b89e2d3c4..ab19112ea 100644 --- a/drivers/staging/rtl8712/os_intfs.c +++ b/drivers/staging/rtl8712/os_intfs.c @@ -269,7 +269,6 @@ void r8712_stop_drv_timers(struct _adapter *padapter) static u8 init_default_value(struct _adapter *padapter) { - u8 ret = _SUCCESS; struct registry_priv *pregistrypriv = &padapter->registrypriv; struct xmit_priv *pxmitpriv = &padapter->xmitpriv; struct mlme_priv *pmlmepriv = &padapter->mlmepriv; @@ -302,7 +301,7 @@ static u8 init_default_value(struct _adapter *padapter) r8712_init_registrypriv_dev_network(padapter); r8712_update_registrypriv_dev_network(padapter); /*misc.*/ - return ret; + return _SUCCESS; } u8 r8712_init_drv_sw(struct _adapter *padapter) diff --git a/drivers/staging/rtl8712/recv_linux.c b/drivers/staging/rtl8712/recv_linux.c index 2f5460dbd..735a0eadd 100644 --- a/drivers/staging/rtl8712/recv_linux.c +++ b/drivers/staging/rtl8712/recv_linux.c @@ -44,7 +44,8 @@ int r8712_os_recv_resource_alloc(struct _adapter *padapter, union recv_frame *precvframe) { - precvframe->u.hdr.pkt_newalloc = precvframe->u.hdr.pkt = NULL; + precvframe->u.hdr.pkt_newalloc = NULL; + precvframe->u.hdr.pkt = NULL; return _SUCCESS; } @@ -56,7 +57,7 @@ int r8712_os_recvbuf_resource_alloc(struct _adapter *padapter, precvbuf->irp_pending = false; precvbuf->purb = usb_alloc_urb(0, GFP_KERNEL); - if (precvbuf->purb == NULL) + if (!precvbuf->purb) res = _FAIL; precvbuf->pskb = NULL; precvbuf->reuse = false; @@ -114,7 +115,7 @@ void r8712_recv_indicatepkt(struct _adapter *padapter, precvpriv = &(padapter->recvpriv); pfree_recv_queue = &(precvpriv->free_recv_queue); skb = precv_frame->u.hdr.pkt; - if (skb == NULL) + if (!skb) goto _recv_indicatepkt_drop; skb->data = precv_frame->u.hdr.rx_data; skb->len = precv_frame->u.hdr.len; diff --git a/drivers/staging/rtl8712/rtl8712_cmd.c b/drivers/staging/rtl8712/rtl8712_cmd.c index 9b9160947..50f400234 100644 --- a/drivers/staging/rtl8712/rtl8712_cmd.c +++ b/drivers/staging/rtl8712/rtl8712_cmd.c @@ -293,7 +293,7 @@ u8 r8712_fw_cmd(struct _adapter *pAdapter, u32 cmd) r8712_write32(pAdapter, IOCMD_CTRL_REG, cmd); msleep(100); - while ((0 != r8712_read32(pAdapter, IOCMD_CTRL_REG)) && + while ((r8712_read32(pAdapter, IOCMD_CTRL_REG != 0)) && (pollingcnts > 0)) { pollingcnts--; msleep(20); @@ -317,7 +317,7 @@ int r8712_cmd_thread(void *context) unsigned int cmdsz, wr_sz, *pcmdbuf; struct tx_desc *pdesc; void (*pcmd_callback)(struct _adapter *dev, struct cmd_obj *pcmd); - struct _adapter *padapter = (struct _adapter *)context; + struct _adapter *padapter = context; struct cmd_priv *pcmdpriv = &(padapter->cmdpriv); allow_signal(SIGTERM); diff --git a/drivers/staging/rtl8712/rtl8712_efuse.c b/drivers/staging/rtl8712/rtl8712_efuse.c index eaa93fbb9..76f60ba5e 100644 --- a/drivers/staging/rtl8712/rtl8712_efuse.c +++ b/drivers/staging/rtl8712/rtl8712_efuse.c @@ -161,7 +161,7 @@ static u8 efuse_is_empty(struct _adapter *padapter, u8 *empty) /* read one byte to check if E-Fuse is empty */ if (efuse_one_byte_rw(padapter, true, 0, &value)) { - if (0xFF == value) + if (value == 0xFF) *empty = true; else *empty = false; @@ -345,7 +345,7 @@ static u8 fix_header(struct _adapter *padapter, u8 header, u16 header_addr) ret = false; } else if (pkt.data[i * 2] != value) { ret = false; - if (0xFF == value) /* write again */ + if (value == 0xFF) /* write again */ efuse_one_byte_write(padapter, addr, pkt.data[i * 2]); } @@ -353,7 +353,7 @@ static u8 fix_header(struct _adapter *padapter, u8 header, u16 header_addr) ret = false; } else if (pkt.data[i * 2 + 1] != value) { ret = false; - if (0xFF == value) /* write again */ + if (value == 0xFF) /* write again */ efuse_one_byte_write(padapter, addr + 1, pkt.data[i * 2 + 1]); @@ -420,7 +420,7 @@ u8 r8712_efuse_pg_packet_write(struct _adapter *padapter, const u8 offset, } /* write header fail */ bResult = false; - if (0xFF == efuse_data) + if (efuse_data == 0xFF) return bResult; /* nothing damaged. */ /* call rescue procedure */ if (!fix_header(padapter, efuse_data, efuse_addr)) diff --git a/drivers/staging/rtl8712/rtl8712_io.c b/drivers/staging/rtl8712/rtl8712_io.c index 4148d48ec..391eff37f 100644 --- a/drivers/staging/rtl8712/rtl8712_io.c +++ b/drivers/staging/rtl8712/rtl8712_io.c @@ -36,109 +36,76 @@ u8 r8712_read8(struct _adapter *adapter, u32 addr) { - struct io_queue *pio_queue = adapter->pio_queue; - struct intf_hdl *pintfhdl = &(pio_queue->intf); - u8 (*_read8)(struct intf_hdl *pintfhdl, u32 addr); + struct intf_hdl *hdl = &adapter->pio_queue->intf; - _read8 = pintfhdl->io_ops._read8; - return _read8(pintfhdl, addr); + return hdl->io_ops._read8(hdl, addr); } u16 r8712_read16(struct _adapter *adapter, u32 addr) { - struct io_queue *pio_queue = adapter->pio_queue; - struct intf_hdl *pintfhdl = &(pio_queue->intf); - u16 (*_read16)(struct intf_hdl *pintfhdl, u32 addr); + struct intf_hdl *hdl = &adapter->pio_queue->intf; - _read16 = pintfhdl->io_ops._read16; - return _read16(pintfhdl, addr); + return hdl->io_ops._read16(hdl, addr); } u32 r8712_read32(struct _adapter *adapter, u32 addr) { - struct io_queue *pio_queue = adapter->pio_queue; - struct intf_hdl *pintfhdl = &(pio_queue->intf); - u32 (*_read32)(struct intf_hdl *pintfhdl, u32 addr); + struct intf_hdl *hdl = &adapter->pio_queue->intf; - _read32 = pintfhdl->io_ops._read32; - return _read32(pintfhdl, addr); + return hdl->io_ops._read32(hdl, addr); } void r8712_write8(struct _adapter *adapter, u32 addr, u8 val) { - struct io_queue *pio_queue = adapter->pio_queue; - struct intf_hdl *pintfhdl = &(pio_queue->intf); - void (*_write8)(struct intf_hdl *pintfhdl, u32 addr, u8 val); + struct intf_hdl *hdl = &adapter->pio_queue->intf; - _write8 = pintfhdl->io_ops._write8; - _write8(pintfhdl, addr, val); + hdl->io_ops._write8(hdl, addr, val); } void r8712_write16(struct _adapter *adapter, u32 addr, u16 val) { - struct io_queue *pio_queue = adapter->pio_queue; - struct intf_hdl *pintfhdl = &(pio_queue->intf); - void (*_write16)(struct intf_hdl *pintfhdl, u32 addr, u16 val); + struct intf_hdl *hdl = &adapter->pio_queue->intf; - _write16 = pintfhdl->io_ops._write16; - _write16(pintfhdl, addr, val); + hdl->io_ops._write16(hdl, addr, val); } void r8712_write32(struct _adapter *adapter, u32 addr, u32 val) { - struct io_queue *pio_queue = adapter->pio_queue; - struct intf_hdl *pintfhdl = &(pio_queue->intf); + struct intf_hdl *hdl = &adapter->pio_queue->intf; - void (*_write32)(struct intf_hdl *pintfhdl, u32 addr, u32 val); - - _write32 = pintfhdl->io_ops._write32; - _write32(pintfhdl, addr, val); + hdl->io_ops._write32(hdl, addr, val); } void r8712_read_mem(struct _adapter *adapter, u32 addr, u32 cnt, u8 *pmem) { - struct io_queue *pio_queue = adapter->pio_queue; - struct intf_hdl *pintfhdl = &(pio_queue->intf); + struct intf_hdl *hdl = &adapter->pio_queue->intf; - void (*_read_mem)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, - u8 *pmem); if (adapter->bDriverStopped || adapter->bSurpriseRemoved) return; - _read_mem = pintfhdl->io_ops._read_mem; - _read_mem(pintfhdl, addr, cnt, pmem); + + hdl->io_ops._read_mem(hdl, addr, cnt, pmem); } void r8712_write_mem(struct _adapter *adapter, u32 addr, u32 cnt, u8 *pmem) { - struct io_queue *pio_queue = adapter->pio_queue; - struct intf_hdl *pintfhdl = &(pio_queue->intf); - void (*_write_mem)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, - u8 *pmem); + struct intf_hdl *hdl = &adapter->pio_queue->intf; - _write_mem = pintfhdl->io_ops._write_mem; - _write_mem(pintfhdl, addr, cnt, pmem); + hdl->io_ops._write_mem(hdl, addr, cnt, pmem); } void r8712_read_port(struct _adapter *adapter, u32 addr, u32 cnt, u8 *pmem) { - struct io_queue *pio_queue = adapter->pio_queue; - struct intf_hdl *pintfhdl = &(pio_queue->intf); + struct intf_hdl *hdl = &adapter->pio_queue->intf; - u32 (*_read_port)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, - u8 *pmem); if (adapter->bDriverStopped || adapter->bSurpriseRemoved) return; - _read_port = pintfhdl->io_ops._read_port; - _read_port(pintfhdl, addr, cnt, pmem); + + hdl->io_ops._read_port(hdl, addr, cnt, pmem); } void r8712_write_port(struct _adapter *adapter, u32 addr, u32 cnt, u8 *pmem) { - struct io_queue *pio_queue = adapter->pio_queue; - struct intf_hdl *pintfhdl = &(pio_queue->intf); + struct intf_hdl *hdl = &adapter->pio_queue->intf; - u32 (*_write_port)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, - u8 *pmem); - _write_port = pintfhdl->io_ops._write_port; - _write_port(pintfhdl, addr, cnt, pmem); + hdl->io_ops._write_port(hdl, addr, cnt, pmem); } diff --git a/drivers/staging/rtl8712/rtl871x_cmd.c b/drivers/staging/rtl8712/rtl871x_cmd.c index 562a10203..86136cc73 100644 --- a/drivers/staging/rtl8712/rtl871x_cmd.c +++ b/drivers/staging/rtl8712/rtl871x_cmd.c @@ -136,15 +136,12 @@ static struct cmd_obj *_dequeue_cmd(struct __queue *queue) unsigned long irqL; struct cmd_obj *obj; - spin_lock_irqsave(&(queue->lock), irqL); - if (list_empty(&(queue->queue))) { - obj = NULL; - } else { - obj = LIST_CONTAINOR(queue->queue.next, - struct cmd_obj, list); + spin_lock_irqsave(&queue->lock, irqL); + obj = list_first_entry_or_null(&queue->queue, + struct cmd_obj, list); + if (obj) list_del_init(&obj->list); - } - spin_unlock_irqrestore(&(queue->lock), irqL); + spin_unlock_irqrestore(&queue->lock, irqL); return obj; } @@ -318,27 +315,6 @@ u8 r8712_setbasicrate_cmd(struct _adapter *padapter, u8 *rateset) return _SUCCESS; } -/* power tracking mechanism setting */ -u8 r8712_setptm_cmd(struct _adapter *padapter, u8 type) -{ - struct cmd_obj *ph2c; - struct writePTM_parm *pwriteptmparm; - struct cmd_priv *pcmdpriv = &padapter->cmdpriv; - - ph2c = kmalloc(sizeof(*ph2c), GFP_ATOMIC); - if (ph2c == NULL) - return _FAIL; - pwriteptmparm = kmalloc(sizeof(*pwriteptmparm), GFP_ATOMIC); - if (pwriteptmparm == NULL) { - kfree(ph2c); - return _FAIL; - } - init_h2fwcmd_w_parm_no_rsp(ph2c, pwriteptmparm, GEN_CMD_CODE(_SetPT)); - pwriteptmparm->type = type; - r8712_enqueue_cmd(pcmdpriv, ph2c); - return _SUCCESS; -} - u8 r8712_setfwdig_cmd(struct _adapter *padapter, u8 type) { struct cmd_obj *ph2c; @@ -733,32 +709,6 @@ u8 r8712_setrttbl_cmd(struct _adapter *padapter, return _SUCCESS; } -u8 r8712_gettssi_cmd(struct _adapter *padapter, u8 offset, u8 *pval) -{ - struct cmd_priv *pcmdpriv = &padapter->cmdpriv; - struct cmd_obj *ph2c; - struct readTSSI_parm *prdtssiparm; - - ph2c = kmalloc(sizeof(*ph2c), GFP_ATOMIC); - if (ph2c == NULL) - return _FAIL; - prdtssiparm = kmalloc(sizeof(*prdtssiparm), GFP_ATOMIC); - if (prdtssiparm == NULL) { - kfree(ph2c); - return _FAIL; - } - INIT_LIST_HEAD(&ph2c->list); - ph2c->cmdcode = GEN_CMD_CODE(_ReadTSSI); - ph2c->parmbuf = (unsigned char *)prdtssiparm; - ph2c->cmdsz = sizeof(struct readTSSI_parm); - ph2c->rsp = pval; - ph2c->rspsz = sizeof(struct readTSSI_rsp); - - prdtssiparm->offset = offset; - r8712_enqueue_cmd(pcmdpriv, ph2c); - return _SUCCESS; -} - u8 r8712_setMacAddr_cmd(struct _adapter *padapter, u8 *mac_addr) { struct cmd_priv *pcmdpriv = &padapter->cmdpriv; diff --git a/drivers/staging/rtl8712/rtl871x_cmd.h b/drivers/staging/rtl8712/rtl871x_cmd.h index 818cd8807..e4a2a50c8 100644 --- a/drivers/staging/rtl8712/rtl871x_cmd.h +++ b/drivers/staging/rtl8712/rtl871x_cmd.h @@ -736,8 +736,6 @@ u8 r8712_setrfintfs_cmd(struct _adapter *padapter, u8 mode); u8 r8712_setrfreg_cmd(struct _adapter *padapter, u8 offset, u32 val); u8 r8712_setrttbl_cmd(struct _adapter *padapter, struct setratable_parm *prate_table); -u8 r8712_gettssi_cmd(struct _adapter *padapter, u8 offset, u8 *pval); -u8 r8712_setptm_cmd(struct _adapter *padapter, u8 type); u8 r8712_setfwdig_cmd(struct _adapter *padapter, u8 type); u8 r8712_setfwra_cmd(struct _adapter *padapter, u8 type); u8 r8712_addbareq_cmd(struct _adapter *padapter, u8 tid); diff --git a/drivers/staging/rtl8712/rtl871x_io.c b/drivers/staging/rtl8712/rtl871x_io.c index fbbc63570..3a10940db 100644 --- a/drivers/staging/rtl8712/rtl871x_io.c +++ b/drivers/staging/rtl8712/rtl871x_io.c @@ -113,7 +113,7 @@ uint r8712_alloc_io_queue(struct _adapter *adapter) struct io_req *pio_req; pio_queue = kmalloc(sizeof(*pio_queue), GFP_ATOMIC); - if (pio_queue == NULL) + if (!pio_queue) goto alloc_io_queue_fail; INIT_LIST_HEAD(&pio_queue->free_ioreqs); INIT_LIST_HEAD(&pio_queue->processing); diff --git a/drivers/staging/rtl8712/rtl871x_ioctl_linux.c b/drivers/staging/rtl8712/rtl871x_ioctl_linux.c index edfc6805e..1b9e24900 100644 --- a/drivers/staging/rtl8712/rtl871x_ioctl_linux.c +++ b/drivers/staging/rtl8712/rtl871x_ioctl_linux.c @@ -137,7 +137,7 @@ static inline void handle_group_key(struct ieee_param *param, } } -static inline char *translate_scan(struct _adapter *padapter, +static noinline_for_stack char *translate_scan(struct _adapter *padapter, struct iw_request_info *info, struct wlan_network *pnetwork, char *start, char *stop) @@ -398,12 +398,9 @@ static int wpa_set_encryption(struct net_device *dev, struct ieee_param *param, wep_key_idx = 0; if (wep_key_len > 0) { wep_key_len = wep_key_len <= 5 ? 5 : 13; - pwep = kmalloc((u32)(wep_key_len + - FIELD_OFFSET(struct NDIS_802_11_WEP, - KeyMaterial)), GFP_ATOMIC); + pwep = kzalloc(sizeof(*pwep), GFP_ATOMIC); if (pwep == NULL) return -ENOMEM; - memset(pwep, 0, sizeof(struct NDIS_802_11_WEP)); pwep->KeyLength = wep_key_len; pwep->Length = wep_key_len + FIELD_OFFSET(struct NDIS_802_11_WEP, @@ -1964,7 +1961,7 @@ static int r871x_get_ap_info(struct net_device *dev, struct list_head *plist, *phead; unsigned char *pbuf; u8 bssid[ETH_ALEN]; - char data[32]; + char data[33]; if (padapter->bDriverStopped || (pdata == NULL)) return -EINVAL; @@ -1979,6 +1976,7 @@ static int r871x_get_ap_info(struct net_device *dev, if (pdata->length >= 32) { if (copy_from_user(data, pdata->pointer, 32)) return -EINVAL; + data[32] = 0; } else { return -EINVAL; } diff --git a/drivers/staging/rtl8712/rtl871x_ioctl_rtl.c b/drivers/staging/rtl8712/rtl871x_ioctl_rtl.c index 7c346a405..c7f2e5167 100644 --- a/drivers/staging/rtl8712/rtl871x_ioctl_rtl.c +++ b/drivers/staging/rtl8712/rtl871x_ioctl_rtl.c @@ -49,8 +49,7 @@ uint oid_rt_get_signal_quality_hdl(struct oid_par_priv *poid_par_priv) uint oid_rt_get_small_packet_crc_hdl(struct oid_par_priv *poid_par_priv) { - struct _adapter *padapter = (struct _adapter *) - (poid_par_priv->adapter_context); + struct _adapter *padapter = poid_par_priv->adapter_context; if (poid_par_priv->type_of_oid != QUERY_OID) return RNDIS_STATUS_NOT_ACCEPTED; @@ -66,8 +65,7 @@ uint oid_rt_get_small_packet_crc_hdl(struct oid_par_priv *poid_par_priv) uint oid_rt_get_middle_packet_crc_hdl(struct oid_par_priv *poid_par_priv) { - struct _adapter *padapter = (struct _adapter *) - (poid_par_priv->adapter_context); + struct _adapter *padapter = poid_par_priv->adapter_context; if (poid_par_priv->type_of_oid != QUERY_OID) return RNDIS_STATUS_NOT_ACCEPTED; @@ -83,8 +81,7 @@ uint oid_rt_get_middle_packet_crc_hdl(struct oid_par_priv *poid_par_priv) uint oid_rt_get_large_packet_crc_hdl(struct oid_par_priv *poid_par_priv) { - struct _adapter *padapter = (struct _adapter *) - (poid_par_priv->adapter_context); + struct _adapter *padapter = poid_par_priv->adapter_context; if (poid_par_priv->type_of_oid != QUERY_OID) return RNDIS_STATUS_NOT_ACCEPTED; @@ -115,8 +112,7 @@ uint oid_rt_get_rx_retry_hdl(struct oid_par_priv *poid_par_priv) uint oid_rt_get_rx_total_packet_hdl(struct oid_par_priv *poid_par_priv) { - struct _adapter *padapter = (struct _adapter *) - (poid_par_priv->adapter_context); + struct _adapter *padapter = poid_par_priv->adapter_context; if (poid_par_priv->type_of_oid != QUERY_OID) return RNDIS_STATUS_NOT_ACCEPTED; @@ -147,8 +143,7 @@ uint oid_rt_get_tx_beacon_err_hdl(struct oid_par_priv *poid_par_priv) uint oid_rt_get_rx_icv_err_hdl(struct oid_par_priv *poid_par_priv) { - struct _adapter *padapter = (struct _adapter *) - (poid_par_priv->adapter_context); + struct _adapter *padapter = poid_par_priv->adapter_context; if (poid_par_priv->type_of_oid != QUERY_OID) return RNDIS_STATUS_NOT_ACCEPTED; @@ -172,8 +167,7 @@ uint oid_rt_set_encryption_algorithm_hdl(struct oid_par_priv uint oid_rt_get_preamble_mode_hdl(struct oid_par_priv *poid_par_priv) { - struct _adapter *padapter = (struct _adapter *) - (poid_par_priv->adapter_context); + struct _adapter *padapter = poid_par_priv->adapter_context; u32 preamblemode = 0; if (poid_par_priv->type_of_oid != QUERY_OID) @@ -202,8 +196,7 @@ uint oid_rt_get_ap_ip_hdl(struct oid_par_priv *poid_par_priv) uint oid_rt_get_channelplan_hdl(struct oid_par_priv *poid_par_priv) { - struct _adapter *padapter = (struct _adapter *) - (poid_par_priv->adapter_context); + struct _adapter *padapter = poid_par_priv->adapter_context; struct eeprom_priv *peeprompriv = &padapter->eeprompriv; if (poid_par_priv->type_of_oid != QUERY_OID) @@ -216,8 +209,7 @@ uint oid_rt_get_channelplan_hdl(struct oid_par_priv *poid_par_priv) uint oid_rt_set_channelplan_hdl(struct oid_par_priv *poid_par_priv) { - struct _adapter *padapter = (struct _adapter *) - (poid_par_priv->adapter_context); + struct _adapter *padapter = poid_par_priv->adapter_context; struct eeprom_priv *peeprompriv = &padapter->eeprompriv; if (poid_par_priv->type_of_oid != SET_OID) @@ -229,8 +221,7 @@ uint oid_rt_set_channelplan_hdl(struct oid_par_priv uint oid_rt_set_preamble_mode_hdl(struct oid_par_priv *poid_par_priv) { - struct _adapter *padapter = (struct _adapter *) - (poid_par_priv->adapter_context); + struct _adapter *padapter = poid_par_priv->adapter_context; u32 preamblemode = 0; if (poid_par_priv->type_of_oid != SET_OID) @@ -267,8 +258,7 @@ uint oid_rt_dedicate_probe_hdl(struct oid_par_priv uint oid_rt_get_total_tx_bytes_hdl(struct oid_par_priv *poid_par_priv) { - struct _adapter *padapter = (struct _adapter *) - (poid_par_priv->adapter_context); + struct _adapter *padapter = poid_par_priv->adapter_context; if (poid_par_priv->type_of_oid != QUERY_OID) return RNDIS_STATUS_NOT_ACCEPTED; @@ -285,8 +275,7 @@ uint oid_rt_get_total_tx_bytes_hdl(struct oid_par_priv uint oid_rt_get_total_rx_bytes_hdl(struct oid_par_priv *poid_par_priv) { - struct _adapter *padapter = (struct _adapter *) - (poid_par_priv->adapter_context); + struct _adapter *padapter = poid_par_priv->adapter_context; if (poid_par_priv->type_of_oid != QUERY_OID) return RNDIS_STATUS_NOT_ACCEPTED; @@ -325,8 +314,7 @@ uint oid_rt_get_enc_key_match_count_hdl(struct oid_par_priv uint oid_rt_get_channel_hdl(struct oid_par_priv *poid_par_priv) { - struct _adapter *padapter = (struct _adapter *) - (poid_par_priv->adapter_context); + struct _adapter *padapter = poid_par_priv->adapter_context; struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct NDIS_802_11_CONFIGURATION *pnic_Config; u32 channelnum; @@ -449,8 +437,7 @@ uint oid_rt_pro_rf_write_registry_hdl(struct oid_par_priv* poid_par_priv) { uint status = RNDIS_STATUS_SUCCESS; - struct _adapter *Adapter = (struct _adapter *) - (poid_par_priv->adapter_context); + struct _adapter *Adapter = poid_par_priv->adapter_context; if (poid_par_priv->type_of_oid != SET_OID) /* QUERY_OID */ return RNDIS_STATUS_NOT_ACCEPTED; @@ -470,8 +457,7 @@ uint oid_rt_pro_rf_write_registry_hdl(struct oid_par_priv* uint oid_rt_pro_rf_read_registry_hdl(struct oid_par_priv *poid_par_priv) { uint status = RNDIS_STATUS_SUCCESS; - struct _adapter *Adapter = (struct _adapter *) - (poid_par_priv->adapter_context); + struct _adapter *Adapter = poid_par_priv->adapter_context; if (poid_par_priv->type_of_oid != SET_OID) /* QUERY_OID */ return RNDIS_STATUS_NOT_ACCEPTED; @@ -516,8 +502,7 @@ enum _CONNECT_STATE_ { uint oid_rt_get_connect_state_hdl(struct oid_par_priv *poid_par_priv) { - struct _adapter *padapter = (struct _adapter *) - (poid_par_priv->adapter_context); + struct _adapter *padapter = poid_par_priv->adapter_context; struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); u32 ulInfo; diff --git a/drivers/staging/rtl8712/rtl871x_mlme.c b/drivers/staging/rtl8712/rtl871x_mlme.c index 04f727fc9..62d4ae85a 100644 --- a/drivers/staging/rtl8712/rtl871x_mlme.c +++ b/drivers/staging/rtl8712/rtl871x_mlme.c @@ -64,7 +64,7 @@ static sint _init_mlme_priv(struct _adapter *padapter) memset(&pmlmepriv->assoc_ssid, 0, sizeof(struct ndis_802_11_ssid)); pbuf = kmalloc_array(MAX_BSS_CNT, sizeof(struct wlan_network), GFP_ATOMIC); - if (pbuf == NULL) + if (!pbuf) return _FAIL; pmlmepriv->free_bss_buf = pbuf; pnetwork = (struct wlan_network *)pbuf; @@ -87,16 +87,15 @@ struct wlan_network *_r8712_alloc_network(struct mlme_priv *pmlmepriv) unsigned long irqL; struct wlan_network *pnetwork; struct __queue *free_queue = &pmlmepriv->free_bss_pool; - struct list_head *plist = NULL; - if (list_empty(&free_queue->queue)) - return NULL; spin_lock_irqsave(&free_queue->lock, irqL); - plist = free_queue->queue.next; - pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list); - list_del_init(&pnetwork->list); - pnetwork->last_scanned = jiffies; - pmlmepriv->num_of_scanned++; + pnetwork = list_first_entry_or_null(&free_queue->queue, + struct wlan_network, list); + if (pnetwork) { + list_del_init(&pnetwork->list); + pnetwork->last_scanned = jiffies; + pmlmepriv->num_of_scanned++; + } spin_unlock_irqrestore(&free_queue->lock, irqL); return pnetwork; } @@ -469,8 +468,7 @@ static int is_desired_network(struct _adapter *adapter, pnetwork->network.IELength, wps_ie, &wps_ielen)) return true; - else - return false; + return false; } if ((psecuritypriv->PrivacyAlgrthm != _NO_PRIVACY_) && (pnetwork->network.Privacy == 0)) @@ -1203,7 +1201,7 @@ sint r8712_set_auth(struct _adapter *adapter, struct setauth_parm *psetauthparm; pcmd = kmalloc(sizeof(*pcmd), GFP_ATOMIC); - if (pcmd == NULL) + if (!pcmd) return _FAIL; psetauthparm = kzalloc(sizeof(*psetauthparm), GFP_ATOMIC); @@ -1233,7 +1231,7 @@ sint r8712_set_key(struct _adapter *adapter, sint ret = _SUCCESS; pcmd = kmalloc(sizeof(*pcmd), GFP_ATOMIC); - if (pcmd == NULL) + if (!pcmd) return _FAIL; psetkeyparm = kzalloc(sizeof(*psetkeyparm), GFP_ATOMIC); if (psetkeyparm == NULL) { diff --git a/drivers/staging/rtl8712/rtl871x_mp.c b/drivers/staging/rtl8712/rtl871x_mp.c index 44da4fe89..5e4fda189 100644 --- a/drivers/staging/rtl8712/rtl871x_mp.c +++ b/drivers/staging/rtl8712/rtl871x_mp.c @@ -235,7 +235,7 @@ static u8 set_bb_reg(struct _adapter *pAdapter, if (bitmask != bMaskDWord) { org_value = r8712_bb_reg_read(pAdapter, offset); bit_shift = bitshift(bitmask); - new_value = ((org_value & (~bitmask)) | (value << bit_shift)); + new_value = (org_value & (~bitmask)) | (value << bit_shift); } else { new_value = value; } @@ -260,7 +260,7 @@ static u8 set_rf_reg(struct _adapter *pAdapter, u8 path, u8 offset, u32 bitmask, if (bitmask != bMaskDWord) { org_value = r8712_rf_reg_read(pAdapter, path, offset); bit_shift = bitshift(bitmask); - new_value = ((org_value & (~bitmask)) | (value << bit_shift)); + new_value = (org_value & (~bitmask)) | (value << bit_shift); } else { new_value = value; } @@ -281,10 +281,10 @@ void r8712_SetChannel(struct _adapter *pAdapter) u16 code = GEN_CMD_CODE(_SetChannel); pcmd = kmalloc(sizeof(*pcmd), GFP_ATOMIC); - if (pcmd == NULL) + if (!pcmd) return; pparm = kmalloc(sizeof(*pparm), GFP_ATOMIC); - if (pparm == NULL) { + if (!pparm) { kfree(pcmd); return; } @@ -327,10 +327,10 @@ void r8712_SetTxAGCOffset(struct _adapter *pAdapter, u32 ulTxAGCOffset) { u32 TxAGCOffset_B, TxAGCOffset_C, TxAGCOffset_D, tmpAGC; - TxAGCOffset_B = (ulTxAGCOffset & 0x000000ff); + TxAGCOffset_B = ulTxAGCOffset & 0x000000ff; TxAGCOffset_C = (ulTxAGCOffset & 0x0000ff00) >> 8; TxAGCOffset_D = (ulTxAGCOffset & 0x00ff0000) >> 16; - tmpAGC = (TxAGCOffset_D << 8 | TxAGCOffset_C << 4 | TxAGCOffset_B); + tmpAGC = TxAGCOffset_D << 8 | TxAGCOffset_C << 4 | TxAGCOffset_B; set_bb_reg(pAdapter, rFPGA0_TxGainStage, (bXBTxAGC | bXCTxAGC | bXDTxAGC), tmpAGC); } diff --git a/drivers/staging/rtl8712/rtl871x_mp_ioctl.h b/drivers/staging/rtl8712/rtl871x_mp_ioctl.h index 8e7c7f8b6..8dc898024 100644 --- a/drivers/staging/rtl8712/rtl871x_mp_ioctl.h +++ b/drivers/staging/rtl8712/rtl871x_mp_ioctl.h @@ -150,90 +150,90 @@ uint oid_rt_get_power_mode_hdl( #ifdef _RTL871X_MP_IOCTL_C_ /* CAUTION!!! */ /* This ifdef _MUST_ be left in!! */ static const struct oid_obj_priv oid_rtl_seg_81_80_00[] = { - {1, &oid_null_function}, /*0x00 OID_RT_PRO_RESET_DUT */ - {1, &oid_rt_pro_set_data_rate_hdl}, /*0x01*/ - {1, &oid_rt_pro_start_test_hdl},/*0x02*/ - {1, &oid_rt_pro_stop_test_hdl}, /*0x03*/ - {1, &oid_null_function}, /*0x04 OID_RT_PRO_SET_PREAMBLE*/ - {1, &oid_null_function}, /*0x05 OID_RT_PRO_SET_SCRAMBLER*/ - {1, &oid_null_function}, /*0x06 OID_RT_PRO_SET_FILTER_BB*/ - {1, &oid_null_function}, /*0x07 + {1, oid_null_function}, /*0x00 OID_RT_PRO_RESET_DUT */ + {1, oid_rt_pro_set_data_rate_hdl}, /*0x01*/ + {1, oid_rt_pro_start_test_hdl}, /*0x02*/ + {1, oid_rt_pro_stop_test_hdl}, /*0x03*/ + {1, oid_null_function}, /*0x04 OID_RT_PRO_SET_PREAMBLE*/ + {1, oid_null_function}, /*0x05 OID_RT_PRO_SET_SCRAMBLER*/ + {1, oid_null_function}, /*0x06 OID_RT_PRO_SET_FILTER_BB*/ + {1, oid_null_function}, /*0x07 * OID_RT_PRO_SET_MANUAL_DIVERS_BB*/ - {1, &oid_rt_pro_set_channel_direct_call_hdl}, /*0x08*/ - {1, &oid_null_function}, /*0x09 + {1, oid_rt_pro_set_channel_direct_call_hdl}, /*0x08*/ + {1, oid_null_function}, /*0x09 * OID_RT_PRO_SET_SLEEP_MODE_DIRECT_CALL*/ - {1, &oid_null_function}, /*0x0A + {1, oid_null_function}, /*0x0A * OID_RT_PRO_SET_WAKE_MODE_DIRECT_CALL*/ - {1, &oid_rt_pro_set_continuous_tx_hdl}, /*0x0B + {1, oid_rt_pro_set_continuous_tx_hdl}, /*0x0B * OID_RT_PRO_SET_TX_CONTINUOUS_DIRECT_CALL*/ - {1, &oid_rt_pro_set_single_carrier_tx_hdl}, /*0x0C + {1, oid_rt_pro_set_single_carrier_tx_hdl}, /*0x0C * OID_RT_PRO_SET_SINGLE_CARRIER_TX_CONTINUOUS*/ - {1, &oid_null_function}, /*0x0D + {1, oid_null_function}, /*0x0D * OID_RT_PRO_SET_TX_ANTENNA_BB*/ - {1, &oid_rt_pro_set_antenna_bb_hdl}, /*0x0E*/ - {1, &oid_null_function}, /*0x0F OID_RT_PRO_SET_CR_SCRAMBLER*/ - {1, &oid_null_function}, /*0x10 OID_RT_PRO_SET_CR_NEW_FILTER*/ - {1, &oid_rt_pro_set_tx_power_control_hdl}, /*0x11 + {1, oid_rt_pro_set_antenna_bb_hdl}, /*0x0E*/ + {1, oid_null_function}, /*0x0F OID_RT_PRO_SET_CR_SCRAMBLER*/ + {1, oid_null_function}, /*0x10 OID_RT_PRO_SET_CR_NEW_FILTER*/ + {1, oid_rt_pro_set_tx_power_control_hdl}, /*0x11 * OID_RT_PRO_SET_TX_POWER_CONTROL*/ - {1, &oid_null_function}, /*0x12 OID_RT_PRO_SET_CR_TX_CONFIG*/ - {1, &oid_null_function}, /*0x13 + {1, oid_null_function}, /*0x12 OID_RT_PRO_SET_CR_TX_CONFIG*/ + {1, oid_null_function}, /*0x13 * OID_RT_PRO_GET_TX_POWER_CONTROL*/ - {1, &oid_null_function}, /*0x14 + {1, oid_null_function}, /*0x14 * OID_RT_PRO_GET_CR_SIGNAL_QUALITY*/ - {1, &oid_null_function}, /*0x15 OID_RT_PRO_SET_CR_SETPOINT*/ - {1, &oid_null_function}, /*0x16 OID_RT_PRO_SET_INTEGRATOR*/ - {1, &oid_null_function}, /*0x17 OID_RT_PRO_SET_SIGNAL_QUALITY*/ - {1, &oid_null_function}, /*0x18 OID_RT_PRO_GET_INTEGRATOR*/ - {1, &oid_null_function}, /*0x19 OID_RT_PRO_GET_SIGNAL_QUALITY*/ - {1, &oid_null_function}, /*0x1A OID_RT_PRO_QUERY_EEPROM_TYPE*/ - {1, &oid_null_function}, /*0x1B OID_RT_PRO_WRITE_MAC_ADDRESS*/ - {1, &oid_null_function}, /*0x1C OID_RT_PRO_READ_MAC_ADDRESS*/ - {1, &oid_null_function}, /*0x1D OID_RT_PRO_WRITE_CIS_DATA*/ - {1, &oid_null_function}, /*0x1E OID_RT_PRO_READ_CIS_DATA*/ - {1, &oid_null_function} /*0x1F OID_RT_PRO_WRITE_POWER_CONTROL*/ + {1, oid_null_function}, /*0x15 OID_RT_PRO_SET_CR_SETPOINT*/ + {1, oid_null_function}, /*0x16 OID_RT_PRO_SET_INTEGRATOR*/ + {1, oid_null_function}, /*0x17 OID_RT_PRO_SET_SIGNAL_QUALITY*/ + {1, oid_null_function}, /*0x18 OID_RT_PRO_GET_INTEGRATOR*/ + {1, oid_null_function}, /*0x19 OID_RT_PRO_GET_SIGNAL_QUALITY*/ + {1, oid_null_function}, /*0x1A OID_RT_PRO_QUERY_EEPROM_TYPE*/ + {1, oid_null_function}, /*0x1B OID_RT_PRO_WRITE_MAC_ADDRESS*/ + {1, oid_null_function}, /*0x1C OID_RT_PRO_READ_MAC_ADDRESS*/ + {1, oid_null_function}, /*0x1D OID_RT_PRO_WRITE_CIS_DATA*/ + {1, oid_null_function}, /*0x1E OID_RT_PRO_READ_CIS_DATA*/ + {1, oid_null_function} /*0x1F OID_RT_PRO_WRITE_POWER_CONTROL*/ }; static const struct oid_obj_priv oid_rtl_seg_81_80_20[] = { - {1, &oid_null_function}, /*0x20 OID_RT_PRO_READ_POWER_CONTROL*/ - {1, &oid_null_function}, /*0x21 OID_RT_PRO_WRITE_EEPROM*/ - {1, &oid_null_function}, /*0x22 OID_RT_PRO_READ_EEPROM*/ - {1, &oid_rt_pro_reset_tx_packet_sent_hdl}, /*0x23*/ - {1, &oid_rt_pro_query_tx_packet_sent_hdl}, /*0x24*/ - {1, &oid_rt_pro_reset_rx_packet_received_hdl}, /*0x25*/ - {1, &oid_rt_pro_query_rx_packet_received_hdl}, /*0x26*/ - {1, &oid_rt_pro_query_rx_packet_crc32_error_hdl},/*0x27*/ - {1, &oid_null_function}, /*0x28 + {1, oid_null_function}, /*0x20 OID_RT_PRO_READ_POWER_CONTROL*/ + {1, oid_null_function}, /*0x21 OID_RT_PRO_WRITE_EEPROM*/ + {1, oid_null_function}, /*0x22 OID_RT_PRO_READ_EEPROM*/ + {1, oid_rt_pro_reset_tx_packet_sent_hdl}, /*0x23*/ + {1, oid_rt_pro_query_tx_packet_sent_hdl}, /*0x24*/ + {1, oid_rt_pro_reset_rx_packet_received_hdl}, /*0x25*/ + {1, oid_rt_pro_query_rx_packet_received_hdl}, /*0x26*/ + {1, oid_rt_pro_query_rx_packet_crc32_error_hdl},/*0x27*/ + {1, oid_null_function}, /*0x28 *OID_RT_PRO_QUERY_CURRENT_ADDRESS*/ - {1, &oid_null_function}, /*0x29 + {1, oid_null_function}, /*0x29 *OID_RT_PRO_QUERY_PERMANENT_ADDRESS*/ - {1, &oid_null_function}, /*0x2A + {1, oid_null_function}, /*0x2A *OID_RT_PRO_SET_PHILIPS_RF_PARAMETERS*/ - {1, &oid_rt_pro_set_carrier_suppression_tx_hdl},/*0x2B + {1, oid_rt_pro_set_carrier_suppression_tx_hdl},/*0x2B *OID_RT_PRO_SET_CARRIER_SUPPRESSION_TX*/ - {1, &oid_null_function}, /*0x2C OID_RT_PRO_RECEIVE_PACKET*/ - {1, &oid_null_function}, /*0x2D OID_RT_PRO_WRITE_EEPROM_BYTE*/ - {1, &oid_null_function}, /*0x2E OID_RT_PRO_READ_EEPROM_BYTE*/ - {1, &oid_rt_pro_set_modulation_hdl} /*0x2F*/ + {1, oid_null_function}, /*0x2C OID_RT_PRO_RECEIVE_PACKET*/ + {1, oid_null_function}, /*0x2D OID_RT_PRO_WRITE_EEPROM_BYTE*/ + {1, oid_null_function}, /*0x2E OID_RT_PRO_READ_EEPROM_BYTE*/ + {1, oid_rt_pro_set_modulation_hdl} /*0x2F*/ }; static const struct oid_obj_priv oid_rtl_seg_81_80_40[] = { - {1, &oid_null_function}, /*0x40*/ - {1, &oid_null_function}, /*0x41*/ - {1, &oid_null_function}, /*0x42*/ - {1, &oid_rt_pro_set_single_tone_tx_hdl}, /*0x43*/ - {1, &oid_null_function}, /*0x44*/ - {1, &oid_null_function} /*0x45*/ + {1, oid_null_function}, /*0x40*/ + {1, oid_null_function}, /*0x41*/ + {1, oid_null_function}, /*0x42*/ + {1, oid_rt_pro_set_single_tone_tx_hdl}, /*0x43*/ + {1, oid_null_function}, /*0x44*/ + {1, oid_null_function} /*0x45*/ }; static const struct oid_obj_priv oid_rtl_seg_81_80_80[] = { - {1, &oid_null_function}, /*0x80 OID_RT_DRIVER_OPTION*/ - {1, &oid_null_function}, /*0x81 OID_RT_RF_OFF*/ - {1, &oid_null_function} /*0x82 OID_RT_AUTH_STATUS*/ + {1, oid_null_function}, /*0x80 OID_RT_DRIVER_OPTION*/ + {1, oid_null_function}, /*0x81 OID_RT_RF_OFF*/ + {1, oid_null_function} /*0x82 OID_RT_AUTH_STATUS*/ }; static const struct oid_obj_priv oid_rtl_seg_81_85[] = { - {1, &oid_rt_wireless_mode_hdl} /*0x00 OID_RT_WIRELESS_MODE*/ + {1, oid_rt_wireless_mode_hdl} /*0x00 OID_RT_WIRELESS_MODE*/ }; #else /* _RTL871X_MP_IOCTL_C_ */ @@ -384,7 +384,7 @@ static struct mp_ioctl_handler mp_ioctl_hdl[] = { oid_rt_pro_write_rf_reg_hdl, OID_RT_PRO_RF_WRITE_REGISTRY}, {sizeof(struct rfintfs_parm), NULL, 0}, - {0, &mp_ioctl_xmit_packet_hdl, 0},/*12*/ + {0, mp_ioctl_xmit_packet_hdl, 0},/*12*/ {sizeof(struct psmode_param), NULL, 0},/*13*/ {sizeof(struct eeprom_rw_param), NULL, 0},/*14*/ {sizeof(struct eeprom_rw_param), NULL, 0},/*15*/ diff --git a/drivers/staging/rtl8712/rtl871x_recv.c b/drivers/staging/rtl8712/rtl871x_recv.c index 4ff530155..616ca3965 100644 --- a/drivers/staging/rtl8712/rtl871x_recv.c +++ b/drivers/staging/rtl8712/rtl871x_recv.c @@ -72,14 +72,12 @@ sint _r8712_init_recv_priv(struct recv_priv *precvpriv, _init_queue(&precvpriv->recv_pending_queue); precvpriv->adapter = padapter; precvpriv->free_recvframe_cnt = NR_RECVFRAME; - precvpriv->pallocated_frame_buf = kmalloc(NR_RECVFRAME * + precvpriv->pallocated_frame_buf = kzalloc(NR_RECVFRAME * sizeof(union recv_frame) + RXFRAME_ALIGN_SZ, GFP_ATOMIC); if (precvpriv->pallocated_frame_buf == NULL) return _FAIL; kmemleak_not_leak(precvpriv->pallocated_frame_buf); - memset(precvpriv->pallocated_frame_buf, 0, NR_RECVFRAME * - sizeof(union recv_frame) + RXFRAME_ALIGN_SZ); precvpriv->precv_frame_buf = precvpriv->pallocated_frame_buf + RXFRAME_ALIGN_SZ - ((addr_t)(precvpriv->pallocated_frame_buf) & @@ -103,21 +101,17 @@ void _r8712_free_recv_priv(struct recv_priv *precvpriv) r8712_free_recv_priv(precvpriv); } -union recv_frame *r8712_alloc_recvframe(struct __queue *pfree_recv_queue) +union recv_frame *r8712_alloc_recvframe(struct __queue *pfree_recv_queue) { unsigned long irqL; union recv_frame *precvframe; - struct list_head *plist, *phead; struct _adapter *padapter; struct recv_priv *precvpriv; spin_lock_irqsave(&pfree_recv_queue->lock, irqL); - if (list_empty(&pfree_recv_queue->queue)) { - precvframe = NULL; - } else { - phead = &pfree_recv_queue->queue; - plist = phead->next; - precvframe = LIST_CONTAINOR(plist, union recv_frame, u); + precvframe = list_first_entry_or_null(&pfree_recv_queue->queue, + union recv_frame, u.hdr.list); + if (precvframe) { list_del_init(&precvframe->u.hdr.list); padapter = precvframe->u.hdr.adapter; if (padapter != NULL) { diff --git a/drivers/staging/rtl8712/rtl871x_sta_mgt.c b/drivers/staging/rtl8712/rtl871x_sta_mgt.c index 162e61c6e..e90c00de7 100644 --- a/drivers/staging/rtl8712/rtl871x_sta_mgt.c +++ b/drivers/staging/rtl8712/rtl871x_sta_mgt.c @@ -53,7 +53,7 @@ u32 _r8712_init_sta_priv(struct sta_priv *pstapriv) pstapriv->pallocated_stainfo_buf = kmalloc(sizeof(struct sta_info) * NUM_STA + 4, GFP_ATOMIC); - if (pstapriv->pallocated_stainfo_buf == NULL) + if (!pstapriv->pallocated_stainfo_buf) return _FAIL; pstapriv->pstainfo_buf = pstapriv->pallocated_stainfo_buf + 4 - ((addr_t)(pstapriv->pallocated_stainfo_buf) & 3); @@ -89,16 +89,11 @@ static void mfree_all_stainfo(struct sta_priv *pstapriv) spin_unlock_irqrestore(&pstapriv->sta_hash_lock, irqL); } - -static void mfree_sta_priv_lock(struct sta_priv *pstapriv) -{ - mfree_all_stainfo(pstapriv); /* be done before free sta_hash_lock */ -} - u32 _r8712_free_sta_priv(struct sta_priv *pstapriv) { if (pstapriv) { - mfree_sta_priv_lock(pstapriv); + /* be done before free sta_hash_lock */ + mfree_all_stainfo(pstapriv); kfree(pstapriv->pallocated_stainfo_buf); } return _SUCCESS; @@ -116,13 +111,11 @@ struct sta_info *r8712_alloc_stainfo(struct sta_priv *pstapriv, u8 *hwaddr) unsigned long flags; pfree_sta_queue = &pstapriv->free_sta_queue; - spin_lock_irqsave(&(pfree_sta_queue->lock), flags); - if (list_empty(&pfree_sta_queue->queue)) { - psta = NULL; - } else { - psta = LIST_CONTAINOR(pfree_sta_queue->queue.next, - struct sta_info, list); - list_del_init(&(psta->list)); + spin_lock_irqsave(&pfree_sta_queue->lock, flags); + psta = list_first_entry_or_null(&pfree_sta_queue->queue, + struct sta_info, list); + if (psta) { + list_del_init(&psta->list); _init_stainfo(psta); memcpy(psta->hwaddr, hwaddr, ETH_ALEN); index = wifi_mac_hash(hwaddr); @@ -130,7 +123,7 @@ struct sta_info *r8712_alloc_stainfo(struct sta_priv *pstapriv, u8 *hwaddr) psta = NULL; goto exit; } - phash_list = &(pstapriv->sta_hash[index]); + phash_list = &pstapriv->sta_hash[index]; list_add_tail(&psta->hash_list, phash_list); pstapriv->asoc_sta_count++; @@ -154,7 +147,7 @@ struct sta_info *r8712_alloc_stainfo(struct sta_priv *pstapriv, u8 *hwaddr) } } exit: - spin_unlock_irqrestore(&(pfree_sta_queue->lock), flags); + spin_unlock_irqrestore(&pfree_sta_queue->lock, flags); return psta; } diff --git a/drivers/staging/rtl8712/rtl871x_xmit.c b/drivers/staging/rtl8712/rtl871x_xmit.c index 68d65d230..c6d952f5d 100644 --- a/drivers/staging/rtl8712/rtl871x_xmit.c +++ b/drivers/staging/rtl8712/rtl871x_xmit.c @@ -89,7 +89,7 @@ sint _r8712_init_xmit_priv(struct xmit_priv *pxmitpriv, */ pxmitpriv->pallocated_frame_buf = kmalloc(NR_XMITFRAME * sizeof(struct xmit_frame) + 4, GFP_ATOMIC); - if (pxmitpriv->pallocated_frame_buf == NULL) { + if (!pxmitpriv->pallocated_frame_buf) { pxmitpriv->pxmit_frame_buf = NULL; return _FAIL; } @@ -128,7 +128,7 @@ sint _r8712_init_xmit_priv(struct xmit_priv *pxmitpriv, _init_queue(&pxmitpriv->pending_xmitbuf_queue); pxmitpriv->pallocated_xmitbuf = kmalloc(NR_XMITBUFF * sizeof(struct xmit_buf) + 4, GFP_ATOMIC); - if (pxmitpriv->pallocated_xmitbuf == NULL) + if (!pxmitpriv->pallocated_xmitbuf) return _FAIL; pxmitpriv->pxmitbuf = pxmitpriv->pallocated_xmitbuf + 4 - ((addr_t)(pxmitpriv->pallocated_xmitbuf) & 3); @@ -137,7 +137,7 @@ sint _r8712_init_xmit_priv(struct xmit_priv *pxmitpriv, INIT_LIST_HEAD(&pxmitbuf->list); pxmitbuf->pallocated_buf = kmalloc(MAX_XMITBUF_SZ + XMITBUF_ALIGN_SZ, GFP_ATOMIC); - if (pxmitbuf->pallocated_buf == NULL) + if (!pxmitbuf->pallocated_buf) return _FAIL; pxmitbuf->pbuf = pxmitbuf->pallocated_buf + XMITBUF_ALIGN_SZ - ((addr_t) (pxmitbuf->pallocated_buf) & @@ -241,7 +241,7 @@ sint r8712_update_attrib(struct _adapter *padapter, _pkt *pkt, } /* r8712_xmitframe_coalesce() overwrite this!*/ pattrib->pktlen = pktfile.pkt_len; - if (ETH_P_IP == pattrib->ether_type) { + if (pattrib->ether_type == ETH_P_IP) { /* The following is for DHCP and ARP packet, we use cck1M to * tx these packets and let LPS awake some time * to prevent DHCP protocol fail */ @@ -250,7 +250,7 @@ sint r8712_update_attrib(struct _adapter *padapter, _pkt *pkt, _r8712_pktfile_read(&pktfile, &tmp[0], 24); pattrib->dhcp_pkt = 0; if (pktfile.pkt_len > 282) {/*MINIMUM_DHCP_PACKET_SIZE)*/ - if (ETH_P_IP == pattrib->ether_type) {/* IP header*/ + if (pattrib->ether_type == ETH_P_IP) {/* IP header*/ if (((tmp[21] == 68) && (tmp[23] == 67)) || ((tmp[21] == 67) && (tmp[23] == 68))) { /* 68 : UDP BOOTP client @@ -741,21 +741,16 @@ void r8712_update_protection(struct _adapter *padapter, u8 *ie, uint ie_len) struct xmit_buf *r8712_alloc_xmitbuf(struct xmit_priv *pxmitpriv) { unsigned long irqL; - struct xmit_buf *pxmitbuf = NULL; - struct list_head *plist, *phead; + struct xmit_buf *pxmitbuf; struct __queue *pfree_xmitbuf_queue = &pxmitpriv->free_xmitbuf_queue; spin_lock_irqsave(&pfree_xmitbuf_queue->lock, irqL); - if (list_empty(&pfree_xmitbuf_queue->queue)) { - pxmitbuf = NULL; - } else { - phead = &pfree_xmitbuf_queue->queue; - plist = phead->next; - pxmitbuf = LIST_CONTAINOR(plist, struct xmit_buf, list); - list_del_init(&(pxmitbuf->list)); - } - if (pxmitbuf != NULL) + pxmitbuf = list_first_entry_or_null(&pfree_xmitbuf_queue->queue, + struct xmit_buf, list); + if (pxmitbuf) { + list_del_init(&pxmitbuf->list); pxmitpriv->free_xmitbuf_cnt--; + } spin_unlock_irqrestore(&pfree_xmitbuf_queue->lock, irqL); return pxmitbuf; } @@ -795,20 +790,14 @@ struct xmit_frame *r8712_alloc_xmitframe(struct xmit_priv *pxmitpriv) pfree_xmit_queue */ unsigned long irqL; - struct xmit_frame *pxframe = NULL; - struct list_head *plist, *phead; + struct xmit_frame *pxframe; struct __queue *pfree_xmit_queue = &pxmitpriv->free_xmit_queue; spin_lock_irqsave(&pfree_xmit_queue->lock, irqL); - if (list_empty(&pfree_xmit_queue->queue)) { - pxframe = NULL; - } else { - phead = &pfree_xmit_queue->queue; - plist = phead->next; - pxframe = LIST_CONTAINOR(plist, struct xmit_frame, list); - list_del_init(&(pxframe->list)); - } - if (pxframe != NULL) { + pxframe = list_first_entry_or_null(&pfree_xmit_queue->queue, + struct xmit_frame, list); + if (pxframe) { + list_del_init(&pxframe->list); pxmitpriv->free_xmitframe_cnt--; pxframe->buf_addr = NULL; pxframe->pxmitbuf = NULL; @@ -954,7 +943,7 @@ static void alloc_hwxmits(struct _adapter *padapter) pxmitpriv->hwxmit_entry = HWXMIT_ENTRY; pxmitpriv->hwxmits = kmalloc_array(pxmitpriv->hwxmit_entry, sizeof(struct hw_xmit), GFP_ATOMIC); - if (pxmitpriv->hwxmits == NULL) + if (!pxmitpriv->hwxmits) return; hwxmits = pxmitpriv->hwxmits; if (pxmitpriv->hwxmit_entry == 5) { diff --git a/drivers/staging/rtl8712/usb_intf.c b/drivers/staging/rtl8712/usb_intf.c index c71333fbe..c1a0ca490 100644 --- a/drivers/staging/rtl8712/usb_intf.c +++ b/drivers/staging/rtl8712/usb_intf.c @@ -205,12 +205,15 @@ struct drv_priv { static int r871x_suspend(struct usb_interface *pusb_intf, pm_message_t state) { struct net_device *pnetdev = usb_get_intfdata(pusb_intf); + struct _adapter *padapter = netdev_priv(pnetdev); netdev_info(pnetdev, "Suspending...\n"); if (!pnetdev || !netif_running(pnetdev)) { netdev_info(pnetdev, "Unable to suspend\n"); return 0; } + padapter->bSuspended = true; + rtl871x_intf_stop(padapter); if (pnetdev->netdev_ops->ndo_stop) pnetdev->netdev_ops->ndo_stop(pnetdev); mdelay(10); @@ -218,9 +221,16 @@ static int r871x_suspend(struct usb_interface *pusb_intf, pm_message_t state) return 0; } +static void rtl871x_intf_resume(struct _adapter *padapter) +{ + if (padapter->dvobjpriv.inirp_init) + padapter->dvobjpriv.inirp_init(padapter); +} + static int r871x_resume(struct usb_interface *pusb_intf) { struct net_device *pnetdev = usb_get_intfdata(pusb_intf); + struct _adapter *padapter = netdev_priv(pnetdev); netdev_info(pnetdev, "Resuming...\n"); if (!pnetdev || !netif_running(pnetdev)) { @@ -230,6 +240,8 @@ static int r871x_resume(struct usb_interface *pusb_intf) netif_device_attach(pnetdev); if (pnetdev->netdev_ops->ndo_open) pnetdev->netdev_ops->ndo_open(pnetdev); + padapter->bSuspended = false; + rtl871x_intf_resume(padapter); return 0; } @@ -387,11 +399,11 @@ static int r871xu_drv_init(struct usb_interface *pusb_intf, SET_NETDEV_DEV(pnetdev, &pusb_intf->dev); pnetdev->dev.type = &wlan_type; /* step 2. */ - padapter->dvobj_init = &r8712_usb_dvobj_init; - padapter->dvobj_deinit = &r8712_usb_dvobj_deinit; - padapter->halpriv.hal_bus_init = &r8712_usb_hal_bus_init; - padapter->dvobjpriv.inirp_init = &r8712_usb_inirp_init; - padapter->dvobjpriv.inirp_deinit = &r8712_usb_inirp_deinit; + padapter->dvobj_init = r8712_usb_dvobj_init; + padapter->dvobj_deinit = r8712_usb_dvobj_deinit; + padapter->halpriv.hal_bus_init = r8712_usb_hal_bus_init; + padapter->dvobjpriv.inirp_init = r8712_usb_inirp_init; + padapter->dvobjpriv.inirp_deinit = r8712_usb_inirp_deinit; /* step 3. * initialize the dvobj_priv */ diff --git a/drivers/staging/rtl8712/usb_ops.c b/drivers/staging/rtl8712/usb_ops.c index 856f257bb..9172400ef 100644 --- a/drivers/staging/rtl8712/usb_ops.c +++ b/drivers/staging/rtl8712/usb_ops.c @@ -179,22 +179,22 @@ static void usb_intf_hdl_close(u8 *priv) void r8712_usb_set_intf_funs(struct intf_hdl *pintf_hdl) { - pintf_hdl->intf_hdl_init = &usb_intf_hdl_init; - pintf_hdl->intf_hdl_unload = &usb_intf_hdl_unload; - pintf_hdl->intf_hdl_open = &usb_intf_hdl_open; - pintf_hdl->intf_hdl_close = &usb_intf_hdl_close; + pintf_hdl->intf_hdl_init = usb_intf_hdl_init; + pintf_hdl->intf_hdl_unload = usb_intf_hdl_unload; + pintf_hdl->intf_hdl_open = usb_intf_hdl_open; + pintf_hdl->intf_hdl_close = usb_intf_hdl_close; } void r8712_usb_set_intf_ops(struct _io_ops *pops) { memset((u8 *)pops, 0, sizeof(struct _io_ops)); - pops->_read8 = &usb_read8; - pops->_read16 = &usb_read16; - pops->_read32 = &usb_read32; - pops->_read_port = &r8712_usb_read_port; - pops->_write8 = &usb_write8; - pops->_write16 = &usb_write16; - pops->_write32 = &usb_write32; - pops->_write_mem = &r8712_usb_write_mem; - pops->_write_port = &r8712_usb_write_port; + pops->_read8 = usb_read8; + pops->_read16 = usb_read16; + pops->_read32 = usb_read32; + pops->_read_port = r8712_usb_read_port; + pops->_write8 = usb_write8; + pops->_write16 = usb_write16; + pops->_write32 = usb_write32; + pops->_write_mem = r8712_usb_write_mem; + pops->_write_port = r8712_usb_write_port; } diff --git a/drivers/staging/rtl8712/usb_ops_linux.c b/drivers/staging/rtl8712/usb_ops_linux.c index 489a9e6d5..454cdf6c7 100644 --- a/drivers/staging/rtl8712/usb_ops_linux.c +++ b/drivers/staging/rtl8712/usb_ops_linux.c @@ -232,9 +232,14 @@ static void r8712_usb_read_port_complete(struct urb *purb) case -EPIPE: case -ENODEV: case -ESHUTDOWN: - case -ENOENT: padapter->bDriverStopped = true; break; + case -ENOENT: + if (!padapter->bSuspended) { + padapter->bDriverStopped = true; + break; + } + /* Fall through. */ case -EPROTO: precvbuf->reuse = true; r8712_read_port(padapter, precvpriv->ff_hwaddr, 0, @@ -329,7 +334,7 @@ void r8712_usb_read_port_cancel(struct _adapter *padapter) void r8712_xmit_bh(void *priv) { int ret = false; - struct _adapter *padapter = (struct _adapter *)priv; + struct _adapter *padapter = priv; struct xmit_priv *pxmitpriv = &padapter->xmitpriv; if (padapter->bDriverStopped || diff --git a/drivers/staging/rtl8712/xmit_linux.c b/drivers/staging/rtl8712/xmit_linux.c index d3981836c..695f9b9fc 100644 --- a/drivers/staging/rtl8712/xmit_linux.c +++ b/drivers/staging/rtl8712/xmit_linux.c @@ -70,10 +70,7 @@ uint _r8712_pktfile_read(struct pkt_file *pfile, u8 *rmem, uint rlen) sint r8712_endofpktfile(struct pkt_file *pfile) { - if (pfile->pkt_len == 0) - return true; - else - return false; + return (pfile->pkt_len == 0); } @@ -131,7 +128,7 @@ int r8712_xmit_resource_alloc(struct _adapter *padapter, for (i = 0; i < 8; i++) { pxmitbuf->pxmit_urb[i] = usb_alloc_urb(0, GFP_KERNEL); - if (pxmitbuf->pxmit_urb[i] == NULL) { + if (!pxmitbuf->pxmit_urb[i]) { netdev_err(padapter->pnetdev, "pxmitbuf->pxmit_urb[i] == NULL\n"); return _FAIL; } @@ -164,19 +161,15 @@ int r8712_xmit_entry(_pkt *pkt, struct net_device *pnetdev) struct xmit_frame *pxmitframe = NULL; struct _adapter *padapter = netdev_priv(pnetdev); struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); - int ret = 0; if (!r8712_if_up(padapter)) { - ret = 0; goto _xmit_entry_drop; } pxmitframe = r8712_alloc_xmitframe(pxmitpriv); - if (pxmitframe == NULL) { - ret = 0; + if (!pxmitframe) { goto _xmit_entry_drop; } if ((!r8712_update_attrib(padapter, pkt, &pxmitframe->attrib))) { - ret = 0; goto _xmit_entry_drop; } padapter->ledpriv.LedControlHandler(padapter, LED_CTL_TX); @@ -188,11 +181,11 @@ int r8712_xmit_entry(_pkt *pkt, struct net_device *pnetdev) } pxmitpriv->tx_pkts++; pxmitpriv->tx_bytes += pxmitframe->attrib.last_txcmdsz; - return ret; + return 0; _xmit_entry_drop: if (pxmitframe) r8712_free_xmitframe(pxmitpriv, pxmitframe); pxmitpriv->tx_drop++; dev_kfree_skb_any(pkt); - return ret; + return 0; } |