Commit 02bb56dd authored by Zhao Qiang's avatar Zhao Qiang Committed by David S. Miller

ucc/hdlc: fix two little issue

1. modify bd_status from u32 to u16 in function hdlc_rx_done,
because bd_status register is 16bits
2. write bd_length register before writing bd_status register
Signed-off-by: default avatarZhao Qiang <qiang.zhao@nxp.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c80498e3
...@@ -381,8 +381,8 @@ static netdev_tx_t ucc_hdlc_tx(struct sk_buff *skb, struct net_device *dev) ...@@ -381,8 +381,8 @@ static netdev_tx_t ucc_hdlc_tx(struct sk_buff *skb, struct net_device *dev)
/* set bd status and length */ /* set bd status and length */
bd_status = (bd_status & T_W_S) | T_R_S | T_I_S | T_L_S | T_TC_S; bd_status = (bd_status & T_W_S) | T_R_S | T_I_S | T_L_S | T_TC_S;
iowrite16be(bd_status, &bd->status);
iowrite16be(skb->len, &bd->length); iowrite16be(skb->len, &bd->length);
iowrite16be(bd_status, &bd->status);
/* Move to next BD in the ring */ /* Move to next BD in the ring */
if (!(bd_status & T_W_S)) if (!(bd_status & T_W_S))
...@@ -457,7 +457,7 @@ static int hdlc_rx_done(struct ucc_hdlc_private *priv, int rx_work_limit) ...@@ -457,7 +457,7 @@ static int hdlc_rx_done(struct ucc_hdlc_private *priv, int rx_work_limit)
struct sk_buff *skb; struct sk_buff *skb;
hdlc_device *hdlc = dev_to_hdlc(dev); hdlc_device *hdlc = dev_to_hdlc(dev);
struct qe_bd *bd; struct qe_bd *bd;
u32 bd_status; u16 bd_status;
u16 length, howmany = 0; u16 length, howmany = 0;
u8 *bdbuffer; u8 *bdbuffer;
int i; int i;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment