diff options
Diffstat (limited to 'linux-2.6-revert-dvb-net-kabi-change.patch')
-rw-r--r-- | linux-2.6-revert-dvb-net-kabi-change.patch | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/linux-2.6-revert-dvb-net-kabi-change.patch b/linux-2.6-revert-dvb-net-kabi-change.patch new file mode 100644 index 0000000..28d55e0 --- /dev/null +++ b/linux-2.6-revert-dvb-net-kabi-change.patch @@ -0,0 +1,149 @@ +diff --git a/drivers/media/dvb/dvb-core/dvb_net.c b/drivers/media/dvb/dvb-core/dvb_net.c +index f6ba846..03fd9dd 100644 +--- a/drivers/media/dvb/dvb-core/dvb_net.c ++++ b/drivers/media/dvb/dvb-core/dvb_net.c +@@ -125,6 +125,7 @@ static void hexdump( const unsigned char *buf, unsigned short len ) + + struct dvb_net_priv { + int in_use; ++ struct net_device_stats stats; + u16 pid; + struct net_device *net; + struct dvb_net *host; +@@ -383,8 +384,8 @@ static void dvb_net_ule( struct net_device *dev, const u8 *buf, size_t buf_len ) + if (priv->ule_skb) { + dev_kfree_skb( priv->ule_skb ); + /* Prepare for next SNDU. */ +- dev->stats.rx_errors++; +- dev->stats.rx_frame_errors++; ++ priv->stats.rx_errors++; ++ priv->stats.rx_frame_errors++; + } + reset_ule(priv); + priv->need_pusi = 1; +@@ -437,8 +438,8 @@ static void dvb_net_ule( struct net_device *dev, const u8 *buf, size_t buf_len ) + dev_kfree_skb( priv->ule_skb ); + /* Prepare for next SNDU. */ + // reset_ule(priv); moved to below. +- dev->stats.rx_errors++; +- dev->stats.rx_frame_errors++; ++ priv->stats.rx_errors++; ++ priv->stats.rx_frame_errors++; + } + reset_ule(priv); + /* skip to next PUSI. */ +@@ -459,8 +460,8 @@ static void dvb_net_ule( struct net_device *dev, const u8 *buf, size_t buf_len ) + /* Drop partly decoded SNDU, reset state, resync on PUSI. */ + if (priv->ule_skb) { + dev_kfree_skb( priv->ule_skb ); +- dev->stats.rx_errors++; +- dev->stats.rx_frame_errors++; ++ priv->stats.rx_errors++; ++ priv->stats.rx_frame_errors++; + } + reset_ule(priv); + priv->need_pusi = 1; +@@ -476,8 +477,8 @@ static void dvb_net_ule( struct net_device *dev, const u8 *buf, size_t buf_len ) + if (priv->ule_sndu_remain > 183) { + /* Current SNDU lacks more data than there could be available in the + * current TS cell. */ +- dev->stats.rx_errors++; +- dev->stats.rx_length_errors++; ++ priv->stats.rx_errors++; ++ priv->stats.rx_length_errors++; + printk(KERN_WARNING "%lu: Expected %d more SNDU bytes, but " + "got PUSI (pf %d, ts_remain %d). Flushing incomplete payload.\n", + priv->ts_count, priv->ule_sndu_remain, ts[4], ts_remain); +@@ -519,8 +520,8 @@ static void dvb_net_ule( struct net_device *dev, const u8 *buf, size_t buf_len ) + if (priv->ule_sndu_len < 5) { + printk(KERN_WARNING "%lu: Invalid ULE SNDU length %u. " + "Resyncing.\n", priv->ts_count, priv->ule_sndu_len); +- dev->stats.rx_errors++; +- dev->stats.rx_length_errors++; ++ priv->stats.rx_errors++; ++ priv->stats.rx_length_errors++; + priv->ule_sndu_len = 0; + priv->need_pusi = 1; + new_ts = 1; +@@ -572,7 +573,7 @@ static void dvb_net_ule( struct net_device *dev, const u8 *buf, size_t buf_len ) + if (priv->ule_skb == NULL) { + printk(KERN_NOTICE "%s: Memory squeeze, dropping packet.\n", + dev->name); +- dev->stats.rx_dropped++; ++ priv->stats.rx_dropped++; + return; + } + +@@ -636,8 +637,8 @@ static void dvb_net_ule( struct net_device *dev, const u8 *buf, size_t buf_len ) + ule_dump = 1; + #endif + +- dev->stats.rx_errors++; +- dev->stats.rx_crc_errors++; ++ priv->stats.rx_errors++; ++ priv->stats.rx_crc_errors++; + dev_kfree_skb(priv->ule_skb); + } else { + /* CRC32 verified OK. */ +@@ -743,8 +744,8 @@ static void dvb_net_ule( struct net_device *dev, const u8 *buf, size_t buf_len ) + * receive the packet anyhow. */ + /* if (priv->ule_dbit && skb->pkt_type == PACKET_OTHERHOST) + priv->ule_skb->pkt_type = PACKET_HOST; */ +- dev->stats.rx_packets++; +- dev->stats.rx_bytes += priv->ule_skb->len; ++ priv->stats.rx_packets++; ++ priv->stats.rx_bytes += priv->ule_skb->len; + netif_rx(priv->ule_skb); + } + sndu_done: +@@ -799,7 +800,8 @@ static void dvb_net_sec(struct net_device *dev, + { + u8 *eth; + struct sk_buff *skb; +- struct net_device_stats *stats = &dev->stats; ++ struct net_device_stats *stats = ++ &((struct dvb_net_priv *) netdev_priv(dev))->stats; + int snap = 0; + + /* note: pkt_len includes a 32bit checksum */ +@@ -1214,29 +1216,28 @@ static int dvb_net_stop(struct net_device *dev) + return dvb_net_feed_stop(dev); + } + ++static struct net_device_stats * dvb_net_get_stats(struct net_device *dev) ++{ ++ return &((struct dvb_net_priv *) netdev_priv(dev))->stats; ++} ++ + static const struct header_ops dvb_header_ops = { + .create = eth_header, + .parse = eth_header_parse, + .rebuild = eth_rebuild_header, + }; + +- +-static const struct net_device_ops dvb_netdev_ops = { +- .ndo_open = dvb_net_open, +- .ndo_stop = dvb_net_stop, +- .ndo_start_xmit = dvb_net_tx, +- .ndo_set_multicast_list = dvb_net_set_multicast_list, +- .ndo_set_mac_address = dvb_net_set_mac, +- .ndo_change_mtu = eth_change_mtu, +- .ndo_validate_addr = eth_validate_addr, +-}; +- + static void dvb_net_setup(struct net_device *dev) + { + ether_setup(dev); + + dev->header_ops = &dvb_header_ops; +- dev->netdev_ops = &dvb_netdev_ops; ++ dev->open = dvb_net_open; ++ dev->stop = dvb_net_stop; ++ dev->hard_start_xmit = dvb_net_tx; ++ dev->get_stats = dvb_net_get_stats; ++ dev->set_multicast_list = dvb_net_set_multicast_list; ++ dev->set_mac_address = dvb_net_set_mac; + dev->mtu = 4096; + dev->mc_count = 0; + |