History log of /dragonfly/sys/dev/netif/nfe/if_nfe.c (Results 1 – 25 of 84)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 030b0c8c 09-Dec-2023 Michael Neumann <mneumann@ntecs.de>

busdma - Remove filter functionality

- Remove filtfunc and filtarg arguments from bus_dma_tag_create() and
fix all callers. All callers use NULL today for both filterfunc and
filterarg with one

busdma - Remove filter functionality

- Remove filtfunc and filtarg arguments from bus_dma_tag_create() and
fix all callers. All callers use NULL today for both filterfunc and
filterarg with one exception: if_jme.

- Remove filter functionality internally and parent tag tracking.
Without filter functions, we do not need to keep track of tag
ancestry. All inheritance of the parent tag's parameters occurs when
creating the new child tag.

- rename run_filter() to addr_needs_bounce().

- FreeBSD keeps the filtfunc and filtarg arguments but requires them to
be NULL.

- Drop filterfunc usage from if_jme.

In case of "JMC260 chip full mask revision 2", which has a hardware bug
when it comes to DMA transfers crossing the 4 GB bounday, the parent
buffer tag already limits DMA memory to 32bit address space. As such it
should be safe to drop the filterfunc. The filterfunc was checking if
the lower 32bits of the physical address used for DMA are all 0. In case
of a 32bit address space, the only address where all lower 32-bits are
all zero is 0 itself and I am here assuming that the physical address 0
is not used for DMA transfers!

Mainly obtained from: FreeBSD (commits 7cb028de, 900907f4, 1228b93b, 3933ff56)

show more ...


Revision tags: v6.4.0, v6.4.0rc1, v6.5.0, v6.2.2, v6.2.1, v6.2.0, v6.3.0, v6.0.1, v6.0.0, v6.0.0rc1, v6.1.0, v5.8.3, v5.8.2, v5.8.1, v5.8.0, v5.9.0, v5.8.0rc1, v5.6.3
# 805c8e8e 20-Oct-2019 zrj <rimvydas.jasinskas@gmail.com>

kernel: Remove explicit dependencies on <sys/malloc.h> in headers.

All except <net/if_var.h> for now, it needs decoupling in drm first.
* Include <sys/malloc.h> in foo.c if they have kmalloc()/kfr

kernel: Remove explicit dependencies on <sys/malloc.h> in headers.

All except <net/if_var.h> for now, it needs decoupling in drm first.
* Include <sys/malloc.h> in foo.c if they have kmalloc()/kfree() calls.
* Consistently check if MALLOC_DECLARE was declared before.
* <sys/mountctl.h>: include <sys/thread.h> for _KERNEL_STRUCTURES too
since the "struct journal" embeds "struct thread".
* <sys/tty.h>: Only two kernel sources makes use of M_TTYS.
* <sys/socketvar2.h>: Make it kernel only header.

show more ...


# febebf83 20-Oct-2019 zrj <rimvydas.jasinskas@gmail.com>

kernel: Minor whitespace cleanup in few sources (part 2).

Separated from next.


Revision tags: v5.6.2, v5.6.1, v5.6.0, v5.6.0rc1, v5.7.0, v5.4.3, v5.4.2, v5.4.1, v5.4.0, v5.5.0, v5.4.0rc1, v5.2.2, v5.2.1, v5.2.0, v5.3.0, v5.2.0rc
# 8dedb1a7 04-Feb-2018 zrj <rimvydas.jasinskas@gmail.com>

kernel/net: Remove use of "%b" format.

Switch to args safe "%pb%i" internal format.

Note: the if_nfe.c used 0x%4b format, while %b was not handling the width.


Revision tags: v5.0.2, v5.0.1, v5.0.0, v5.0.0rc2, v5.1.0, v5.0.0rc1, v4.8.1, v4.8.0, v4.6.2, v4.9.0, v4.8.0rc, v4.6.1, v4.6.0, v4.6.0rc2, v4.6.0rc, v4.7.0, v4.4.3, v4.4.2, v4.4.1, v4.4.0, v4.5.0, v4.4.0rc, v4.2.4, v4.3.1
# 14929979 25-Jul-2015 Sepherosa Ziehau <sephe@dragonflybsd.org>

netif: Configure mbuf clusters/jclusters limits

Default mbuf clusters limit work for most of the network device
drivers. The drivers modified by this commit:
- Use mbuf jclusters.
- Size of the rec

