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: Zhao Qiang <qiang.zhao@nxp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
c80498e36d
commit
02bb56ddc6
1 changed files with 2 additions and 2 deletions
|
@ -381,8 +381,8 @@ static netdev_tx_t ucc_hdlc_tx(struct sk_buff *skb, struct net_device *dev)
|
|||
/* set bd status and length */
|
||||
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(bd_status, &bd->status);
|
||||
|
||||
/* Move to next BD in the ring */
|
||||
if (!(bd_status & T_W_S))
|
||||
|
@ -457,7 +457,7 @@ static int hdlc_rx_done(struct ucc_hdlc_private *priv, int rx_work_limit)
|
|||
struct sk_buff *skb;
|
||||
hdlc_device *hdlc = dev_to_hdlc(dev);
|
||||
struct qe_bd *bd;
|
||||
u32 bd_status;
|
||||
u16 bd_status;
|
||||
u16 length, howmany = 0;
|
||||
u8 *bdbuffer;
|
||||
int i;
|
||||
|
|
Loading…
Reference in a new issue