Lines Matching refs:priv
314 struct dvb_net_priv *priv = netdev_priv(dev); in dvb_net_ule() local
348 priv->ts_count, ts[0], in dvb_net_ule()
353 if (priv->ule_skb) { in dvb_net_ule()
354 dev_kfree_skb( priv->ule_skb ); in dvb_net_ule()
359 reset_ule(priv); in dvb_net_ule()
360 priv->need_pusi = 1; in dvb_net_ule()
364 priv->ts_count++; in dvb_net_ule()
372 if (priv->need_pusi) { in dvb_net_ule()
376 priv->tscc = ts[3] & 0x0F; in dvb_net_ule()
380 "(pointer field %d)\n", priv->ts_count, ts[4]); in dvb_net_ule()
382 priv->ts_count++; in dvb_net_ule()
392 priv->ts_count++; in dvb_net_ule()
399 if ((ts[3] & 0x0F) == priv->tscc) in dvb_net_ule()
400 priv->tscc = (priv->tscc + 1) & 0x0F; in dvb_net_ule()
404 "expected %#x.\n", priv->ts_count, ts[3] & 0x0F, priv->tscc); in dvb_net_ule()
406 if (priv->ule_skb) { in dvb_net_ule()
407 dev_kfree_skb( priv->ule_skb ); in dvb_net_ule()
413 reset_ule(priv); in dvb_net_ule()
415 priv->need_pusi = 1; in dvb_net_ule()
423 if (! priv->need_pusi) { in dvb_net_ule()
424 if (!(*from_where < (ts_remain-1)) || *from_where != priv->ule_sndu_remain) { in dvb_net_ule()
427 "field: %u.\n", priv->ts_count, *from_where); in dvb_net_ule()
430 if (priv->ule_skb) { in dvb_net_ule()
432 dev_kfree_skb(priv->ule_skb); in dvb_net_ule()
435 if (error || priv->ule_sndu_remain) { in dvb_net_ule()
441 reset_ule(priv); in dvb_net_ule()
442 priv->need_pusi = 1; in dvb_net_ule()
450 priv->need_pusi = 0; in dvb_net_ule()
452 if (priv->ule_sndu_remain > 183) { in dvb_net_ule()
459 priv->ts_count, priv->ule_sndu_remain, ts[4], ts_remain); in dvb_net_ule()
460 dev_kfree_skb(priv->ule_skb); in dvb_net_ule()
462 reset_ule(priv); in dvb_net_ule()
471 if (priv->ule_skb == NULL) { in dvb_net_ule()
480 priv->ule_sndu_len = 0; in dvb_net_ule()
481 priv->need_pusi = 1; in dvb_net_ule()
486 if (! priv->ule_sndu_len) { in dvb_net_ule()
488 priv->ule_sndu_len = from_where[0] << 8 | from_where[1]; in dvb_net_ule()
489 if (priv->ule_sndu_len & 0x8000) { in dvb_net_ule()
491 priv->ule_sndu_len &= 0x7FFF; in dvb_net_ule()
492 priv->ule_dbit = 1; in dvb_net_ule()
494 priv->ule_dbit = 0; in dvb_net_ule()
496 if (priv->ule_sndu_len < 5) { in dvb_net_ule()
498 "Resyncing.\n", priv->ts_count, priv->ule_sndu_len); in dvb_net_ule()
501 priv->ule_sndu_len = 0; in dvb_net_ule()
502 priv->need_pusi = 1; in dvb_net_ule()
505 priv->ts_count++; in dvb_net_ule()
512 priv->ule_sndu_remain = priv->ule_sndu_len + 2; in dvb_net_ule()
522 priv->ule_sndu_remain--; in dvb_net_ule()
523 priv->ule_sndu_type = from_where[0] << 8; in dvb_net_ule()
524 priv->ule_sndu_type_1 = 1; /* first byte of ule_type is set. */ in dvb_net_ule()
530 priv->ts_count++; in dvb_net_ule()
535 if (priv->ule_sndu_type_1) { in dvb_net_ule()
536 priv->ule_sndu_type_1 = 0; in dvb_net_ule()
537 priv->ule_sndu_type |= from_where[0]; in dvb_net_ule()
542 priv->ule_sndu_type = from_where[0] << 8 | from_where[1]; in dvb_net_ule()
551 priv->ule_skb = dev_alloc_skb( priv->ule_sndu_len + ETH_HLEN + ETH_ALEN ); in dvb_net_ule()
552 if (priv->ule_skb == NULL) { in dvb_net_ule()
560 priv->ule_sndu_remain = priv->ule_sndu_len; in dvb_net_ule()
561 priv->ule_skb->dev = dev; in dvb_net_ule()
563 skb_reserve( priv->ule_skb, ETH_HLEN + ETH_ALEN ); in dvb_net_ule()
567 how_much = min(priv->ule_sndu_remain, (int)ts_remain); in dvb_net_ule()
568 memcpy(skb_put(priv->ule_skb, how_much), from_where, how_much); in dvb_net_ule()
569 priv->ule_sndu_remain -= how_much; in dvb_net_ule()
574 if (priv->ule_sndu_remain <= 0) { in dvb_net_ule()
576 __be16 ulen = htons(priv->ule_sndu_len); in dvb_net_ule()
577 __be16 utype = htons(priv->ule_sndu_type); in dvb_net_ule()
582 { priv->ule_skb->data, priv->ule_skb->len - 4 } in dvb_net_ule()
585 if (priv->ule_dbit) { in dvb_net_ule()
592 tail = skb_tail_pointer(priv->ule_skb); in dvb_net_ule()
599 …priv->ts_count, ule_crc, expected_crc, priv->ule_sndu_len, priv->ule_sndu_type, ts_remain, ts_rema… in dvb_net_ule()
621 dev_kfree_skb(priv->ule_skb); in dvb_net_ule()
629 priv->ule_skb->tail -= 4; in dvb_net_ule()
630 priv->ule_skb->len -= 4; in dvb_net_ule()
632 if (!priv->ule_dbit) { in dvb_net_ule()
642 if (priv->rx_mode != RX_MODE_PROMISC) { in dvb_net_ule()
643 if (priv->ule_skb->data[0] & 0x01) { in dvb_net_ule()
645 if (!ether_addr_equal(priv->ule_skb->data, bc_addr)) { in dvb_net_ule()
647 if (priv->rx_mode == RX_MODE_MULTI) { in dvb_net_ule()
649 for(i = 0; i < priv->multi_num && in dvb_net_ule()
650 !ether_addr_equal(priv->ule_skb->data, in dvb_net_ule()
651 priv->multi_macs[i]); i++) in dvb_net_ule()
653 if (i == priv->multi_num) in dvb_net_ule()
655 } else if (priv->rx_mode != RX_MODE_ALL_MULTI) in dvb_net_ule()
661 else if (!ether_addr_equal(priv->ule_skb->data, dev->dev_addr)) in dvb_net_ule()
670 priv->ule_skb->data, dev->dev_addr); in dvb_net_ule()
672 dev_kfree_skb(priv->ule_skb); in dvb_net_ule()
677 skb_copy_from_linear_data(priv->ule_skb, in dvb_net_ule()
680 skb_pull(priv->ule_skb, ETH_ALEN); in dvb_net_ule()
685 if (priv->ule_sndu_type < ETH_P_802_3_MIN) { in dvb_net_ule()
687 int l = handle_ule_extensions(priv); in dvb_net_ule()
691 dev_kfree_skb(priv->ule_skb); in dvb_net_ule()
694 skb_pull(priv->ule_skb, l); in dvb_net_ule()
706 if (!priv->ule_bridged) { in dvb_net_ule()
707 skb_push(priv->ule_skb, ETH_HLEN); in dvb_net_ule()
708 ethh = (struct ethhdr *)priv->ule_skb->data; in dvb_net_ule()
709 if (!priv->ule_dbit) { in dvb_net_ule()
717 ethh->h_proto = htons(priv->ule_sndu_type); in dvb_net_ule()
720 priv->ule_bridged = 0; in dvb_net_ule()
723 priv->ule_skb->protocol = dvb_net_eth_type_trans(priv->ule_skb, dev); in dvb_net_ule()
729 dev->stats.rx_bytes += priv->ule_skb->len; in dvb_net_ule()
730 netif_rx(priv->ule_skb); in dvb_net_ule()
734 reset_ule(priv); in dvb_net_ule()
741 priv->ule_skb = NULL; in dvb_net_ule()
742 priv->ule_sndu_type_1 = 0; in dvb_net_ule()
743 priv->ule_sndu_len = 0; in dvb_net_ule()
752 priv->ts_count++; in dvb_net_ule()
753 if (priv->ule_skb == NULL) { in dvb_net_ule()
754 priv->need_pusi = 1; in dvb_net_ule()
755 priv->ule_sndu_type_1 = 0; in dvb_net_ule()
756 priv->ule_sndu_len = 0; in dvb_net_ule()
766 struct net_device *dev = feed->priv; in dvb_net_ts_callback()
875 struct net_device *dev = filter->priv;
900 struct dvb_net_priv *priv = netdev_priv(dev); local
904 ret = priv->secfeed->allocate_filter(priv->secfeed, secfilter);
910 (*secfilter)->priv=(void *) dev;
940 struct dvb_net_priv *priv = netdev_priv(dev); local
941 struct dmx_demux *demux = priv->demux;
944 netdev_dbg(dev, "rx_mode %i\n", priv->rx_mode);
945 mutex_lock(&priv->mutex);
946 if (priv->tsfeed || priv->secfeed || priv->secfilter || priv->multi_secfilter[0])
949 priv->secfeed=NULL;
950 priv->secfilter=NULL;
951 priv->tsfeed = NULL;
953 if (priv->feedtype == DVB_NET_FEEDTYPE_MPE) {
955 ret=demux->allocate_section_feed(demux, &priv->secfeed,
962 ret = priv->secfeed->set(priv->secfeed, priv->pid, 32768, 1);
966 priv->demux->release_section_feed(priv->demux, priv->secfeed);
967 priv->secfeed=NULL;
971 if (priv->rx_mode != RX_MODE_PROMISC) {
973 dvb_net_filter_sec_set(dev, &priv->secfilter, mac, mask_normal);
976 switch (priv->rx_mode) {
978 for (i = 0; i < priv->multi_num; i++) {
980 dvb_net_filter_sec_set(dev, &priv->multi_secfilter[i],
981 priv->multi_macs[i], mask_normal);
985 priv->multi_num=1;
987 dvb_net_filter_sec_set(dev, &priv->multi_secfilter[0],
991 priv->multi_num=0;
993 dvb_net_filter_sec_set(dev, &priv->secfilter, mac, mask_promisc);
998 priv->secfeed->start_filtering(priv->secfeed);
999 } else if (priv->feedtype == DVB_NET_FEEDTYPE_ULE) {
1004 ret = demux->allocate_ts_feed(demux, &priv->tsfeed, dvb_net_ts_callback);
1011 priv->tsfeed->priv = (void *)dev;
1012 ret = priv->tsfeed->set(priv->tsfeed,
1013 priv->pid, /* pid */
1022 priv->demux->release_ts_feed(priv->demux, priv->tsfeed);
1023 priv->tsfeed = NULL;
1028 priv->tsfeed->start_filtering(priv->tsfeed);
1033 mutex_unlock(&priv->mutex);
1039 struct dvb_net_priv *priv = netdev_priv(dev); local
1042 mutex_lock(&priv->mutex);
1043 if (priv->feedtype == DVB_NET_FEEDTYPE_MPE) {
1044 if (priv->secfeed) {
1045 if (priv->secfeed->is_filtering) {
1047 priv->secfeed->stop_filtering(priv->secfeed);
1050 if (priv->secfilter) {
1052 priv->secfeed->release_filter(priv->secfeed,
1053 priv->secfilter);
1054 priv->secfilter=NULL;
1057 for (i=0; i<priv->multi_num; i++) {
1058 if (priv->multi_secfilter[i]) {
1061 priv->secfeed->release_filter(priv->secfeed,
1062 priv->multi_secfilter[i]);
1063 priv->multi_secfilter[i] = NULL;
1067 priv->demux->release_section_feed(priv->demux, priv->secfeed);
1068 priv->secfeed = NULL;
1071 } else if (priv->feedtype == DVB_NET_FEEDTYPE_ULE) {
1072 if (priv->tsfeed) {
1073 if (priv->tsfeed->is_filtering) {
1075 priv->tsfeed->stop_filtering(priv->tsfeed);
1077 priv->demux->release_ts_feed(priv->demux, priv->tsfeed);
1078 priv->tsfeed = NULL;
1084 mutex_unlock(&priv->mutex);
1091 struct dvb_net_priv *priv = netdev_priv(dev); local
1093 if (priv->multi_num == DVB_NET_MULTICAST_MAX)
1096 memcpy(priv->multi_macs[priv->multi_num], addr, ETH_ALEN);
1098 priv->multi_num++;
1105 struct dvb_net_priv *priv = local
1107 struct net_device *dev = priv->net;
1110 priv->rx_mode = RX_MODE_UNI;
1115 priv->rx_mode = RX_MODE_PROMISC;
1118 priv->rx_mode = RX_MODE_ALL_MULTI;
1125 priv->rx_mode = RX_MODE_MULTI;
1126 priv->multi_num = 0;
1139 struct dvb_net_priv *priv = netdev_priv(dev); local
1140 schedule_work(&priv->set_multicast_list_wq);
1146 struct dvb_net_priv *priv = local
1148 struct net_device *dev = priv->net;
1159 struct dvb_net_priv *priv = netdev_priv(dev); local
1165 schedule_work(&priv->restart_net_feed_wq);
1173 struct dvb_net_priv *priv = netdev_priv(dev); local
1175 priv->in_use++;
1183 struct dvb_net_priv *priv = netdev_priv(dev); local
1185 priv->in_use--;
1234 struct dvb_net_priv *priv; local
1261 priv = netdev_priv(net);
1262 priv->net = net;
1263 priv->demux = dvbnet->demux;
1264 priv->pid = pid;
1265 priv->rx_mode = RX_MODE_UNI;
1266 priv->need_pusi = 1;
1267 priv->tscc = 0;
1268 priv->feedtype = feedtype;
1269 reset_ule(priv);
1271 INIT_WORK(&priv->set_multicast_list_wq, wq_set_multicast_list);
1272 INIT_WORK(&priv->restart_net_feed_wq, wq_restart_net_feed);
1273 mutex_init(&priv->mutex);
1290 struct dvb_net_priv *priv; local
1294 priv = netdev_priv(net);
1295 if (priv->in_use)
1299 flush_work(&priv->set_multicast_list_wq);
1300 flush_work(&priv->restart_net_feed_wq);
1314 struct dvb_net *dvbnet = dvbdev->priv;
1445 struct dvb_net *dvbnet = dvbdev->priv;
1464 .priv = NULL,