netif: Configure mbuf clusters/jclusters limits

Default mbuf clusters limit work for most of the network device
drivers. The drivers modified by this commit:
- Use mbuf jclusters.
- Size of the reception queues could be configured.
- Support multiple reception queues.

et(4) and mxge(4) are special; they use non-cluster mbuf for small
packets reception, so we adjust non-cluster mbuf limit manually in
these two drivers.

show more ...


Revision tags: v4.2.3, v4.2.1, v4.2.0, v4.0.6, v4.3.0, v4.2.0rc, v4.0.5, v4.0.4
# b5523eac 19-Feb-2015 Sascha Wildner <saw@online.de>

kernel: Move us to using M_NOWAIT and M_WAITOK for mbuf functions.

The main reason is that our having to use the MB_WAIT and MB_DONTWAIT
flags was a recurring issue when porting drivers from FreeBSD

kernel: Move us to using M_NOWAIT and M_WAITOK for mbuf functions.

The main reason is that our having to use the MB_WAIT and MB_DONTWAIT
flags was a recurring issue when porting drivers from FreeBSD because
it tended to get forgotten and the code would compile anyway with the
wrong constants. And since MB_WAIT and MB_DONTWAIT ended up as ocflags
for an objcache_get() or objcache_reclaimlist call (which use M_WAITOK
and M_NOWAIT), it was just one big converting back and forth with some
sanitization in between.

This commit allows M_* again for the mbuf functions and keeps the
sanitizing as it was before: when M_WAITOK is among the passed flags,
objcache functions will be called with M_WAITOK and when it is absent,
they will be called with M_NOWAIT. All other flags are scrubbed by the
MB_OCFLAG() macro which does the same as the former MBTOM().

Approved-by: dillon

show more ...


Revision tags: v4.0.3, v4.0.2
# 26595b18 28-Nov-2014 Sascha Wildner <saw@online.de>

kernel: Use the new auto-created sysctl ctx/tree in various drivers.

Everywhere where we formerly rolled a hw.fooX.* per-device ctx/tree
ourselves.

This commit switches it to dev.foo.X.*


Revision tags: v4.0.1, v4.0.0, v4.0.0rc3, v4.0.0rc2, v4.0.0rc, v4.1.0, v3.8.2
# 73029d08 29-Jun-2014 Franco Fichtner <franco@lastsummer.de>

kernel: make pktinfo and cpuid native to ip_input()

In order to remove ether_input_pkt(), switch the prototype
of if_input() and adjust all callers. While there, consolidate
the style of the invoke

kernel: make pktinfo and cpuid native to ip_input()

In order to remove ether_input_pkt(), switch the prototype
of if_input() and adjust all callers. While there, consolidate
the style of the invoke.

Suggested and reviewed by: sephe

show more ...


Revision tags: v3.8.1, v3.6.3, v3.8.0, v3.8.0rc2, v3.9.0, v3.8.0rc, v3.6.2, v3.6.1
# dcb4b80d 27-Nov-2013 Sascha Wildner <saw@online.de>

kernel: Generate miidevs.h, pccarddevs.h and pcidevs.h on the fly.

It removes the need to regenerate those header file after first editing
the associated list of IDs (miidevs, pccarddevs or pcidevs)

kernel: Generate miidevs.h, pccarddevs.h and pcidevs.h on the fly.

It removes the need to regenerate those header file after first editing
the associated list of IDs (miidevs, pccarddevs or pcidevs). After this
commit, editing the list alone is enough to add IDs.

We already did it like that for usb4bsd's usbdevs.h before. This commit
adjusts things for the remaining ID lists.

show more ...


Revision tags: v3.6.0, v3.7.1, v3.6.0rc, v3.7.0
# cec73927 05-Sep-2013 Matthew Dillon <dillon@apollo.backplane.com>

kernel - Change time_second to time_uptime for all expiration calculations

* Vet the entire kernel and change use cases for expiration calculations
using time_second to use time_uptime instead.

*

kernel - Change time_second to time_uptime for all expiration calculations

* Vet the entire kernel and change use cases for expiration calculations
using time_second to use time_uptime instead.

* Protects these expiration calculations from step changes in the wall time,
particularly needed for route table entries.

* Probably requires further variable type adjustments but the use of
time_uptime instead if time_second is highly unlikely to ever overrun
any demotions to int still present.

show more ...


Revision tags: v3.4.3
# ac9843a1 04-Jun-2013 Sepherosa Ziehau <sephe@dragonflybsd.org>

