Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
xcap
xcap-capability-linux
Commits
4bc85c13
Commit
4bc85c13
authored
Feb 21, 2011
by
Wey-Yi Guy
Browse files
Revert "iwlwifi: split the drivers for agn and legacy devices 3945/4965"
This reverts commit
aa833c4b
.
parent
aa833c4b
Changes
30
Expand all
Hide whitespace changes
Inline
Side-by-side
drivers/net/wireless/Kconfig
View file @
4bc85c13
...
...
@@ -274,7 +274,6 @@ source "drivers/net/wireless/b43legacy/Kconfig"
source "drivers/net/wireless/hostap/Kconfig"
source "drivers/net/wireless/ipw2x00/Kconfig"
source "drivers/net/wireless/iwlwifi/Kconfig"
source "drivers/net/wireless/iwlegacy/Kconfig"
source "drivers/net/wireless/iwmc3200wifi/Kconfig"
source "drivers/net/wireless/libertas/Kconfig"
source "drivers/net/wireless/orinoco/Kconfig"
...
...
drivers/net/wireless/Makefile
View file @
4bc85c13
...
...
@@ -41,8 +41,7 @@ obj-$(CONFIG_ADM8211) += adm8211.o
obj-$(CONFIG_MWL8K)
+=
mwl8k.o
obj-$(CONFIG_IWLAGN)
+=
iwlwifi/
obj-$(CONFIG_IWLWIFI_LEGACY)
+=
iwlegacy/
obj-$(CONFIG_IWLWIFI)
+=
iwlwifi/
obj-$(CONFIG_RT2X00)
+=
rt2x00/
obj-$(CONFIG_P54_COMMON)
+=
p54/
...
...
drivers/net/wireless/iwlwifi/Kconfig
View file @
4bc85c13
config IWL
AGN
tristate "Intel Wireless Wi
Fi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlagn)
"
config IWL
WIFI
tristate "Intel Wireless Wi
fi
"
depends on PCI && MAC80211
select FW_LOADER
select NEW_LEDS
select LEDS_CLASS
select LEDS_TRIGGERS
select MAC80211_LEDS
---help---
Select to build the driver supporting the:
Intel Wireless WiFi Link Next-Gen AGN
This option enables support for use with the following hardware:
Intel Wireless WiFi Link 6250AGN Adapter
Intel 6000 Series Wi-Fi Adapters (6200AGN and 6300AGN)
Intel WiFi Link 1000BGN
Intel Wireless WiFi 5150AGN
Intel Wireless WiFi 5100AGN, 5300AGN, and 5350AGN
Intel 6005 Series Wi-Fi Adapters
Intel 6030 Series Wi-Fi Adapters
Intel Wireless WiFi Link 6150BGN 2 Adapter
Intel 100 Series Wi-Fi Adapters (100BGN and 130BGN)
Intel 2000 Series Wi-Fi Adapters
This driver uses the kernel's mac80211 subsystem.
In order to use this driver, you will need a microcode (uCode)
image for it. You can obtain the microcode from:
<http://intellinuxwireless.org/>.
The microcode is typically installed in /lib/firmware. You can
look in the hotplug script /etc/hotplug/firmware.agent to
determine which directory FIRMWARE_DIR is set to when the script
runs.
If you want to compile the driver as a module ( = code which can be
inserted in and removed from the running kernel whenever you want),
say M here and read <file:Documentation/kbuild/modules.txt>. The
module will be called iwlagn.
menu "Debugging Options"
depends on IWL
AGN
depends on IWL
WIFI
config IWLWIFI_DEBUG
bool "Enable full debugging output in
the
iwlagn driver"
depends on IWL
AGN
bool "Enable full debugging output in iwlagn
and iwl3945
driver
s
"
depends on IWL
WIFI
---help---
This option will enable debug tracing output for the iwlwifi drivers
...
...
@@ -71,7 +37,7 @@ config IWLWIFI_DEBUG
config IWLWIFI_DEBUGFS
bool "iwlagn debugfs support"
depends on IWL
AGN
&& MAC80211_DEBUGFS
depends on IWL
WIFI
&& MAC80211_DEBUGFS
---help---
Enable creation of debugfs files for the iwlwifi drivers. This
is a low-impact option that allows getting insight into the
...
...
@@ -79,13 +45,13 @@ config IWLWIFI_DEBUGFS
config IWLWIFI_DEBUG_EXPERIMENTAL_UCODE
bool "Experimental uCode support"
depends on IWL
AGN
&& IWLWIFI_DEBUG
depends on IWL
WIFI
&& IWLWIFI_DEBUG
---help---
Enable use of experimental ucode for testing and debugging.
config IWLWIFI_DEVICE_TRACING
bool "iwlwifi device access tracing"
depends on IWL
AGN
depends on IWL
WIFI
depends on EVENT_TRACING
help
Say Y here to trace all commands, including TX frames and IO
...
...
@@ -102,9 +68,57 @@ config IWLWIFI_DEVICE_TRACING
occur.
endmenu
config IWLAGN
tristate "Intel Wireless WiFi Next Gen AGN (iwlagn)"
depends on IWLWIFI
---help---
Select to build the driver supporting the:
Intel Wireless WiFi Link Next-Gen AGN
This driver uses the kernel's mac80211 subsystem.
In order to use this driver, you will need a microcode (uCode)
image for it. You can obtain the microcode from:
<http://intellinuxwireless.org/>.
The microcode is typically installed in /lib/firmware. You can
look in the hotplug script /etc/hotplug/firmware.agent to
determine which directory FIRMWARE_DIR is set to when the script
runs.
If you want to compile the driver as a module ( = code which can be
inserted in and removed from the running kernel whenever you want),
say M here and read <file:Documentation/kbuild/modules.txt>. The
module will be called iwlagn.
config IWL4965
bool "Intel Wireless WiFi 4965AGN"
depends on IWLAGN
---help---
This option enables support for Intel Wireless WiFi Link 4965AGN
config IWL5000
bool "Intel Wireless-N/Advanced-N/Ultimate-N WiFi Link"
depends on IWLAGN
---help---
This option enables support for use with the following hardware:
Intel Wireless WiFi Link 6250AGN Adapter
Intel 6000 Series Wi-Fi Adapters (6200AGN and 6300AGN)
Intel WiFi Link 1000BGN
Intel Wireless WiFi 5150AGN
Intel Wireless WiFi 5100AGN, 5300AGN, and 5350AGN
Intel 6005 Series Wi-Fi Adapters
Intel 6030 Series Wi-Fi Adapters
Intel Wireless WiFi Link 6150BGN 2 Adapter
Intel 100 Series Wi-Fi Adapters (100BGN and 130BGN)
Intel 2000 Series Wi-Fi Adapters
config IWL_P2P
bool "iwlwifi experimental P2P support"
depends on IWL
AGN
depends on IWL
5000
help
This option enables experimental P2P support for some devices
based on microcode support. Since P2P support is still under
...
...
@@ -118,3 +132,27 @@ config IWL_P2P
Say Y only if you want to experiment with P2P.
config IWL3945
tristate "Intel PRO/Wireless 3945ABG/BG Network Connection (iwl3945)"
depends on IWLWIFI
---help---
Select to build the driver supporting the:
Intel PRO/Wireless 3945ABG/BG Network Connection
This driver uses the kernel's mac80211 subsystem.
In order to use this driver, you will need a microcode (uCode)
image for it. You can obtain the microcode from:
<http://intellinuxwireless.org/>.
The microcode is typically installed in /lib/firmware. You can
look in the hotplug script /etc/hotplug/firmware.agent to
determine which directory FIRMWARE_DIR is set to when the script
runs.
If you want to compile the driver as a module ( = code which can be
inserted in and removed from the running kernel whenever you want),
say M here and read <file:Documentation/kbuild/modules.txt>. The
module will be called iwl3945.
drivers/net/wireless/iwlwifi/Makefile
View file @
4bc85c13
obj-$(CONFIG_IWLWIFI)
+=
iwlcore.o
iwlcore-objs
:=
iwl-core.o iwl-eeprom.o iwl-hcmd.o iwl-power.o
iwlcore-objs
+=
iwl-rx.o iwl-tx.o iwl-sta.o
iwlcore-objs
+=
iwl-scan.o iwl-led.o
iwlcore-$(CONFIG_IWL3945)
+=
iwl-legacy.o
iwlcore-$(CONFIG_IWL4965)
+=
iwl-legacy.o
iwlcore-$(CONFIG_IWLWIFI_DEBUGFS)
+=
iwl-debugfs.o
iwlcore-$(CONFIG_IWLWIFI_DEVICE_TRACING)
+=
iwl-devtrace.o
# If 3945 is selected only, iwl-legacy.o will be added
# to iwlcore-m above, but it needs to be built in.
iwlcore-objs
+=
$
(
iwlcore-m
)
CFLAGS_iwl-devtrace.o
:=
-I
$(src)
# AGN
obj-$(CONFIG_IWLAGN)
+=
iwlagn.o
iwlagn-objs
:=
iwl-agn.o iwl-agn-rs.o iwl-agn-led.o
iwlagn-objs
+=
iwl-agn-ucode.o iwl-agn-tx.o
iwlagn-objs
+=
iwl-agn-lib.o iwl-agn-rx.o iwl-agn-calib.o
iwlagn-objs
+=
iwl-agn-tt.o iwl-agn-sta.o iwl-agn-eeprom.o
iwlagn-objs
+=
iwl-core.o iwl-eeprom.o iwl-hcmd.o iwl-power.o
iwlagn-objs
+=
iwl-rx.o iwl-tx.o iwl-sta.o
iwlagn-objs
+=
iwl-scan.o iwl-led.o
iwlagn-objs
+=
iwl-agn-rxon.o iwl-agn-hcmd.o iwl-agn-ict.o
iwlagn-objs
+=
iwl-5000.o
iwlagn-objs
+=
iwl-6000.o
iwlagn-objs
+=
iwl-1000.o
iwlagn-objs
+=
iwl-2000.o
iwlagn-$(CONFIG_IWLWIFI_DEBUGFS)
+=
iwl-agn-debugfs.o
iwlagn-$(CONFIG_IWLWIFI_DEBUGFS)
+=
iwl-debugfs.o
iwlagn-$(CONFIG_IWLWIFI_DEVICE_TRACING)
+=
iwl-devtrace.o
CFLAGS_iwl-devtrace.o
:=
-I
$(src)
iwlagn-$(CONFIG_IWL4965)
+=
iwl-4965.o
iwlagn-$(CONFIG_IWL5000)
+=
iwl-agn-rxon.o iwl-agn-hcmd.o iwl-agn-ict.o
iwlagn-$(CONFIG_IWL5000)
+=
iwl-5000.o
iwlagn-$(CONFIG_IWL5000)
+=
iwl-6000.o
iwlagn-$(CONFIG_IWL5000)
+=
iwl-1000.o
iwlagn-$(CONFIG_IWL5000)
+=
iwl-2000.o
# 3945
obj-$(CONFIG_IWL3945)
+=
iwl3945.o
iwl3945-objs
:=
iwl3945-base.o iwl-3945.o iwl-3945-rs.o iwl-3945-led.o
iwl3945-$(CONFIG_IWLWIFI_DEBUGFS)
+=
iwl-3945-debugfs.o
ccflags-y
+=
-D__CHECK_ENDIAN__
drivers/net/wireless/iwlwifi/iwl-3945-debugfs.c
0 → 100644
View file @
4bc85c13
/******************************************************************************
*
* GPL LICENSE SUMMARY
*
* Copyright(c) 2008 - 2010 Intel Corporation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of version 2 of the GNU General Public License as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for 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
*
* The full GNU General Public License is included in this distribution
* in the file called LICENSE.GPL.
*
* Contact Information:
* Intel Linux Wireless <ilw@linux.intel.com>
* Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
*****************************************************************************/
#include
"iwl-3945-debugfs.h"
static
int
iwl3945_statistics_flag
(
struct
iwl_priv
*
priv
,
char
*
buf
,
int
bufsz
)
{
int
p
=
0
;
p
+=
scnprintf
(
buf
+
p
,
bufsz
-
p
,
"Statistics Flag(0x%X):
\n
"
,
le32_to_cpu
(
priv
->
_3945
.
statistics
.
flag
));
if
(
le32_to_cpu
(
priv
->
_3945
.
statistics
.
flag
)
&
UCODE_STATISTICS_CLEAR_MSK
)
p
+=
scnprintf
(
buf
+
p
,
bufsz
-
p
,
"
\t
Statistics have been cleared
\n
"
);
p
+=
scnprintf
(
buf
+
p
,
bufsz
-
p
,
"
\t
Operational Frequency: %s
\n
"
,
(
le32_to_cpu
(
priv
->
_3945
.
statistics
.
flag
)
&
UCODE_STATISTICS_FREQUENCY_MSK
)
?
"2.4 GHz"
:
"5.2 GHz"
);
p
+=
scnprintf
(
buf
+
p
,
bufsz
-
p
,
"
\t
TGj Narrow Band: %s
\n
"
,
(
le32_to_cpu
(
priv
->
_3945
.
statistics
.
flag
)
&
UCODE_STATISTICS_NARROW_BAND_MSK
)
?
"enabled"
:
"disabled"
);
return
p
;
}
ssize_t
iwl3945_ucode_rx_stats_read
(
struct
file
*
file
,
char
__user
*
user_buf
,
size_t
count
,
loff_t
*
ppos
)
{
struct
iwl_priv
*
priv
=
file
->
private_data
;
int
pos
=
0
;
char
*
buf
;
int
bufsz
=
sizeof
(
struct
iwl39_statistics_rx_phy
)
*
40
+
sizeof
(
struct
iwl39_statistics_rx_non_phy
)
*
40
+
400
;
ssize_t
ret
;
struct
iwl39_statistics_rx_phy
*
ofdm
,
*
accum_ofdm
,
*
delta_ofdm
,
*
max_ofdm
;
struct
iwl39_statistics_rx_phy
*
cck
,
*
accum_cck
,
*
delta_cck
,
*
max_cck
;
struct
iwl39_statistics_rx_non_phy
*
general
,
*
accum_general
;
struct
iwl39_statistics_rx_non_phy
*
delta_general
,
*
max_general
;
if
(
!
iwl_is_alive
(
priv
))
return
-
EAGAIN
;
buf
=
kzalloc
(
bufsz
,
GFP_KERNEL
);
if
(
!
buf
)
{
IWL_ERR
(
priv
,
"Can not allocate Buffer
\n
"
);
return
-
ENOMEM
;
}
/*
* The statistic information display here is based on
* the last statistics notification from uCode
* might not reflect the current uCode activity
*/
ofdm
=
&
priv
->
_3945
.
statistics
.
rx
.
ofdm
;
cck
=
&
priv
->
_3945
.
statistics
.
rx
.
cck
;
general
=
&
priv
->
_3945
.
statistics
.
rx
.
general
;
accum_ofdm
=
&
priv
->
_3945
.
accum_statistics
.
rx
.
ofdm
;
accum_cck
=
&
priv
->
_3945
.
accum_statistics
.
rx
.
cck
;
accum_general
=
&
priv
->
_3945
.
accum_statistics
.
rx
.
general
;
delta_ofdm
=
&
priv
->
_3945
.
delta_statistics
.
rx
.
ofdm
;
delta_cck
=
&
priv
->
_3945
.
delta_statistics
.
rx
.
cck
;
delta_general
=
&
priv
->
_3945
.
delta_statistics
.
rx
.
general
;
max_ofdm
=
&
priv
->
_3945
.
max_delta
.
rx
.
ofdm
;
max_cck
=
&
priv
->
_3945
.
max_delta
.
rx
.
cck
;
max_general
=
&
priv
->
_3945
.
max_delta
.
rx
.
general
;
pos
+=
iwl3945_statistics_flag
(
priv
,
buf
,
bufsz
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
"%-32s current"
"acumulative delta max
\n
"
,
"Statistics_Rx - OFDM:"
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"ina_cnt:"
,
le32_to_cpu
(
ofdm
->
ina_cnt
),
accum_ofdm
->
ina_cnt
,
delta_ofdm
->
ina_cnt
,
max_ofdm
->
ina_cnt
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"fina_cnt:"
,
le32_to_cpu
(
ofdm
->
fina_cnt
),
accum_ofdm
->
fina_cnt
,
delta_ofdm
->
fina_cnt
,
max_ofdm
->
fina_cnt
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"plcp_err:"
,
le32_to_cpu
(
ofdm
->
plcp_err
),
accum_ofdm
->
plcp_err
,
delta_ofdm
->
plcp_err
,
max_ofdm
->
plcp_err
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"crc32_err:"
,
le32_to_cpu
(
ofdm
->
crc32_err
),
accum_ofdm
->
crc32_err
,
delta_ofdm
->
crc32_err
,
max_ofdm
->
crc32_err
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"overrun_err:"
,
le32_to_cpu
(
ofdm
->
overrun_err
),
accum_ofdm
->
overrun_err
,
delta_ofdm
->
overrun_err
,
max_ofdm
->
overrun_err
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"early_overrun_err:"
,
le32_to_cpu
(
ofdm
->
early_overrun_err
),
accum_ofdm
->
early_overrun_err
,
delta_ofdm
->
early_overrun_err
,
max_ofdm
->
early_overrun_err
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"crc32_good:"
,
le32_to_cpu
(
ofdm
->
crc32_good
),
accum_ofdm
->
crc32_good
,
delta_ofdm
->
crc32_good
,
max_ofdm
->
crc32_good
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"false_alarm_cnt:"
,
le32_to_cpu
(
ofdm
->
false_alarm_cnt
),
accum_ofdm
->
false_alarm_cnt
,
delta_ofdm
->
false_alarm_cnt
,
max_ofdm
->
false_alarm_cnt
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"fina_sync_err_cnt:"
,
le32_to_cpu
(
ofdm
->
fina_sync_err_cnt
),
accum_ofdm
->
fina_sync_err_cnt
,
delta_ofdm
->
fina_sync_err_cnt
,
max_ofdm
->
fina_sync_err_cnt
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"sfd_timeout:"
,
le32_to_cpu
(
ofdm
->
sfd_timeout
),
accum_ofdm
->
sfd_timeout
,
delta_ofdm
->
sfd_timeout
,
max_ofdm
->
sfd_timeout
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"fina_timeout:"
,
le32_to_cpu
(
ofdm
->
fina_timeout
),
accum_ofdm
->
fina_timeout
,
delta_ofdm
->
fina_timeout
,
max_ofdm
->
fina_timeout
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"unresponded_rts:"
,
le32_to_cpu
(
ofdm
->
unresponded_rts
),
accum_ofdm
->
unresponded_rts
,
delta_ofdm
->
unresponded_rts
,
max_ofdm
->
unresponded_rts
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"rxe_frame_lmt_ovrun:"
,
le32_to_cpu
(
ofdm
->
rxe_frame_limit_overrun
),
accum_ofdm
->
rxe_frame_limit_overrun
,
delta_ofdm
->
rxe_frame_limit_overrun
,
max_ofdm
->
rxe_frame_limit_overrun
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"sent_ack_cnt:"
,
le32_to_cpu
(
ofdm
->
sent_ack_cnt
),
accum_ofdm
->
sent_ack_cnt
,
delta_ofdm
->
sent_ack_cnt
,
max_ofdm
->
sent_ack_cnt
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"sent_cts_cnt:"
,
le32_to_cpu
(
ofdm
->
sent_cts_cnt
),
accum_ofdm
->
sent_cts_cnt
,
delta_ofdm
->
sent_cts_cnt
,
max_ofdm
->
sent_cts_cnt
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
"%-32s current"
"acumulative delta max
\n
"
,
"Statistics_Rx - CCK:"
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"ina_cnt:"
,
le32_to_cpu
(
cck
->
ina_cnt
),
accum_cck
->
ina_cnt
,
delta_cck
->
ina_cnt
,
max_cck
->
ina_cnt
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"fina_cnt:"
,
le32_to_cpu
(
cck
->
fina_cnt
),
accum_cck
->
fina_cnt
,
delta_cck
->
fina_cnt
,
max_cck
->
fina_cnt
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"plcp_err:"
,
le32_to_cpu
(
cck
->
plcp_err
),
accum_cck
->
plcp_err
,
delta_cck
->
plcp_err
,
max_cck
->
plcp_err
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"crc32_err:"
,
le32_to_cpu
(
cck
->
crc32_err
),
accum_cck
->
crc32_err
,
delta_cck
->
crc32_err
,
max_cck
->
crc32_err
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"overrun_err:"
,
le32_to_cpu
(
cck
->
overrun_err
),
accum_cck
->
overrun_err
,
delta_cck
->
overrun_err
,
max_cck
->
overrun_err
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"early_overrun_err:"
,
le32_to_cpu
(
cck
->
early_overrun_err
),
accum_cck
->
early_overrun_err
,
delta_cck
->
early_overrun_err
,
max_cck
->
early_overrun_err
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"crc32_good:"
,
le32_to_cpu
(
cck
->
crc32_good
),
accum_cck
->
crc32_good
,
delta_cck
->
crc32_good
,
max_cck
->
crc32_good
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"false_alarm_cnt:"
,
le32_to_cpu
(
cck
->
false_alarm_cnt
),
accum_cck
->
false_alarm_cnt
,
delta_cck
->
false_alarm_cnt
,
max_cck
->
false_alarm_cnt
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"fina_sync_err_cnt:"
,
le32_to_cpu
(
cck
->
fina_sync_err_cnt
),
accum_cck
->
fina_sync_err_cnt
,
delta_cck
->
fina_sync_err_cnt
,
max_cck
->
fina_sync_err_cnt
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"sfd_timeout:"
,
le32_to_cpu
(
cck
->
sfd_timeout
),
accum_cck
->
sfd_timeout
,
delta_cck
->
sfd_timeout
,
max_cck
->
sfd_timeout
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"fina_timeout:"
,
le32_to_cpu
(
cck
->
fina_timeout
),
accum_cck
->
fina_timeout
,
delta_cck
->
fina_timeout
,
max_cck
->
fina_timeout
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"unresponded_rts:"
,
le32_to_cpu
(
cck
->
unresponded_rts
),
accum_cck
->
unresponded_rts
,
delta_cck
->
unresponded_rts
,
max_cck
->
unresponded_rts
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"rxe_frame_lmt_ovrun:"
,
le32_to_cpu
(
cck
->
rxe_frame_limit_overrun
),
accum_cck
->
rxe_frame_limit_overrun
,
delta_cck
->
rxe_frame_limit_overrun
,
max_cck
->
rxe_frame_limit_overrun
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"sent_ack_cnt:"
,
le32_to_cpu
(
cck
->
sent_ack_cnt
),
accum_cck
->
sent_ack_cnt
,
delta_cck
->
sent_ack_cnt
,
max_cck
->
sent_ack_cnt
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"sent_cts_cnt:"
,
le32_to_cpu
(
cck
->
sent_cts_cnt
),
accum_cck
->
sent_cts_cnt
,
delta_cck
->
sent_cts_cnt
,
max_cck
->
sent_cts_cnt
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
"%-32s current"
"acumulative delta max
\n
"
,
"Statistics_Rx - GENERAL:"
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"bogus_cts:"
,
le32_to_cpu
(
general
->
bogus_cts
),
accum_general
->
bogus_cts
,
delta_general
->
bogus_cts
,
max_general
->
bogus_cts
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"bogus_ack:"
,
le32_to_cpu
(
general
->
bogus_ack
),
accum_general
->
bogus_ack
,
delta_general
->
bogus_ack
,
max_general
->
bogus_ack
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"non_bssid_frames:"
,
le32_to_cpu
(
general
->
non_bssid_frames
),
accum_general
->
non_bssid_frames
,
delta_general
->
non_bssid_frames
,
max_general
->
non_bssid_frames
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"filtered_frames:"
,
le32_to_cpu
(
general
->
filtered_frames
),
accum_general
->
filtered_frames
,
delta_general
->
filtered_frames
,
max_general
->
filtered_frames
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"non_channel_beacons:"
,
le32_to_cpu
(
general
->
non_channel_beacons
),
accum_general
->
non_channel_beacons
,
delta_general
->
non_channel_beacons
,
max_general
->
non_channel_beacons
);
ret
=
simple_read_from_buffer
(
user_buf
,
count
,
ppos
,
buf
,
pos
);
kfree
(
buf
);
return
ret
;
}
ssize_t
iwl3945_ucode_tx_stats_read
(
struct
file
*
file
,
char
__user
*
user_buf
,
size_t
count
,
loff_t
*
ppos
)
{
struct
iwl_priv
*
priv
=
file
->
private_data
;
int
pos
=
0
;
char
*
buf
;
int
bufsz
=
(
sizeof
(
struct
iwl39_statistics_tx
)
*
48
)
+
250
;
ssize_t
ret
;
struct
iwl39_statistics_tx
*
tx
,
*
accum_tx
,
*
delta_tx
,
*
max_tx
;
if
(
!
iwl_is_alive
(
priv
))
return
-
EAGAIN
;
buf
=
kzalloc
(
bufsz
,
GFP_KERNEL
);
if
(
!
buf
)
{
IWL_ERR
(
priv
,
"Can not allocate Buffer
\n
"
);
return
-
ENOMEM
;
}
/*
* The statistic information display here is based on
* the last statistics notification from uCode
* might not reflect the current uCode activity
*/
tx
=
&
priv
->
_3945
.
statistics
.
tx
;
accum_tx
=
&
priv
->
_3945
.
accum_statistics
.
tx
;
delta_tx
=
&
priv
->
_3945
.
delta_statistics
.
tx
;
max_tx
=
&
priv
->
_3945
.
max_delta
.
tx
;
pos
+=
iwl3945_statistics_flag
(
priv
,
buf
,
bufsz
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
"%-32s current"
"acumulative delta max
\n
"
,
"Statistics_Tx:"
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,
" %-30s %10u %10u %10u %10u
\n
"
,
"preamble:"
,
le32_to_cpu
(
tx
->
preamble_cnt
),
accum_tx
->
preamble_cnt
,
delta_tx
->
preamble_cnt
,
max_tx
->
preamble_cnt
);
pos
+=
scnprintf
(
buf
+
pos
,
bufsz
-
pos
,