* Re: <REAL> iBurst (TM) compatible driver
From: Andi Kleen @ 2005-10-27 17:44 UTC (permalink / raw)
To: John W. Linville; +Cc: Nicholas Jefferson, netdev, linux-kernel
In-Reply-To: <20051027170727.GA26569@tuxdriver.com>
On Thursday 27 October 2005 19:07, John W. Linville wrote:
> On Fri, Oct 28, 2005 at 02:24:20AM +1000, Nicholas Jefferson wrote:
> > The latest release of the iBurst (TM) compatible driver [1] for the
> > 2.6 kernel is now available. Thanks to ArrayComm (R) for the original
>
> <snip>
>
> > Signed-off-by: Nicholas Jefferson <xanthophile@gmail.com>
>
> -ENOPATCH?
And no description what an "iBurst (tm)" actually is. It sounds like
something to clear blocked drains with.
-Andi
^ permalink raw reply
* Re: <REAL> iBurst (TM) compatible driver
From: Lennert Buytenhek @ 2005-10-27 17:45 UTC (permalink / raw)
To: Andi Kleen; +Cc: John W. Linville, Nicholas Jefferson, netdev, linux-kernel
In-Reply-To: <200510271944.12452.ak@suse.de>
On Thu, Oct 27, 2005 at 07:44:12PM +0200, Andi Kleen wrote:
> And no description what an "iBurst (tm)" actually is. It sounds like
> something to clear blocked drains with.
>From reading http://sourceforge.net/projects/ibdriver, it appears
to be some kind of wireless adapter:
Linux driver for the ArrayComm* "iBurst*" wireless broadband devices.
--L
^ permalink raw reply
* Re: <REAL> iBurst (TM) compatible driver
From: Bongani Hlope @ 2005-10-27 21:25 UTC (permalink / raw)
To: Andi Kleen; +Cc: John W. Linville, Nicholas Jefferson, netdev, linux-kernel
In-Reply-To: <200510271944.12452.ak@suse.de>
On Thursday 27 October 2005 19:44, Andi Kleen wrote:
> On Thursday 27 October 2005 19:07, John W. Linville wrote:
> > On Fri, Oct 28, 2005 at 02:24:20AM +1000, Nicholas Jefferson wrote:
> > > The latest release of the iBurst (TM) compatible driver [1] for the
> > > 2.6 kernel is now available. Thanks to ArrayComm (R) for the original
> >
> > <snip>
> >
> > > Signed-off-by: Nicholas Jefferson <xanthophile@gmail.com>
> >
> > -ENOPATCH?
>
> And no description what an "iBurst (tm)" actually is. It sounds like
> something to clear blocked drains with.
>
> -Andi
iBurst is a wireless broadband internet service, so far I only know that it is
available in Austrailer and South Africa. Here in South Africa, there are two
devices you can use for connectivity an internal and external "modem". With
the external modem, you can use either USB or ethernet to connect (pppoe).
The PCMCIA currently is not documented and there is no driver for Linux.
I ordered the external modem (still waiting for it), I'll try to get some guys
from our LUG to test it (only the PCMCIA version is causing pain), hopefuly
someone is stuck with that version ;)
^ permalink raw reply
* Re: <REAL> iBurst (TM) compatible driver
From: Stephen Hemminger @ 2005-10-27 22:31 UTC (permalink / raw)
To: Nicholas Jefferson; +Cc: netdev, linux-kernel
In-Reply-To: <4cd031a50510270924r38ad4d5oa88ae92a514df3cf@mail.gmail.com>
It is good to see more hardware supported, but like many drivers
you are adding a lot of racy ugliness just for debug crap.
Did you actually read any of the other network device drivers first
or try to write code from scratch off some book?
In order of severity.
1. Your network device registration code is wrong.
Read Documentation/netdevices.txt
You need to use alloc_netdev() and make the device specific data
be allocated there, not bury netdevice in a kmalloc'd structure.
2. Transmit routine is wrong. Drop packets if out of memory.
You can only return NETDEV_TX_OKAY or NETDEV_TX_BUSY
You probably don't need to allocate memory anyway if you use
hard header space properly.
3. You need to flow control the transmit queue. When it gets full
use netdev_stop_queue() and call netdev_wake_queue when you
have more space.
4. WTF is the whole ib_net_tap file stuff, and why do you need it?
You can eliminate a lot of module races etc, by just pulling it.
5. Why bother with a /proc interface?
6. If you must then use seq_file.
7. If you must then do one device per file.
8. Then you can get rid of having a global array of device structures
which is hard to maintain properly.
9. If you don't support ioctl's just leave dev->ioctl as NULL
10. Error code's from call's like register_netdev() should propogate back
out.
11. ib_net_open, ib_net_close only called from user context don't need irqsave
use spin_lock_irq()
12. Coding style: don't use u_long it's a BSDism
13. Please have source code laid out as patch to kernel, not out of tree driver
--
Stephen Hemminger <shemminger@osdl.org>
OSDL http://developer.osdl.org/~shemminger
^ permalink raw reply
* [git patches] 2.6.x net driver updates
From: Jeff Garzik @ 2005-10-28 0:42 UTC (permalink / raw)
To: Andrew Morton, Linus Torvalds; +Cc: netdev, linux-kernel
Please pull from 'upstream' branch of
master.kernel.org/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git
to receive the following misc. updates, many of them minor fixes, and a
ton of accumulated wireless updates.
drivers/net/gianfar_phy.c | 661 ------------
drivers/net/gianfar_phy.h | 213 ----
drivers/net/hamradio/mkiss.h | 62 -
Documentation/networking/bonding.txt | 5
drivers/net/8139cp.c | 5
drivers/net/8139too.c | 5
drivers/net/Kconfig | 23
drivers/net/Makefile | 4
drivers/net/au1000_eth.c | 13
drivers/net/b44.c | 136 ++
drivers/net/b44.h | 2
drivers/net/bonding/bond_main.c | 57 +
drivers/net/declance.c | 37
drivers/net/e100.c | 4
drivers/net/e1000/e1000.h | 74 +
drivers/net/e1000/e1000_ethtool.c | 95 +
drivers/net/e1000/e1000_hw.c | 220 +++-
drivers/net/e1000/e1000_hw.h | 96 +
drivers/net/e1000/e1000_main.c | 1082 +++++++++++++++-----
drivers/net/e1000/e1000_param.c | 10
drivers/net/epic100.c | 4
drivers/net/forcedeth.c | 310 +++--
drivers/net/gianfar.c | 412 +------
drivers/net/gianfar.h | 30
drivers/net/gianfar_ethtool.c | 100 +
drivers/net/gianfar_mii.c | 219 ++++
drivers/net/gianfar_mii.h | 45
drivers/net/hamradio/Kconfig | 1
drivers/net/hamradio/bpqether.c | 9
drivers/net/hamradio/mkiss.c | 182 ++-
drivers/net/hp100.c | 48
drivers/net/irda/stir4200.c | 7
drivers/net/ixgb/ixgb_ethtool.c | 8
drivers/net/ixgb/ixgb_main.c | 3
drivers/net/lne390.c | 2
drivers/net/mii.c | 15
drivers/net/mipsnet.c | 371 ++++++
drivers/net/mipsnet.h | 127 ++
drivers/net/ne.c | 15
drivers/net/ne2k-pci.c | 2
drivers/net/ns83820.c | 3
drivers/net/pcnet32.c | 278 ++++-
drivers/net/phy/Kconfig | 8
drivers/net/phy/phy.c | 8
drivers/net/phy/phy_device.c | 3
drivers/net/r8169.c | 2
drivers/net/rionet.c | 574 ++++++++++
drivers/net/s2io-regs.h | 11
drivers/net/s2io.c | 801 ++++++++++++---
drivers/net/s2io.h | 50
drivers/net/sb1250-mac.c | 1380 +++++++++++++-------------
drivers/net/sgiseeq.c | 37
drivers/net/skge.c | 2
drivers/net/sundance.c | 53
drivers/net/tokenring/ibmtr.c | 9
drivers/net/tokenring/olympic.c | 2
drivers/net/tokenring/tms380tr.c | 3
drivers/net/tulip/de2104x.c | 5
drivers/net/typhoon.c | 7
drivers/net/via-rhine.c | 38
drivers/net/wan/cosa.c | 6
drivers/net/wan/cycx_drv.c | 7
drivers/net/wan/cycx_main.c | 2
drivers/net/wan/cycx_x25.c | 5
drivers/net/wan/dscc4.c | 23
drivers/net/wan/farsync.c | 27
drivers/net/wan/hdlc_fr.c | 2
drivers/net/wan/lmc/lmc_debug.c | 10
drivers/net/wan/lmc/lmc_media.c | 8
drivers/net/wan/pc300.h | 16
drivers/net/wan/pc300_drv.c | 87 -
drivers/net/wan/pc300_tty.c | 18
drivers/net/wan/sdla.c | 20
drivers/net/wan/sdla_fr.c | 4
drivers/net/wan/sdla_x25.c | 8
drivers/net/wan/sdladrv.c | 16
drivers/net/wan/syncppp.c | 10
drivers/net/wireless/airo.c | 37
drivers/net/wireless/airport.c | 19
drivers/net/wireless/atmel.c | 24
drivers/net/wireless/hermes.c | 11
drivers/net/wireless/hermes.h | 111 +-
drivers/net/wireless/hostap/hostap.c | 6
drivers/net/wireless/hostap/hostap_80211_rx.c | 43
drivers/net/wireless/hostap/hostap_80211_tx.c | 28
drivers/net/wireless/hostap/hostap_ap.c | 80 -
drivers/net/wireless/hostap/hostap_ap.h | 6
drivers/net/wireless/hostap/hostap_cs.c | 50
drivers/net/wireless/hostap/hostap_hw.c | 22
drivers/net/wireless/hostap/hostap_ioctl.c | 23
drivers/net/wireless/hostap/hostap_pci.c | 21
drivers/net/wireless/hostap/hostap_plx.c | 11
drivers/net/wireless/hostap/hostap_wlan.h | 2
drivers/net/wireless/ipw2100.c | 24
drivers/net/wireless/ipw2100.h | 2
drivers/net/wireless/ipw2200.c | 27
drivers/net/wireless/ipw2200.h | 4
drivers/net/wireless/netwave_cs.c | 185 ---
drivers/net/wireless/orinoco.c | 235 +---
drivers/net/wireless/orinoco.h | 16
drivers/net/wireless/orinoco_cs.c | 110 +-
drivers/net/wireless/orinoco_nortel.c | 20
drivers/net/wireless/orinoco_pci.c | 18
drivers/net/wireless/orinoco_plx.c | 18
drivers/net/wireless/orinoco_tmd.c | 18
drivers/net/wireless/prism54/isl_ioctl.c | 10
drivers/net/wireless/prism54/islpci_dev.c | 10
drivers/net/wireless/prism54/islpci_dev.h | 2
drivers/net/wireless/prism54/islpci_mgt.c | 5
drivers/net/wireless/ray_cs.c | 46
drivers/net/wireless/spectrum_cs.c | 79 -
drivers/net/wireless/wavelan.c | 8
drivers/net/wireless/wavelan.p.h | 4
drivers/net/wireless/wavelan_cs.c | 8
drivers/net/wireless/wavelan_cs.p.h | 4
drivers/net/wireless/wl3501.h | 2
drivers/s390/net/qeth.h | 45
drivers/s390/net/qeth_fs.h | 12
drivers/s390/net/qeth_main.c | 419 +++++--
drivers/s390/net/qeth_mpc.c | 6
drivers/s390/net/qeth_mpc.h | 15
drivers/s390/net/qeth_sys.c | 28
include/asm-mips/sgi/hpc3.h | 40
include/linux/cyclomx.h | 2
include/linux/cycx_drv.h | 1
include/linux/ibmtr.h | 4
include/linux/if_arp.h | 1
include/linux/mii.h | 1
include/linux/netdevice.h | 6
include/linux/sdladrv.h | 4
include/linux/wanpipe.h | 9
include/net/ieee80211.h | 523 +++++++--
include/net/ieee80211_crypt.h | 38
include/net/ieee80211_radiotap.h | 231 ++++
include/net/syncppp.h | 1
net/ieee80211/Makefile | 3
net/ieee80211/ieee80211_crypt.c | 59 -
net/ieee80211/ieee80211_crypt_ccmp.c | 75 -
net/ieee80211/ieee80211_crypt_tkip.c | 150 +-
net/ieee80211/ieee80211_crypt_wep.c | 26
net/ieee80211/ieee80211_geo.c | 141 ++
net/ieee80211/ieee80211_module.c | 65 -
net/ieee80211/ieee80211_rx.c | 610 ++++++++---
net/ieee80211/ieee80211_tx.c | 321 ++++--
net/ieee80211/ieee80211_wx.c | 372 +++++--
145 files changed, 8163 insertions(+), 4651 deletions(-)
Adrian Bunk:
drivers/net/wan/: possible cleanups
Andrew Morton:
e1000_intr build fix
s2io build fix
e1000 build fix
Andy Fleming:
[netdrvr gianfar] use new phy layer
Ayaz Abdulla:
[netdrvr forcedeth] scatter gather and segmentation offload support
Dale Farnsworth:
mii: Add test for GigE support
Hong Liu:
Fixed problem with not being able to decrypt/encrypt broadcast packets.
Fixed oops if an uninitialized key is used for encryption.
Hubert WS Lin:
pcnet32: set_ringparam implementation
pcnet32: set min ring size to 4
Ivo van Doorn:
This will move the ieee80211_is_ofdm_rate function to the ieee80211.h
Currently the info_element is parsed by 2 seperate functions, this
When an assoc_resp is received the network structure is not completely
James Ketrenos:
Fixed some endian issues with 802.11 header usage in ieee80211_rx.c
ieee80211 quality scaling algorithm extension handler
ieee80211 Added wireless spy support
Changed 802.11 headers to use ieee80211_info_element[0]
ieee80211 Removed ieee80211_info_element_hdr
ieee80211 Cleanup memcpy parameters.
ieee80211 Switched to sscanf in store_debug_level
ieee80211 Fixed type-o of abg_ture -> abg_true
Updated ipw2200 to compile with ieee80211 abg_ture to abg_true change
ieee80211: Updated ipw2100 to be compatible with ieee80211_hdr changes
ieee80211: Updated ipw2100 to be compatible with ieee80211's hard_start_xmit change
ieee80211: Updated ipw2200 to be compatible with ieee80211_hdr changes
ieee80211: Updated ipw2200 to be compatible with ieee80211's hard_start_xmit change.
ieee80211: Updated atmel to be compatible with ieee80211_hdr changes
ieee80211: Fixed a kernel oops on module unload
ieee80211: Hardware crypto and fragmentation offload support
ieee80211: Fix time calculation, switching to use jiffies_to_msecs
ieee80211: Fix kernel Oops when module unload
ieee80211: Allow drivers to fix an issue when using wpa_supplicant with WEP
ieee82011: Added WE-18 support to default wireless extension handler
ieee80211: Renamed ieee80211_hdr to ieee80211_hdr_3addr
ieee80211: adds support for the creation of RTS packets
ieee82011: Added ieee80211_tx_frame to convert generic 802.11 data frames, and callbacks
ieee80211: Fix TKIP, repeated fragmentation problem, and payload_size reporting
ieee80211: Return NETDEV_TX_BUSY when QoS buffer full
ieee80211: Add QoS (WME) support to the ieee80211 subsystem
ieee80211: Added ieee80211_geo to provide helper functions
ieee80211: Added ieee80211_radiotap.h
ieee80211: Additional fixes for endian-aware types
ieee80211: "extern inline" to "static inline"
ieee80211: Type-o, capbility definition for QoS, and ERP parsing
ieee80211: Mixed PTK/GTK CCMP/TKIP support
ieee80211: Keep auth mode unchanged after iwconfig key off/on cycle
ieee80211: Updated copyright dates
ieee80211: Updated hostap to be compatible with ieee80211_hdr changes
ieee80211: Updated hostap to be compatible with extra_prefix_len changes
ieee82011: Remove WIRELESS_EXT ifdefs
ieee80211: Added subsystem version string and reporting via MODULE_VERSION
ieee80211: Added handle_deauth() callback, enhanced tkip/ccmp support of varying hw/sw offload
ieee80211: added IE comments, reason_code to reason, removed info_element from ieee80211_disassoc
ieee80211: in-tree driver updates to sync with latest ieee80211 series
ieee80211: update orinoco, wl3501 drivers for latest struct naming
Lindent and trailing whitespace script executed ieee80211 subsystem
Update version ieee80211 stamp to 1.1.6
ieee80211 build fix
Jean Tourrilhes:
hostap: Add support for WE-19
hostap: Use GFP_ATOMIC to get rid of weird might_sleep issue
hostap: Remove iwe_stream_add_event kludge
Jeff Garzik:
[netdrvr] delete CONFIG_PHYCONTROL
Remove WIRELESS_EXT ifdefs from several wireless drivers.
[wireless airo] remove needed dma_addr_t obfuscation
e1000: fix warnings
Jiri Benc:
ieee80211: division by zero fix
John Linville:
[netdrvr s2io] Add a MODULE_VERSION entry
John W. Linville:
8139cp: support ETHTOOL_GPERMADDR
8139too: support ETHTOOL_GPERMADDR
b44: support ETHTOOL_GPERMADDR
e1000: support ETHTOOL_GPERMADDR
e100: support ETHTOOL_GPERMADDR
forcedeth: support ETHTOOL_GPERMADDR
ixgb: support ETHTOOL_GPERMADDR
ne2k-pci: support ETHTOOL_GPERMADDR
pcnet32: support ETHTOOL_GPERMADDR
r8169: support ETHTOOL_GPERMADDR
skge: support ETHTOOL_GPERMADDR
sundance: support ETHTOOL_GPERMADDR
via-rhine: support ETHTOOL_GPERMADDR
s2io: change strncpy length arg to use size of target
bonding: replicate IGMP traffic in activebackup mode
via-rhine: change mdelay to msleep and remove from ISR path
epic100: fix counting of work_done in epic_poll
bonding: fix typos in bonding documentation
8139too: fix resume for Realtek 8100B/8139D
bonding: cleanup comment for mode 1 IGMP xmit hack
b44: alternate allocation option for DMA descriptors
orinoco: remove redundance skb length check before padding
sundance: remove if (1) { ... } block in sundance_probe1
sundance: expand reset mask
sundance: include MII address 0 in PHY probe
Jouni Malinen:
hostap: Remove hw specific dev_open/close handlers
hostap: Fix hostap_pci build with PRISM2_IO_DEBUG
hostap: Do not free local->hw_priv before unregistering netdev
hostap: Unregister netdevs before freeing local data
Mallikarjuna R Chilakala:
e1000: Support for 82571 and 82572 controllers
e1000: multi-queue defines/modification to data structures
e1000: implementation of the multi-queue feature
e1000: Enable custom configuration bits for 82571/2 controllers
e1000: Fixes for packet split related issues
e1000: Added msleep_interruptible delay
e1000: Flush shadow RAM
e1000: Driver version, white space, comments, device id & other
Manfred Spraul:
forcedeth: add hardware tx checksumming
Mateusz Berezecki:
[wireless ipw2200] remove redundant return statement
Matt Porter:
Add rapidio net driver
Michael Buesch:
ieee80211 subsystem:
Michael Wu:
This patch fixes a typo in ieee80211.h: ieee82011_deauth -> ieee80211_deauth
Michal Schmidt:
airo: fix resume
Nishanth Aravamudan:
drivers/net: fix-up schedule_timeout() usage
Pavel Roskin:
orinoco: WE-18 support
orinoco: Remove conditionals that are useless in the kernel drivers.
orinoco: Don't include <net/ieee80211.h> twice.
orinoco: Update PCMCIA ID's.
orinoco: Remove inneeded system includes.
orinoco: Make nortel_pci_hw_init() static.
orinoco: Fix memory leak and unneeded unlock in orinoco_join_ap()
orinoco: orinoco_send_wevents() could return without unlocking.
orinoco: Remove unneeded forward declarations.
orinoco: Annotate endianess of variables and structure members.
orinoco: Read only needed data in __orinoco_ev_txexc().
orinoco: Bump version to 0.15rc3.
hostap: Fix pci_driver name for hostap_plx and hostap_pci
Ralf Baechle:
AX.25: Delete debug printk from mkiss driver
AX.25: Convert mkiss.c to DEFINE_RWLOCK
rcu in bpqether driver.
SMACK support for mkiss
Initialize the .owner field the tty_ldisc structure.
sb1250-mac: Check the actual setting for reporting hw checksumming.
sb1250-mac: Ensure 16-byte alignment of the descriptor ring.
au1000_eth: Misc Au1000 net driver fixes.
de2104x: Resurrect Cobalt support for 2.6.
sgiseeq: Fix resource handling.
sgiseeq: Configure PIO and DMA timing requests.
declance: Convert to irqreturn_t.
declance: Fix mapping of device.
declance: Deal with the bloody KSEG vs CKSEG horror...
declance: Use physical addresses at the interface level.
ne: Support for RBHMA4500 eval board.
mipsnet: Virtual ethernet driver for MIPSsim.
Remove unused header.
sb1250-mac: Get rid of all the funny SBMAC_WRITECSR and SBMAC_READCSR macros.
sb1250-mac: Whitespace cleanup.
sb1250-mac: PHY probing fixes.
Randy Dunlap:
Fix implicit nocast warnings in ieee80211 code:
Ravinandan Arakali:
S2io: MSI/MSI-X support (runtime configurable)
ravinandan.arakali@neterion.com:
S2io: Offline diagnostics fixes
Tobias Klauser:
Replace drivers/net/wan custom ctype macros with standard ones
Ursula Braun:
s390: introducing support in qeth for new OSA CHPID type OSN
viro@ZenIV.linux.org.uk:
lne390 bogus casts
C99 initializers in ray_cs.c
^ permalink raw reply
* [PATCH] 2.6.14-rc5-mm1 net/ipv4/route.c: spin_unlock call fails to compile
From: John Bowler @ 2005-10-28 7:08 UTC (permalink / raw)
To: netdev; +Cc: mingo, linux-kernel
The spin_unlock call which gets an rt_hash_lock_addr(i)
argument fails to compile on rc5-mm1 uniprocessor with
no CONFIG_DEBUG_SPINLOCK because, in mm1, the spin_unlock
macro expands to a statement of the form:
do { (void)&ptr->raw; } while (0)
and 'ptr' is 'NULL'. Since the expression is address-of
(therefore not evaluated as an r-value - i.e. no attempt
is made to load the non-existent raw, just take its address)
this expression is harmless.
The patch makes 'ptr' ((spinlock_t*)NULL), which the compiler
can compile (sizeof *ptr is 0 in the case - the spinlock_t
struct is empty - so the patch is particularly safe.)
The patch applies to both 2.6.14 and 2.6.14-rc5-mm1 (although
only the latter requires it.)
Signed-off-by: John Bowler <jbowler@acm.org>
--- linux-2.6.14-rc5/net/ipv4/route.c 2005-10-26 08:37:20.752285410 -0700
+++ patched/net/ipv4/route.c 2005-10-26 12:17:00.761651111 -0700
@@ -231,7 +231,7 @@ static spinlock_t *rt_hash_locks;
spin_lock_init(&rt_hash_locks[i]); \
}
#else
-# define rt_hash_lock_addr(slot) NULL
+# define rt_hash_lock_addr(slot) ((spinlock_t*)NULL)
# define rt_hash_lock_init()
#endif
^ permalink raw reply
* Re: [PATCH] 2.6.14-rc5-mm1 net/ipv4/route.c: spin_unlock call fails to compile
From: Ingo Molnar @ 2005-10-28 9:00 UTC (permalink / raw)
To: John Bowler; +Cc: netdev, linux-kernel
In-Reply-To: <001401c5db8e$650bd380$1001a8c0@kalmiopsis>
* John Bowler <jbowler@acm.org> wrote:
> #else
> -# define rt_hash_lock_addr(slot) NULL
> +# define rt_hash_lock_addr(slot) ((spinlock_t*)NULL)
> # define rt_hash_lock_init()
looks good to me - it gives (slightly) more type safety too.
Ingo
^ permalink raw reply
* [PATH] [MCAST] IPv6: Fix algorithm to compute Querier's Query Interval and Maximum Response Delay
From: Yan Zheng @ 2005-10-28 16:02 UTC (permalink / raw)
To: netdev; +Cc: linux-kernel
5.1.3. Maximum Response Code
The Maximum Response Code field specifies the maximum time allowed
before sending a responding Report. The actual time allowed, called
the Maximum Response Delay, is represented in units of milliseconds,
and is derived from the Maximum Response Code as follows:
If Maximum Response Code < 32768,
Maximum Response Delay = Maximum Response Code
If Maximum Response Code >=32768, Maximum Response Code represents a
floating-point value as follows:
0 1 2 3 4 5 6 7 8 9 A B C D E F
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1| exp | mant |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Maximum Response Delay = (mant | 0x1000) << (exp+3)
5.1.9. QQIC (Querier's Query Interval Code)
The Querier's Query Interval Code field specifies the [Query
Interval] used by the Querier. The actual interval, called the
Querier's Query Interval (QQI), is represented in units of seconds,
and is derived from the Querier's Query Interval Code as follows:
If QQIC < 128, QQI = QQIC
If QQIC >= 128, QQIC represents a floating-point value as follows:
0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
|1| exp | mant |
+-+-+-+-+-+-+-+-+
QQI = (mant | 0x10) << (exp + 3)
-- rfc3810
#define MLDV2_QQIC(value) MLDV2_EXP(0x80, 4, 3, value)
#define MLDV2_MRC(value) MLDV2_EXP(0x8000, 12, 3, value)
Above macro are defined in mcast.c. but 1 << 4 == 0x10 and 1 << 12 == 0x1000.
So the result computed by original Macro is larger.
Signed-off-by: Yan Zheng <yanzheng@21cn.com>
Index: net/ipv6/mcast.c
===================================================================
--- linux-2.6.14/net/ipv6/mcast.c 2005-10-28 08:02:08.000000000 +0800
+++ linux/net/ipv6/mcast.c 2005-10-28 23:41:18.000000000 +0800
@@ -164,7 +164,7 @@
#define MLDV2_MASK(value, nb) ((nb)>=32 ? (value) : ((1<<(nb))-1) & (value))
#define MLDV2_EXP(thresh, nbmant, nbexp, value) \
((value) < (thresh) ? (value) : \
- ((MLDV2_MASK(value, nbmant) | (1<<(nbmant+nbexp))) << \
+ ((MLDV2_MASK(value, nbmant) | (1<<(nbmant))) << \
(MLDV2_MASK((value) >> (nbmant), nbexp) + (nbexp))))
#define MLDV2_QQIC(value) MLDV2_EXP(0x80, 4, 3, value)
^ permalink raw reply
* Re: [PATCH] 2.6.14-rc4: wider use of for_each_*cpu() in net
From: Arnaldo Carvalho de Melo @ 2005-10-28 16:02 UTC (permalink / raw)
To: hawkes@sgi.com; +Cc: netdev, linux-kernel
In-Reply-To: <20051013190133.13192.46039.sendpatchset@tomahawk.engr.sgi.com>
On 10/13/05, hawkes@sgi.com <hawkes@sgi.com> wrote:
> In 'net' change the explicit use of for-loops and NR_CPUS into the
> general for_each_cpu() or for_each_online_cpu() constructs, as
> appropriate. This widens the scope of potential future optimizations
> of the general constructs, as well as takes advantage of the existing
> optimizations of first_cpu() and next_cpu(), which is advantageous
> when the true CPU count is much smaller than NR_CPUS.
>
> Signed-off-by: John Hawkes <hawkes@sgi.com>
Thanks, applied and pushed to Linus,
- Arnaldo
^ permalink raw reply
* Re: [PATH] [MCAST] IPv6: Fix algorithm to compute Querier's Query Interval and Maximum Response Delay
From: David Stevens @ 2005-10-28 17:18 UTC (permalink / raw)
To: Yan Zheng; +Cc: linux-kernel, netdev, netdev-owner
In-Reply-To: <43624B98.6010405@21cn.com>
Yes, I think you're correct.
Acked-by: David L Stevens <dlstevens@us.ibm.com>
>
> Signed-off-by: Yan Zheng <yanzheng@21cn.com>
>
> Index: net/ipv6/mcast.c
> ===================================================================
> --- linux-2.6.14/net/ipv6/mcast.c 2005-10-28 08:02:08.000000000 +0800
> +++ linux/net/ipv6/mcast.c 2005-10-28 23:41:18.000000000 +0800
> @@ -164,7 +164,7 @@
> #define MLDV2_MASK(value, nb) ((nb)>=32 ? (value) : ((1<<(nb))-1) &
(value))
> #define MLDV2_EXP(thresh, nbmant, nbexp, value) \
> ((value) < (thresh) ? (value) : \
> - ((MLDV2_MASK(value, nbmant) | (1<<(nbmant+nbexp))) << \
> + ((MLDV2_MASK(value, nbmant) | (1<<(nbmant))) << \
> (MLDV2_MASK((value) >> (nbmant), nbexp) + (nbexp))))
>
> #define MLDV2_QQIC(value) MLDV2_EXP(0x80, 4, 3, value)
>
> -
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* Re: [PATH] [MCAST] IPv6: Fix algorithm to compute Querier's Query Interval and Maximum Response Delay
From: Arnaldo Carvalho de Melo @ 2005-10-28 18:19 UTC (permalink / raw)
To: David Stevens; +Cc: Yan Zheng, linux-kernel, netdev, netdev-owner
In-Reply-To: <OF7FABC1EE.FDB8A0D4-ON882570A8.005EDBB4-882570A8.005F14D9@us.ibm.com>
On 10/28/05, David Stevens <dlstevens@us.ibm.com> wrote:
> Yes, I think you're correct.
>
> Acked-by: David L Stevens <dlstevens@us.ibm.com>
Thanks, applying to my tree.
- Arnaldo
^ permalink raw reply
* Re: [PATCH 1/5] ibmveth fix bonding
From: Jeff Garzik @ 2005-10-28 20:07 UTC (permalink / raw)
To: Santiago Leon; +Cc: Andrew Morton, netdev, lkml
In-Reply-To: <20051026164539.21820.57374.sendpatchset@localhost.localdomain>
Santiago Leon wrote:
> This patch updates dev->trans_start and dev->last_rx so that the ibmveth
> driver can be used with the ARP monitor in the bonding driver.
>
> Signed-off-by: Santiago Leon <santil@us.ibm.com>
applied 1-5
^ permalink raw reply
* Re: [PATCH] sis900: come alive after temporary memory shortage
From: Jeff Garzik @ 2005-10-28 20:46 UTC (permalink / raw)
To: Vasily Averin; +Cc: Daniele Venzano, Andrew Morton, NetDev, Stanislav Protassov
In-Reply-To: <4347C50A.9010501@sw.ru>
applied
^ permalink raw reply
* Re: [PATCH] Add Wake on LAN support to sis900 (2)
From: Jeff Garzik @ 2005-10-28 20:49 UTC (permalink / raw)
To: Daniele Venzano; +Cc: NetDev, akpm
In-Reply-To: <20051011074430.GA29824@renditai.milesteg.arr>
applied to sis900-wol branch of netdev-2.6.git. This will
auto-propagate to -mm. Let me know when sufficient testing has been
had, and I will push it upstream.
^ permalink raw reply
* Re: [PATCH 02/14] Big kfree NULL check cleanup - drivers/net
From: Jeff Garzik @ 2005-10-28 20:53 UTC (permalink / raw)
To: Jesper Juhl
Cc: linux-kernel, Andrew Morton, David S. Miller, Jes Sorensen,
Matt Porter, Michael Chan, linux.nics, hans, Santiago Leon,
Jean Tourrilhes, Paul Mackerras, Michael Hipp, Jes Sorensen,
Carsten Langgaard, Benjamin Reed, Jouni Malinen, prism54-private,
netdev, Stuart Cheshire, g4klx, Alan Cox
In-Reply-To: <200510132122.48035.jesper.juhl@gmail.com>
Jesper Juhl wrote:
> This is the drivers/net/ part of the big kfree cleanup patch.
>
> Remove pointless checks for NULL prior to calling kfree() in drivers/net/.
>
>
> Sorry about the long Cc: list, but I wanted to make sure I included everyone
> who's code I've changed with this patch.
>
>
> Signed-off-by: Jesper Juhl <jesper.juhl@gmail.com>
applied 98% of this
^ permalink raw reply
* Re: [PATCH] AX.25: Use constant instead of magic number.
From: Arnaldo Carvalho de Melo @ 2005-10-28 22:47 UTC (permalink / raw)
To: Ralf Baechle
Cc: David S. Miller, Arnaldo Carvalho de Melo, dann frazier, chrisw,
netdev, linux-hams
In-Reply-To: <20051018203932.GA11053@linux-mips.org>
On 10/18/05, Ralf Baechle <ralf@linux-mips.org> wrote:
> Signed-off-by: Ralf Baechle DL5RB <ralf@linux-mips.org>
>
> net/rose/rose_route.c | 2 +-
> 1 files changed, 1 insertion(+), 1 deletion(-)
Thanks, applied and already merged by Linus.
^ permalink raw reply
* ICMP attacks & PMTUD mechanism
From: Fernando Gont @ 2005-10-29 8:48 UTC (permalink / raw)
To: netdev
Folks,
A new revision of my internet-draft on "ICMP attacks against TCP" has been
published. The draft is available at
http://www.gont.com.ar/drafts/icmp-attacks-against-tcp.html , and at the
IETF internet-draft public repository:
http://www.ietf.org/internet-drafts/draft-gont-tcpm-icmp-attacks-05.txt
Linux does not yet implement the PMTUD attack-specific counter-measure,
which is a very important one.
There are already two implementations of the PMTUD attack-specific
counter-measure (which mitigates the possible attack even if large TCP
windows are in use). OpenBSD implemented the first one, and NetBSD ported
it to their OS. Both OSes now ship with the counter-measure enabled by default.
I personally built and tested OpenBSD's implementation, together with other
developers. Even if you can guess a valid TCP sequence number (as you can
expect if large windows are in use), you're still immune to the PMTUD attack.
The current version of the draft (-05) includes a pseudo-code version of
the counter-measure, which makes its implementation very straight-forward.
You can find audit tools at my web site
(http://www.gont.com.ar/tools/icmp-attacks/index.html), so that, if you
decide to implement the counter-measure for Linux, you can test it.
P.S.: The latest version of my draft also discusses some corner cases of
the PMTUD attack you may find it worthwhile reading, to check Linux
behavior on this issue (see Section 7.1). (Talk about freezing
IPSec-secured connections, for example)
Kindest regards,
--
Fernando Gont
e-mail: fernando@gont.com.ar || fgont@acm.org
^ permalink raw reply
* Re: [PATCH 02/14] Big kfree NULL check cleanup - drivers/net
From: Jesper Juhl @ 2005-10-29 13:56 UTC (permalink / raw)
To: Jeff Garzik
Cc: linux-kernel, Andrew Morton, David S. Miller, Jes Sorensen,
Matt Porter, Michael Chan, linux.nics, hans, Santiago Leon,
Jean Tourrilhes, Paul Mackerras, Michael Hipp, Jes Sorensen,
Carsten Langgaard, Benjamin Reed, Jouni Malinen, prism54-private,
netdev, Stuart Cheshire, g4klx, Alan Cox
In-Reply-To: <43628FCB.9060202@pobox.com>
On 10/28/05, Jeff Garzik <jgarzik@pobox.com> wrote:
> Jesper Juhl wrote:
> > This is the drivers/net/ part of the big kfree cleanup patch.
> >
> > Remove pointless checks for NULL prior to calling kfree() in drivers/net/.
> >
> >
> > Sorry about the long Cc: list, but I wanted to make sure I included everyone
> > who's code I've changed with this patch.
> >
> >
> > Signed-off-by: Jesper Juhl <jesper.juhl@gmail.com>
>
> applied 98% of this
>
Just currious, what bits are the 2% you did not apply?
--
Jesper Juhl <jesper.juhl@gmail.com>
Don't top-post http://www.catb.org/~esr/jargon/html/T/top-post.html
Plain text mails only, please http://www.expita.com/nomime.html
^ permalink raw reply
* Abolish all that you are indebted for without sending an other dollar
From: paris butler @ 2005-10-29 15:01 UTC (permalink / raw)
To: Merlin Shaw
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="us-ascii", Size: 720 bytes --]
End the bothersome worry of those calls and letters.
We have pioneered an advanced system of proven strategies
that will get the creditors and debt collectors off your back for good
Our debt termination program has legally stopped millions of dollars worth
of debt from being collected.
check out our Elimination Program here
http://in.geocities.com/leo_kemble/?1=45LT
no, then link above
"master malfoy moves with nobility that befits his pure blood," croaked
kreacher at once. "his features recall the fine bones of my mistress and his
manners are those of-" . "and you wouldn't tell me if you knew," said
scrimgeour, "would you?"
"-be good and.¡± , she was jogging to keep up now.
^ permalink raw reply
* [git patches] 2.6.x net driver updates
From: Jeff Garzik @ 2005-10-29 18:21 UTC (permalink / raw)
To: Andrew Morton, Linus Torvalds; +Cc: netdev, linux-kernel
Please pull from 'upstream-linus' branch of
master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git
to receive the following random collection of updates and new drivers:
MAINTAINERS | 8
drivers/net/Kconfig | 77
drivers/net/Makefile | 3
drivers/net/acenic.c | 6
drivers/net/amd8111e.c | 0
drivers/net/amd8111e.h | 0
drivers/net/au1000_eth.c | 6
drivers/net/b44.c | 28
drivers/net/bmac.c | 6
drivers/net/bnx2.c | 12
drivers/net/e1000/e1000_ethtool.c | 7
drivers/net/e1000/e1000_main.c | 9
drivers/net/eepro.c | 7
drivers/net/fs_enet/Kconfig | 20
drivers/net/fs_enet/Makefile | 10
drivers/net/fs_enet/fs_enet-main.c | 1226 ++++++++++
drivers/net/fs_enet/fs_enet-mii.c | 507 ++++
drivers/net/fs_enet/fs_enet.h | 245 ++
drivers/net/fs_enet/mac-fcc.c | 578 ++++
drivers/net/fs_enet/mac-fec.c | 653 +++++
drivers/net/fs_enet/mac-scc.c | 524 ++++
drivers/net/fs_enet/mii-bitbang.c | 405 +++
drivers/net/fs_enet/mii-fixed.c | 92
drivers/net/hamradio/mkiss.c | 6
drivers/net/ibm_emac/Makefile | 13
drivers/net/ibm_emac/ibm_emac.h | 418 +--
drivers/net/ibm_emac/ibm_emac_core.c | 3414 +++++++++++++++--------------
drivers/net/ibm_emac/ibm_emac_core.h | 313 +-
drivers/net/ibm_emac/ibm_emac_debug.c | 377 +--
drivers/net/ibm_emac/ibm_emac_debug.h | 63
drivers/net/ibm_emac/ibm_emac_mal.c | 674 +++--
drivers/net/ibm_emac/ibm_emac_mal.h | 336 ++
drivers/net/ibm_emac/ibm_emac_phy.c | 335 +-
drivers/net/ibm_emac/ibm_emac_phy.h | 105
drivers/net/ibm_emac/ibm_emac_rgmii.c | 201 +
drivers/net/ibm_emac/ibm_emac_rgmii.h | 68
drivers/net/ibm_emac/ibm_emac_tah.c | 111
drivers/net/ibm_emac/ibm_emac_tah.h | 96
drivers/net/ibm_emac/ibm_emac_zmii.c | 255 ++
drivers/net/ibm_emac/ibm_emac_zmii.h | 114
drivers/net/ibmveth.c | 186 -
drivers/net/ibmveth.h | 23
drivers/net/irda/donauboe.c | 6
drivers/net/irda/irda-usb.c | 6
drivers/net/irda/irport.c | 3
drivers/net/irda/sir_dev.c | 3
drivers/net/irda/vlsi_ir.c | 3
drivers/net/mace.c | 6
drivers/net/ne2k-pci.c | 1
drivers/net/ni65.c | 9
drivers/net/pcmcia/pcnet_cs.c | 6
drivers/net/rrunner.c | 6
drivers/net/s2io.c | 13
drivers/net/saa9730.c | 8
drivers/net/sis190.c | 2
drivers/net/sis900.c | 16
drivers/net/smc91x.c | 4
drivers/net/starfire.c | 4
drivers/net/sundance.c | 62
drivers/net/tg3.c | 91
drivers/net/tg3.h | 12
drivers/net/tulip/de2104x.c | 6
drivers/net/tulip/tulip_core.c | 6
drivers/net/via-velocity.c | 6
drivers/net/wireless/airo.c | 48
drivers/net/wireless/airo_cs.c | 4
drivers/net/wireless/atmel.c | 6
drivers/net/wireless/atmel_cs.c | 3
drivers/net/wireless/hermes.c | 38
drivers/net/wireless/hermes.h | 2
drivers/net/wireless/hostap/hostap_ioctl.c | 9
drivers/net/wireless/ipw2200.c | 4
drivers/net/wireless/orinoco.c | 13
drivers/net/wireless/prism54/islpci_dev.c | 3
drivers/net/wireless/prism54/islpci_eth.c | 13
drivers/net/wireless/prism54/oid_mgt.c | 9
drivers/net/wireless/strip.c | 38
include/linux/fs_enet_pd.h | 136 +
include/linux/pci_ids.h | 2
include/net/ax25.h | 3
include/net/netrom.h | 3
81 files changed, 8958 insertions(+), 3192 deletions(-)
Akinobu Mita:
s2io: kconfig help fix
Al Viro:
s2io iomem annotations
Alan Cox:
Better fixup for the orinoco driver
Alexey Dobriyan:
starfire: free_irq() on error path of netdev_open()
Andrew Morton:
[netdrvr b44] include linux/dma-mapping.h to eliminate warning
revert "orinoco: Information leakage due to incorrect padding"
Ashutosh Naik:
e1000: Fixes e1000_suspend warning when CONFIG_PM is not enabled
Aurelien Jarno:
sis190.c: fix multicast MAC filter
Deepak Saxena:
Fix CS89x0 KConfig for IXDP2X01
Eugene Surovegin:
New PowerPC 4xx on-chip ethernet controller driver
Add MAINTAINER entry for the new PowerPC 4xx on-chip ethernet controller driver
Florin Malita:
eepro.c: module_param_array cleanup
Jeff Garzik:
[git] change permissions on drivers/net/amd8111e.[ch] to 0644,
Jesper Juhl:
drivers/net: Remove pointless checks for NULL prior to calling kfree()
Komuro:
pcnet_cs: fix mii init code for older DL10019 based cards
[netdrvr] ne2k-pci based card does not support bus-mastering.
Martin J. Bligh:
e1000: remove warning about e1000_suspend
Matthew Wilcox:
b44 reports wrong advertised flags
Michael Chan:
tg3: add 5714/5715 support
tg3: fix ASF heartbeat
tg3: update version and minor fixes
Nicolas Pitre:
smc91x: shut down power after probing
Panagiotis Issaris:
ipw2200: Missing kmalloc check
Pantelis Antoniou:
Add fs_enet ethernet network driver, for several embedded platforms.
Patrick McHardy:
prism54: Free skb after disabling interrupts
Pavel Machek:
b44: fix suspend/resume
Philippe De Muyter:
sundance: fix DFE-580TX Tx Underrun
Ravikiran G Thirumalai:
e1000: use vmalloc_node()
Roger While:
[wireless prism54] Fix frame length
Santiago Leon:
ibmveth fix bonding
ibmveth fix buffer pool management
ibmveth fix buffer replenishing
ibmveth lockless TX
ibmveth fix failed addbuf
Tobias Klauser:
drivers/net/tg3: Use the DMA_{32,64}BIT_MASK constants
Vasily Averin:
sis900: come alive after temporary memory shortage
^ permalink raw reply
* [PATCH] natsemi: Option to use MII port with no PHY
From: Mark Brown @ 2005-10-29 18:24 UTC (permalink / raw)
To: Tim Hockin; +Cc: netdev, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 6271 bytes --]
This patch provides a module option which configures the natsemi driver
to use the external MII port on the chip but ignore any PHYs that may be
attached to it. The link state will be left as it was when the driver
started and can be configured via ethtool. Any PHYs that are present
can be accessed via the MII ioctl()s.
This is useful for systems where the device is connected without a PHY
or where either information or actions outside the scope of the natsemi
driver are required in order to use the PHYs.
Signed-off-by: Mark Brown <broonie@sirena.org.uk>
diff -uprN linux-2.6.14/drivers/net/natsemi.c linux/drivers/net/natsemi.c
--- linux-2.6.14/drivers/net/natsemi.c 2005-10-28 01:02:08.000000000 +0100
+++ linux/drivers/net/natsemi.c 2005-10-29 15:53:16.000000000 +0100
@@ -264,7 +264,7 @@ MODULE_PARM_DESC(debug, "DP8381x default
MODULE_PARM_DESC(rx_copybreak,
"DP8381x copy breakpoint for copy-only-tiny-frames");
MODULE_PARM_DESC(options,
- "DP8381x: Bits 0-3: media type, bit 17: full duplex");
+ "DP8381x: Bits 0-3: media type, bit 17: full duplex, bit 18: ignore PHY");
MODULE_PARM_DESC(full_duplex, "DP8381x full duplex setting(s) (1)");
/*
@@ -693,6 +693,8 @@ struct netdev_private {
int oom;
/* Do not touch the nic registers */
int hands_off;
+ /* Don't pay attention to the reported link state. */
+ int ignore_phy;
/* external phy that is used: only valid if dev->if_port != PORT_TP */
int mii;
int phy_addr_external;
@@ -880,7 +882,19 @@ static int __devinit natsemi_probe1 (str
np->msg_enable = (debug >= 0) ? (1<<debug)-1 : NATSEMI_DEF_MSG;
np->hands_off = 0;
+ option = find_cnt < MAX_UNITS ? options[find_cnt] : 0;
+ if (dev->mem_start)
+ option = dev->mem_start;
+
+ /* Ignore the PHY status? */
+ if (option & 0x400) {
+ np->ignore_phy = 1;
+ } else {
+ np->ignore_phy = 0;
+ }
+
/* Initial port:
+ * - If configured to ignore the PHY set up for external.
* - If the nic was configured to use an external phy and if find_mii
* finds a phy: use external port, first phy that replies.
* - Otherwise: internal port.
@@ -888,7 +902,7 @@ static int __devinit natsemi_probe1 (str
* The address would be used to access a phy over the mii bus, but
* the internal phy is accessed through mapped registers.
*/
- if (readl(ioaddr + ChipConfig) & CfgExtPhy)
+ if (np->ignore_phy || readl(ioaddr + ChipConfig) & CfgExtPhy)
dev->if_port = PORT_MII;
else
dev->if_port = PORT_TP;
@@ -898,7 +912,9 @@ static int __devinit natsemi_probe1 (str
if (dev->if_port != PORT_TP) {
np->phy_addr_external = find_mii(dev);
- if (np->phy_addr_external == PHY_ADDR_NONE) {
+ /* If we're ignoring the PHY it doesn't matter if we can't
+ * find one. */
+ if (!np->ignore_phy && np->phy_addr_external == PHY_ADDR_NONE) {
dev->if_port = PORT_TP;
np->phy_addr_external = PHY_ADDR_INTERNAL;
}
@@ -906,10 +922,6 @@ static int __devinit natsemi_probe1 (str
np->phy_addr_external = PHY_ADDR_INTERNAL;
}
- option = find_cnt < MAX_UNITS ? options[find_cnt] : 0;
- if (dev->mem_start)
- option = dev->mem_start;
-
/* The lower four bits are the media type. */
if (option) {
if (option & 0x200)
@@ -940,7 +952,10 @@ static int __devinit natsemi_probe1 (str
if (mtu)
dev->mtu = mtu;
- netif_carrier_off(dev);
+ if (np->ignore_phy)
+ netif_carrier_on(dev);
+ else
+ netif_carrier_off(dev);
/* get the initial settings from hardware */
tmp = mdio_read(dev, MII_BMCR);
@@ -988,6 +1003,8 @@ static int __devinit natsemi_probe1 (str
printk("%02x, IRQ %d", dev->dev_addr[i], irq);
if (dev->if_port == PORT_TP)
printk(", port TP.\n");
+ else if (np->ignore_phy)
+ printk(", port MII, ignoring PHY\n");
else
printk(", port MII, phy ad %d.\n", np->phy_addr_external);
}
@@ -1643,42 +1660,44 @@ static void check_link(struct net_device
{
struct netdev_private *np = netdev_priv(dev);
void __iomem * ioaddr = ns_ioaddr(dev);
- int duplex;
+ int duplex = np->full_duplex;
u16 bmsr;
-
- /* The link status field is latched: it remains low after a temporary
- * link failure until it's read. We need the current link status,
- * thus read twice.
- */
- mdio_read(dev, MII_BMSR);
- bmsr = mdio_read(dev, MII_BMSR);
- if (!(bmsr & BMSR_LSTATUS)) {
- if (netif_carrier_ok(dev)) {
+ /* If we're not paying attention to the PHY status then don't check. */
+ if (!np->ignore_phy) {
+ /* The link status field is latched: it remains low
+ * after a temporary link failure until it's read. We
+ * need the current link status, thus read twice.
+ */
+ mdio_read(dev, MII_BMSR);
+ bmsr = mdio_read(dev, MII_BMSR);
+
+ if (!(bmsr & BMSR_LSTATUS)) {
+ if (netif_carrier_ok(dev)) {
+ if (netif_msg_link(np))
+ printk(KERN_NOTICE "%s: link down.\n",
+ dev->name);
+ netif_carrier_off(dev);
+ undo_cable_magic(dev);
+ }
+ return;
+ }
+ if (!netif_carrier_ok(dev)) {
if (netif_msg_link(np))
- printk(KERN_NOTICE "%s: link down.\n",
- dev->name);
- netif_carrier_off(dev);
- undo_cable_magic(dev);
+ printk(KERN_NOTICE "%s: link up.\n", dev->name);
+ netif_carrier_on(dev);
+ do_cable_magic(dev);
}
- return;
- }
- if (!netif_carrier_ok(dev)) {
- if (netif_msg_link(np))
- printk(KERN_NOTICE "%s: link up.\n", dev->name);
- netif_carrier_on(dev);
- do_cable_magic(dev);
- }
-
- duplex = np->full_duplex;
- if (!duplex) {
- if (bmsr & BMSR_ANEGCOMPLETE) {
- int tmp = mii_nway_result(
- np->advertising & mdio_read(dev, MII_LPA));
- if (tmp == LPA_100FULL || tmp == LPA_10FULL)
+
+ if (!duplex) {
+ if (bmsr & BMSR_ANEGCOMPLETE) {
+ int tmp = mii_nway_result(
+ np->advertising & mdio_read(dev, MII_LPA));
+ if (tmp == LPA_100FULL || tmp == LPA_10FULL)
+ duplex = 1;
+ } else if (mdio_read(dev, MII_BMCR) & BMCR_FULLDPLX)
duplex = 1;
- } else if (mdio_read(dev, MII_BMCR) & BMCR_FULLDPLX)
- duplex = 1;
+ }
}
/* if duplex is set then bit 28 must be set, too */
--
"You grabbed my hand and we fell into it, like a daydream - or a fever."
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 307 bytes --]
^ permalink raw reply
* [PATCH 1/3] PPC 44x EMAC driver: add 440SPe support
From: Eugene Surovegin @ 2005-10-29 19:43 UTC (permalink / raw)
To: Jeff Garzik; +Cc: netdev, linuxppc-embedded
For some reason, the hardware designers made the polarity of one bit
in the 440SPe's PHY interface register the opposite of all other PPC
440 chips. To handle this, abstract our access to this bit and do the
right thing based on the configured CPU type.
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Signed-off-by: Eugene Surovegin <ebs@ebshome.net>
---
drivers/net/ibm_emac/ibm_emac.h | 21 ++++++++++++++++++++-
drivers/net/ibm_emac/ibm_emac_core.c | 13 +++++++------
drivers/net/ibm_emac/ibm_emac_mal.h | 3 ++-
3 files changed, 29 insertions(+), 8 deletions(-)
diff --git a/drivers/net/ibm_emac/ibm_emac.h b/drivers/net/ibm_emac/ibm_emac.h
index 28c476f..d3166da 100644
--- a/drivers/net/ibm_emac/ibm_emac.h
+++ b/drivers/net/ibm_emac/ibm_emac.h
@@ -26,7 +26,7 @@
/* This is a simple check to prevent use of this driver on non-tested SoCs */
#if !defined(CONFIG_405GP) && !defined(CONFIG_405GPR) && !defined(CONFIG_405EP) && \
!defined(CONFIG_440GP) && !defined(CONFIG_440GX) && !defined(CONFIG_440SP) && \
- !defined(CONFIG_440EP) && !defined(CONFIG_NP405H)
+ !defined(CONFIG_440EP) && !defined(CONFIG_NP405H) && !defined(CONFIG_440SPE)
#error "Unknown SoC. Please, check chip user manual and make sure EMAC defines are OK"
#endif
@@ -246,6 +246,25 @@ struct emac_regs {
#define EMAC_STACR_PCDA_SHIFT 5
#define EMAC_STACR_PRA_MASK 0x1f
+/*
+ * For the 440SPe, AMCC inexplicably changed the polarity of
+ * the "operation complete" bit in the MII control register.
+ */
+#if defined(CONFIG_440SPE)
+static inline int emac_phy_done(u32 stacr)
+{
+ return !(stacr & EMAC_STACR_OC);
+};
+#define EMAC_STACR_START EMAC_STACR_OC
+
+#else /* CONFIG_440SPE */
+static inline int emac_phy_done(u32 stacr)
+{
+ return stacr & EMAC_STACR_OC;
+};
+#define EMAC_STACR_START 0
+#endif /* !CONFIG_440SPE */
+
/* EMACx_TRTR */
#if !defined(CONFIG_IBM_EMAC4)
#define EMAC_TRTR_SHIFT 27
diff --git a/drivers/net/ibm_emac/ibm_emac_core.c b/drivers/net/ibm_emac/ibm_emac_core.c
index 943fbd1..48239e1 100644
--- a/drivers/net/ibm_emac/ibm_emac_core.c
+++ b/drivers/net/ibm_emac/ibm_emac_core.c
@@ -546,7 +546,7 @@ static int __emac_mdio_read(struct ocp_e
/* Wait for management interface to become idle */
n = 10;
- while (!(in_be32(&p->stacr) & EMAC_STACR_OC)) {
+ while (!emac_phy_done(in_be32(&p->stacr))) {
udelay(1);
if (!--n)
goto to;
@@ -556,11 +556,12 @@ static int __emac_mdio_read(struct ocp_e
out_be32(&p->stacr,
EMAC_STACR_BASE(emac_opb_mhz()) | EMAC_STACR_STAC_READ |
(reg & EMAC_STACR_PRA_MASK)
- | ((id & EMAC_STACR_PCDA_MASK) << EMAC_STACR_PCDA_SHIFT));
+ | ((id & EMAC_STACR_PCDA_MASK) << EMAC_STACR_PCDA_SHIFT)
+ | EMAC_STACR_START);
/* Wait for read to complete */
n = 100;
- while (!((r = in_be32(&p->stacr)) & EMAC_STACR_OC)) {
+ while (!emac_phy_done(r = in_be32(&p->stacr))) {
udelay(1);
if (!--n)
goto to;
@@ -594,7 +595,7 @@ static void __emac_mdio_write(struct ocp
/* Wait for management interface to be idle */
n = 10;
- while (!(in_be32(&p->stacr) & EMAC_STACR_OC)) {
+ while (!emac_phy_done(in_be32(&p->stacr))) {
udelay(1);
if (!--n)
goto to;
@@ -605,11 +606,11 @@ static void __emac_mdio_write(struct ocp
EMAC_STACR_BASE(emac_opb_mhz()) | EMAC_STACR_STAC_WRITE |
(reg & EMAC_STACR_PRA_MASK) |
((id & EMAC_STACR_PCDA_MASK) << EMAC_STACR_PCDA_SHIFT) |
- (val << EMAC_STACR_PHYD_SHIFT));
+ (val << EMAC_STACR_PHYD_SHIFT) | EMAC_STACR_START);
/* Wait for write to complete */
n = 100;
- while (!(in_be32(&p->stacr) & EMAC_STACR_OC)) {
+ while (!emac_phy_done(in_be32(&p->stacr))) {
udelay(1);
if (!--n)
goto to;
diff --git a/drivers/net/ibm_emac/ibm_emac_mal.h b/drivers/net/ibm_emac/ibm_emac_mal.h
index 15b0bda..fb6dfe1 100644
--- a/drivers/net/ibm_emac/ibm_emac_mal.h
+++ b/drivers/net/ibm_emac/ibm_emac_mal.h
@@ -34,7 +34,8 @@
#if defined(CONFIG_405GP) || defined(CONFIG_405GPR) || defined(CONFIG_405EP) || \
defined(CONFIG_440EP) || defined(CONFIG_NP405H)
#define MAL_VERSION 1
-#elif defined(CONFIG_440GP) || defined(CONFIG_440GX) || defined(CONFIG_440SP)
+#elif defined(CONFIG_440GP) || defined(CONFIG_440GX) || defined(CONFIG_440SP) || \
+ defined(CONFIG_440SPE)
#define MAL_VERSION 2
#else
#error "Unknown SoC, please check chip manual and choose MAL 'version'"
^ permalink raw reply related
* [PATCH 2/3] PPC 44x EMAC driver: add 440GR support
From: Eugene Surovegin @ 2005-10-29 19:45 UTC (permalink / raw)
To: Jeff Garzik; +Cc: netdev, sr, linuxppc-embedded
Add PowerPC 440GR support
Signed-off-by: Stefan Roese <sr@denx.de>
Signed-off-by: Eugene Surovegin <ebs@ebshome.net>
---
drivers/net/Kconfig | 2 +-
drivers/net/ibm_emac/ibm_emac.h | 3 ++-
drivers/net/ibm_emac/ibm_emac_core.c | 7 ++++---
drivers/net/ibm_emac/ibm_emac_mal.h | 2 +-
4 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
index 6d4f9ce..97760c1 100644
--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
@@ -1203,7 +1203,7 @@ config IBM_EMAC_RX_SKB_HEADROOM
config IBM_EMAC_PHY_RX_CLK_FIX
bool "PHY Rx clock workaround"
- depends on IBM_EMAC && (405EP || 440GX || 440EP)
+ depends on IBM_EMAC && (405EP || 440GX || 440EP || 440GR)
help
Enable this if EMAC attached to a PHY which doesn't generate
RX clock if there is no link, if this is the case, you will
diff --git a/drivers/net/ibm_emac/ibm_emac.h b/drivers/net/ibm_emac/ibm_emac.h
index d3166da..644edbf 100644
--- a/drivers/net/ibm_emac/ibm_emac.h
+++ b/drivers/net/ibm_emac/ibm_emac.h
@@ -26,7 +26,8 @@
/* This is a simple check to prevent use of this driver on non-tested SoCs */
#if !defined(CONFIG_405GP) && !defined(CONFIG_405GPR) && !defined(CONFIG_405EP) && \
!defined(CONFIG_440GP) && !defined(CONFIG_440GX) && !defined(CONFIG_440SP) && \
- !defined(CONFIG_440EP) && !defined(CONFIG_NP405H) && !defined(CONFIG_440SPE)
+ !defined(CONFIG_440EP) && !defined(CONFIG_NP405H) && !defined(CONFIG_440SPE) && \
+ !defined(CONFIG_440GR)
#error "Unknown SoC. Please, check chip user manual and make sure EMAC defines are OK"
#endif
diff --git a/drivers/net/ibm_emac/ibm_emac_core.c b/drivers/net/ibm_emac/ibm_emac_core.c
index 48239e1..eb7d694 100644
--- a/drivers/net/ibm_emac/ibm_emac_core.c
+++ b/drivers/net/ibm_emac/ibm_emac_core.c
@@ -87,10 +87,11 @@ MODULE_LICENSE("GPL");
*/
static u32 busy_phy_map;
-#if defined(CONFIG_IBM_EMAC_PHY_RX_CLK_FIX) && (defined(CONFIG_405EP) || defined(CONFIG_440EP))
+#if defined(CONFIG_IBM_EMAC_PHY_RX_CLK_FIX) && \
+ (defined(CONFIG_405EP) || defined(CONFIG_440EP) || defined(CONFIG_440GR))
/* 405EP has "EMAC to PHY Control Register" (CPC0_EPCTL) which can help us
* with PHY RX clock problem.
- * 440EP has more sane SDR0_MFR register implementation than 440GX, which
+ * 440EP/440GR has more sane SDR0_MFR register implementation than 440GX, which
* also allows controlling each EMAC clock
*/
static inline void EMAC_RX_CLK_TX(int idx)
@@ -100,7 +101,7 @@ static inline void EMAC_RX_CLK_TX(int id
#if defined(CONFIG_405EP)
mtdcr(0xf3, mfdcr(0xf3) | (1 << idx));
-#else /* CONFIG_440EP */
+#else /* CONFIG_440EP || CONFIG_440GR */
SDR_WRITE(DCRN_SDR_MFR, SDR_READ(DCRN_SDR_MFR) | (0x08000000 >> idx));
#endif
diff --git a/drivers/net/ibm_emac/ibm_emac_mal.h b/drivers/net/ibm_emac/ibm_emac_mal.h
index fb6dfe1..2a2d3b2 100644
--- a/drivers/net/ibm_emac/ibm_emac_mal.h
+++ b/drivers/net/ibm_emac/ibm_emac_mal.h
@@ -32,7 +32,7 @@
* reflect the fact that 40x and 44x have slightly different MALs. --ebs
*/
#if defined(CONFIG_405GP) || defined(CONFIG_405GPR) || defined(CONFIG_405EP) || \
- defined(CONFIG_440EP) || defined(CONFIG_NP405H)
+ defined(CONFIG_440EP) || defined(CONFIG_440GR) || defined(CONFIG_NP405H)
#define MAL_VERSION 1
#elif defined(CONFIG_440GP) || defined(CONFIG_440GX) || defined(CONFIG_440SP) || \
defined(CONFIG_440SPE)
^ permalink raw reply related
* [PATCH 3/3] PPC 4xx EMAC driver: fix VSC8201 PHY initialization
From: Eugene Surovegin @ 2005-10-29 19:47 UTC (permalink / raw)
To: Jeff Garzik; +Cc: netdev, linuxppc-embedded
* MII registers must override strap pins
* disable "echo" mode to make 10/HDX work (Franz Sirl)
Signed-off-by: Eugene Surovegin <ebs@ebshome.net>
---
drivers/net/ibm_emac/ibm_emac_phy.c | 12 ++++++++++++
1 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/drivers/net/ibm_emac/ibm_emac_phy.c b/drivers/net/ibm_emac/ibm_emac_phy.c
index a27e49c..67935dd 100644
--- a/drivers/net/ibm_emac/ibm_emac_phy.c
+++ b/drivers/net/ibm_emac/ibm_emac_phy.c
@@ -236,12 +236,16 @@ static struct mii_phy_def genmii_phy_def
};
/* CIS8201 */
+#define MII_CIS8201_10BTCSR 0x16
+#define TENBTCSR_ECHO_DISABLE 0x2000
#define MII_CIS8201_EPCR 0x17
#define EPCR_MODE_MASK 0x3000
#define EPCR_GMII_MODE 0x0000
#define EPCR_RGMII_MODE 0x1000
#define EPCR_TBI_MODE 0x2000
#define EPCR_RTBI_MODE 0x3000
+#define MII_CIS8201_ACSR 0x1c
+#define ACSR_PIN_PRIO_SELECT 0x0004
static int cis8201_init(struct mii_phy *phy)
{
@@ -269,6 +273,14 @@ static int cis8201_init(struct mii_phy *
}
phy_write(phy, MII_CIS8201_EPCR, epcr);
+
+ /* MII regs override strap pins */
+ phy_write(phy, MII_CIS8201_ACSR,
+ phy_read(phy, MII_CIS8201_ACSR) | ACSR_PIN_PRIO_SELECT);
+
+ /* Disable TX_EN -> CRS echo mode, otherwise 10/HDX doesn't work */
+ phy_write(phy, MII_CIS8201_10BTCSR,
+ phy_read(phy, MII_CIS8201_10BTCSR) | TENBTCSR_ECHO_DISABLE);
return 0;
}
^ permalink raw reply related
* Re: [PATCH 1/3] PPC 44x EMAC driver: add 440SPe support
From: Jeff Garzik @ 2005-10-29 22:07 UTC (permalink / raw)
To: Eugene Surovegin; +Cc: netdev, linuxppc-embedded
In-Reply-To: <20051029194314.GB1865@gate.ebshome.net>
applied 1-3
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox