Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 340648
b: refs/heads/master
c: bb263e1
h: refs/heads/master
v: v3
  • Loading branch information
Paul Bolle authored and David S. Miller committed Nov 3, 2012
1 parent 10bc007 commit 5d9fcca
Show file tree
Hide file tree
Showing 3 changed files with 3 additions and 59 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 5250c9694fa879532470d87ebf6a485be1124221
refs/heads/master: bb263e18f481199a04f7aab9454c18cd3dbdb218
58 changes: 2 additions & 56 deletions trunk/drivers/net/ethernet/realtek/atp.c
Original file line number Diff line number Diff line change
Expand Up @@ -175,8 +175,7 @@ struct net_local {
unsigned int tx_unit_busy:1;
unsigned char re_tx, /* Number of packet retransmissions. */
addr_mode, /* Current Rx filter e.g. promiscuous, etc. */
pac_cnt_in_tx_buf,
chip_type;
pac_cnt_in_tx_buf;
};

/* This code, written by wwc@super.org, resets the adapter every
Expand Down Expand Up @@ -339,7 +338,6 @@ static int __init atp_probe1(long ioaddr)
write_reg_high(ioaddr, CMR1, CMR1h_RESET | CMR1h_MUX);

lp = netdev_priv(dev);
lp->chip_type = RTL8002;
lp->addr_mode = CMR2h_Normal;
spin_lock_init(&lp->lock);

Expand Down Expand Up @@ -852,7 +850,7 @@ net_close(struct net_device *dev)
* Set or clear the multicast filter for this adapter.
*/

static void set_rx_mode_8002(struct net_device *dev)
static void set_rx_mode(struct net_device *dev)
{
struct net_local *lp = netdev_priv(dev);
long ioaddr = dev->base_addr;
Expand All @@ -864,58 +862,6 @@ static void set_rx_mode_8002(struct net_device *dev)
write_reg_high(ioaddr, CMR2, lp->addr_mode);
}

static void set_rx_mode_8012(struct net_device *dev)
{
struct net_local *lp = netdev_priv(dev);
long ioaddr = dev->base_addr;
unsigned char new_mode, mc_filter[8]; /* Multicast hash filter */
int i;

if (dev->flags & IFF_PROMISC) { /* Set promiscuous. */
new_mode = CMR2h_PROMISC;
} else if ((netdev_mc_count(dev) > 1000) ||
(dev->flags & IFF_ALLMULTI)) {
/* Too many to filter perfectly -- accept all multicasts. */
memset(mc_filter, 0xff, sizeof(mc_filter));
new_mode = CMR2h_Normal;
} else {
struct netdev_hw_addr *ha;

memset(mc_filter, 0, sizeof(mc_filter));
netdev_for_each_mc_addr(ha, dev) {
int filterbit = ether_crc_le(ETH_ALEN, ha->addr) & 0x3f;
mc_filter[filterbit >> 5] |= 1 << (filterbit & 31);
}
new_mode = CMR2h_Normal;
}
lp->addr_mode = new_mode;
write_reg(ioaddr, CMR2, CMR2_IRQOUT | 0x04); /* Switch to page 1. */
for (i = 0; i < 8; i++)
write_reg_byte(ioaddr, i, mc_filter[i]);
if (net_debug > 2 || 1) {
lp->addr_mode = 1;
printk(KERN_DEBUG "%s: Mode %d, setting multicast filter to",
dev->name, lp->addr_mode);
for (i = 0; i < 8; i++)
printk(" %2.2x", mc_filter[i]);
printk(".\n");
}

write_reg_high(ioaddr, CMR2, lp->addr_mode);
write_reg(ioaddr, CMR2, CMR2_IRQOUT); /* Switch back to page 0 */
}

static void set_rx_mode(struct net_device *dev)
{
struct net_local *lp = netdev_priv(dev);

if (lp->chip_type == RTL8002)
return set_rx_mode_8002(dev);
else
return set_rx_mode_8012(dev);
}


static int __init atp_init_module(void) {
if (debug) /* Emit version even if no cards detected. */
printk(KERN_INFO "%s", version);
Expand Down
2 changes: 0 additions & 2 deletions trunk/drivers/net/ethernet/realtek/atp.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@ struct rx_header {
#define PAR_STATUS 1
#define PAR_CONTROL 2

enum chip_type { RTL8002, RTL8012 };

#define Ctrl_LNibRead 0x08 /* LP_PSELECP */
#define Ctrl_HNibRead 0
#define Ctrl_LNibWrite 0x08 /* LP_PSELECP */
Expand Down

0 comments on commit 5d9fcca

Please sign in to comment.