Page MenuHomeFreeBSD

D37457.diff
No OneTemporary

D37457.diff

diff --git a/sys/dev/ixl/i40e_osdep.h b/sys/dev/ixl/i40e_osdep.h
--- a/sys/dev/ixl/i40e_osdep.h
+++ b/sys/dev/ixl/i40e_osdep.h
@@ -160,10 +160,7 @@
u64 pa;
bus_dma_tag_t tag;
bus_dmamap_t map;
- bus_dma_segment_t seg;
bus_size_t size;
- int nseg;
- int flags;
};
struct i40e_virt_mem {
diff --git a/sys/dev/ixl/i40e_osdep.c b/sys/dev/ixl/i40e_osdep.c
--- a/sys/dev/ixl/i40e_osdep.c
+++ b/sys/dev/ixl/i40e_osdep.c
@@ -109,7 +109,6 @@
"error %u\n", err);
goto fail_2;
}
- mem->nseg = 1;
mem->size = size;
bus_dmamap_sync(mem->tag, mem->map,
BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE);
diff --git a/sys/dev/ixl/if_ixl.c b/sys/dev/ixl/if_ixl.c
--- a/sys/dev/ixl/if_ixl.c
+++ b/sys/dev/ixl/if_ixl.c
@@ -49,7 +49,7 @@
*********************************************************************/
#define IXL_DRIVER_VERSION_MAJOR 2
#define IXL_DRIVER_VERSION_MINOR 3
-#define IXL_DRIVER_VERSION_BUILD 2
+#define IXL_DRIVER_VERSION_BUILD 3
#define IXL_DRIVER_VERSION_STRING \
__XSTRING(IXL_DRIVER_VERSION_MAJOR) "." \
@@ -1720,9 +1720,10 @@
if ((if_getcapenable(ifp) & IFCAP_VLAN_HWFILTER) == 0)
return;
- if (vsi->num_vlans < IXL_MAX_VLAN_FILTERS)
+ /* One filter is used for untagged frames */
+ if (vsi->num_vlans < IXL_MAX_VLAN_FILTERS - 1)
ixl_del_filter(vsi, hw->mac.addr, vtag);
- else if (vsi->num_vlans == IXL_MAX_VLAN_FILTERS) {
+ else if (vsi->num_vlans == IXL_MAX_VLAN_FILTERS - 1) {
ixl_del_filter(vsi, hw->mac.addr, IXL_VLAN_ANY);
ixl_add_vlan_filters(vsi, hw->mac.addr);
}
diff --git a/sys/dev/ixl/ixl.h b/sys/dev/ixl/ixl.h
--- a/sys/dev/ixl/ixl.h
+++ b/sys/dev/ixl/ixl.h
@@ -164,9 +164,6 @@
#define IXL_VF_MAX_HDR_BUFFER 0x840
#define IXL_VF_MAX_FRAME 0x3FFF
-/* ERJ: hardware can support ~2k (SW5+) filters between all functions */
-#define IXL_MAX_FILTERS 256
-
#define IXL_NVM_VERSION_LO_SHIFT 0
#define IXL_NVM_VERSION_LO_MASK (0xff << IXL_NVM_VERSION_LO_SHIFT)
#define IXL_NVM_VERSION_HI_SHIFT 12
@@ -195,7 +192,7 @@
#define IXL_VLAN_ANY -1
/* Maximum number of MAC/VLAN filters supported by HW */
-#define IXL_MAX_VLAN_FILTERS 256
+#define IXL_MAX_VLAN_FILTERS 255
#define CSUM_OFFLOAD_IPV4 (CSUM_IP|CSUM_TCP|CSUM_UDP|CSUM_SCTP)
#define CSUM_OFFLOAD_IPV6 (CSUM_TCP_IPV6|CSUM_UDP_IPV6|CSUM_SCTP_IPV6)
diff --git a/sys/dev/ixl/ixl_pf_main.c b/sys/dev/ixl/ixl_pf_main.c
--- a/sys/dev/ixl/ixl_pf_main.c
+++ b/sys/dev/ixl/ixl_pf_main.c
@@ -1396,6 +1396,11 @@
b->flags = 0;
}
b->flags |= I40E_AQC_MACVLAN_ADD_PERFECT_MATCH;
+ /* Some FW versions do not set match method
+ * when adding filters fails. Initialize it with
+ * expected error value to allow detection which
+ * filters were not added */
+ b->match_method = I40E_AQC_MM_ERR_NO_RES;
ixl_dbg_filter(pf, "ADD: " MAC_FORMAT "\n",
MAC_FORMAT_ARGS(f->macaddr));

File Metadata

Mime Type
text/plain
Expires
Sat, Nov 16, 4:24 AM (21 h, 54 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
14653133
Default Alt Text
D37457.diff (2 KB)

Event Timeline