From: David S. Miller Date: Sun, 15 Sep 2019 12:17:27 +0000 (+0200) Subject: Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net X-Git-Tag: v5.4-rc1~131^2~18 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=aa2eaa8c272a3211dec07ce9c6c863a7e355c10e;p=thirdparty%2Fkernel%2Flinux.git Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net Minor overlapping changes in the btusb and ixgbe drivers. Signed-off-by: David S. Miller --- aa2eaa8c272a3211dec07ce9c6c863a7e355c10e diff --cc drivers/bluetooth/btusb.c index ed455de598eae,ba41490543040..a9c35ebb30f86 --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c @@@ -1201,18 -1173,7 +1204,14 @@@ static int btusb_open(struct hci_dev *h } data->intf->needs_remote_wakeup = 1; - /* device specific wakeup source enabled and required for USB - * remote wakeup while host is suspended - */ - device_wakeup_enable(&data->udev->dev); + /* Disable device remote wakeup when host is suspended + * For Realtek chips, global suspend without + * SET_FEATURE (DEVICE_REMOTE_WAKEUP) can save more power in device. + */ + if (test_bit(BTUSB_WAKEUP_DISABLE, &data->flags)) + device_wakeup_disable(&data->udev->dev); + if (test_and_set_bit(BTUSB_INTR_RUNNING, &data->flags)) goto done; @@@ -1276,12 -1237,6 +1275,11 @@@ static int btusb_close(struct hci_dev * goto failed; data->intf->needs_remote_wakeup = 0; + + /* Enable remote wake up for auto-suspend */ + if (test_bit(BTUSB_WAKEUP_DISABLE, &data->flags)) + data->intf->needs_remote_wakeup = 1; + - device_wakeup_disable(&data->udev->dev); usb_autopm_put_interface(data->intf); failed: diff --cc drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c index ad802a8909e0d,a3b6d8c89127f..a37dcd140f63c --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c @@@ -697,19 -682,10 +691,17 @@@ bool ixgbe_clean_xdp_tx_irq(struct ixgb if (xsk_frames) xsk_umem_complete_tx(umem, xsk_frames); + if (xsk_umem_uses_need_wakeup(tx_ring->xsk_umem)) { + if (tx_ring->next_to_clean == tx_ring->next_to_use) + xsk_set_tx_need_wakeup(tx_ring->xsk_umem); + else + xsk_clear_tx_need_wakeup(tx_ring->xsk_umem); + } + - xmit_done = ixgbe_xmit_zc(tx_ring, q_vector->tx.work_limit); - - return budget > 0 && xmit_done; + return ixgbe_xmit_zc(tx_ring, q_vector->tx.work_limit); } -int ixgbe_xsk_async_xmit(struct net_device *dev, u32 qid) +int ixgbe_xsk_wakeup(struct net_device *dev, u32 qid, u32 flags) { struct ixgbe_adapter *adapter = netdev_priv(dev); struct ixgbe_ring *ring; diff --cc drivers/net/wireless/mediatek/mt76/mt76x0/pci.c index f84a7df296ea7,6117e6ca08cb7..7705e55aa3d17 --- a/drivers/net/wireless/mediatek/mt76/mt76x0/pci.c +++ b/drivers/net/wireless/mediatek/mt76/mt76x0/pci.c @@@ -67,9 -91,9 +80,9 @@@ static const struct ieee80211_ops mt76x .configure_filter = mt76x02_configure_filter, .bss_info_changed = mt76x02_bss_info_changed, .sta_state = mt76_sta_state, - .set_key = mt76x02_set_key, + .set_key = mt76x0e_set_key, .conf_tx = mt76x02_conf_tx, - .sw_scan_start = mt76x02_sw_scan, + .sw_scan_start = mt76_sw_scan, .sw_scan_complete = mt76x02_sw_scan_complete, .ampdu_action = mt76x02_ampdu_action, .sta_rate_tbl_update = mt76x02_sta_rate_tbl_update,