freebsd-nq/sys/dev/qlxgb
Andre Oppermann 1b4381afbb Restructure the mbuf pkthdr to make it fit for upcoming capabilities and
features.  The changes in particular are:

o Remove rarely used "header" pointer and replace it with a 64bit protocol/
  layer specific union PH_loc for local use.  Protocols can flexibly overlay
  their own 8 to 64 bit fields to store information while the packet is
  worked on.

o Mechanically convert IP reassembly, IGMP/MLD and ATM to use pkthdr.PH_loc
  instead of pkthdr.header.

o Extend csum_flags to 64bits to allow for additional future offload
  information to be carried (e.g. iSCSI, IPsec offload, and others).

o Move the RSS hash type enumerator from abusing m_flags to its own 8bit
  rsstype field.  Adjust accessor macros.

o Add cosqos field to store Class of Service / Quality of Service information
  with the packet.  It is not yet supported in any drivers but allows us to
  get on par with Cisco/Juniper in routing applications (plus MPLS QoS) with
  a modernized ALTQ.

o Add four 8 bit fields l[2-5]hlen to store the relative header offsets
  from the start of the packet.  This is important for various offload
  capabilities and to relieve the drivers from having to parse the packet
  and protocol headers to find out location of checksums and other
  information.  Header parsing in drivers is a lot of copy-paste and
  unhandled corner cases which we want to avoid.

o Add another flexible 64bit union to map various additional persistent
  packet information, like ether_vtag, tso_segsz and csum fields.
  Depending on the csum_flags settings some fields may have different usage
  making it very flexible and adaptable to future capabilities.

o Restructure the CSUM flags to better signify their outbound (down the
  stack) and inbound (up the stack) use.  The CSUM flags used to be a bit
  chaotic and rather poorly documented leading to incorrect use in many
  places.  Bring clarity into their use through better naming.
  Compatibility mappings are provided to preserve the API.  The drivers
  can be corrected one by one and MFC'd without issue.

o The size of pkthdr stays the same at 48/56bytes (32/64bit architectures).

Sponsored by:	The FreeBSD Foundation
2013-08-24 19:51:18 +00:00
..
qla_dbg.c
qla_dbg.h
qla_def.h
qla_glbl.h
qla_hw.c Restructure the mbuf pkthdr to make it fit for upcoming capabilities and 2013-08-24 19:51:18 +00:00
qla_hw.h
qla_inline.h
qla_ioctl.c
qla_ioctl.h
qla_isr.c
qla_misc.c
qla_os.c No need to set if_mtu since it automatically updated by ether_ifattach(). 2013-05-08 18:25:46 +00:00
qla_os.h
qla_reg.h
qla_ver.h
README.txt

# $FreeBSD$

			README File
	QLogic 3200 and 8200 series Single/Dual Port
10 Gigabit Ethernet & CNA Adapter Driver for FreeBSD 7.x/8.x/9.x

		QLogic Corporation.
		All rights reserved. 


Table of Contents
1. Package Contents 
2. OS Support
3. Supported Features
4. Using the Driver
   4.1 Installing the driver
   4.2 Removing the driver
5. Driver Parameters
6. Additional Notes
7. Contacting Support

1. Package Contents 
 * Documentation 
   - README (this document) version:1.0
   - Release Notes Version:1.0
 * Driver (if_qlxgb.ko)
	- FreeBSD 7.x/8.x/9.x
 * Firmware: pre-flashed on QLogic adapter;

2. OS Support

The Qlogic 10Gigabit Ethernet/CNA driver is compatible with the 
following OS platforms:
 * FreeBSD 7.x/8.x/9.x (64-bit) [Intel EM64T, AMD64]

3. Supported Features
10Gigabit Ethernet NIC/CNA driver supports following features

* Large Segment Offload over TCP IPV4
* Large Segment Offload over TCP IPV6
* Receive Side scaling
* TCP over IPv4 checksum offload
* UDP over IPv4 checksum offload
* IPV4 checksum offload
* TCP over IPv6 checksum offload
* UDP over IPv6 checksum offload
* Jumbo frames
* VLAN Tag


4. Using the driver

 4.1 Installing the driver

   - copy the driver file (if_qlxgb.ko) into some directory (say qla_driver)
   - cd <to qla_driver>
   - kldload -v ./if_qlxgb.ko

 4.2 Removing the driver
 
  - kldunload if_qlxgb

5. Parameters to set prior to installing the driver

   - Add the following lines to /etc/sysctl.conf and reboot the machine prior
     to installing the driver
   
	kern.ipc.nmbjumbo9=262144
	net.inet.tcp.recvbuf_max=262144
	net.inet.tcp.recvbuf_inc=16384
	kern.ipc.nmbclusters=1000000
	kern.ipc.maxsockbuf=2097152
	net.inet.tcp.recvspace=131072
	net.inet.tcp.sendbuf_max=262144
	net.inet.tcp.sendspace=65536
 
   - If you do not want to reboot the system please run the following commands

	login or su to root

	sysctl kern.ipc.nmbjumbo9=262144
	sysctl net.inet.tcp.recvbuf_max=262144
	sysctl net.inet.tcp.recvbuf_inc=16384
	sysctl kern.ipc.nmbclusters=1000000
	sysctl kern.ipc.maxsockbuf=2097152
	sysctl net.inet.tcp.recvspace=131072
	sysctl net.inet.tcp.sendbuf_max=262144
	sysctl net.inet.tcp.sendspace=65536

6. Contacting Support 
Please feel free to contact your QLogic approved reseller or QLogic 
Technical Support at any phase of integration for assistance. QLogic
Technical Support can be reached by the following methods: 
Web:    http://support.qlogic.com
E-mail: support@qlogic.com
(c) Copyright 2013. All rights reserved worldwide. QLogic, the QLogic 
logo, and the Powered by QLogic logo are registered trademarks of
QLogic Corporation. All other brand and product names are trademarks 
or registered trademarks of their respective owners.