kernel-fxtec-pro1x/drivers/net
John Fastabend e5b6463557 ixgbe: DCB, use multiple Tx rings per traffic class
This enables multiple {Tx|Rx} rings per traffic class while in DCB
mode. In order to get this working as expected the tc_to_tx net
device mapping is configured as well as the prio_tc_map.

skb priorities are mapped across a range of queue pairs to get
a distribution per traffic class. The maximum number of
queue pairs used while in DCB mode is capped at 64. The hardware
max is actually 128 queues but 64 is sufficient for now and
allocating more seemed a bit excessive. It is easy enough to
increase the cap later if need be.

To get the 802.1Q priority tags inserted correctly ixgbe was
previously using the skb queue_mapping field to directly set
the 802.1Q priority. This no longer works because we have removed
the 1:1 mapping between queues and traffic class. Each ring
is aligned with an 802.1Qaz traffic class so here we add an
extra field to the ring struct to identify the 802.1Q traffic
class. This uses an extra byte of the ixgbe_ring struct
fortunately there was a 2byte hole,

struct ixgbe_ring {
        void *                     desc;                 /*     0     8 */
        struct device *            dev;                  /*     8     8 */
        struct net_device *        netdev;               /*    16     8 */
        union {
                struct ixgbe_tx_buffer * tx_buffer_info; /*           8 */
                struct ixgbe_rx_buffer * rx_buffer_info; /*           8 */
        };                                               /*    24     8 */
        long unsigned int          state;                /*    32     8 */
        u8                         atr_sample_rate;      /*    40     1 */
        u8                         atr_count;            /*    41     1 */
        u16                        count;                /*    42     2 */
        u16                        rx_buf_len;           /*    44     2 */
        u16                        next_to_use;          /*    46     2 */
        u16                        next_to_clean;        /*    48     2 */
        u8                         queue_index;          /*    50     1 */
        u8                         reg_idx;              /*    51     1 */
        u16                        work_limit;           /*    52     2 */

        /* XXX 2 bytes hole, try to pack */

