mediatek: more v5.4 fixes
These are all backports and/or on their way upstream. Signed-off-by: John Crispin <john@phrozen.org>master
parent
beb9820ed3
commit
e2ceb8dd93
@ -0,0 +1,23 @@
|
|||||||
|
diff -urN a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c 2020-03-31 16:05:24.398403054 +0800
|
||||||
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c 2020-03-31 16:05:39.142008780 +0800
|
||||||
|
@@ -1284,7 +1284,7 @@
|
||||||
|
skb->protocol = eth_type_trans(skb, netdev);
|
||||||
|
|
||||||
|
if (netdev->features & NETIF_F_HW_VLAN_CTAG_RX &&
|
||||||
|
- RX_DMA_VID(trxd.rxd3))
|
||||||
|
+ (trxd.rxd2 & RX_DMA_VTAG))
|
||||||
|
__vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q),
|
||||||
|
RX_DMA_VID(trxd.rxd3));
|
||||||
|
skb_record_rx_queue(skb, 0);
|
||||||
|
diff -urN a/drivers/net/ethernet/mediatek/mtk_eth_soc.h b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
||||||
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h 2020-03-31 16:05:29.726260583 +0800
|
||||||
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h 2020-03-31 16:05:43.493892389 +0800
|
||||||
|
@@ -293,6 +293,7 @@
|
||||||
|
#define RX_DMA_LSO BIT(30)
|
||||||
|
#define RX_DMA_PLEN0(_x) (((_x) & 0x3fff) << 16)
|
||||||
|
#define RX_DMA_GET_PLEN0(_x) (((_x) >> 16) & 0x3fff)
|
||||||
|
+#define RX_DMA_VTAG BIT(15)
|
||||||
|
|
||||||
|
/* QDMA descriptor rxd3 */
|
||||||
|
#define RX_DMA_VID(_x) ((_x) & 0xfff)
|
@ -0,0 +1,39 @@
|
|||||||
|
diff -urN b/drivers/net/ethernet/mediatek/mtk_eth_soc.c c/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
|
--- b/drivers/net/ethernet/mediatek/mtk_eth_soc.c 2020-03-31 16:05:39.142008780 +0800
|
||||||
|
+++ c/drivers/net/ethernet/mediatek/mtk_eth_soc.c 2020-03-31 16:08:12.422190657 +0800
|
||||||
|
@@ -1090,17 +1090,6 @@
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-static void mtk_stop_queue(struct mtk_eth *eth)
|
||||||
|
-{
|
||||||
|
- int i;
|
||||||
|
-
|
||||||
|
- for (i = 0; i < MTK_MAC_COUNT; i++) {
|
||||||
|
- if (!eth->netdev[i])
|
||||||
|
- continue;
|
||||||
|
- netif_stop_queue(eth->netdev[i]);
|
||||||
|
- }
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
static int mtk_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||||
|
{
|
||||||
|
struct mtk_mac *mac = netdev_priv(dev);
|
||||||
|
@@ -1121,7 +1110,7 @@
|
||||||
|
|
||||||
|
tx_num = mtk_cal_txd_req(skb);
|
||||||
|
if (unlikely(atomic_read(&ring->free_count) <= tx_num)) {
|
||||||
|
- mtk_stop_queue(eth);
|
||||||
|
+ netif_stop_queue(dev);
|
||||||
|
netif_err(eth, tx_queued, dev,
|
||||||
|
"Tx Ring full when queue awake!\n");
|
||||||
|
spin_unlock(ð->page_lock);
|
||||||
|
@@ -1147,7 +1136,7 @@
|
||||||
|
goto drop;
|
||||||
|
|
||||||
|
if (unlikely(atomic_read(&ring->free_count) <= ring->thresh))
|
||||||
|
- mtk_stop_queue(eth);
|
||||||
|
+ netif_stop_queue(dev);
|
||||||
|
|
||||||
|
spin_unlock(ð->page_lock);
|
||||||
|
|
@ -0,0 +1,33 @@
|
|||||||
|
--- a/drivers/tty/serial/8250/8250.h
|
||||||
|
+++ b/drivers/tty/serial/8250/8250.h
|
||||||
|
@@ -80,6 +80,7 @@ struct serial8250_config {
|
||||||
|
#define UART_CAP_MINI (1 << 17) /* Mini UART on BCM283X family lacks:
|
||||||
|
* STOP PARITY EPAR SPAR WLEN5 WLEN6
|
||||||
|
*/
|
||||||
|
+#define UART_CAP_NMOD (1 << 18) /* UART doesn't do termios */
|
||||||
|
|
||||||
|
#define UART_BUG_QUOT (1 << 0) /* UART has buggy quot LSB */
|
||||||
|
#define UART_BUG_TXEN (1 << 1) /* UART has buggy TX IIR status */
|
||||||
|
--- a/drivers/tty/serial/8250/8250_port.c
|
||||||
|
+++ b/drivers/tty/serial/8250/8250_port.c
|
||||||
|
@@ -297,7 +297,7 @@ static const struct serial8250_config ua
|
||||||
|
.tx_loadsz = 16,
|
||||||
|
.fcr = UART_FCR_ENABLE_FIFO |
|
||||||
|
UART_FCR_CLEAR_RCVR | UART_FCR_CLEAR_XMIT,
|
||||||
|
- .flags = UART_CAP_FIFO,
|
||||||
|
+ .flags = UART_CAP_FIFO | UART_CAP_NMOD,
|
||||||
|
},
|
||||||
|
[PORT_NPCM] = {
|
||||||
|
.name = "Nuvoton 16550",
|
||||||
|
@@ -2648,6 +2648,11 @@ serial8250_do_set_termios(struct uart_po
|
||||||
|
unsigned long flags;
|
||||||
|
unsigned int baud, quot, frac = 0;
|
||||||
|
|
||||||
|
+ if (up->capabilities & UART_CAP_NMOD) {
|
||||||
|
+ termios->c_cflag = 0;
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (up->capabilities & UART_CAP_MINI) {
|
||||||
|
termios->c_cflag &= ~(CSTOPB | PARENB | PARODD | CMSPAR);
|
||||||
|
if ((termios->c_cflag & CSIZE) == CS5 ||
|
Loading…
Reference in New Issue