Add support for conditionally setting the ip_alignement flag AX_RX_CTL_IPE in AX_RX_CTL and make sure that AX_RX_CTL_DROPCRCERR is also set to be consistent with the initial configuration in ax88179_reset() Signed-off-by: Birger Koblitz Reviewed-by: Andrew Lunn --- drivers/net/usb/ax88179_lib.c | 8 ++++++-- drivers/net/usb/ax88179a_devices.c | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/net/usb/ax88179_lib.c b/drivers/net/usb/ax88179_lib.c index 9d6df9d5c61c841965e9f7fa4b1075561b7f9c50..7a8c12027b9fcf7141694952528861e986d065ad 100644 --- a/drivers/net/usb/ax88179_lib.c +++ b/drivers/net/usb/ax88179_lib.c @@ -314,10 +314,14 @@ int ax88179_set_eeprom(struct net_device *net, struct ethtool_eeprom *eeprom, u8 void ax88179_set_multicast(struct net_device *net) { struct usbnet *dev = netdev_priv(net); - struct ax88179_data *data = dev->driver_priv; u8 *m_filter = ((u8 *)dev->data); + struct ax88179_data *data; + + data = dev->driver_priv; - data->rxctl = (AX_RX_CTL_START | AX_RX_CTL_AB | AX_RX_CTL_IPE); + data->rxctl = (AX_RX_CTL_START | AX_RX_CTL_AB | AX_RX_CTL_DROPCRCERR); + if (data->ip_align) + data->rxctl |= AX_RX_CTL_IPE; if (net->flags & IFF_PROMISC) { data->rxctl |= AX_RX_CTL_PRO; diff --git a/drivers/net/usb/ax88179a_devices.c b/drivers/net/usb/ax88179a_devices.c index f981a631dbbd1231ea8e1de0db215fbe5256e6d7..72c7fd897eaf72c3098393e152ee48099c1adc55 100644 --- a/drivers/net/usb/ax88179a_devices.c +++ b/drivers/net/usb/ax88179a_devices.c @@ -597,6 +597,7 @@ static const struct net_device_ops ax88179a_netdev_ops = { .ndo_set_mac_address = ax88179_set_mac_addr, .ndo_validate_addr = eth_validate_addr, .ndo_eth_ioctl = usbnet_mii_ioctl, + .ndo_set_rx_mode = ax88179_set_multicast, .ndo_set_features = ax88179a_set_features, .ndo_vlan_rx_add_vid = ax88179a_vlan_rx_add_vid, .ndo_vlan_rx_kill_vid = ax88179a_vlan_rx_kill_vid, -- 2.47.3