        u8 *                       tail;                 /*    56     8 */
        /* --- cacheline 1 boundary (64 bytes) --- */

Now we can set the VLAN priority directly and it will be
correct. User space can indicate the 802.1Qaz priority
using the SO_PRIORITY setsocket() option and QOS layer will
steer the skb to the correct rings. Additionally using
the multiq qdisc with a queue_mapping action works as
well.

Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
Tested-by: Ross Brattain <ross.b.brattain@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2011-03-12 04:11:29 -08:00
..
appletalk
arcnet
arm module: fix missing semicolons in MODULE macro usage 2011-01-24 14:32:54 +10:30
atl1c atl1[ce]: fix sparse warnings 2011-02-23 14:11:31 -08:00
atl1e net: use pci_dev->revision, again 2011-02-28 11:57:33 -08:00
atlx net: use pci_dev->revision, again 2011-02-28 11:57:33 -08:00
benet be2net: Add multicast filter capability for Lancer 2011-03-07 15:26:58 -08:00
bna bna: use device model DMA API 2011-02-02 15:41:25 -08:00
bnx2x Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-03-10 14:26:00 -08:00
bonding Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-03-10 14:26:00 -08:00
caif Merge branch 'ux500-core' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson into devel-stable 2011-01-03 10:31:58 +00:00
can Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-03-03 21:27:42 -08:00
chelsio Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-01-13 10:05:56 -08:00
cris
cxgb3 net: make dev->master general 2011-02-13 10:42:07 -08:00
cxgb4 net: Kill NETEVENT_PMTU_UPDATE. 2011-02-08 16:17:55 -08:00
cxgb4vf cxgb4vf: Use defined Mailbox Timeout 2011-02-14 17:37:11 -08:00
e1000 e1000: fix sparse warning 2011-03-02 03:20:56 -08:00
e1000e e1000e: bump version number 2011-03-11 02:25:09 -08:00
ehea ehea: Increase the skb array usage 2011-01-11 14:03:09 -08:00
enic enic: Flush driver cache of registered addr lists during port profile disassociate 2011-02-28 12:42:18 -08:00
fs_enet
hamradio drivers/net: remove some rcu sparse warnings 2011-01-27 15:02:57 -08:00
ibm_newemac Merge branch 'for-2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq 2011-01-07 16:58:04 -08:00
igb igb: Bump version to 3.0.6 2011-03-12 04:10:13 -08:00
igbvf Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-03-03 21:27:42 -08:00
irda Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2011-01-19 20:25:45 -08:00
ixgb ixgb: convert to new VLAN model 2011-03-11 01:16:23 -08:00
ixgbe ixgbe: DCB, use multiple Tx rings per traffic class 2011-03-12 04:11:29 -08:00
ixgbevf ixgbevf: Fix Driver String 2011-03-12 04:09:06 -08:00
ixp2000
mlx4 mlx4_core: Add ConnectX-3 device IDs 2011-01-28 15:24:55 -08:00
myri10ge net: change netdev->features to u32 2011-01-24 15:32:47 -08:00
netxen netxen: update driver version 4.0.75 2011-01-03 11:56:18 -08:00
octeon
pch_gbe pch_gbe: Fix the MAC Address load issue. 2011-02-14 13:37:26 -08:00
pcmcia fmvj18x_cs: add new id 2011-02-28 12:06:20 -08:00
phy phy/micrel: add ability to support 50MHz RMII clock on KZS8051RNL 2011-02-14 17:38:30 -08:00
qlcnic qlcnic: Remove validation for max tx and max rx queues 2011-02-23 14:23:33 -08:00
qlge drivers/net/*/: Use static const 2010-12-21 02:16:10 -08:00
sfc Merge branch 'for-davem' of git://git.kernel.org/pub/scm/linux/kernel/git/bwh/sfc-next-2.6 2011-03-08 11:32:45 -08:00
skfp Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-01-04 11:57:25 -08:00
stmmac stmmac: enable wol via magic frame by default. 2011-02-13 17:00:05 -08:00
tile netdev: tilepro: Use is_unicast_ether_addr helper 2011-01-13 21:49:56 -08:00
tokenring drivers/net/*/: Use static const 2010-12-21 02:16:10 -08:00
tulip drivers/net/*/: Use static const 2010-12-21 02:16:10 -08:00
usb Added support for usb ethernet (0x0fe6, 0x9700) 2011-02-23 14:32:28 -08:00
vmxnet3 vmxnet3: Dont allocate extra MSI-x vectors 2011-01-15 21:21:14 -08:00
vxge net: use pci_dev->revision, again 2011-02-28 11:57:33 -08:00
wan Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-01-13 10:05:56 -08:00
wimax Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-01-13 10:05:56 -08:00
wireless Merge branch 'for-davem' of ssh://master.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 2011-03-04 12:48:25 -08:00
3c59x.c
3c501.c drivers/net/*.c: Use static const 2010-12-21 02:16:08 -08:00
3c501.h
3c503.c drivers/net/*.c: Use static const 2010-12-21 02:16:08 -08:00
3c503.h
3c505.c
3c505.h
3c507.c drivers/net/*.c: Use static const 2010-12-21 02:16:08 -08:00
3c509.c
3c515.c
3c523.c
3c523.h
3c527.c drivers/net/*.c: Use static const 2010-12-21 02:16:08 -08:00
3c527.h
7990.c
7990.h
8139cp.c
8139too.c drivers/net: don't use flush_scheduled_work() 2010-12-12 16:45:14 +01:00
8390.c
8390.h
8390p.c
82596.c
a2065.c
a2065.h
ac3200.c
acenic.c
acenic.h
amd8111e.c
amd8111e.h
apne.c
ariadne.c
ariadne.h
at1700.c drivers/net/*.c: Use static const 2010-12-21 02:16:08 -08:00
atarilance.c
atp.c
atp.h
au1000_eth.c net: au1000_eth: remove unused global variable. 2010-12-11 12:01:48 -08:00
au1000_eth.h
ax88796.c ax88796: use generic mdio_bitbang driver 2011-02-21 13:49:48 +01:00
b44.c
b44.h
bcm63xx_enet.c drivers/net: don't use flush_scheduled_work() 2010-12-12 16:45:14 +01:00
bcm63xx_enet.h
bfin_mac.c netdev: bfin_mac: Remove is_multicast_ether_addr use in netdev_for_each_mc_addr 2011-01-13 21:48:25 -08:00
bfin_mac.h netdev: bfin_mac: let boards set vlan masks 2011-01-10 13:31:14 -08:00
bmac.c
bmac.h
bnx2.c drivers/net: remove some rcu sparse warnings 2011-01-27 15:02:57 -08:00
bnx2.h bnx2x, cnic: Consolidate iSCSI/FCoE shared mem logic in bnx2x 2011-01-31 20:44:46 -08:00
bnx2_fw.h
bsd_comp.c
cassini.c cassini: Fix build bustage on x86. 2011-01-14 12:39:59 -08:00
cassini.h cassini: Use local-mac-address prom property for Cassini MAC address 2011-01-06 11:50:30 -08:00
cnic.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-03-03 21:27:42 -08:00
cnic.h drivers/net: remove some rcu sparse warnings 2011-01-27 15:02:57 -08:00
cnic_defs.h cnic: Add FCoE support on 57712 2010-12-23 11:44:34 -08:00
cnic_if.h bnx2x, cnic: Consolidate iSCSI/FCoE shared mem logic in bnx2x 2011-01-31 20:44:46 -08:00
cpmac.c
cs89x0.c
cs89x0.h
davinci_cpdma.c
davinci_cpdma.h
davinci_emac.c davinci_emac: Add Carrier Link OK check in Davinci RX Handler 2011-02-28 13:16:14 -08:00
davinci_mdio.c
de600.c
de600.h
de620.c
de620.h
declance.c
defxx.c
defxx.h
depca.c depca: Fix warnings 2011-02-01 13:19:07 -08:00
depca.h
dl2k.c dl2k: nulify fraginfo after unmap 2011-01-27 14:18:34 -08:00
dl2k.h
dm9000.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-03-03 21:27:42 -08:00
dm9000.h
dnet.c dnet: fix wrong use of platform_set_drvdata() 2011-02-28 12:22:21 -08:00
dnet.h
dummy.c
e100.c
e2100.c drivers/net/*.c: Use static const 2010-12-21 02:16:08 -08:00
eepro.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-01-13 10:05:56 -08:00
eexpress.c drivers/net/*.c: Use static const 2010-12-21 02:16:08 -08:00
eexpress.h
enc28j60.c enc28j60: Fix reading of transmit status vector 2011-01-31 20:56:54 -08:00
enc28j60_hw.h
epic100.c epic100: hamachi: yellowfin: Fix skb allocation size 2010-12-25 19:37:49 -08:00
eql.c eql: Convert printks to pr_<level> and netdev_<level> 2011-03-03 13:30:20 -08:00
es3210.c
eth16i.c
ethoc.c
ewrk3.c
ewrk3.h
fealnx.c
fec.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-03-03 21:27:42 -08:00
fec.h net/fec: add dual fec support for mx28 2011-01-09 15:42:56 -08:00
fec_mpc52xx.c
fec_mpc52xx.h
fec_mpc52xx_phy.c
forcedeth.c drivers/net: Call netif_carrier_off at the end of the probe 2011-02-17 14:09:57 -08:00
fsl_pq_mdio.c
fsl_pq_mdio.h
ftmac100.c net: add Faraday FTMAC100 10/100 Ethernet driver 2011-03-03 12:19:11 -08:00
ftmac100.h net: add Faraday FTMAC100 10/100 Ethernet driver 2011-03-03 12:19:11 -08:00
gianfar.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2011-01-19 20:25:45 -08:00
gianfar.h net: remove dev_txq_stats_fold() 2011-01-13 21:44:34 -08:00
gianfar_ethtool.c
gianfar_sysfs.c
greth.c GRETH: resolve SMP issues and other problems 2011-01-14 12:45:55 -08:00
greth.h GRETH: handle frame error interrupts 2011-01-14 12:45:54 -08:00
hamachi.c epic100: hamachi: yellowfin: Fix skb allocation size 2010-12-25 19:37:49 -08:00
hp-plus.c
hp.c drivers/net/*.c: Use static const 2010-12-21 02:16:08 -08:00
hp100.c
hp100.h
hplance.c
hplance.h
hydra.c
ibmlana.c
ibmlana.h
ibmveth.c netdev: Use default implementation of ethtool_ops::get_link where possible 2010-12-10 15:55:24 -08:00
ibmveth.h
ifb.c ifb: add performance flags 2011-01-03 12:43:10 -08:00
ioc3-eth.c
ipg.c net: use pci_dev->revision, again 2011-02-28 11:57:33 -08:00
ipg.h
iseries_veth.c iseries_veth: don't use flush_scheduled_work() 2010-12-12 16:45:14 +01:00
jazzsonic.c
jme.c net: use pci_dev->revision, again 2011-02-28 11:57:33 -08:00
jme.h jme: Advance driver version 2011-02-13 21:44:44 -08:00
Kconfig e1000e: fix build issue due to undefined reference to crc32_le 2011-03-07 17:58:23 -08:00
korina.c
ks8842.c
ks8851.c
ks8851.h
ks8851_mll.c
ksz884x.c ksz884x: Fix section mismatch derived from pcidev_init() 2011-01-03 13:27:37 -08:00
lance.c
lasi_82596.c
lib8390.c
lib82596.c
LICENSE.SRC
ll_temac.h
ll_temac_main.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-01-13 10:05:56 -08:00
ll_temac_mdio.c
lne390.c
loopback.c loopback: convert to hw_features 2011-02-17 14:16:35 -08:00
lp486e.c
mac89x0.c
mac8390.c
macb.c macb: don't use platform_set_drvdata() on a net_device 2011-02-28 12:22:20 -08:00
macb.h
mace.c
mace.h
macmace.c
macsonic.c
macvlan.c
macvtap.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-03-10 14:26:00 -08:00
Makefile net: add Faraday FTMAC100 10/100 Ethernet driver 2011-03-03 12:19:11 -08:00
mdio.c
meth.c
meth.h
mii.c mii: Convert printks to netdev_info 2011-03-03 13:02:32 -08:00
mipsnet.c
mv643xx_eth.c mv643xx_eth: Use netdev_<level> and pr_<level> 2011-03-03 13:02:31 -08:00
mvme147.c
myri_sbus.c
myri_sbus.h
natsemi.c
ne-h8300.c
ne.c
ne2.c
ne2k-pci.c
ne3210.c
netconsole.c netconsole: clarify stopping message 2011-01-06 11:30:23 -08:00
netx-eth.c
ni52.c drivers/net/*.c: Use static const 2010-12-21 02:16:08 -08:00
ni52.h
ni65.c drivers/net/*.c: Use static const 2010-12-21 02:16:08 -08:00
ni65.h
ni5010.c
ni5010.h
niu.c niu: Fix races between up/down and get_stats. 2011-02-03 16:12:50 -08:00
niu.h
ns83820.c ns83820: Avoid bad pointer deref in ns83820_init_one(). 2011-01-18 16:13:49 -08:00
pasemi_mac.c
pasemi_mac.h
pasemi_mac_ethtool.c
pci-skeleton.c
pcnet32.c
plip.c
ppp_async.c net: ppp: use {get,put}_unaligned_be{16,32} 2011-01-10 16:13:33 -08:00
ppp_deflate.c net: ppp: use {get,put}_unaligned_be{16,32} 2011-01-10 16:13:33 -08:00
ppp_generic.c ppp: Use SKB queue abstraction interfaces in fragment processing. 2011-01-20 22:52:05 -08:00
ppp_mppe.c net: ppp: use {get,put}_unaligned_be{16,32} 2011-01-10 16:13:33 -08:00
ppp_mppe.h
ppp_synctty.c net: ppp: use {get,put}_unaligned_be{16,32} 2011-01-10 16:13:33 -08:00
pppoe.c pppoe.c: Fix kernel panic caused by __pppoe_xmit 2010-12-12 15:06:16 -08:00
pppox.c
pptp.c ipv4: Make output route lookup return rtable directly. 2011-03-02 14:31:35 -08:00
ps3_gelic_net.c
ps3_gelic_net.h
ps3_gelic_wireless.c
ps3_gelic_wireless.h
pxa168_eth.c drivers/net: don't use flush_scheduled_work() 2010-12-12 16:45:14 +01:00
qla3xxx.c qla3xxx: add missing __iomem annotation 2011-02-28 12:42:16 -08:00
qla3xxx.h
r6040.c r6040: bump to version 0.27 and date 23Feb2011 2011-03-08 14:21:50 -08:00
r8169.c Merge branch 'davem-next.r8169' of git://git.kernel.org/pub/scm/linux/kernel/git/romieu/netdev-2.6 2011-03-07 15:39:24 -08:00
rionet.c
rrunner.c
rrunner.h
s2io-regs.h
s2io.c s2io: fix uninitialized compile warning 2011-03-07 15:49:31 -08:00
s2io.h s2io: make strings at tables const 2010-12-11 11:46:36 -08:00
s6gmac.c
sb1000.c
sb1250-mac.c
sc92031.c
seeq8005.c
seeq8005.h
sgiseeq.c
sgiseeq.h
sh_eth.c sh: sh_eth: Add support ethtool 2011-02-22 10:10:09 -08:00
sh_eth.h drivers/net: remove unnecessary flush_scheduled_work() calls 2010-12-12 16:45:14 +01:00
sis190.c drivers/net: don't use flush_scheduled_work() 2010-12-12 16:45:14 +01:00
sis900.c sis900: use pci_dev->revision 2011-02-28 12:29:34 -08:00
sis900.h
skge.c skge: don't mark carrier down at start 2011-02-24 22:17:02 -08:00
skge.h
sky2.c sky2: convert to new VLAN model (v0.2) 2011-01-09 15:54:15 -08:00
sky2.h sky2: convert to new VLAN model (v0.2) 2011-01-09 15:54:15 -08:00
slhc.c
slip.c
slip.h
smc-mca.c
smc-ultra.c drivers/net/*.c: Use static const 2010-12-21 02:16:08 -08:00
smc-ultra32.c
smc91x.c smc91x: add devicetree support 2011-01-25 22:41:55 -08:00
smc91x.h
smc911x.c
smc911x.h
smc9194.c
smc9194.h
smsc911x.c net/smsc911x.c: Set the VLAN1 register to fix VLAN MTU problem 2011-03-07 12:30:12 -08:00
smsc911x.h
smsc9420.c
smsc9420.h
sni_82596.c
sonic.c
sonic.h
Space.c net/Space: delete orphaned externs from deleted drivers 2011-01-03 11:06:35 -08:00
spider_net.c
spider_net.h
spider_net_ethtool.c
starfire.c starfire: Fix dma_addr_t size test for MIPS 2010-12-31 12:33:17 -08:00
stnic.c
sun3_82586.c
sun3_82586.h
sun3lance.c
sunbmac.c
sunbmac.h
sundance.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2010-12-26 22:37:05 -08:00
sungem.c sungem: Use net_device's internal stats 2011-01-27 15:02:57 -08:00
sungem.h sungem: Use net_device's internal stats 2011-01-27 15:02:57 -08:00
sungem_phy.c
sungem_phy.h
sunhme.c net: Fix drivers advertising HW_CSUM feature to use csum_start 2010-12-16 14:43:15 -08:00
sunhme.h
sunlance.c netdev: Use default implementation of ethtool_ops::get_link where possible 2010-12-10 15:55:24 -08:00
sunqe.c
sunqe.h
sunvnet.c
sunvnet.h
tc35815.c
tehuti.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-01-13 10:05:56 -08:00
tehuti.h
tg3.c tg3: Remove 5750 PCI code 2011-03-10 01:56:14 -08:00
tg3.h tg3: Use new VLAN code 2011-01-26 13:13:10 -08:00
tlan.c tlan: Use pr_fmt, pr_<level> and netdev_<level> 2011-03-03 13:02:31 -08:00
tlan.h tlan: Code cleanup: checkpatch.pl is relatively happy now. 2011-01-24 15:07:06 -08:00
tsi108_eth.c
tsi108_eth.h
tun.c tun: Convert logging messages to pr_<level> and tun_debug 2011-03-03 12:21:14 -08:00
typhoon.c typhoon: Kill references to UTS_RELEASE 2011-01-24 15:11:02 -08:00
typhoon.h
ucc_geth.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2011-01-14 13:25:30 -08:00
ucc_geth.h
ucc_geth_ethtool.c
veth.c veth: remove unneeded ifname code from veth_newlink() 2011-01-24 23:18:18 -08:00
via-rhine.c via-rhine: hardware VLAN support 2010-12-08 10:23:36 -08:00
via-velocity.c via-velocity: fix the WOL bug on 1000M full duplex forced mode. 2011-01-20 16:59:33 -08:00
via-velocity.h via-velocity: fix the WOL bug on 1000M full duplex forced mode. 2011-01-20 16:59:33 -08:00
virtio_net.c virtio_net: Add schedule check to napi_enable call 2011-02-10 11:03:31 -08:00
wd.c drivers/net/*.c: Use static const 2010-12-21 02:16:08 -08:00
xen-netfront.c xen: netfront: handle incoming GSO SKBs which are not CHECKSUM_PARTIAL 2011-01-27 14:17:35 -08:00
xilinx_emaclite.c Merge branch 'next-devicetree' of git://git.secretlab.ca/git/linux-2.6 2011-01-10 08:57:03 -08:00
xtsonic.c
yellowfin.c epic100: hamachi: yellowfin: Fix skb allocation size 2010-12-25 19:37:49 -08:00
znet.c
zorro8390.c