nusb/ether: multicast and promisc support for rtl8150 (url)
This commit is contained in:
parent
ce07c1d6e7
commit
382abccf27
1 changed files with 34 additions and 0 deletions
|
@ -300,6 +300,37 @@ urltransmit(Dev *ep, Block *b)
|
||||||
freeb(b);
|
freeb(b);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
urlpromiscuous(Dev *d, int on)
|
||||||
|
{
|
||||||
|
int r;
|
||||||
|
|
||||||
|
r = csr16r(d, Rcr);
|
||||||
|
if(on)
|
||||||
|
r |= Aam|Aap;
|
||||||
|
else {
|
||||||
|
r &= ~Aap;
|
||||||
|
if(nmulti == 0)
|
||||||
|
r &= ~Aam;
|
||||||
|
}
|
||||||
|
return csr16w(d, Rcr, r);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
urlmulticast(Dev *d, uchar*, int)
|
||||||
|
{
|
||||||
|
int r;
|
||||||
|
|
||||||
|
r = csr16r(d, Rcr);
|
||||||
|
if(nmulti)
|
||||||
|
r |= Aam;
|
||||||
|
else {
|
||||||
|
if(nprom == 0)
|
||||||
|
r &= ~Aam;
|
||||||
|
}
|
||||||
|
return csr16w(d, Rcr, r);
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
urlinit(Dev *d)
|
urlinit(Dev *d)
|
||||||
{
|
{
|
||||||
|
@ -325,5 +356,8 @@ urlinit(Dev *d)
|
||||||
|
|
||||||
epreceive = urlreceive;
|
epreceive = urlreceive;
|
||||||
eptransmit = urltransmit;
|
eptransmit = urltransmit;
|
||||||
|
eppromiscuous = urlpromiscuous;
|
||||||
|
epmulticast = urlmulticast;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue