IPoE Q-in-Q Intel X520DA2 82599 несимметричное распределение IRQ
Posted: 23 Dec 2015, 09:30
IPoE Q-in-Q Intel X520DA2 82599 несимметричное распределение IRQ прерываний по очередям.
Если точнее сказать, то все IRQ идут только по одной очереди, вследствии чего нагружается только одно ядро.
Включил биты IXGBE_DMATXCTL_GDV и IXGBE_CTRL_EXT_EXTENDED_VLAN в регистрах согласно даташиту.
Наложением следущего патча на драйвера:
После включения данного функционала vlan-mon перестал создавать QinQ интерфейсы.
Есть какие то идеи, что можно сделать?
Если точнее сказать, то все IRQ идут только по одной очереди, вследствии чего нагружается только одно ядро.
Включил биты IXGBE_DMATXCTL_GDV и IXGBE_CTRL_EXT_EXTENDED_VLAN в регистрах согласно даташиту.
Наложением следущего патча на драйвера:
Code: Select all
diff -rupN ixgbe-3.22.3//src/ixgbe_main.c ixgbe-3.22.3-qinq//src/ixgbe_main.c
--- ixgbe-3.22.3//src/ixgbe_main.c 2014-08-15 04:17:42.000000000 +0500
+++ ixgbe-3.22.3-qinq//src/ixgbe_main.c 2014-11-18 19:07:49.000000000 +0500
@@ -3629,6 +3629,11 @@ static void ixgbe_configure_tx(struct ix
dmatxctl |= IXGBE_DMATXCTL_TE;
IXGBE_WRITE_REG(hw, IXGBE_DMATXCTL, dmatxctl);
}
+
+ /* Enable Global Double VLAN */
+ dmatxctl = IXGBE_READ_REG(hw, IXGBE_DMATXCTL);
+ dmatxctl |= IXGBE_DMATXCTL_GDV;
+ IXGBE_WRITE_REG(hw, IXGBE_DMATXCTL, dmatxctl);
/* Setup the HW Tx Head and Tail descriptor pointers */
for (i = 0; i < adapter->num_tx_queues; i++)
@@ -5719,6 +5724,12 @@ static void ixgbe_up_complete(struct ixg
mod_timer(&adapter->service_timer, jiffies);
ixgbe_clear_vf_stats_counters(adapter);
+
+ /* Set Extended VLAN bit */
+ ctrl_ext = IXGBE_READ_REG(hw, IXGBE_CTRL_EXT);
+ ctrl_ext |= IXGBE_CTRL_EXT_EXTENDED_VLAN;
+ IXGBE_WRITE_REG(hw, IXGBE_CTRL_EXT, ctrl_ext);
+
/* Set PF Reset Done bit so PF/VF Mail Ops can work */
ctrl_ext = IXGBE_READ_REG(hw, IXGBE_CTRL_EXT);
ctrl_ext |= IXGBE_CTRL_EXT_PFRSTD;
diff -rupN ixgbe-3.22.3//src/ixgbe_type.h ixgbe-3.22.3-qinq//src/ixgbe_type.h
--- ixgbe-3.22.3//src/ixgbe_type.h 2014-08-15 04:17:42.000000000 +0500
+++ ixgbe-3.22.3-qinq//src/ixgbe_type.h 2014-11-18 19:08:04.000000000 +0500
@@ -1119,6 +1119,7 @@ struct ixgbe_thermal_sensor_data {
#define IXGBE_CTRL_EXT_NS_DIS 0x00010000 /* No Snoop disable */
#define IXGBE_CTRL_EXT_RO_DIS 0x00020000 /* Relaxed Ordering disable */
#define IXGBE_CTRL_EXT_DRV_LOAD 0x10000000 /* Driver loaded bit for FW */
+#define IXGBE_CTRL_EXT_EXTENDED_VLAN 0x04000000 /* Extended VLAN bit */
/* Direct Cache Access (DCA) definitions */
#define IXGBE_DCA_CTRL_DCA_ENABLE 0x00000000 /* DCA Enable */
Есть какие то идеи, что можно сделать?