ifq: Remove the unused parameter 'mpolled' from ifq dequeue interface

The ifq_poll() -> ifq_dequeue() model is not MPSAFE, and mpolled has
not been used, i.e. set to NULL, for years; time to let it

ifq: Remove the unused parameter 'mpolled' from ifq dequeue interface

The ifq_poll() -> ifq_dequeue() model is not MPSAFE, and mpolled has
not been used, i.e. set to NULL, for years; time to let it go.

show more ...


Revision tags: v3.4.2, v3.4.0, v3.4.1, v3.4.0rc, v3.5.0
# 4c77af2d 11-Mar-2013 Sepherosa Ziehau <sephe@dragonflybsd.org>

netif: Setup TX ring CPUID before hooking up interrupt vectors


# d3c9c58e 20-Feb-2013 Sascha Wildner <saw@online.de>

kernel: Use DEVMETHOD_END in the drivers.


# d40991ef 13-Feb-2013 Sepherosa Ziehau <sephe@dragonflybsd.org>

if: Per-cpu ifnet/ifaddr statistics, step 1/3

Wrap ifnet/ifaddr stats updating, setting and extraction into macros;
ease upcoming changes.


# f0a26983 11-Jan-2013 Sepherosa Ziehau <sephe@dragonflybsd.org>

if: Multiple TX queue support step 1 of many; introduce ifaltq subqueue

Put the plain queue information, e.g. queue header and tail, serializer,
packet staging scoreboard and ifnet.if_start schedule

if: Multiple TX queue support step 1 of many; introduce ifaltq subqueue

Put the plain queue information, e.g. queue header and tail, serializer,
packet staging scoreboard and ifnet.if_start schedule netmsg etc. into
its own structure (subqueue). ifaltq structure could have multiple of
subqueues based on the count that drivers can specify.

Subqueue's enqueue, dequeue, purging and states updating are protected
by the subqueue's serializer, so for hardwares supporting multiple TX
queues, contention on queuing operation could be greatly reduced.

The subqueue is passed to if_start to let the driver know which hardware
TX queue to work on. Only the related driver's TX queue serializer will
be held, so for hardwares supporting multiple TX queues, contention on
driver's TX queue serializer could be greatly reduced.

Bunch of ifsq_ prefixed functions are added, which is used to perform
various operations on subqueues. Commonly used ifq_ prefixed functions
are still kept mainly for the drivers which do not support multiple TX
queues (well, these functions also ease the netif/ convertion in this
step :).

All of the pseudo network devices under sys/net are converted to use the
new subqueue operation. netproto/802_11 is converted too. igb(4) is
converted to use the new subqueue operation, the rest of the network
drivers are only changed for the if_start interface modification.

For ALTQs which have packet scheduler enabled, only the first subqueue
is used (*).

(*) Whether we should utilize multiple TX queues if ALTQ's packet scheduler
is enabled is quite questionable. Mainly because hardware's multiple TX
queue packet dequeue mechanism could have negative impact on ALTQ's packet
scheduler's decision.

show more ...


# dfd3b18b 05-Jan-2013 Sepherosa Ziehau <sephe@dragonflybsd.org>

if: Move if_cpuid into ifaltq; prepare multiple TX queues support

if_cpuid and if_npoll_cpuid are merged and moved into ifaltq as
altq_cpuid, which indicates the owner CPU of the tx queue. Since
we

if: Move if_cpuid into ifaltq; prepare multiple TX queues support

if_cpuid and if_npoll_cpuid are merged and moved into ifaltq as
altq_cpuid, which indicates the owner CPU of the tx queue. Since
we already have code in if_start_dispatch() to catching tx queue
owner CPU changes, this merging is quite safe.

show more ...


# 9ed293e0 28-Dec-2012 Sepherosa Ziehau <sephe@dragonflybsd.org>

if: Move IFF_OACTIVE bit into ifaltq; prepare multiple TX queues support

ifaltq.altq_hw_oactive is now used to record that NIC's TX queue is full.
IFF_OACTIVE is removed from kernel. User space IFF

if: Move IFF_OACTIVE bit into ifaltq; prepare multiple TX queues support

ifaltq.altq_hw_oactive is now used to record that NIC's TX queue is full.
IFF_OACTIVE is removed from kernel. User space IFF_OACTIVE is kept for
compability.

ifaltq.altq_hw_oactive should not be accessed directly. Following set of
functions are provided and should be used:
ifq_is_oactive(ifnet.if_snd) - Whether NIC's TX queue is full or not
ifq_set_oactive(ifnet.if_snd) - NIC's TX queue is full
ifq_clr_oactive(ifnet.if_snd) - NIC's TX queue is no longer full

show more ...


Revision tags: v3.2.2
# d2e51f8d 04-Nov-2012 Sepherosa Ziehau <sephe@dragonflybsd.org>

nfe: Switch from device_polling to ifpoll


Revision tags: v3.2.1, v3.2.0, v3.3.0, v3.0.3
# ed20d0e3 21-Apr-2012 Sascha Wildner <saw@online.de>

kernel: Remove newlines from the panic messages that have one.

panic() itself will add a newline.


# eda7db08 13-Apr-2012 Sepherosa Ziehau <sephe@dragonflybsd.org>

ether: Don't manually packing up input mbufs

Since we use spin ports for netisrs now, we no longer need to explicitly
avoid IPI storm on input path.


Revision tags: v3.0.2, v3.0.1, v3.1.0, v3.0.0
# 28e81a28 29-Dec-2011 Sepherosa Ziehau <sephe@dragonflybsd.org>

intr: Remove no longer correct ithread_cpuid; use rman_get_cpuid instead


# 86d7f5d3 26-Nov-2011 John Marino <draco@marino.st>

Initial import of binutils 2.22 on the new vendor branch

Future versions of binutils will also reside on this branch rather
than continuing to create new binutils branches for each new version.


Revision tags: v2.12.0, v2.13.0
# aa2b9d05 24-Jun-2011 Sascha Wildner <saw@online.de>

kernel: Use NULL for DRIVER_MODULE()'s evh & arg (which are pointers).

This is just cosmetics for easier reading.


Revision tags: v2.10.1, v2.11.0, v2.10.0, v2.9.1, v2.8.2, v2.8.1, v2.8.0, v2.9.0, v2.6.3, v2.7.3, v2.6.2, v2.7.2, v2.7.1, v2.6.1, v2.7.0, v2.6.0, v2.5.1, v2.4.1, v2.5.0, v2.4.0
# 5df3a6aa 09-Sep-2009 Matthew Dillon <dillon@apollo.backplane.com>

NFE - Change default RX ring size from 128 -> 256, Adjust moderation timer.

* NFE does not seem to be able to flow control the phy. TCP reception
using window scaling and large socket bufs can bl

NFE - Change default RX ring size from 128 -> 256, Adjust moderation timer.

* NFE does not seem to be able to flow control the phy. TCP reception
using window scaling and large socket bufs can blow out the receiver ring
before the interrupt has a chance to drain it.

This results in the receiver dropping a packet and the transmitter
seeing bursts of duplicate TCP acks and having to go into recovery.

* Shorten the moderation timer from 500uS to 250uS, increasing its
frequency from 2000Hz to 4000Hz. Note that the moderation timer
only kicks in when the discrete interrupt rate exceeds the frequency.

* The problem still occurs with the larger RX ring and shorter moderation
timer, but not nearly as often.

show more ...


# c00ddf33 03-Sep-2009 Matthew Dillon <dillon@apollo.backplane.com>

NFE - Fix bug with imtimer transitions and improve performance

* When the imtimer transitions to a new state via a sysctl the
code called ifp->if_init() which more often then not caused
the devi

NFE - Fix bug with imtimer transitions and improve performance

* When the imtimer transitions to a new state via a sysctl the
code called ifp->if_init() which more often then not caused
the device to stop taking all interrupts.

* Change the way dynamic interrupt moderation works. Timer moderation is
not turned on until the discrete interrupt rate exceeds the threshold.
e.g. by default 500uS is 2000 interrupts/second so timer moderation
is not turned on until the discrete interrupt rate exceeds 2000 ips.

This allows the device to respond interactively as long as traffic levels
are reasonable, before converting into moderation-timer-based batching.

Timer moderation is turned off and we go back to discrete interrupts
if the average rate over ~4 seconds falls below the threshold.

* Change the interrupt moderation default from 125uS to 500uS. 125uS can
saturate the cpu if the interrupt line is shared with other devices.
A larger moderation timer is also more reasonable now that discrete
interrupts are left intact until the rate exceeds the threshold.

The moderation timer should be roughly designed to deal with the txring
and rxring size.

show more ...


1234