nusb/ether: multicast and promisc support for rtl8150 (url)

This commit is contained in:
cinap_lenrek 2016-09-17 14:06:03 +02:00
parent ce07c1d6e7
commit 382abccf27

View file

@ -300,6 +300,37 @@ urltransmit(Dev *ep, Block *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
urlinit(Dev *d)
{
@ -325,5 +356,8 @@ urlinit(Dev *d)
epreceive = urlreceive;
eptransmit = urltransmit;
eppromiscuous = urlpromiscuous;
epmulticast = urlmulticast;
return 0;
}