Skip to content

Commit

Permalink
[PATCH] WAN: fix C101 card carrier handling
Browse files Browse the repository at this point in the history
Hi,

One of my recent changes broke C101 carrier handling, this patch
fixes it. Also fixes an old TX underrun checking bug.

2.6.18 material. Please apply.
Thanks.

Signed-off-by: Krzysztof Halasa <khc@pm.waw.pl>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
  • Loading branch information
Krzysztof Halasa authored and Jeff Garzik committed Aug 19, 2006
1 parent 2ca2d5e commit a76b044
Showing 1 changed file with 5 additions and 4 deletions.
9 changes: 5 additions & 4 deletions drivers/net/wan/c101.c
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ static inline void openwin(card_t *card, u8 page)

static inline void set_carrier(port_t *port)
{
if (!sca_in(MSCI1_OFFSET + ST3, port) & ST3_DCD)
if (!(sca_in(MSCI1_OFFSET + ST3, port) & ST3_DCD))
netif_carrier_on(port_to_dev(port));
else
netif_carrier_off(port_to_dev(port));
Expand All @@ -127,17 +127,18 @@ static inline void set_carrier(port_t *port)

static void sca_msci_intr(port_t *port)
{
u8 stat = sca_in(MSCI1_OFFSET + ST1, port); /* read MSCI ST1 status */
u8 stat = sca_in(MSCI0_OFFSET + ST1, port); /* read MSCI ST1 status */

/* Reset MSCI TX underrun status bit */
sca_out(stat & ST1_UDRN, MSCI0_OFFSET + ST1, port);
/* Reset MSCI TX underrun and CDCD (ignored) status bit */
sca_out(stat & (ST1_UDRN | ST1_CDCD), MSCI0_OFFSET + ST1, port);

if (stat & ST1_UDRN) {
struct net_device_stats *stats = hdlc_stats(port_to_dev(port));
stats->tx_errors++; /* TX Underrun error detected */
stats->tx_fifo_errors++;
}

stat = sca_in(MSCI1_OFFSET + ST1, port); /* read MSCI1 ST1 status */
/* Reset MSCI CDCD status bit - uses ch#2 DCD input */
sca_out(stat & ST1_CDCD, MSCI1_OFFSET + ST1, port);

Expand Down

0 comments on commit a76b044

Please sign in to comment.