<feed xmlns='http://www.w3.org/2005/Atom'>
<title>src/sys/dev/netmap/if_em_netmap.h, branch stable/10</title>
<subtitle>FreeBSD source tree</subtitle>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/'/>
<entry>
<title>MFC r308038:</title>
<updated>2016-10-31T16:48:16+00:00</updated>
<author>
<name>Sean Bruno</name>
<email>sbruno@FreeBSD.org</email>
</author>
<published>2016-10-31T16:48:16+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=f4fa8c7fb32a6d4edeffef274594b406b6c81382'/>
<id>f4fa8c7fb32a6d4edeffef274594b406b6c81382</id>
<content type='text'>
  The buffer address is always overwritten in the extended descriptor format,
  we have to refresh it ... always.  This fixes problems reported in NetMap
  with em(4) devices after conversion to extended descriptor format in
  svn r293331.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
  The buffer address is always overwritten in the extended descriptor format,
  we have to refresh it ... always.  This fixes problems reported in NetMap
  with em(4) devices after conversion to extended descriptor format in
  svn r293331.
</pre>
</div>
</content>
</entry>
<entry>
<title>Sync the e1000 drivers with what's in head as of r294327, modulo parts</title>
<updated>2016-01-27T22:31:08+00:00</updated>
<author>
<name>Marius Strobl</name>
<email>marius@FreeBSD.org</email>
</author>
<published>2016-01-27T22:31:08+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=9052f74c77c132a1ef990044ffc8b89c6e704c1d'/>
<id>9052f74c77c132a1ef990044ffc8b89c6e704c1d</id>
<content type='text'>
that don't apply to stable/10 (driver API, if_inc_counter(), RSS changes
etc.) and modulo r287465 (which reportedly breaks igb(4)), i. e. assorted
fixes and improvements only:

o MFC r267385 (partial):
  - Don't compare bus_dma map pointers for static DMA allocations against
    NULL to determine if bus_dmamap_unload() or bus_dmamem_free() should be
    called. Instead, check the associated bus and virtual addresses.
  - Don't clear static DMA maps to NULL.
o MFC r284933:
  Delete the refernce to VLAN handling being disabled by default. This is
  no longer the case. [1]
o MFC r285639:
  Add an adapter CORE lock in the DDB hook em_dump_queue to avoid WITNESS
  panic in em_init_locked() while debugging.
o MFC r285879:
  - Remove unused txd_saved.
  - Intialize txd_upper, txd_lower and txd_used at declaration.
o MFC r286162:
  Free mbufs when busdma loading fails.
o MFC r286829:
  Add capability to disable CRC stripping as it breaks IPMI/BMC capabilities
  on certain adatpers. [2]
o MFC r286831: [3]
  - Increase EM_MAX_SCATTER to 64 such that the size of em_xmit()::
    segs[EM_MAX_SCATTER] doesn't get overrun by things like NFS that can
    and do shove more than 32 segs when being used with em(4) and TSO4.
  - Update tso handling code in em_xmit() with update from jhb@
  - Set if_hw_tsomax, if_hw_tsomaxsegcount and if_hw_tsomaxsegsize to
    appropriate values.
  - Define a TSO workaround "magic" number of 4 that is used to avoid an
    alignment issue in hardware.
  - Change a couple of integer values that were used as booleans to actual
    bool types.
  - Ensure that em_enable_intr() enables the appropriate mask of interrupts
    and not just a hardcoded define of values.
o MFC r286832:
  e1000/if_lem.c bump to 1.1.0
o MFC r286833:
  Bump all copywrite dates to 2015.
o MFC r287112:
  Style/whitespace cleanup in shared/common code.
o MFC r293331:
  - Switch em(4) to the extended RX descriptor format.
  - Split rxbuffer and txbuffer apart to support the new RX descriptor
    format structures. Move rxbuffer manipulation to em_setup_rxdesc() to
    unify the new behavior changes.
  - Add a RSSKEYLEN macro for help in generating the RSSKEY data structures
    in the card.
  - Change em_receive_checksum() to process the new rxdescriptor format
    status bit.
