Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F146313459
D18133.id51075.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D18133.id51075.diff
View Options
Index: head/sys/dev/sfxge/common/ef10_rx.c
===================================================================
--- head/sys/dev/sfxge/common/ef10_rx.c
+++ head/sys/dev/sfxge/common/ef10_rx.c
@@ -47,6 +47,7 @@
__in uint32_t instance,
__in efsys_mem_t *esmp,
__in boolean_t disable_scatter,
+ __in boolean_t want_inner_classes,
__in uint32_t ps_bufsize)
{
efx_nic_cfg_t *encp = &(enp->en_nic_cfg);
@@ -68,7 +69,8 @@
else
dma_mode = MC_CMD_INIT_RXQ_EXT_IN_SINGLE_PACKET;
- if (encp->enc_tunnel_encapsulations_supported != 0) {
+ if (encp->enc_tunnel_encapsulations_supported != 0 &&
+ !want_inner_classes) {
/*
* WANT_OUTER_CLASSES can only be specified on hardware which
* supports tunnel encapsulation offloads, even though it is
@@ -962,6 +964,7 @@
efx_nic_cfg_t *encp = &(enp->en_nic_cfg);
efx_rc_t rc;
boolean_t disable_scatter;
+ boolean_t want_inner_classes;
unsigned int ps_buf_size;
_NOTE(ARGUNUSED(id, erp, type_data))
@@ -1040,8 +1043,14 @@
else
disable_scatter = encp->enc_rx_disable_scatter_supported;
+ if (flags & EFX_RXQ_FLAG_INNER_CLASSES)
+ want_inner_classes = B_TRUE;
+ else
+ want_inner_classes = B_FALSE;
+
if ((rc = efx_mcdi_init_rxq(enp, ndescs, eep->ee_index, label, index,
- esmp, disable_scatter, ps_buf_size)) != 0)
+ esmp, disable_scatter, want_inner_classes,
+ ps_buf_size)) != 0)
goto fail7;
erp->er_eep = eep;
Index: head/sys/dev/sfxge/common/efx.h
===================================================================
--- head/sys/dev/sfxge/common/efx.h
+++ head/sys/dev/sfxge/common/efx.h
@@ -2016,6 +2016,15 @@
*/
#define EFX_RXQ_FLAG_NONE 0x0
#define EFX_RXQ_FLAG_SCATTER 0x1
+/*
+ * If tunnels are supported and Rx event can provide information about
+ * either outer or inner packet classes (e.g. SFN8xxx adapters with
+ * full-feature firmware variant running), outer classes are requested by
+ * default. However, if the driver supports tunnels, the flag allows to
+ * request inner classes which are required to be able to interpret inner
+ * Rx checksum offload results.
+ */
+#define EFX_RXQ_FLAG_INNER_CLASSES 0x2
extern __checkReturn efx_rc_t
efx_rx_qcreate(
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Mar 2, 3:59 PM (1 h, 46 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29163248
Default Alt Text
D18133.id51075.diff (2 KB)
Attached To
Mode
D18133: sfxge(4): allow to request inner classes for Rx packets
Attached
Detach File
Event Timeline
Log In to Comment