aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/axgbe/xgbe-dev.c
diff options
context:
space:
mode:
authorStephan de Wit <stephan.de.wit@deciso.com>2024-04-29 01:57:26 +0000
committerWarner Losh <imp@FreeBSD.org>2024-04-29 01:57:51 +0000
commit2b8df536a68169953a9fa470b78a021156d997aa (patch)
tree7e63aa75df371f8dda716673b2ecc5f5b35ab77b /sys/dev/axgbe/xgbe-dev.c
parent05e8ab627bc6fc6e607aea94b60fd264b8a6c736 (diff)
Diffstat (limited to 'sys/dev/axgbe/xgbe-dev.c')
-rw-r--r--sys/dev/axgbe/xgbe-dev.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/sys/dev/axgbe/xgbe-dev.c b/sys/dev/axgbe/xgbe-dev.c
index 786e04930780..39d0dab144a2 100644
--- a/sys/dev/axgbe/xgbe-dev.c
+++ b/sys/dev/axgbe/xgbe-dev.c
@@ -1451,7 +1451,8 @@ xgbe_dev_read(struct xgbe_channel *channel)
if (!err || !etlt) {
/* No error if err is 0 or etlt is 0 */
- if (etlt == 0x09) {
+ if (etlt == 0x09 &&
+ (if_getcapenable(pdata->netdev) & IFCAP_VLAN_HWTAGGING)) {
XGMAC_SET_BITS(packet->attributes, RX_PACKET_ATTRIBUTES,
VLAN_CTAG, 1);
packet->vlan_ctag = XGMAC_GET_BITS_LE(rdesc->desc0,
@@ -2029,6 +2030,12 @@ xgbe_config_mac_address(struct xgbe_prv_data *pdata)
{
xgbe_set_mac_address(pdata, if_getlladdr(pdata->netdev));
+ /*
+ * Promisc mode does not work as intended. Multicast traffic
+ * is triggering the filter, so enable Receive All.
+ */
+ XGMAC_IOWRITE_BITS(pdata, MAC_PFR, RA, 1);
+
/* Filtering is done using perfect filtering and hash filtering */
if (pdata->hw_feat.hash_table_size) {
XGMAC_IOWRITE_BITS(pdata, MAC_PFR, HPF, 1);