o MFC r293332:
  Disable the reuse of checksum offload context descriptors in the case
  of multiple queues in em(4). Document errata in the code.
o MFC r293854:
  Given that em(4), lem(4) and igb(4) hardware doesn't require the
  alignment guarantees provided by m_defrag(9), use m_collapse(9)
  instead for performance reasons.
  While at it, sanitize the statistics softc members, i. e. retire
  unused ones and add SYSCTL nodes missing for actually used ones.

PR:	118693 [1], 161277 [2], 195078 [3], 199174 [3], 200221 [3]
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
that don't apply to stable/10 (driver API, if_inc_counter(), RSS changes
etc.) and modulo r287465 (which reportedly breaks igb(4)), i. e. assorted
fixes and improvements only:

o MFC r267385 (partial):
  - Don't compare bus_dma map pointers for static DMA allocations against
    NULL to determine if bus_dmamap_unload() or bus_dmamem_free() should be
    called. Instead, check the associated bus and virtual addresses.
  - Don't clear static DMA maps to NULL.
o MFC r284933:
  Delete the refernce to VLAN handling being disabled by default. This is
  no longer the case. [1]
o MFC r285639:
  Add an adapter CORE lock in the DDB hook em_dump_queue to avoid WITNESS
  panic in em_init_locked() while debugging.
o MFC r285879:
  - Remove unused txd_saved.
  - Intialize txd_upper, txd_lower and txd_used at declaration.
o MFC r286162:
  Free mbufs when busdma loading fails.
o MFC r286829:
  Add capability to disable CRC stripping as it breaks IPMI/BMC capabilities
  on certain adatpers. [2]
o MFC r286831: [3]
  - Increase EM_MAX_SCATTER to 64 such that the size of em_xmit()::
    segs[EM_MAX_SCATTER] doesn't get overrun by things like NFS that can
    and do shove more than 32 segs when being used with em(4) and TSO4.
  - Update tso handling code in em_xmit() with update from jhb@
  - Set if_hw_tsomax, if_hw_tsomaxsegcount and if_hw_tsomaxsegsize to
    appropriate values.
  - Define a TSO workaround "magic" number of 4 that is used to avoid an
    alignment issue in hardware.
  - Change a couple of integer values that were used as booleans to actual
    bool types.
  - Ensure that em_enable_intr() enables the appropriate mask of interrupts
    and not just a hardcoded define of values.
o MFC r286832:
  e1000/if_lem.c bump to 1.1.0
o MFC r286833:
  Bump all copywrite dates to 2015.
o MFC r287112:
  Style/whitespace cleanup in shared/common code.
o MFC r293331:
  - Switch em(4) to the extended RX descriptor format.
  - Split rxbuffer and txbuffer apart to support the new RX descriptor
    format structures. Move rxbuffer manipulation to em_setup_rxdesc() to
    unify the new behavior changes.
  - Add a RSSKEYLEN macro for help in generating the RSSKEY data structures
    in the card.
  - Change em_receive_checksum() to process the new rxdescriptor format
    status bit.
o MFC r293332:
  Disable the reuse of checksum offload context descriptors in the case
  of multiple queues in em(4). Document errata in the code.
o MFC r293854:
  Given that em(4), lem(4) and igb(4) hardware doesn't require the
  alignment guarantees provided by m_defrag(9), use m_collapse(9)
  instead for performance reasons.
  While at it, sanitize the statistics softc members, i. e. retire
  unused ones and add SYSCTL nodes missing for actually used ones.

PR:	118693 [1], 161277 [2], 195078 [3], 199174 [3], 200221 [3]
</pre>
</div>
</content>
</entry>
<entry>
<title>MFC r284179, r283959</title>
<updated>2015-06-17T18:50:57+00:00</updated>
<author>
<name>Sean Bruno</name>
<email>sbruno@FreeBSD.org</email>
</author>
<published>2015-06-17T18:50:57+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=2f06fdb0be45c8389ad0200d388f9ca951ad1c72'/>
<id>2f06fdb0be45c8389ad0200d388f9ca951ad1c72</id>
<content type='text'>
Implement multiqueue (max 2 tx/rx queues) for the 82574L chipset.

Change default tuning parameters to handle this new configuration if
EM_MULTIQUEUE is set in the kernel configuration.  Off by default.

See r283959 changelog for the scope of these changes.

Relnotes:	Yes
Sponsored by:	Limelight Networks
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Implement multiqueue (max 2 tx/rx queues) for the 82574L chipset.

Change default tuning parameters to handle this new configuration if
EM_MULTIQUEUE is set in the kernel configuration.  Off by default.

See r283959 changelog for the scope of these changes.

Relnotes:	Yes
Sponsored by:	Limelight Networks
</pre>
</div>
</content>
</entry>
<entry>
<title>MFC 270063: update of netmap code</title>
<updated>2014-08-20T23:34:36+00:00</updated>
<author>
<name>Luigi Rizzo</name>
<email>luigi@FreeBSD.org</email>
</author>
<published>2014-08-20T23:34:36+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=609deef53d143a87415f58ae8d9915879345d227'/>
<id>609deef53d143a87415f58ae8d9915879345d227</id>
<content type='text'>
(vtnet and cxgbe not merged yet because we need some other mfc first)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
(vtnet and cxgbe not merged yet because we need some other mfc first)
</pre>
</div>
</content>
</entry>
<entry>
<title>MFH: sync the netmap code with the one in HEAD</title>
<updated>2014-02-18T05:01:04+00:00</updated>
<author>
<name>Luigi Rizzo</name>
<email>luigi@FreeBSD.org</email>
</author>
<published>2014-02-18T05:01:04+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=2d47b4a1972fddbb8a4c9e26afbf09e373c6ba19'/>
<id>2d47b4a1972fddbb8a4c9e26afbf09e373c6ba19</id>
<content type='text'>
(enhanced VALE switch, netmap pipes, emulated netmap mode).
See details in the log for svn 261909.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
(enhanced VALE switch, netmap pipes, emulated netmap mode).
See details in the log for svn 261909.
</pre>
</div>
</content>
</entry>
<entry>
<title>remove trailing whitespace</title>
<updated>2013-05-02T16:01:04+00:00</updated>
<author>
<name>Luigi Rizzo</name>
<email>luigi@FreeBSD.org</email>
</author>
<published>2013-05-02T16:01:04+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=654ae8d68c0a79dfa51d1279de2bac7bebda6dae'/>
<id>654ae8d68c0a79dfa51d1279de2bac7bebda6dae</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>whitespace changes:</title>
<updated>2013-04-29T18:00:53+00:00</updated>
<author>
<name>Luigi Rizzo</name>
<email>luigi@FreeBSD.org</email>
</author>
<published>2013-04-29T18:00:53+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=d4b42e08696b1dc7089bfd21edd6f0f621f30b0d'/>
<id>d4b42e08696b1dc7089bfd21edd6f0f621f30b0d</id>
<content type='text'>
remove $Id$ lines, and add blank lines around some #if / #elif /#endif
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
remove $Id$ lines, and add blank lines around some #if / #elif /#endif
</pre>
</div>
</content>
</entry>
<entry>
<title>add some definition and driver changes in preparation for</title>
<updated>2013-01-17T22:14:58+00:00</updated>
<author>
<name>Luigi Rizzo</name>
<email>luigi@FreeBSD.org</email>
</author>
<published>2013-01-17T22:14:58+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=1dce924d2528107dd2c49bf68434bca3135b2fbf'/>
<id>1dce924d2528107dd2c49bf68434bca3135b2fbf</id>
<content type='text'>
two upcoming features:

semi-transparent mode:
    when a device is opened in this mode, the
    user program will be able to mark slots that must be forwarded
    to the "other" side (i.e. from NIC to host stack, or viceversa),
    and the forwarding will occur automatically at the next netmap syscall.
    This saves the need to open another file descriptor and do
    the forwarding manually.

direct-forwarding mode:
    when operating with a VALE port, the user can specify in the slot
    the actual destination port, overriding the forwarding decision
    made by a lookup of the destination MAC. This can be useful to
    implement packet dispatchers.

No API changes will be introduced.
No new functionality in this patch yet.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
two upcoming features:

