From 8d0cdb761006c67668cbc3ea6b25177af4b97173 Mon Sep 17 00:00:00 2001 From: Mithlesh Thukral Date: Tue, 24 Feb 2009 18:07:59 +0530 Subject: [PATCH] --- yaml --- r: 141131 b: refs/heads/master c: bbb18b97f6bcf1d55814ce08bdaf6c358b16c8bb h: refs/heads/master i: 141129: 546695694ceaeb67959b32a3fa5390e51e6e097e 141127: d21123afdfab4c9eee3946e44aaf0af236f76d32 v: v3 --- [refs] | 2 +- trunk/drivers/staging/sxg/sxg.c | 24 +++++++++++++----------- trunk/drivers/staging/sxg/sxg_ethtool.c | 9 +++++---- 3 files changed, 19 insertions(+), 16 deletions(-) diff --git a/[refs] b/[refs] index ee17d9993d75..46992239b08f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7876ce07c8127c8a704ed79f88be2973ea3cec1c +refs/heads/master: bbb18b97f6bcf1d55814ce08bdaf6c358b16c8bb diff --git a/trunk/drivers/staging/sxg/sxg.c b/trunk/drivers/staging/sxg/sxg.c index 09ff80012df8..d52212a09acb 100644 --- a/trunk/drivers/staging/sxg/sxg.c +++ b/trunk/drivers/staging/sxg/sxg.c @@ -1486,23 +1486,25 @@ static int sxg_process_isr(struct adapter_t *adapter, u32 MessageId) * sxg_rcv_checksum - Set the checksum for received packet * * Arguements: + * @adapter - Adapter structure on which packet is received * @skb - Packet which is receieved * @Event - Event read from hardware */ -void sxg_rcv_checksum(struct sk_buff *skb, struct sxg_event *Event) +void sxg_rcv_checksum(struct adapter_t *adapter, struct sk_buff *skb, + struct sxg_event *Event) { skb->ip_summed = CHECKSUM_NONE; - if(Event->Status & EVENT_STATUS_TCPIP) { - if(!(Event->Status & EVENT_STATUS_TCPBAD)) { - skb->ip_summed = CHECKSUM_UNNECESSARY; - } - if(!(Event->Status & EVENT_STATUS_IPBAD)) { - skb->ip_summed = CHECKSUM_UNNECESSARY; - } - } else if(Event->Status & EVENT_STATUS_IPONLY) { - if(!(Event->Status & EVENT_STATUS_IPBAD)) { + if (likely(adapter->flags & SXG_RCV_IP_CSUM_ENABLED)) { + if (likely(adapter->flags & SXG_RCV_TCP_CSUM_ENABLED) + && (Event->Status & EVENT_STATUS_TCPIP)) { + if(!(Event->Status & EVENT_STATUS_TCPBAD)) + skb->ip_summed = CHECKSUM_UNNECESSARY; + if(!(Event->Status & EVENT_STATUS_IPBAD)) skb->ip_summed = CHECKSUM_UNNECESSARY; + } else if(Event->Status & EVENT_STATUS_IPONLY) { + if(!(Event->Status & EVENT_STATUS_IPBAD)) + skb->ip_summed = CHECKSUM_UNNECESSARY; } } } @@ -1581,7 +1583,7 @@ static u32 sxg_process_event_queue(struct adapter_t *adapter, u32 RssId, rx_bytes = Event->Length; adapter->stats.rx_packets++; adapter->stats.rx_bytes += rx_bytes; - sxg_rcv_checksum(skb, Event); + sxg_rcv_checksum(adapter, skb, Event); skb->dev = adapter->netdev; netif_receive_skb(skb); #endif diff --git a/trunk/drivers/staging/sxg/sxg_ethtool.c b/trunk/drivers/staging/sxg/sxg_ethtool.c index 8c710f428974..97f765d1250f 100644 --- a/trunk/drivers/staging/sxg/sxg_ethtool.c +++ b/trunk/drivers/staging/sxg/sxg_ethtool.c @@ -221,7 +221,7 @@ static int sxg_nic_get_settings(struct net_device *netdev, static u32 sxg_nic_get_rx_csum(struct net_device *netdev) { struct adapter_t *adapter = netdev_priv(netdev); - return ((adapter->flags & SXG_RCV_IP_CSUM_ENABLED) || + return ((adapter->flags & SXG_RCV_IP_CSUM_ENABLED) && (adapter->flags & SXG_RCV_TCP_CSUM_ENABLED)); } @@ -232,9 +232,10 @@ static int sxg_nic_set_rx_csum(struct net_device *netdev, u32 data) adapter->flags |= SXG_RCV_IP_CSUM_ENABLED; else adapter->flags &= ~SXG_RCV_IP_CSUM_ENABLED; - - /* Reset the card here (call the reset functions .. currently unavailable)*/ - + /* + * We dont need to write to the card to do checksums. + * It does it anyways. + */ return 0; }