Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 141131
b: refs/heads/master
c: bbb18b9
h: refs/heads/master
i:
  141129: 5466956
  141127: d21123a
v: v3
  • Loading branch information
Mithlesh Thukral authored and Greg Kroah-Hartman committed Apr 3, 2009
1 parent d360ed4 commit 8d0cdb7
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 16 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 7876ce07c8127c8a704ed79f88be2973ea3cec1c
refs/heads/master: bbb18b97f6bcf1d55814ce08bdaf6c358b16c8bb
24 changes: 13 additions & 11 deletions trunk/drivers/staging/sxg/sxg.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}
}
Expand Down Expand Up @@ -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
Expand Down
9 changes: 5 additions & 4 deletions trunk/drivers/staging/sxg/sxg_ethtool.c
Original file line number Diff line number Diff line change
Expand Up @@ -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));
}

Expand All @@ -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;
}

Expand Down

0 comments on commit 8d0cdb7

Please sign in to comment.