semi-transparent mode:
    when a device is opened in this mode, the
    user program will be able to mark slots that must be forwarded
    to the "other" side (i.e. from NIC to host stack, or viceversa),
    and the forwarding will occur automatically at the next netmap syscall.
    This saves the need to open another file descriptor and do
    the forwarding manually.

direct-forwarding mode:
    when operating with a VALE port, the user can specify in the slot
    the actual destination port, overriding the forwarding decision
    made by a lookup of the destination MAC. This can be useful to
    implement packet dispatchers.

No API changes will be introduced.
No new functionality in this patch yet.
</pre>
</div>
</content>
</entry>
<entry>
<title>fix some signed/unsigned warnings in the netmap code.</title>
<updated>2012-08-02T11:59:43+00:00</updated>
<author>
<name>Luigi Rizzo</name>
<email>luigi@FreeBSD.org</email>
</author>
<published>2012-08-02T11:59:43+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=b3d53016888e82317c056d9269f5cbf78537b6eb'/>
<id>b3d53016888e82317c056d9269f5cbf78537b6eb</id>
<content type='text'>
Unfortunately the original drivers still have a lot of
sign conversion/comparison warnings.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Unfortunately the original drivers still have a lot of
sign conversion/comparison warnings.
</pre>
</div>
</content>
</entry>
<entry>
<title>A bunch of netmap fixes:</title>
<updated>2012-02-27T19:05:01+00:00</updated>
<author>
<name>Luigi Rizzo</name>
<email>luigi@FreeBSD.org</email>
</author>
<published>2012-02-27T19:05:01+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=64ae02c36579bad7d5e682589a0bc1023e359f9d'/>
<id>64ae02c36579bad7d5e682589a0bc1023e359f9d</id>
<content type='text'>
USERSPACE:
1. add support for devices with different number of rx and tx queues;

2. add better support for zero-copy operation, adding an extra field
   to the netmap ring to indicate how many buffers we have already processed
   but not yet released (with help from Eddie Kohler);

3. The two changes above unfortunately require an API change, so while
   at it add a version field and some spares to the ioctl() argument
   to help detect mismatches.

4. update the manual page for the two changes above;

5. update sample applications in tools/tools/netmap

KERNEL:

1. simplify the internal structures moving the global wait queues
   to the 'struct netmap_adapter';

2. simplify the functions that map kring&lt;-&gt;nic ring indexes

3. normalize device-specific code, helps mainteinance;

4. start exploring the impact of micro-optimizations (prefetch etc.)
   in the ixgbe driver.
   Use 'legacy' descriptors on the tx ring and prefetch slots gives
   about 20% speedup at 900 MHz. Another 7-10% would come from removing
   the explict calls to bus_dmamap* in the core (they are effectively
   NOPs in this case, but it takes expensive load of the per-buffer
   dma maps to figure out that they are all NULL.

   Rx performance not investigated.

I am postponing the MFC so i can import a few more improvements
before merging.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
USERSPACE:
1. add support for devices with different number of rx and tx queues;

2. add better support for zero-copy operation, adding an extra field
   to the netmap ring to indicate how many buffers we have already processed
   but not yet released (with help from Eddie Kohler);

3. The two changes above unfortunately require an API change, so while
   at it add a version field and some spares to the ioctl() argument
   to help detect mismatches.

4. update the manual page for the two changes above;

5. update sample applications in tools/tools/netmap

KERNEL:

1. simplify the internal structures moving the global wait queues
   to the 'struct netmap_adapter';

2. simplify the functions that map kring&lt;-&gt;nic ring indexes

3. normalize device-specific code, helps mainteinance;

4. start exploring the impact of micro-optimizations (prefetch etc.)
   in the ixgbe driver.
   Use 'legacy' descriptors on the tx ring and prefetch slots gives
   about 20% speedup at 900 MHz. Another 7-10% would come from removing
   the explict calls to bus_dmamap* in the core (they are effectively
   NOPs in this case, but it takes expensive load of the per-buffer
   dma maps to figure out that they are all NULL.

   Rx performance not investigated.

I am postponing the MFC so i can import a few more improvements
before merging.
</pre>
</div>
</content>
</entry>
</feed>
